FreePBX v2

По мотивам очередного форумного топика. При выполнении вызовов через каналы самых различных типов, бывает полезно вовремя узнать о сбоях того или иного типа вовремя и устранить причину сбоя.

Каждый драйвер канала по окончанию звонка имеет собственный код причины окончания вызова, он преобразуется в Q.931 код, которым оперирует ядро астериска и приложение Dial. Код сохраняется в переменную HANGUPCAUSE, так же Dial формирует переменную DIALSTAUS, в которой сохраняется ограниченное количество статусов, достаточное в обычной ситуации (звонок завершен нормально, занято, таймаут вызова или канал не доступен).

FreePBX по-умолчанию распределяет звонки на основании переменной DIALSTATUS, при этом сбой может быть практически неотличим от ситуации когда вызываемый абонент занят.  В этой ситуации может быть необходимо предпринять специальные действия в случае специфичных отказов. Для этого служит штатная опция Monitor Trunk Failures в настройке транка. Для включения необходимо выставить чекбокс Enabled и указать имя AGI скрипта, отслеживающего сбои каналов. Пример такого скрипта приложен к данной записи.

Даже не зная о наличии такой опции можно в диалплане найти вызов AGI скрипта, выполняемом при определенном условии и догадаться о возможности выполнить свой код в случае отказа канала.

Скачать: freepbx_trunk_notify_failure.php (34 Kb)

trunk_failures_freepbx

Похожие сообщения:

Google Bookmarks Digg del.icio.us Technorati Slashdot News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru

автор igorg \\ теги: , , ,


2 комментария к “Обработчик Hagupcause”

  1. 1. Oleh Говорит:

    У меня скрипт не работал пока я не заменил require_once «./includes/phpagi/phpagi.php» на include («phpagi.php»).

    Интересно почему так? Папка с includes на месте.

  2. 2. igorg Говорит:

    Да, возможно я ошибся. Я обычно указываю абсолютный путь, используя dirname (__FILE__). :(

Написать ответ