Интеграция Asterisk и Telegram

Telegram очень популярен в мире и позволяет не только общаться, но и участвовать в дискуссиях. Сегодня я решил интегрировать Telegram с Asterisk. Сейчас я использую Gtalk для получения уведомлений о том, что кто-то звонил мне и получаю доступ к записи автоответчика на своем сервере по URL. Выглядит это примерно вот так:

Теперь я хочу проделать то же самое с Telegram.

Итак установим пакет telegram-cli на CENTOS 6 для доступа к моему аккаунту telegram через linux CLI .

Установка Telegram-cli CENTOS 6.X

Telegram-cli использует Python 2.7 или выше, а CENTOS 6.X по-умолчанию использует версию Python 2.6 поэтому первым шагом обновим версию Python до 2.7. Проверить текущую версию python установленного у вас на сервере можно командой:

version by Python -V command

Установка Python 2.7:

yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel
cd /usr/local/src/
wget --no-check-certificate https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
tar xf Python-2.7.6.tar.xz
cd Python-2.7.6
./configure --prefix=/usr/local

make && make alt install
(может понадобится установить symlink на новую версию Python )

Установка Jansson:


cd /usr/local/src/ && wget http://www.digip.org/jansson/releases/jansson-2.5.tar.gz
tar -zxf jansson-2.5.tar.gz
cd jansson*
./configure --prefix=/usr/ && make clean && make && make install && ldconfig

Установим другие необходимые для telegram-cli пакеты:

yum install lua-devel openssl-devel libconfig-devel readline-devel libevent-devel expect git

Скачаем и установим пакет telegram-cli:

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

make

Настроим аккаунт в telegram-cli

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

 
 

Теперь можно отправлять сообщения в Telegram с помощью команды msg. Например:

msg test message

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

Bash скприпт  для отправки сообщений/файлов в telegram через Linux CLI

Скрипт отправки сообщений в Telegram ( sendmsg.sh ):

#!/bin/bash
to=$1
msg=$2
tgpath=/usr/local/src/tg
cd ${tgpath}

(echo "safe_quit") | ${tgpath}/bin/telegram-cli -k ${topath}/tg-server.pub -U root -W -e "msg $to $msg"

Скрипт отправки файлов в Telegram ( sendfile.sh)

#!/usr/bin/expect
set timeout 2
set msg [lindex $argv 1]
set dest [lindex $argv 0]
spawn /usr/local/src/tg/bin/telegram-cli -k /usr/local/src/tg/tg-server.pub  -W
expect "> "
sleep 10
send "\rsend_file $dest $msg\r"
expect "> "

expect eof

Установим права доступа для скриптов

chmod +x sendmsg.sh
chmod +x sendfile.sh

3.4 - Проверим

./sendmsg [аккаунт telegram] "Hello my telephony Telegram "
./sendfile [аккаунт telegram] record.wav

Пришло время Asterisk.

Мы можем просто использовать системные приложения в дайлплане asterisk для запуска наших скриптов. Этот способ самый подходящий, т.к. отправка сообщений занимает время, а файл генерируется по окончании разговора.

exten => h,1,System(/usr/local/src/sendmsg.sh "аккаунт telegram" "'${CALLERID(num)}is calling Miniatel on ${STRFTIME(${EPOCH},,%Y/%m/%d)}-${STRFTIME(${EPOCH},,%H:%M:%S)}'" )

И вот результат. Но если честно, то я продолжаю использовать Gtalk, т.к. его поддержка встроена в Asterisk и работает более стабильно.

 
 
 
 


Дополнительная информация:

https://github.com/vysheng/tg

https://www.digitalocean.com/community/tutorials/how-to-set-up-python-2-7-6-and-3-3-3-on-centos-6-4

http://caporro.it/script-shell-send-telegram-msg-with-expect/

Получите бесплатную консультацию

Мы очень любим общаться и не жалеем на это времени.
Напишите нам - задайте интересующий Вас вопрос, поделитесь идеей.
Мы постараемся ответить Вам как можно быстрее.
Каждое сообщение директор читает лично.