1
我用這個PHP庫PAGI來構建帶有Asterisk的IVR應用程序。 對於每次調用,我需要做一些清理工作,並將一些東西寫入數據庫。所以我在用戶掛斷電話後需要一些回調/處理程序。當用戶掛斷來自IVR的呼叫時運行回調
ASAIK,該庫提供了一些方法來從用戶檢測掛斷:
pcntl_signal(SIGHUP, $signalHandler);
然而,這是行不通的我通過發送命令ANSWER
拿起電話後。如果在沒有使用ANSWER
的情況下使用,則在呼叫掛斷後,上述回撥將起作用!
所以我想知道我的情況的解決方法是什麼?
你可以在你的上下文中有'h'擴展名,每次掛機後都會調用它。但我認爲你不應該在'h'擴展中做數據庫操作。 如何在每個呼叫上註冊「掛斷處理程序」到達星號,仍不推薦在掛機處理程序上執行數據庫操作 – rajesh6115
爲什麼說處理信號「不起作用」?請參閱:https://wiki.asterisk.org/wiki/display/AST/Application_AGI「除非使用DeadAGI,否則本地執行的AGI腳本將在通道掛斷時接收SIGHUP。」 – marcelog
@marcelog您好,我試圖運行您的例子之一「nodecontroller/run.php」,但'signalHandler'不會在用戶掛斷後調用。這裏是我的extensions.conf:'[my_ivr_menu] exten => s,1,AGI(/tmp/ivr.php,1) same => n,NoOp(掛斷) same => n,Hangup' – sc1013