2016-09-13 2 views
1

이 PHP 라이브러리 PAGI을 사용하여 Asterisk로 IVR 응용 프로그램을 작성했습니다. 모든 호출마다 데이터베이스를 정리하고 정리해야합니다. 그래서 사용자가 전화를 끊은 후 콜백/처리기가 필요합니다.사용자가 IVR에서 전화를 끊을 때 콜백 실행

pcntl_signal(SIGHUP, $signalHandler); 

그러나 이것이 내가 명령 ANSWER를 보내 전화를 집어 후 작동하지 않을 :

ASAIK,이 라이브러리는 사용자로부터 끊기를 감지 할 수있는 방법을 제공합니다. ANSWER없이 사용하면 호출이 끊어진 후에 위의 콜백이 작동합니다!

그래서 상황에 대한 해결책이 무엇인지 알고 싶습니다.

+0

당신은 당신의 컨텍스트에서 'h'확장자를 가질 수 있습니다. 이것은 각 전화 끊기 후에 호출됩니다. 하지만 'h'확장으로 데이터베이스 작업을해서는 안된다고 생각합니다. 각 호출시 "hangup handler"등록은 별표로 처리되지만 hangup handler에서 데이터베이스 작업을 수행하지 않는 것이 좋습니다 – rajesh6115

+0

왜 신호 처리가 "작동하지 않음"이라고합니까? 참조 : https://wiki.asterisk.org/wiki/display/AST/Application_AGI "로컬에서 실행되는 AGI 스크립트는 DeadAGI를 사용할 때를 제외하고 채널에서 전화 끊기시 SIGHUP을 수신합니다." – 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 카드 (FSX KS 신호) 및 유선이 설치된 서버가 있습니다. 고객은 내 서버에 연결된 공중 전화 번호로 전화하여 IVR 서비스를받을 수 있습니다. 사용자가 전화를 끊을 때 별표가 SIGHUP을 내 AGI 스크립트에 보내지 않음을 발견했습니다. 내부 네트워크에서 IVR을 호출 할 경우 으로 동작합니다.

는 드디어 chan_dahdi.conf

당신이 저와 비슷한 상황이있는 경우이 도움이
busydetect=yes 
busycount=3 

희망을 일부 구성을 조정하여 그것을 해결!

관련 문제