Bagir

 
<<< Back

Навык Алисы для отправки сообщения в МД

Навык отправляет сообщения в Телеграм. Далее модуль Телеграм доставляет их в МД. Сообщения можно отправлять в чат от имени пользователя связанного со станций. При этом они будут обрабатываться шаблонами поведения. Либо просто реагировать на них как угодно.

Модуль Телеграм и Создание канала
Создаем новый приватный канал в телеграмм. Именно канал, а не группу. Публичным его делать не надо. Канал создается там же где и новый чат. Имя канала любое. Я назвал свой "Сообщения от станций". Участников канала добавлять не надо. Добавляем в администраторы канала бот модуля Телеграма. На телефоне делается это там же где и добавляем участников, только выбираем добавить администратора канала. Этого бота вы делали сами, когда ставили модуль Телеграм в МД. Имя можно посмотреть в модуле Телеграм. Для этого бота мне достаточно разрешений на отправку и удаление сообщений. В канале можно настроить автоматическое удаление сообщений по времени. Фишка канала в отличии от группы в том, что боты в нем читают сообщения отправленное другими ботами. Пишем сами что нибудь в этом канале. В модуль Телеграм придет сообщение о новом незарегистрированном пользователе. Создадим его. Все инструкции есть в самом модуле Телеграм.
Теперь нужно узнать Чат id созданного канала. Он понадобится для регистрации.

  • Его можно посмотреть в колонке ID модуля Телеграм. У канала id начинается со знака минус.
  • Можно открыть Телеграм в браузере и посмотреть в строку адреса страницы.
  • Ещё как вариант воспользуйтесь ботом @username_to_id_bot.

Навык Алисы
Добавляем в администраторы канала бот навыка Алисы.
Имя бота: Алиса передает сообщение
Username: @Alisa_SK_bot
Дадим этому боту только право "Отправлять сообщения"

По одноразовой ссылке добавляем мой приватный навык себе, просто перейдя по ней. После этого его можно вызывать на колонке или телефоне.
Активационные фразы: Запусти навык / Скажи / Попроси

  • Умный дом
  • Мой дом
  • Наш дом
  • Мой УД (для сценариев)

Регистрация
Удобнее первый раз запустить навык на телефоне (на устройстве с экраном). Навык спросит ID канала Телеграм. Можно и на колонке надиктовать, но не всегда с первого раза получается, много цифр. Будет создана привязка id пользователя Яндекс к чат id Телеграм. При следующем вызове навыка, он уже спросит сообщение, которое нужно переслать.

Возможные команды:

  • Скажи мой чат id
  • Удали мою запись из базы

Вариант сообщения:

  • Алиса скажи моему дому включи свет
  • Алиса попроси наш дом выключить всет

Ловим эти сообщения в модуле Телеграм
На вкладке "Команды" создадим новую с названием msg_from
Контроль доступа: Для всех
Пользователи: выбрать имя созданного канала
Отображение команды: скрыть
Код:

$matches = preg_split("/\s([0-9A-Z]{64})\s/", $text, 2 ,PREG_SPLIT_DELIM_CAPTURE);

if (!isset($matches[2])) {
 say('Неверный формат сообщения из телеграмм');
 return 'error: wrong format message';
} elseif (empty($matches[2])) {
 say('Нет текста в сообщении из телеграмм');
 return 'error: no text in message';
}

switch ($matches[1]) {
 case 'zzzzz': $user=2; $source ='aliceKitchen'; break; //кухня
 case 'xxxxx': $user=3; $source ='aliceGarage'; break; //гараж
 case 'ccccc': $user=4; break; //телефон
 default: say('Поступило сообщение от неизвестной станции '.$matches[1], -1); $user = 1; $source ='';
}

say($matches[2], 0, $user, $source);
return 'ok';

В переменной $text будет сообщение вида: msg_from id_станции текст_сообщения
Дальше делайте с ним что угодно. Лично я по id станции определяю от какого пользователя отправить сообщение в чат. Дальше оно обрабатывается шаблонами поведения. У меня для каждой комнаты создан свой пользователь. Так же пользователи созданы для телефонов домашних. Если я скажу на телефон Включи свет, то Алиса спросит Где? А если в колонку на кухне, то свет включится на кухне. Для этого и нужно знать с какой колонки прилетело сообщение.
Если заинтересовало, пишите. Пришлю ссылку на навык. Ссылки одноразовые, выкладывать тут бесполезно.

Discuss (10) (4)

See also:
2023-10-21 Функции системы
2022-08-17 Вариант функции для получения времени изменения свойства
2022-08-17 Связка Яндекс > Телеграмм > МД
2022-08-10 Элемент Поле выбора (radio)
2022-08-09 Пример многоуровневого шаблона (Включи|Выключи)

Углич, Россия

На форуме: Bagir