Pull to refresh
69.94
Слёрм
Учебный центр для тех, кто работает в IT

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

Reading time 4 min
Views 22K
image image
Довольно часто компании, использующие 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 Алексей Дмитриев
Tags:
Hubs:
+12
Comments 12
Comments Comments 12

Articles

Information

Website
slurm.io
Registered
Founded
Employees
51–100 employees
Location
Россия
Representative
Антон Скобин