вторник, 20 декабря 2016 г.

Уведомление в телеграмм о пропущенных вызовах на asterisk

Прочитав рекомендации в интернете на тему уведомления сделал для себя отличную альтернативу и спешу ею поделится.
Для начала зарегистрируем бота в телеграмме:
1)  напишем боту @BotFather личное сообщение "/newbot"
он ответит что-то в духе "Alright, a new bot. How are we going to call it? Please choose a name for your bot." теперь мы ему должны задать имя нашему боту например "asterisk_call_bot" после сообщение придет токен необходимый нам для уведомления пользователя.
2)  выясним "Telegram ID" - это ваше имя в глобальной сете телеграмм на который пишет бот.
Пишем боту @MyTelegramID_bot команду "/start" в ответ придет сообщение вида "Telegram ID: XXXXXXXX" этот номер нам понадобится чуть позже.
С телеграмом закончено.



создаем на сервере asterisk файл (все что будет описано далее применимо для Cent OS) 
touch /var/lib/asterisk/test.sh
делаем его исполнительным
chmod +x /var/lib/asterisk/test.sh
Сделано! :)

Теперь самое главное для чего мы тут собрались.
запишем в наш файл test.sh исполняемый код.

#!/bin/bash
a=${#2}
if [[ $a -eq  4 ]];then
text="В $(date +%d-%m-%y,%T) вам звонил номер +7495XXXXXXX,$2 $3"
else
text="В $(date +%d-%m-%y,%T) вам звонил номер $2 $3"
fi
if [[ $1 -eq 2100 ]]; then
curl  "https://api.telegram.org/bot<токен>/sendMessage?chat_id=<Telegram_ID>&text=$text"
fi
 по строчкам разберем его. 
a=${#2} - Получаем из передаваемого аргумента номер 2 количество символов и записываем в переменную а значание
if [[ $a -eq  4 ]];then - проверяем что если переменная "а" равна 4 символом то выполняем следующею строку 
text="В $(date +%d-%m-%y,%T) вам звонил номер +7495XXXXXXX,$2 $3" - записываем в переменную "text" строку вида "В 12-12-16,15:25:21 вам звонил номер +7495XXXXXXX,2101 ИвановИЕ" это сделано чтобы из телеграмма можно было сразу перезвонить с до набором добавочного номера.
 if [[ $1 -eq 2100 ]]; then - т.к. я создавал систему универсальную с возможностью распространить на большое количество сотрудников поэтому использую строку сравнения. Если звонят на номер 2100 то выполнить следующий код.
curl  "https://api.telegram.org/bot<токен>/sendMessage?chat_id=<Telegram_ID>&text=$text" собственно строка отправки методом GET. Простой и удобный способ.

Настройка asterisk.
Моя строчка диаплана выглядит примерно так:

exten => _2[0-8]XX,1,Set(CALLERID(all)=${CALLERID(name)} <${CALLERID(num)}>)
exten => _2[0-8]XX,n,Dial(SIP/${EXTEN},40,tTw)
exten => _2[0-8]XX,n,Noop("отправка в телеграмм")
exten => _2[0-8]XX,n,System(/var/lib/asterisk/test.sh ${EXTEN} ${CALLERID(num)} ${CALLERID(name)})
exten => _2[0-8]XX,n,Busy()

Из всего выше на писаного вам может быть не знакома строка System(/var/lib/asterisk/test.sh ${EXTEN} ${CALLERID(num)} ${CALLERID(name)}) - она означает выполнить системную команду запустить файл /var/lib/asterisk/test.sh  с 3-мя аргументами 
${EXTEN} - Кому звонят
${CALLERID(num)} - Кто звонит 
${CALLERID(name)} - Имя звонящего 

в рабочем виде это будет примерно так "telegram.sh 2100 2101 ИвановИЕ"
Ну вот и все удачи в настройке.

Комментариев нет:

Отправить комментарий