Статья

Интерком в Алисе через Telegram

Что такое интерком и зачем он мне нужен?

Это система быстрой коммуникации внутри вашего дома, чтобы не кричать кому-то, а просто наговорить текст в ваше принимающее устройство и передать его на источник звука. В конкретном случае, мы будем записывать аудио сообщения в телеграмме и передавать их на вашу Яндекс станцию, к слову, функция интеркома итак доступна в Яндексе, но я не любитель использовать кучу приложений для реализации одной функции. Поэтому использование стандартного приложения Яндекс для меня сразу отпало. Также из коробки имеется возможность работы у 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}]

Небольшой пример фунцкионала

Завершение
Данное решение я обкатываю и пока могу сказать, что работает все действительно не плохо. Юзер кейсы вы можете придумать себе сами, о своих мне рассказать нечего - это банальное общение с родными, которые не могут прочитать или ответить на звонок. Запуск Алисы с Telegram может быть кому-то пригодится, я сделал это только ради того, чтобы проверить ее работоспособность. В целом, возможно, кто-то сможет это применить для запуска сценариев, ведь жестко прописывать ничего не нужно. Вам достаточно произнести ключ-фразу Алиса, и мое флоу будет отправлять в кубик запуска команды, а не в TTS. Пока это работает без сбоев!

Разработчики Алисы выпустили похожего бота, но пока с управлением через текст, это круто - ждем управление через голос, как в моем примере!
Веселых вам вечеров и крутых юзер кейсов, уважаемое сообщество!


Шикарно

Благодарю!)

эм, я застопорился на 'В вашем канале вводите команду /help , затем /language, и выбираете русский язык. Можете посмотреть, что сам бот предлагает выбор разных движков для обработки звука, я остановился на выборе Wit.ai и в целом он меня устраивает.

' В дебаге 'content: undefined'... не переводит запись в текс...

Задумка супер, но распознавание ужасное... говоришь 'Алиса громкость 7' => 'алиса громкость м' и т.д. Спасибо.

Мы пробрасываем лиды из ФБ в телегу и гугл таблицы через Webjack. Сервис работает как часы.


Можно получить месяц халявы и бесплатную настройку по промокоду semen21, напишите его в чат техподдержки на сайте


Вернуться назад
Вернуться назад