[asterisk-users] Handling a long-running agi on hangup-handler?

Eric Wieling ewieling at nyigc.com
Thu Jan 18 11:42:48 CST 2018


Asterisk (after 1.4?) sends the AGI a HUP when the call hangs up.

Try setting your script to ignore the HUP signal and make it fork and go 
into the background so Asterisk thinks the process has completed.

In PHP ignore HUP:

     pcntl_signal(SIGHUP, SIG_IGN);

In PHP fork and become a short lived daemon:

     $pid = pcntl_fork();
         if ($pid == -1) {
             die("could not fork");
         } elseif ($pid) {
             exit; // we are the parent
         }
         // we are the child
         // detatch from the controlling terminal so we don't become a 
zombie when we die.
         if (posix_setsid() == -1) {
             die("could not detach from terminal");
         }


On 01/18/2018 12:27 PM, Jonathan H wrote:
> I know that hangup handlers 
> (https://wiki.asterisk.org/wiki/display/AST/Hangup+Handlers) have to 
> finish quickly.
>
> So it's no surprise that my speech to text agi which takes 8 seconds 
> gets killed.
>
> However, can anyone think of a way round this? So, once the caller has 
> hung up, I need to take one of the channel variables, and pass it to a 
> python agi script which then does speech to text.
>
> In-call, it works fine. After hangup, it doesn't. Which is correct, 
> but any thoughts on ways round this?
>
> Thanks.
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20180118/11aae2b3/attachment.html>


More information about the asterisk-users mailing list