Asterisk интеграция с telegram
Уведомления о пропущенных вызовах в Telegram для FreeSWITCH и Asterisk. Передача данных из FreeSwitch или Asterisk в Telegram при помощи Telegram Bot Api.
@BotFather: /newbot
Сперва создадим бота, который будет уведомлять нас о пропущенных вызовах (или любых других данных поступающих от FreeSwitch, на ваше усмотрение). Для этого найдем в поиске @botfather и дадим ему команду /newbot.
В ответ он предложит выбрать имя бота. После того, как имя задано, будет предложено задать username. В отличии от имени, username должно быть уникальным, т.к. служит для идентификации бота.
Username должно заканчиваться словом bot. Например myname_bot или mynamebot.
Когда уникальный username задан, папа бот сообщит токен:
Теперь наш бот создан, увидеть список ботов можно при помощи команды /mybots.
Найдите бота по заданному username и пошлите ему команду /start.
Если в ответ приходит только: <«ok»:true,«result»:[]>, пошлите повторно боту команду /start и попробуйте еще раз.
FreeSwitch cURL > Telegram
Теперь настроим FS для отправки уведомлений о пропущенных вызовах.
В данном примере используется приложение диалплана FreeSwitch - mod_curl, но вы можете обращаться к боту любым удобным для вас способом, подходящим для решения ваших задач. Например вызывать bash script приложением диалплана system или написать приложение на lua.
Конфигурация FS сводится к вызову из диалплана приложения cURL с требуемыми параметрами.
Простейший пример вызова абонента c уведомлением:
Socks 5
Пример настроек directory с заданной переменной chat_id:
где <variable name=«chat_id» value=«XXXXXXXX»/> - уникальный Telegram chat_id абонента.
Asterisk System > cURL > Telegram
Сделаем тоже самое для Asterisk используя приложение Asterisk - system и приложение Linux - curl.
ПОШАГОВОЕ ВИДЕО
СОЗДАНИЕ БОТА В TELEGRAM
Итак, переходим к созданию бота. Находим через поиск бота, который называется @BotFather. Выполняем:
На картинке выше выделен API токен ( 331754110:AAHkMNalOz5I_Schh2kvj7ONhRcE8HuKV-c ), который нам пригодится на следующем этапе. Запоминаем его.
Теперь, добавьте вашего бота в групповой чат. Это делается по аналогии, с приглашением других участников. Просто укажите username бота в поиске и добавьте в группу. Теперь в групповой чат пишем следующую команду:
Получаем id нашего группового чата – в нашем случае это -4455667. Приступаем к настройке скрипта на Asterisk.
НАСТРОЙКА СКРИПТА НА ASTERISK
Скрипт написан на языке PHP и будет вызываться из диалплана Asterisk с помощью AGI. Скрипт следующего содержания:
В переменные $token и $chat_id соответственно нужно добавить ваши данные. Сохраняем скрипт с название telegram.php и закидываем в директорию /var/lib/asterisk/agi-bin/ . Далее даем права на исполнение и преобразуем в unix формат:
Сам PHP файл предварительно сохраните в кодировке UTF – 8 (без BOM).
Адаптируем скрипт в диалплан. Мы будем отправлять уведомления по факту звонка на точке входа – то есть на SIP – транке. Поэтому, на входящем транке, в его контекст обработки добавляем следующую строчку:
Сохраняем, перезагружаем диалплан, звоним и проверяем:
Что еще можно сделать:
И к Вам обязательно придет входящий вызов, даже если телеграм недоступен 😉
Нам потребуется: cервер с Asterisk, Python3.6 или выше и pip3.
1. Создадим телеграм бота
1.1. Открываем телеграмм и в поиске находим BotFather
(Мой ключ использовать не нужно, я все равно удалю бота)
Бот будет максимально простой, но для его работы нам понадобится установить пару зависимостей.
2.1. Установка библиотеки requests и asterisk в python.
Выполним команду pip3 install requests asterisk
2.2. В папке /usr/share/asterisk/agi-bin/ создаем файл bot.py
2.3 после чего откроем его в любом удобном текстовом редакторе в моем случаи это vim
2.4. Впишем следующий код в данный файл:
3. В /etc/asterisk/extensions_custom.conf пропишем следующее:
При звонке на номер 333 Мы запускаем наш скрипт bot.py, что бы ловить вызов на любой номер вместо 333 напишите _XXX.
4. В разделе Connectivity перейдем в custom context и создадим новый контекст нажав на кнопку Add Context.
Настройки выставим следующие:
Тут мы разрешаем вызовы на все локальные номера, а также вызовы по всем маршрутам.
Далее идем в Applications -> Extensions
и добавляем внутреннему номеру, который вам нужен, контекст который мы только что создали.
Во вкладке Advanced находим Custom Context
Теперь пробуем сделать вызов с этого номера на номер 333.
И нам пришло уведомление.
Вывод: Мы настроили нашу АТС на отправку уведомлений о звонках в телеграм, написали простого бота, который это реализует.
Остались вопросы?
Я - Игорь Кондрашин, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
VoIP оборудование
Fanvil X3S
22 000 тнг.
Fanvil X3S
17 000 тнг.
Fanvil X3S
17 000 тнг.
Fanvil X3S
17 000 тнг.
Fanvil X3S
17 000 тнг.
Fanvil X3S
17 000 тнг.
ближайшие курсы
Курсы по Asterisk
последняя неделя
каждого месяца
Записаться
Новые статьи
Настройка и подключение FXS шлюза Grandstream GXW-4008
Пример маршрутизации и проверки телефонного номера по API с использованием Python
Отправка уведомлений о звонках в Telegram
ближайшие Вебинары
Mikrotik User Meeting: конференция по сетевым технологиям
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.
Сервис позволяет использовать Telegram как софтфон. Для подключения понадобится только аккаунт SIP-провайдера и аккаунт в Telegram. Для каждого провайдера возможны и входящие, и исходящие звонки.
Добавление нового оператора
Заполните поля Логин и Пароль, и выберите Сервер из шаблона.
Выберите SIP-клиент в меню бота, а затем нажмите Новый .
Чтобы настроить клиента, заполните поля Логин , Пароль и выберите Сервер из шаблона . Сервис сохранит настройки и автоматически подключится к оператору.
Если вы не нашли подходящий сервер из шаблона, вы можете указать свой. Для этого выберите пункт Сервер — это адрес SIP-сервера, к которому будут подключаться сервера sip.tg. Domain — это часть адреса после @ , которая передается на сервер при исходящих запросах. Обычно указывать её не требуется: она нужна для некоторых операторов и может отличаться от значения Сервер (например, у оператора МультиФон).
Вы можете добавить до 20 SIP-аккаунтов.
Если при подключении возникла ошибка, то сервис отобразит код и название ошибки.
Изменение настроек
Логин аккаунта оператора
Пароль аккаунта оператора
Выбор параметров подключения к серверу оператора из шаблонов
Сервер регистрации оператора
Значение домена в поле From в исходящих к оператору запросах
Изменение состава и приоритета используемых аудио кодеков
Изменение состава и приоритета используемых методов DTMF
Правила преобразования номера телефона перед передачей его оператору
Отображаемое имя оператора
Отключение аккаунта оператора и удаление связанных с ним данных
Передать данный аккаунт оператора другому пользователю
После внесения изменений, нажмите Применить . Если вы не нажали кнопку, настройки будут применены автоматически через 5 минут.
Удаление аккаунта
Чтобы удалить аккаунт, нажмите Удалить в меню с настройками аккаунта. Сервис запросит подтверждение в виде кнопок Да и Нет .
Состояние операторов
Добавленные аккаунты будут сохранены в меню SIP-клиент. Вы можете видеть два статуса у операторов:
Оператор отключен. Появляется, если введен неверный логин или пароль или не заполнены параметры подключения.
Как звонить
Исходящие
Чтобы позвонить на произвольный номер, отправьте сервису — @siptg_bot или @siptg — номер телефона одним из способов:
Прикрепите карточку контакта с номером
Напишите телефон текстом
Если попытка соединения завершается ошибкой, связанной с флудом, пользователю предлагается сделать исходящий звонок на аккаунт @siptg. Исходящий звонок необходимо сделать в течение 60 секунд.
Telegram позволяет отправлять несколько телефонов из одного контакта, что создает проблему: какой номер телефона использовать для звонка. Чтобы избежать неоднозначность, установлено требование присылать строго один номер телефона из карточки контакта.
Перезвонить
В режиме диалога
login — логин учетной записи;
pass — пароль учетной записи;
template — префикс имени шаблона настроек оператора;
registrar — сервер регистрации учетной записи; указывается, если не используется шаблон;
domain — значение параметра from domain, указывается только в паре с полем registrar;
codecs — список аудио кодеков в порядке их приоритета, разделенные запятой;
dtmf — список способов отправки DTMF-кодов в порядке их приоритета, разделённые запятой;
rules — список правил преобразования номера перед набором; правила друг от друга разделяются пробелом.
Например, для подключения к Мультифону с логином user и паролем pass достаточно ввести: @siptg_bot user pass муль
Всплывающая подсказка поможет убедиться, что вы ввели настройки правильно.
У функции есть ограничения и она не предназначена для долговременного хранения SIP-настроек. Кнопка работает 5 минут, нажать кнопку можно один раз, SIP-настройки добавляются в режим SIP-клиента того пользователя, который нажимает на кнопку.
Если Вам нужно сохранить настройки на длительный срок, можно воспользоваться ссылкой с SIP-настройками.
Ссылка с SIP-настройками
Данная возможность окажется особенно полезной операторам связи. Можно сформировать Telegram-ссылку с настройками, которую разместить в Личном кабенете пользователя. При переходе по данной ссылке у пользователя откроется приложение Telegram с уже добавленным SIP-аккаунтом, без необходимости дополнительных действий со стороны пользователя.
Ссылка может содержать данные пользователя как в открытом, так и в base64-кодированном виде. В первом случае разделителем значений служит знак = , а Логин и Пароль может содержать только символы A-Z , a-z , 0-9 , _ и - . В случае base64-кодированной строки значения разделяются пробелом, после чего сформированная строка параметров кодируется через url-безопасный base64.
Формат URL в открытом виде должен иметь вид:
— логин учетной записи;
— пароль учетной записи;
— код SIP-шаблона, его можно уточнить в поддержке.
В base64-кодированном виде ссылка будет похожа на следующую:
В случае, если используется base64-кодированная строка, также можно передавать настройки без SIP-шаблона, при этом параметры формируются аналогично способу передачи SIP-настроек в режиме даилога.
Также имеется возможность формировать фейковые логины/пароли, которые будут преобразовываться в реальные на Вашем Worker'е по Вашей логике.
Передать и вернуть SIP-аккаунт
Вы можете передать другу ваш SIP-аккаунт временно или навсегда. В любой момент его можно вернуть без разрешения временного владельца.
Нажмите для передачи аккаунта другу
Передача аккаунта
У функции есть ограничения: срок действия кнопки подтверждения — не более 5 минут, нажать кнопку можно только один раз, SIP-настройки добавляются в режим SIP-клиента того пользователя, который нажимает на кнопку Получить .
Забрать SIP-аккаунт
Передача не произойдет, если текущий владелец удалил аккаунт или Вы ввели неверный пароль.
Читайте также: