Handling A Non-responsive Peer After It Answers
I’m looking for a way of detecting in my dialplan when a peer becomes non-responsive after answering. It seems that Asterisk knows when the peer becomes non-responsive because it logs “Remote UNIX connection disconnected” around the same time, and it seems that if there is no following “Remote UNIX connection” within a short time, then the peer can be considered non-responsive. Is there a way to configure a handler for this state?
We use v14.7.6 and we dial the peer this way:
same =>
n,Set(CHANNEL(hangup_handler_push)=${CONTEXT},handleHangupByCaller,1(args))
same =>
n,Dial(${AddressToReachPeer},2,b(${CONTEXT}^afterDialingPeerLogIpOfCb^1(${UUID}^${StartEpoch})))
same => n,Goto(handle${DIALSTATUS},1)
Cheers, David
3 thoughts on - Handling A Non-responsive Peer After It Answers
The referenced message is not related to the call at all. It occurs when an
“asterisk -r” console disconnects. As for hanging up a call when the remote goes away that depends on the channel driver. For SIP both chan_sip and chan_pjsip provide session timers which use SIP messages to determine if the call is no longer valid, or RTP timeout which hangs up the call if media is not flowing for a period of time. These are configured in the respective channel driver configuration file.
Response below…
“Joshua C. Colp” replied:
Thanks, Joshua.
We want to check if a peer is responsive every few seconds, because it’s a person-to-bot call and we want to respond gracefully if the bot fails.
I tried adding rtptimeout=4
to the config of the peer in sip.conf, but this causes hangup during the person’s turn.
Then I looked into session timers, and found that https://issues.asterisk.org/jira/secure/attachment/28201/AsteriskSipSessionTimers.pdf says the shortest period supported for such checks is 90 seconds, which is much too long for us.
Is there another option? Would it allow calling a script or playing a prompt on the way to hanging up?
Those are the available options. There is no capability to call a script or play a prompt or anything like that that I can think of.