MikoPBX
Модули
MikoPBX
Модули
Для оповещения в телеграмм о всех пропущенных вызовах выполните следующие действия:
В разделе «Кастомизация системных файлов» добавьте к файлу /etc/asterisk/extensions.conf следующий код «Добавить в конец файла»
[add-trim-prefix-clid-custom] exten => _[0-9*#+a-zA-Z][0-9*#+a-zA-Z]!,1,NoOp(start check blacklist) same => n,Set(CHANNEL(hangup_handler_push)=hangup-ext-queues,h,1); same => n,Return() [hangup-ext-queues] exten => h,1,ExecIf($["${M_DIALSTATUS}" = "ANSWER"]?return) same => n,Set(TOKEN=5118292900:AAEWCOAXkay5fXb8AJptZmDyqkNk8QbP200) same => n,Set(CHAT_ID=939950800) same => n,Set(URL=https://api.telegram.org/bot${TOKEN}/sendMessage) same => n,Set(TEXT=MISSED CALL from: ${CALLERID(name)}, did: ${FROM_DID}, callid: ${CHANNEL(callid)}) same => n,SHELL(curl -s -X POST '${URL}' -d chat_id='${CHAT_ID}' -d text='${TEXT}') same => n,Set(MISSED=${SHELL(curl -s -X POST '${URL}' -d chat_id='${CHAT_ID}' -d text='${TEXT}')}) same => n,return
Добавьте к файлу modules.conf
load => func_shell.so
same => n,Set(MISSED=${SHELL(curl -X POST --data-urlencode "payload={\"channel\": \"#cannel_name\", \"username\": \"bot_name\", \"text\": \"Пропущенный вызов от ${CALLERID(name)} по внешней линии: ${FROM_DID} в ${STRFTIME(${EPOCH},,%H:%M:%S %d-%m-%Y)}\", \"icon_emoji\": \":sos:\"}" https://hooks.slack.com/services/T76G7L0/B01R/VMPQUeAN)})
В разделе «Приложения dialplan» следует добавить php скрипт:
<?php require_once 'Globals.php'; use \GuzzleHttp\Client; const API_KEY = ''; const CHAT_ID = ''; $agi = new MikoPBX\Core\Asterisk\AGI(); $name = $agi->get_variable('CALLERID(name)', true); $num = $agi->get_variable('CALLERID(num)', true); $did = $agi->get_variable('$FROM_DID', true); $id = $agi->get_variable('CHANNEL(linkedid)', true); $date = date('Y.d.m H:i:s', str_replace('mikopbx-', '', $id)); $TEXT = "Пропущенный вызов: $name, did: $did, callid: $num, id: $id, date: $date"; $apiURL = 'https://api.telegram.org/bot' . API_KEY . '/'; $client = new Client([ 'base_uri' => $apiURL, 'timeout' => 1, 'http_errors' => false, ]); try { $client->post( 'sendMessage', ['query' => ['chat_id' => CHAT_ID, 'text' => $TEXT]] ); }catch (Throwable $e){ }
В скрипте следует поправить значение «API_KEY» и «CHAT_ID».
Текст уведомления можно исправить в переменной «$TEXT».
После сохранения скрипта из адресной строки браузера скопируйте имя скрипта «DIALPLAN-APP-FE099BCCEF4E6E291F2AE158E07F7F07»,
В разделе «Кастомизация системных файлов» добавьте к файлу /etc/asterisk/extensions.conf следующий код «Добавить в конец файла»
[add-trim-prefix-clid-custom] exten => _.X!,1,Set(CHANNEL(hangup_handler_push)=hangup-ext-queues,h,1); same => n,return [hangup-ext-queues] exten => h,1,ExecIf($["${M_DIALSTATUS}" = "ANSWER"]?return) same => n,AGI(DIALPLAN-APP-FE099BCCEF4E6E291F2AE158E07F7F07.php) same => n,return
Вместо «DIALPLAN-APP-FE099BCCEF4E6E291F2AE158E07F7F07» укажите имя своего скрипта.