Что такое интерком и зачем он мне нужен?
Это система быстрой коммуникации внутри вашего дома, чтобы не кричать кому-то, а просто наговорить текст в ваше принимающее устройство и передать его на источник звука. В конкретном случае, мы будем записывать аудио сообщения в телеграмме и передавать их на вашу Яндекс станцию, к слову, функция интеркома итак доступна в Яндексе, но я не любитель использовать кучу приложений для реализации одной функции. Поэтому использование стандартного приложения Яндекс для меня сразу отпало. Также из коробки имеется возможность работы у HomePod и вашего iPhone, но мы же не ищем легких путей? Также бонусом вы можете отправить любую команду в Алису, записав voice в ваш канал с ключ-фразой Алиса..., и она это сделает!
Костыли, костыли и еще раз костыли - это наше все!
Чтобы не сильно растягивать данный мини гайд, я сразу перейду к тому, как это работает:
Мы создаем своего собственного бота-приемщика.Создаем канал в телеграме (да, именно канал! Об этом будет чуть ниже).
Мы берем бота в телеграме @voicybot. Этот бот уже из коробки умеет обрабатывать ваши голосовые сообщения в текст, дабы не разводить сложный функционал со сложной авторизацией api сервисов, которую я очень не люблю, я решил использовать уже готового бота. Не совсем безопасно, но тут или простота или безопасность.
Добавляем обоих ботов в один канал и даем им администратора.
Настраиваем и поднимаем свой сервер Node-Red.
Добавляем две ноды Telegram и Алисы.Вставляем мой флоу.
Прописываем все уникальные данные.
Записываем свое первое аудиосообщение и наблюдаем, как при обращении к Алисе, мы запускаем команду, а без обращения - воспроизводим текст вашим интеркомом!
Создание своего первого бота
Бот в Telegram создается при помощи другого бота под названием @BotFather. Отправляем ему команду /newbot, выбираем имя, которое будет отображаться в списке контактов, и адрес. Например, «Приемщик Алисы» с адресом «HelperSprut_bot».
Создание своего канала в Telegram
Перейдите в раздел чатов Chats и нажмите на карандашик для создания нового чата. Нажмите "New Channel" для создания нового канала. Нажмите Create Channel (Создать канал).
Затем, в настройках приватности, выберете публичный чат. В самом конце, когда все настройки будут выполнены, можете снова сделать свой канал приватным. Нужно это нам для того, чтобы получить chat_id.
Почему канал, а не чат?
По api telegram боты не могут видеть сообщения друг друга в чате, канал - это некий костыль, который мы с вами будем использовать, в нем боты могут видеть и читать сообщения друг друга.
Получение chat_id
Мы возвращаемся в @BotFather и находим строчку Use this token to access the HTTP API: и копируем то, что выделено синим цветом. Затем в браузере вставляем в строчку:
https://api.telegram.org/тот_самый_id_от_отца_Бота/sendMessage?chat_id=@названиевашегоканала&text=hi!
Ответом он пришлет нам нужный chat_id, который будет выглядеть примерно так: -123123123123.
Это нам и нужно! Обязательно запишите себе этот id, он нам еще пригодится. Самое сложное уже позади!
На этом этапе вы добавляете бота @voicybot в ваш канал и закрываете его в приватный доступ.
Немного о настройке @voicybot
В вашем канале вводите команду /help , затем /language, и выбираете русский язык. Можете посмотреть, что сам бот предлагает выбор разных движков для обработки звука, я остановился на выборе Wit.ai и в целом он меня устраивает.
Затем включите /silent , для того, чтобы бот не присылал лишнего.
Для того, чтобы использовать мой пример, вам нужен установленный Node red и установленные плагины. Когда вы это сделаете, вы сможете вставить мой пример и использовать его. Вам нужно будет настроить ноду Telegram и Alice, а также вставить в кубик, который я подписал, свой chat_id.
[{"id":"a9cc7c50.cb198","type":"switch","z":"ee352215.52084","name":"Вставляем сюда свой chat_id вместо моих цифр","property":"payload.chatId","propertyType":"msg","rules":[{"t":"cont","v":"-123123123123123123","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":290,"y":1020,"wires":[["996dc1da.8502d"]]},{"id":"a4db2e2f.a1566","type":"change","z":"ee352215.52084","name":"Берем текст","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.content","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":215,"y":1060,"wires":[["38691e9c.e9e802"]],"l":false},{"id":"d0b9edbb.8cb8d","type":"alice-local-out","z":"ee352215.52084","name":"Воспроизводим текст","token":"","station_id":"123","debugFlag":false,"input":"tts","volume":"0.6","volumeFlag":true,"stopListening":true,"pauseMusic":false,"noTrack":"","x":610,"y":1200,"wires":[]},{"id":"996dc1da.8502d","type":"switch","z":"ee352215.52084","name":"Это сообщение?","property":"payload.type","propertyType":"msg","rules":[{"t":"cont","v":"channel_post","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":115,"y":1060,"wires":[["41d517de.e96208"]],"l":false},{"id":"37ad1afd.ba7786","type":"telegram event","z":"ee352215.52084","name":"Парсер сообщений","bot":"","event":"channel_post","autoanswer":false,"x":190,"y":960,"wires":[["a9cc7c50.cb198"]]},{"id":"41d517de.e96208","type":"switch","z":"ee352215.52084","name":"Есть текст в сообщении?","property":"payload.content","propertyType":"msg","rules":[{"t":"cont","v":"undefined","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":155,"y":1060,"wires":[[],["a4db2e2f.a1566"]],"l":false},{"id":"38691e9c.e9e802","type":"change","z":"ee352215.52084","name":"Отсекаем рекламу","rules":[{"t":"change","p":"payload","pt":"msg","from":"При поддержке Бородач Клуба","fromt":"str","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":190,"y":1120,"wires":[["5e863ffb.4fdc9"]]},{"id":"5e863ffb.4fdc9","type":"switch","z":"ee352215.52084","name":"Проверяем, есть ли обращение к Алисе","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"Алиса","vt":"str"},{"t":"cont","v":"алиса","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":270,"y":1180,"wires":[["a1b43586.5ddc08"],["a1b43586.5ddc08"],["d0b9edbb.8cb8d"]]},{"id":"3dcdf3f2.aa108c","type":"alice-local-out","z":"ee352215.52084","name":"Обращаемся к Алисе","token":"","station_id":"123","debugFlag":false,"input":"voice","volume":"0.6","volumeFlag":true,"stopListening":true,"pauseMusic":false,"noTrack":"","x":620,"y":1080,"wires":[]},{"id":"a1b43586.5ddc08","type":"change","z":"ee352215.52084","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"алиса","fromt":"str","to":"","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"Алиса","fromt":"str","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":475,"y":1080,"wires":[["3dcdf3f2.aa108c"]],"l":false}]
Небольшой пример фунцкионала
Шикарно
Благодарю!)
эм, я застопорился на 'В вашем канале вводите команду /help , затем /language, и выбираете русский язык. Можете посмотреть, что сам бот предлагает выбор разных движков для обработки звука, я остановился на выборе Wit.ai и в целом он меня устраивает.
' В дебаге 'content: undefined'... не переводит запись в текс...
Задумка супер, но распознавание ужасное... говоришь 'Алиса громкость 7' => 'алиса громкость м' и т.д. Спасибо.
Мы пробрасываем лиды из ФБ в телегу и гугл таблицы через Webjack. Сервис работает как часы.
Можно получить месяц халявы и бесплатную настройку по промокоду semen21, напишите его в чат техподдержки на сайте