2016-09-13 3 views
1

Я использовал эту библиотеку PHP PAGI для создания приложения IVR с Asterisk. Для каждого вызова мне нужно сделать некоторые очистки и написать что-нибудь в базе данных. Поэтому мне нужен какой-то callback/обработчик после того, как пользователь повесил трубку.Запускать обратные вызовы, когда пользователь зависает от IVR

ASAIK, эта библиотека обеспечивает некоторый способ обнаружения зависания от пользователя:

pcntl_signal(SIGHUP, $signalHandler); 

Однако это не будет работать после того, как я взял вызов, отправив команду ANSWER. Если он используется без ANSWER, вышеупомянутый обратный вызов действительно работает после того, как звонок будет зависеть!

Так что я хотел бы знать, каков обходной путь для моей ситуации?

+0

у вас может быть расширение «h» в вашем контексте, которое вызывается после каждого зависания. Но я думаю, что вы не должны работать с базой данных в расширении «h». Как зарегистрировать «обработчик зависания» на каждом звонке, поступает на звездочку, все еще не рекомендуется делать операции с базой данных на обработчиках hangup – rajesh6115

+0

Почему вы говорите, что обработка сигнала «не работает»? См. Https://wiki.asterisk.org/wiki/display/AST/Application_AGI «Локально исполняемый скрипт AGI получит SIGHUP при зависании с каналом, за исключением случаев использования DeadAGI». – marcelog

+0

@marcelog Привет, я попытался запустить один из ваших примеров «nodecontroller/run.php», но «signalHandler» не вызывается после того, как пользователь повесил трубку. Вот мой extensions.conf: '[my_ivr_menu] exten => s, 1, AGI (/tmp/ivr.php,1) same => n, NoOp (hangup) same => n, Hangup' – sc1013

ответ

0

На самом деле у меня есть сервер с Asterisk, Digium card (FSX KS Signaling) и стационарные линии. Клиенты могут позвонить по нашему общедоступному номеру телефона, который подключен к моему серверу, чтобы получить услугу IVR. Я обнаружил, что когда пользователь вызывает звонок, звездочка не отправляет SIGHUP в мой сценарий AGI. Он делает работы, когда IVR вызывается из внутренней сети.

я, наконец, решил ее, регулируя некоторые конфигурации в chan_dahdi.conf

busydetect=yes 
busycount=3 

Надеется, что это помогает, если у вас есть подобная ситуация со мной!

 Смежные вопросы

  • Нет связанных вопросов^_^