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

в 9:11, , рубрики: alerts, asterisk, javascript, node.js, telegram, пока не запретили, Разработка систем связи, Системы обмена сообщениями

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

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

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

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

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

Два момента

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

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

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

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

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

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

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

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

Например:

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

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

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

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

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

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js