Pull to refresh

Уведомления о звонке в телеграмм

Все мы знаем что можно настроить модуль follow me и получить звонок на свой мобильный если нас нет на месте. Но что если Вы не любитель вбивать «где попало» свой мобильный, или вам не нравится, что входящие поступают уже с внешнего номера Вашей АТС или… да много еще чего. Например, вы стоите в другом конце кабинета, вам звонят, а вы думаете идти к телефону или потом перезвонить.

Появилась идея «при каждом входящем вызове на мой внутренний номер — отвеченном, не отвеченном — должно приходить сообщение в телеграм с номером и, если существует, именем звонящего.»

Приступим:

Имеем FrеePBX, открываем файл /etc/asterisk/extensions_additional.conf и ищем контекст:

[ext-local]
Находим настройки своего номера, в моем случае:
exten => 121,1,Set(__RINGTIMER=${IF($["${DB(AMPUSER/121/ringtimer)}" > "0"]?${DB(AMPUSER/121/ringtimer)}:${RINGTIMER_DEFAULT})})
exten => 121,n,Macro(exten-vm,novm,121,1,1,1)
exten => 121,n(dest),Set(__PICKUPMARK=)
exten => 121,n,GotoIf($["${DIALSTATUS}"="NOANSWER"]?ext-findmefollow,FM121,1)
exten => 121,n,GotoIf($["${DIALSTATUS}"="BUSY"]?ext-findmefollow,FM121,1)
exten => 121,n,GotoIf($["${DIALSTATUS}"="CHANUNAVAIL"]?ext-findmefollow,FM121,1)
exten => 121,n,Goto(${IVR_CONTEXT},return,1)
exten => 121,hint,SIP/121&Custom:DND121,CustomPresence:121

и копируем в «/etc/asterisk/extensions_override_freepbx.conf» в таком виде:

[ext-local]
exten => 121,1,Set(__RINGTIMER=${IF($["${DB(AMPUSER/121/ringtimer)}" > "0"]?${DB(AMPUSER/121/ringtimer)}:${RINGTIMER_DEFAULT})})
exten => 121,n,System(/var/www/html/sm.sh  ${CALLERID(name)} ${CALLERID(num)} ) ;
exten => 121,n,Macro(exten-vm,novm,121,1,1,1)
exten => 121,n(dest),Set(__PICKUPMARK=)
exten => 121,n,GotoIf($["${DIALSTATUS}"="NOANSWER"]?ext-findmefollow,FM121,1)
exten => 121,n,GotoIf($["${DIALSTATUS}"="BUSY"]?ext-findmefollow,FM121,1)
exten => 121,n,GotoIf($["${DIALSTATUS}"="CHANUNAVAIL"]?ext-findmefollow,FM121,1)
exten => 121,n,Goto(${IVR_CONTEXT},return,1)
exten => 121,hint,SIP/121&Custom:DND121,CustomPresence:121

Особое внимание стоит уделить добавленной строкее:

exten => 121,n,System(/var/www/html/sm.sh  ${CALLERID(name)} ${CALLERID(num)} ) ;

Она вызывает скрипт отправки сообщения в телеграмм с нужными параметрами,- именем и телефоном звонящего.

Код скрипта:

/var/www/html/sm.sh

#!/bin/sh

API_TOKEN='000000000:ЕУУУуУУУУУУ' # токен и пароль  бота
CHAT_ID='123456789' #ид чата , что бы узнать польуемся функцией TG getUpdates
MSG="$1 $2 $3" #получаем передаваемые параметры  от * в скрипт

if [ -z "$CHAT_ID" ]; then
    echo 'Please, define CHAT_ID first! See "chat":{"id":xxxxxxx string below:'
    /usr/bin/wget -qO - https://api.telegram.org/bot$API_TOKEN/getUpdates
    exit 1
fi

/usr/bin/wget  -O /dev/null  -q "https://api.telegram.org/bot$API_TOKEN/sendMessage?chat_id=$CHAT_ID&parse_mode=html&text=$MSG" 2>&1

if [ $? -eq 0 ]; then
    echo 'Message sent successfully.'
else
    echo 'Error while sending message!'
    exit 1
fi

Где взять ID и токены для бота и чата думаю не стоит рассказывать, инструкций полно.
не забываем дать права на выполнение:

chmod +x /var/www/html/sm.sh

Финальный штрих, после него проверяем и наслаждаемся:

 asterisk –rx "dialplan reload"
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.