Бот Telegram связь с 1с — IP АТС Askozia и Push уведомления в Telegram

Часть сотрудников нашей компании работает вне офиса: выезжают к клиентам, работают в домашних условиях. Для связи с такими сотрудниками мы используем GSM шлюз, подключенный к нашей АТС Askozia. Любой вызов, поступивший от клиета, может быть переадресован на сотрудника «в поле».

В таких условиях возникает не удобная ситуация: сотрудник, при входящем вызове видит номер SIM карты, а не номер клиента. Нет возможности оперативно перезвонить на пропущенный вызов.

Мы решили использовать telegram для оповещения о звонках. Получилась интересная связка программных продуктов Askozia + telegram. Под катом самое интересное.

Как все работает

Сотрудник обращается к сервису через telegram. Написав боту, можно подписаться на уведомления. Формат приветствия — «Я <НомерТелефона>»:

Подписка на уведомления

Бот сохраняет ваш номер телефона, и с этого момента знает в какой чат отправлять оповещения. Если кто либо пытается позвонить или переадресовать вызов на номер сотрудника, в чат приходят сообщения:

Оповещение о звонке в telegram

Обратите внимание, отображается информация о имени звонящего и его номер телефона. Представление (имя) звонящего может быть взято из 1С:CRM, если это необходимо. В данном примере, callerid(name) был установлен после получения информации из 1C:CRM.

Дополнительно, отображается гиперссылка «(перезвонить)». Гиперссылка инициирует «callback» на мобильный номер сотрудника. Как только примем вызов на мобильном, начнется набор абоненту, вызов которого поступал ранее.

Интересная и неожиданная фича — оповещение о звонке приходит быстрее, чем звонок на мобильный. Набор номера через GSM линию происходит с задержкой 4-5 секунд. Уведомление в Telegram приходит намного быстрее.

Установка сервиса на IP АТС Askozia

Используются Telegram API, AMI Asterisk, SOAP web сервисы 1С: Предприятие. Все сервисы реализовали на PHP 5.

Подключаемся к АТС по SSH

Смонтируем раздел, разрешим запись.

mount -o remount,rw /offload;

Создадим директорию, где будет храниться ссылка на скрипт обратного звонка.

mkdir /offload/rootfs/usr/www_provisioning/telegram/;

Создадим директорию, где будут храниться скрипты.

mkdir /storage/usbdisk1/askoziapbx/astlogs/asterisk/telegram/;

Подключаемся к АТС по SFTP

Скачиваем дистрибутив по ссылке. Копируем скрипты из дистрибутива в директорию:

/storage/usbdisk1/askoziapbx/astlogs/asterisk/telegram/

Файлы сервиса telegram и PAMI
Продолжаем работу через SSH

Создадим символическую ссылку на скрипт обратного звонка.

ln -s /storage/usbdisk1/askoziapbx/astlogs/asterisk/telegram/miko_callback.php /offload/rootfs/usr/www_provisioning/telegram/miko_callback.php

Создадим файл, где будут храниться текущие подписки на оповещения в telegram:

echo >> /storage/usbdisk1/askoziapbx/astlogs/asterisk/telegram/subscription.db

Смонтируем раздел в исходное состояние «Только чтение».

mount -o remount,ro /offload;

Определим настройки в файле settings.json

Настройки хранятся в формате JSON.

  • «ami_host, ami_port, ami_username, ami_secret» — параметры подключения к AMI
  • «telegram_API_key» — API ключ телеграмм бота
  • «subscription_file» — имя файла, где будут храниться подписки на оповещения
  • «dst_context» — контекст, через который возможен набор номера назначения
  • «local_context» — контекст, через который возможен набора внутренних номеров
  • «res_callback» — URL, где опубликова скрипт обратного звонка, «HOST» — адрес askozia
Как получить Telegram API key

Его следует попросить у «BotFather»:

  • Создайте новый диалог контактом «BotFather» в telegram
  • Напишите команду «/newbot»
  • На втором шаге введите имя нового бота
  • На третем шаге введите «username» бота, оно должно содержать строку «bot»

В ответ бот пришлет сообщение с ключом:

Use this token to access the HTTP API: 171119299:AAHo-y2Ps4-ZTblLRHbjBHG5pG-0cpN

Настройка контекстов
  • local_context — это контекст, где определены внутренние номера, и мобильные наших сотрудников, по умолчанию «localchanneйls
  • dst_context — чтобы получить этот контекст необходимо открыть одну из учетных записей типа «Телефон» и в адресной строке браузера скопировать идентификатор вида «SIP-PROVIDER-196627525951ab38268552a», это и будет контекст
Запуск скриптов в cron

Процедура необходима для работы сервисов в «фоне». Необходимо открыть «консоль интегратора», нажав «ESC» в web интерфейсе:

Запуск скриптов в фоне. Панель интегратора Askozia
  • Перейдите на вкладку «Configuration Files»
  • Выберите файл «crontabs»
  • Добавьте строчку запуска скрипта как на изображении выше

*/5 * * * * /bin/sh /storage/usbdisk1/askoziapbx/astlogs/asterisk/telegram/starter.sh

Итоги внедрения

Сотрудники получили полезный сервис оповещения о входящих звонках:

  • Оповещение приходит до поступления звонка
  • Сотрудник видит, кто ему звонит
  • При использовании функции «перезвонить», вызов идет через АТС, а значит разговор записывается
Полезные материалы
Поделиться:
Нет комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.