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

В данной статье будет рассмотрено два способа реализации уведомления о пропущеных вызовах в Telegram

Пример на базе Dialplan

  1. Перейдите в раздел "Кастомизация системных файлов":

Раздел "Кастомизация системных файлов"
  1. Перейдите в раздел редактирования файла "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 - идентификатор чата, куда отправлять текстовое сообщение.

Сохраните изменения.

Редактирование файла "extensions.conf"
  1. Перейдите в раздел редактирования файла "modules.conf". Установите режим "Добавлять в конец файла" и вставьте следующий контекст:

load => func_shell.so

Сохраните изменения.

Редактирование файла "modules.conf"

Пример на базе PHP-AGI

  1. Перейдите в раздел "Приложения диалпланов". Создайте новое приложение, нажав на "Добавить новое":

Добавление нового приложения диалплана
  1. Укажите следующие параметры для диалплана:

  • Название - произвольное

  • Номер для вызова приложения - произвольный номер

  • Тип кода - "PHP-AGI скрипт"

Параметры диалплана
  1. Перейдите во вкладку "Программный код". Вставьте следующий PHP-AGI скрипт:

<?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».

  1. После сохранения скрипта из адресной строки браузера скопируйте идентификатор скрипта, который имеет вид: «DIALPLAN-APP-1B2B846E»:

Идентификатор приложения диалплана
  1. Перейдите в раздел "Кастомизация системных файлов":

Раздел "Кастомизация системных файлов"
  1. Перейдите в раздел редактирования файла "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-1B2B846E.php)
    same => n,return

Замените "DIALPLAN-APP-1B2B846E" на Ваш идентификатор провайдера.

Сохраните изменения.

Редактирование файла "extensions.conf"

Last updated

Was this helpful?