Бот Telegram зв’язок 1с — IP АТС Askozia і Push повідомлення Telegram

Частина співробітників нашої компанії працює поза офісом: виїжджають до клієнтів, працюють в домашніх умовах. Для зв’язку з такими співробітниками ми використовуємо GSM шлюз, підключений до нашої АТС Askozia. Будь-якої виклик, що надійшов від клієнта, може бути переадресований на співробітника «в полі».

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

Ми вирішили використовувати telegram для оповіщення про дзвінки. Вийшла цікава зв’язка програмних продуктів Askozia + 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/

Продовжуємо роботу через 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 easy to access the HTTP API: 171119299:AAHo-y2Ps4-ZTblLRHbjBHG5pG-0cpN

Налаштування контекстів

  • local_context — це контекст, де визначено внутрішні номери і мобільні наших співробітників, за замовчуванням «localchanneйls
  • dst_context — щоб отримати цей контекст необхідно відкрити одну з облікових записів типу «Телефон» і в адресному рядку браузера скопіювати ідентифікатор виду «SIP-PROVIDER-196627525951ab38268552a», це і буде контекст

Запуск скриптів в cron

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

  • Перейдіть на вкладку «Configuration Files»
  • Виберіть файл «crontabs»
  • Додайте рядок запуску скрипта як на зображенні вище

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

Підсумки впровадження

Співробітники отримали корисний сервіс оповіщення про вхідні дзвінки:

  • Оповіщення приходить до надходження дзвінка
  • Співробітник бачить, хто йому дзвонить
  • При використанні функції «передзвонити», виклик йде через АТС, а значить розмова записується

Корисні матеріали

Поділитися з друзями
Корисні поради - Вказівка