Интеграция мессенджеров, таких как Telegram, с системами телефонии, например, Asterisk, становится всё более актуальной. Всё чаще люди используют мессенджеры вместо социальных сетей, повышая востребованность подобной интеграции. Описание процесса отправки уведомлений о входящих звонках в Asterisk в групповой чат Telegram представлено ниже.
Создание бота и получение API token
Первый шаг — создание бота в Telegram и получение его API token. Для этого используется бот @BotFather.
- Найдите бота @BotFather в Telegram.
- Введите команду /newbot.
- Укажите имя бота (например, MillionBot).
- Выберите username для бота, добавив обязательный постфикс _bot (например, @million_bot).
- Запомните и сохраните полученный API token — он необходим для дальнейшей настройки.
Создание группового чата и получение его ID
Следующий этап — создание группового чата в Telegram для отправки уведомлений. Необходимо получить ID этого чата.
- Создайте новый групповой чат.
- Добавьте в него созданного бота.
- Выполните команду /setjoin в чате с ботом @BotFather, указав username вашего бота (например, @million_bot).
- Для получения ID группового чата используйте API Telegram. Скопируйте полный URL, вставьте свой API token и получите JSON-ответ. Найдите в ответе поле id — это и есть ID вашего группового чата. Сохраните это значение.
Настройка скрипта для Asterisk
Для отправки уведомлений используется простой скрипт (примерно 16 строк кода), вызываемый из Asterisk. Скрипт использует библиотеку PECL1.php, которая должна быть установлена в директории /var/lib/asterisk/agi-bin. При отсутствии библиотеки, её можно найти и скачать в интернете.
Основные части скрипта:
- Загрузка библиотеки PECL1.php: require_once "PECL1.php";
- Создание объекта класса AGI: $agi = new AGI();
- Получение номера телефона: $phone = $agi->request("variable","phonehandset");
- Указание API token и ID группового чата: эти значения подставляются из сохраненных данных.
- Формирование сообщения для Telegram: сообщение формируется из данных, полученных от Asterisk.
- Отправка сообщения в Telegram: $telegram->sendMessage(["chat_id"=>$chatId, "text"=>$message]);
Развертывание и настройка в Asterisk
- Скопируйте скрипт в директорию /var/lib/asterisk/agi-bin.
- Установите права доступа к скрипту (755).
- Установите владельцем скрипта пользователя Asterisk (например, asterisk).
- Сконвертируйте скрипт в формат, понятный Unix-системе.
- В файле конфигурации Asterisk (extensions.conf) добавьте строку для вызова скрипта через API: agi(path_to_script). Замените path_to_script на путь к вашему скрипту.
- Перезагрузите Asterisk (./ami reload).
Тестирование
После настройки выполните тестовый звонок. Уведомление о звонке должно появиться в вашем групповом чате Telegram. В скрипт можно добавлять кастомные метки и дополнительные данные для гибкой настройки уведомлений.
Это руководство описывает интеграцию Asterisk и Telegram для получения уведомлений о входящих звонках. Это простой и эффективный способ улучшить мониторинг и управление телефонными вызовами. Интеграция с Telegram позволяет добавлять дополнительные функции и расширять функциональность системы.