Частина співробітників нашої компанії працює поза офісом: виїжджають до клієнтів, працюють в домашніх умовах. Для зв’язку з такими співробітниками ми використовуємо 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
Підсумки впровадження
Співробітники отримали корисний сервіс оповіщення про вхідні дзвінки:
- Оповіщення приходить до надходження дзвінка
- Співробітник бачить, хто йому дзвонить
- При використанні функції «передзвонити», виклик йде через АТС, а значить розмова записується
Корисні матеріали
