Success Story
я решил создать Telegram бота, который бы открывал ворота на въезд в коттеджный посёлок, чтобы друзья могли беспрепятственно въезжать и выезжать.
Ворота открываются по звонку с номера, который внёсён у них в белый список.
Была выбран следующая схема:
1. В качестве SIP провайдера был выбран Zadarma - он позволяет подставить свой номер. Подстановка происходит не всегда, о чем zadarma предупреждает (и отражает в статистике реальный номер, который высвечивается у принимающей звонок стороны). Среди всех членов семьи удалось найти номер, который zadarma успешно подставляет при звонке на номер ворот.
2. Telegram-бот написан на python с использованием pytelegrambotapi.
3. Asterisk запущен на одном хосте с телеграм-ботом (в моём случае - это роутер Keeneric Viva).
Кратко процесс:
1. Регистрируемся на zadarma (подробно не пишу, я делал это давно). У меня осталось 0.5$ на счету - скорее всего дали при регистрации
2. Создаем УЗ бота в telegram - для этого используется бот
@BotFather. Он-же отдаёт токен для доступа к боту, его храним как зеницу (в скрипте ниже я его немного изменил, но оставил для понимания что он из себя представляет).
3. Устанавливаем python (sudo apt install python3, pip3 install --upgrade pip, pip3 install pytelegrambotapi)
4. Пишем код бота (см вложение). Я вырезал части, отвечающие за логику бота (авторизацию, уведомления хозяевам дома и прочее, оставил только код слова для открытия и саму процедуру открытия (звонка). Бот пишет call-файл в /var/spool/asterisk/outgoing, чтобы asterisk звонил.
5. Конфигурация Asterisk - когда я учился про pjsip ещё ничего не было, поэтому у меня всё в sip.conf, два внутренних номера и один внешний канал через zadarma.
6. Из плюсов - всё "бесплатно", т.к непосредственно соединения не происходит - ворота сбрасывают звонок.