Уведомление о звонке по telegram

imageimage
Довольно часто компании, использующие Asterisk, сталкиваются с необходимостью автоматического перевода звонка на мобильный телефон сотрудника. Конечно, идеальным решением была бы установка на телефоны какого-нибудь софтфона, но далеко не везде качество мобильного интернета удовлетворяет потребности передачи голоса, так что звонок переводится именно на номер мобильного телефона. В соответствии с законодательством и внутренними правилами, операторы связи чаще всего не разрешают подстановку произвольного номера в качестве Caller ID, поэтому работники, которым переводится вызов, видят не номер звонящего клиента, а номер офиса. В некоторых случаях это даже удобно, но бывает и так, что перезвонить клиенту нужно немедленно. Конечно, работник может зайти в интерфейс статистики (если, конечно, он есть) и найти там номер звонившего, но это не всегда возможно и всегда абсолютно неудобно.
Для решения задачи по передаче номера звонившего сотруднику на мобильный телефон использовали разнообразные методы: отправка смс (стоит дополнительных денег, требуется оборудование или договор с сервисом вроде sms.ru), озвучивание номера по звонку в офис и донабору некоего добавочного номера (долго, стоит денег, да и запомнить налету 11 цифр сложно), и наконец, jabber (которым сегодня мало кто пользуется).
Столкнувшись с подобной задачей, мы захотели использовать telegram. На официальном сайте, в разделе Apps есть неофициальный консольный клиент под Linux — telegram-cli, что нам и нужно! Однако, в силу своей неофициальности, похвастаться установкой в один клик это приложение не может, так что придется собирать его из исходников. В сети можно найти одну и ту же инструкцию, которая кочует с сайта на сайт, однако следуя ей, мы потерпели неудачу, и не один раз.

Итак, последовательность верных действий такова:
Как обычно, обновляем систему

apt-get update или yum update.


Для корректной работы telegram-cli требуется python версии 2.7 и выше. Проверить, какая именно версия установлена у вас (если, конечно, она вообще установлена) можно так:

python -V


Еще потребуются следующие пакеты
для ubuntu server 14.04

libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev make


для centos 6.X

lua-devel openssl-devel libconfig-devel readline-devel libevent-devel libjansson-devel python-devel


а также git
Как только необходимые пакеты установлены, можно приступать к установке самого telegram-cli
Выберем каталог, где он будет находиться.

cd /usr/src


И получим сами исходники

git clone --recursive https://github.com/vysheng/tg.git


теперь можно перейти в каталог и приступить к сборке

cd ./tg
./configure


а вот перед make мы рекомендуем открыть файл ./tgl/mtproto-utils.c и закомментировать или удалить там строки 101 и 115:

assert (0); // As long as nobody ever uses this code, assume it is broken.


В противном случае велик риск получить ошибку вот такого вида

tgl/mtproto-utils.c:101: BN2ull: Assertion 0' failed. SIGNAL received  


при первой же попытке запуска telegram-cli.
Ну и наконец можно выполнить make и выпить чашечку кофе, пока приложение будет собираться.
Когда сборка будет завершена, нужно запустить приложение и ввести свой номер телефона, а также код подтверждения, который придет на него или в другой запущенный клиент telegram:

 /usr/src/tg/bin/telegram-cli -k /usr/src/tg/tg-server.pub  -W 


а затем выйти командой
quit
С этого момента вы можете использовать консольный telegram! Кроме команды quit внимания заслуживает команда help, которая покажет все остальные команды. Нас же в первую очередь интересует отправка сообщений. Делается это так:

msg Имя_Фамилия Некоторое сообщение


Обратите внимание на то, что между именем и фамилией стоит _, а не пробел, а также на то, что имя всегда стоит перед фамилией.
А вот так будет выглядеть вызов telegram-cli для отправки одного сообщения и завершения

 /usr/src/tg/bin/telegram-cli -k /usr/src/tg/tg-server.pub -U root -W -e "msg Иван_Иванов Привет, Иван!"


Для удобства напишем простенький скрипт
telegram.sh

#!/bin/bash
name=$1 #Имя_Фамилия
text=$2 #Сообщение
path=/usr/src/tg
${path}/bin/telegram-cli -k ${path}/tg-server.pub -U root -W -e "msg $name $text" 
exit 0


обязательно дадим ему права на исполнение

chmod +x telegram.sh


и попробуем запустить его из консоли. Обратите внимание на то, что сообщение скорее всего будет содержать пробелы, поэтому его нужно взять в кавычки:

./telegram.sh Иван_Иванов "Сообщение из консоли"


Конечно, до того как подключать аккаунт к консольному telegram, все контакты пользователей желательно добавить из мобильного или десктопного приложения.
Дело остается за малым: вызвать наш скрипт из диалплана. Делается это несложно:

exten => 333,n,Set(name=Иван_Иванов)
exten => 333,n,System(/home/asterisk/telegram.sh ${name} "Входящий звонок от ${CALLERID(num)}")


Примерно вот так это будет выглядеть на телефоне
image
Вызывать скрипт имеет смысл еще до того, как формировать Dial: мобильник может быть занят, отключен, а человек может просто не услышать звонка, а информация о нем тут же придет в telegram.
Безусловно, если списки мобильных телефонов для переадресации уже хранятся в базе данных, имена контактов telegram имеет смысл тоже хранить там.
Итак, меньше чем за час мы получаем возможность отправки прямо из диалплана Asterisk номера звонящего на мобильный телефон сотрудника, и конечно же, мы можем передавать любую дополнительную информацию через этот шифрованный канал связи.
Автор текста: специалист по Asterisk компании centos-admin.ru Алексей Дмитриев

© Habrahabr.ru