- PVSM.RU - https://www.pvsm.ru -

Телеграм: отправка сообщений на номер мобильного в чат с ботом

Как и многие использую астериск для организации телефонной связи. У абонентов кроме их внутреннего номера есть также номер мобильного, куда совершаются переадресации, а также рассылаются смс в случае пропущенного вызова.

Традиционно уведомления о пропущенных звонках отправлялись или на емейл, или на мобильный в виде смс. С появлением Телеграм стало возможным отправлять сообщения в мессенджер. Одна незадача: мы не можем отправить сообщение именно на номер мобильного.

А нам это удобнее, т.к. номера мобильных у нас уже есть (у нас есть сотни абонентов, желающих получать уведомления :), а chat id еще найти надо, да еще и для каждого свой.

Решение: небольшой чат-бот.

Чат-бот принимает пользователя и спрашивает у него номер телефона. Затем полученный номер и соответсвующий chat id сохраняет на сервер. Теперь мы можем отправлять уведомление на номер на наш сервиса, а бот, привязанный к сервису, будет будет пересылать это уведомление соответствующему пользователю в телеграм. Получается и дешево (мы теперь не платим за смс), и сердито.

Два момента

  1. пока пользователь не подключится к боту, мы не можем отправлять ему сообщения.
  2. идентификатор пользователя отправившего номер и идентификатор пользователя имеющего отправленный номер сравниваются, в случае расхождения пользователь не будет ассоциирован с указанным номером

Приложение маленькое, но крайне полезное. Отправлять можно любое сообщения (которое ранее отправлялось через смс или емейл) — уведомления о звонках, ошибках, падениях серверов и т.д.

Немного деталей

Отправка происходит путем отправки http-запроса на локально запущенный веб-сервер, который по совместительству реализует чат бота. Сервер производит поиск соответствия в БД mongo и затем отправляет данные в Телеграм. Все просто.

Веб-сервер написан на nodejs, для взаимодействия с Телеграмом используется замечательная библиотека telegraf [1].

Как создать бота и получить токен уже есть инструкция [2].

Как отправить сообщение?

POST-запрос с json сообщением

Например:

curl -X POST 
  http://localhost:3030/send/<number> 
  -H 'content-type: application/json' 
  -d '{"text": "Ahtung!!"}'

Как это работает у меня? После завершения вызова астериск вызывает небольшой скрипт, который смотрит статус вызова и отправляет по необходимости сообщение. Вот и все.

Исходники на гитхабе: telegram-alert [3]
Установка описана в репозитории.
Для желающих быстрого старта есть docker-compose.yml
Видео использования

Предложения? Вопросы?

Автор: Дмитриев Сергей

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/265374

Ссылки в тексте:

[1] telegraf: https://github.com/telegraf/telegraf

[2] инструкция: https://habrahabr.ru/post/262247/

[3] telegram-alert: https://github.com/antirek/telegram-alert

[4] Источник: https://habrahabr.ru/post/339704/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best