====== Оповещение о пропущенных ======
[[faq:|Обратно к инструкциям]]
===== Пример на базе dialplan =====
Для оповещения в телеграмм о всех пропущенных вызовах выполните следующие действия:
В разделе "[[:custom-files|Кастомизация системных файлов]]" добавьте к файлу **/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
* **TOKEN** - токен вашего бота в телеграмм
* **CHAT_ID** - идентификатор чата, куда отправлять текстовое сообщение
Добавьте к файлу **modules.conf** load => func_shell.so
[[https://gist.github.com/dideler/85de4d64f66c1966788c1b2304b9caf1| Полезная статья]] по работе с ботом средствами **curl**
Средставми **curl** можно выполнить запрос к любому сайту. К примеру можно отправить уведомление в **slack**:
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)})
===== Пример на базе PHP-AGI =====
В разделе "Приложения dialplan" следует добавить php скрипт:
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**",
В разделе "[[:custom-files|Кастомизация системных файлов]]" добавьте к файлу **/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**" укажите имя своего скрипта.
[[faq:|Обратно к инструкциям]]