Nobody picked up in 20000 ms

the call is working almost all the time but sometimes gets below errors.

– Nobody picked up in 20000 ms
– Auto fallthrough, channel ‘PJSIP/XXX-0000002f’ status is ‘NOANSWER’

PJSIP Logging enabled
  == Using SIP RTP Audio TOS bits 184
  == Using SIP RTP Audio TOS bits 184 in TCLASS field.
  == Using SIP RTP Audio CoS mark 5
<--- Transmitting SIP request (1661 bytes) to TCP:106.222.52.15:35356 --->
INVITE sip:201@106.222.52.15:35356;transport=TCP SIP/2.0
Via: SIP/2.0/TCP 54.188.XX.XXX:2255;rport;branch=z9hG4bKPj0c637133-093f-47ae-a813-0942acfc1f01;alias
From: "202" <sip:202@172.31.16.201>;tag=38710e9a-42c6-4992-829b-2b00f5c25f23
To: <sip:201@106.222.52.15>
Contact: <sip:202@54.188.XX.XXX:2255;transport=TCP>
Call-ID: d3dfbf56-076f-4ff5-b43e-c7b80403e466
CSeq: 28397 INVITE
Allow: OPTIONS, REGISTER, SUBSCRIBE, NOTIFY, PUBLISH, INVITE, ACK, BYE, CANCEL, UPDATE, PRACK, MESSAGE, REFER
Supported: 100rel, timer, replaces, norefersub, histinfo
Session-Expires: 1800
Min-SE: 90
P-Asserted-Identity: "202" <sip:202@172.31.16.201>
Max-Forwards: 70
User-Agent: FPBX-15.0.17.37(18.4.0)
Content-Type: application/sdp
Content-Length:   909

v=0
o=- 295101469 295101469 IN IP4 54.188.XX.XXX
s=Asterisk
c=IN IP4 54.188.XX.XXX
t=0 0
a=msid-semantic:WMS *
a=group:BUNDLE audio-0
m=audio 15864 UDP/TLS/RTP/SAVPF 0 8 101
a=connection:new
a=setup:actpass
a=fingerprint:SHA-256 38:6E:09:45:66:D2:2D:B8:F5:B5:00:E8:C5:09:30:87:26:2D:B2:97:8B:41:60:FF:84:BA:31:49:24:2B:60:29
a=ice-ufrag:11c17e5927a8175409e2464b797ed63e
a=ice-pwd:27c68e9e0709f1877db871b73ef03bda
a=candidate:H36bc104b 1 UDP 2130706431 54.188.XX.XXX 15864 typ host
a=candidate:S0 1 UDP 1694498815 0.0.0.0 0 typ srflx raddr 54.188.XX.XXX rport 15864
a=rtpmap:0 PCMU/2255
a=rtpmap:8 PCMA/2255
a=rtpmap:101 telephone-event/2255
a=fmtp:101 0-16
a=ptime:20
a=maxptime:150
a=sendrecv
a=rtcp-mux
a=ssrc:1406683092 cname:1023c239-e413-441b-b1c1-669d41b0cf47
a=msid:d459ec47-466a-43db-b986-1f152954a83d 86690276-1fdd-4829-af71-2ef884ad0fee
a=rtcp-fb:* transport-cc
a=mid:audio-0

<--- Received SIP response (321 bytes) from TCP:106.222.52.15:35356 --->
SIP/2.0 100 Trying
Via: SIP/2.0/TCP 54.188.XX.XXX:2255;rport=2255;branch=z9hG4bKPj0c637133-093f-47ae-a813-0942acfc1f01;alias
To: <sip:201@106.222.52.15>
From: "202" <sip:202@172.31.16.201>;tag=38710e9a-42c6-4992-829b-2b00f5c25f23
Call-ID: d3dfbf56-076f-4ff5-b43e-c7b80403e466
CSeq: 28397 INVITE
Content-Length: 0


<--- Transmitting SIP request (458 bytes) to TCP:106.222.52.15:35356 --->
OPTIONS sip:201@106.222.52.15:35356;transport=TCP SIP/2.0
Via: SIP/2.0/TCP 54.188.XX.XXX:2255;rport;branch=z9hG4bKPjcc0a91a1-6f7f-42d0-8145-48ed5efb1c10;alias
From: <sip:201@172.31.16.201>;tag=50ad43f9-0966-499d-8823-40832c7986a4
To: <sip:201@106.222.52.15>
Contact: <sip:201@54.188.XX.XXX:2255;transport=TCP>
Call-ID: 2332a48f-7129-4b35-8bab-e5ae4ebf7e67
CSeq: 16926 OPTIONS
Max-Forwards: 70
User-Agent: FPBX-15.0.17.37(18.4.0)
Content-Length:  0


<--- Received SIP response (578 bytes) from TCP:106.222.52.15:35356 --->
SIP/2.0 200 OK
Via: SIP/2.0/TCP 54.188.XX.XXX:2255;rport=2255;branch=z9hG4bKPjcc0a91a1-6f7f-42d0-8145-48ed5efb1c10;alias
Contact: <sip:100.84.7.123:2255;transport=tcp>
To: <sip:201@106.222.52.15>;tag=713bbe02
From: <sip:201@172.31.16.201>;tag=50ad43f9-0966-499d-8823-40832c7986a4
Call-ID: 2332a48f-7129-4b35-8bab-e5ae4ebf7e67
CSeq: 16926 OPTIONS
Accept: application/sdp, multipart/mixed, multipart/signed, multipart/alternative
Accept-Language: en
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, NOTIFY, SUBSCRIBE, INFO, MESSAGE, PRACK
Supported: timer
Content-Length: 0


    -- Nobody picked up in 20000 ms
    -- Auto fallthrough, channel 'PJSIP/202-0000002f' status is 'NOANSWER'
<--- Transmitting SIP request (433 bytes) to TCP:106.222.52.15:35356 --->
CANCEL sip:201@106.222.52.15:35356;transport=TCP SIP/2.0
Via: SIP/2.0/TCP 54.188.XX.XXX:2255;rport;branch=z9hG4bKPj0c637133-093f-47ae-a813-0942acfc1f01;alias
From: "202" <sip:202@172.31.16.201>;tag=38710e9a-42c6-4992-829b-2b00f5c25f23
To: <sip:201@106.222.52.15>
Call-ID: d3dfbf56-076f-4ff5-b43e-c7b80403e466
CSeq: 28397 CANCEL
Reason: Q.850;cause=0
Max-Forwards: 70
User-Agent: FPBX-15.0.17.37(18.4.0)
Content-Length:  0


<--- Transmitting SIP response (426 bytes) to TCP:122.170.1.34:44390 --->
SIP/2.0 603 Decline
Via: SIP/2.0/TCP 192.168.1.72:2255;rport=44390;received=122.170.1.34;branch=z9hG4bK-524287-1---6cf6982f0395792e
Call-ID: -kTleBJ5iV6qWY2r24VIqg..
From: <sip:202@54.188.XX.XXX>;tag=78d4ff0c
To: <sip:201@54.188.XX.XXX>;tag=0c76d1f4-35d3-4b06-81d1-0cc116fba4cb
CSeq: 2 INVITE
Server: FPBX-15.0.17.37(18.4.0)
Reason: Q.850;cause=0
P-Asserted-Identity: "201" <sip:201@54.188.XX.XXX>
Content-Length:  0


<--- Received SIP response (415 bytes) from TCP:106.222.52.15:35356 --->
SIP/2.0 200 OK
Via: SIP/2.0/TCP 54.188.XX.XXX:2255;rport=2255;branch=z9hG4bKPj0c637133-093f-47ae-a813-0942acfc1f01;alias
Contact: <sip:201@100.84.7.123:2255;transport=tcp>;+sip.instance="201@54.188.XX.XXX"
To: <sip:201@106.222.52.15>;tag=90819644
From: "202" <sip:202@172.31.16.201>;tag=38710e9a-42c6-4992-829b-2b00f5c25f23
Call-ID: d3dfbf56-076f-4ff5-b43e-c7b80403e466
CSeq: 28397 CANCEL
Content-Length: 0


<--- Received SIP response (346 bytes) from TCP:106.222.52.15:35356 --->
SIP/2.0 487 Request Terminated
Via: SIP/2.0/TCP 54.188.XX.XXX:2255;rport=2255;branch=z9hG4bKPj0c637133-093f-47ae-a813-0942acfc1f01;alias
To: <sip:201@106.222.52.15>;tag=90819644
From: "202" <sip:202@172.31.16.201>;tag=38710e9a-42c6-4992-829b-2b00f5c25f23
Call-ID: d3dfbf56-076f-4ff5-b43e-c7b80403e466
CSeq: 28397 INVITE
Content-Length: 0


<--- Transmitting SIP request (417 bytes) to TCP:106.222.52.15:35356 --->
ACK sip:201@106.222.52.15:35356;transport=TCP SIP/2.0
Via: SIP/2.0/TCP 54.188.XX.XXX:2255;rport;branch=z9hG4bKPj0c637133-093f-47ae-a813-0942acfc1f01;alias
From: "202" <sip:202@172.31.16.201>;tag=38710e9a-42c6-4992-829b-2b00f5c25f23
To: <sip:201@106.222.52.15>;tag=90819644
Call-ID: d3dfbf56-076f-4ff5-b43e-c7b80403e466
CSeq: 28397 ACK
Max-Forwards: 70
User-Agent: FPBX-15.0.17.37(18.4.0)
Content-Length:  0


<--- Received SIP request (318 bytes) from TCP:122.170.1.34:44390 --->
ACK sip:201@54.188.XX.XXX SIP/2.0
Via: SIP/2.0/TCP 192.168.1.72:2255;branch=z9hG4bK-524287-1---6cf6982f0395792e;rport
Max-Forwards: 70
To: <sip:201@54.188.XX.XXX>;tag=0c76d1f4-35d3-4b06-81d1-0cc116fba4cb
From: <sip:202@54.188.XX.XXX>;tag=78d4ff0c
Call-ID: -kTleBJ5iV6qWY2r24VIqg..
CSeq: 2 ACK
Content-Length: 0

Did not figure out what the exact problem is.

You haven’t provided your dial plan, or logging from which it can be inferred.

As the message says, no-one answered the [B side] call in 20 seconds. The 20 seconds will be whatever you set as the maximum time to answer when you invoked Dial. As the default is unlimited, you must have set something.

Am I need to increase the time in dial plan, which is currently 20?

Dial plan

[internal]
exten => _X.,1,NoOp(${EXTEN})
;same => n,Playback(hello-world)
same => n,Wait(5)
same => n,Dial(PJSIP/${EXTEN},20)

Ext Configuration

[202]
type=endpoint
aors=202
auth=202-auth
tos_audio=ef
tos_video=af41
cos_audio=5
cos_video=4
disallow=all
allow=ulaw,h264
context=internal
callerid=202 <202>

dtmf_mode=rfc4733
direct_media=yes
aggregate_mwi=yes
use_avpf=yes
rtcp_mux=yes
max_audio_streams=1
max_video_streams=1
bundle=yes
ice_support=yes
media_use_received_transport=yes
trust_id_inbound=yes
user_eq_phone=no
send_connected_line=yes
media_encryption=dtls
timers=yes
timers_min_se=90
media_encryption_optimistic=no
refer_blind_progress=yes
refer_blind_progress=yes
rtp_timeout=30
rtp_timeout_hold=300
send_pai=yes
rtp_symmetric=yes
rewrite_contact=yes
force_rport=yes
language=en
one_touch_recording=on
record_on_feature=apprecord
dtls_verify=fingerprint
dtls_setup=actpass
dtls_rekey=0
dtls_auto_generate_cert=yes
webrtc=yes

Either increase it, or if you don’t want the message with any number of milliseconds, remove it entirely. Only you know what if any timeout is needed.

Is it the same reason for " Auto fallthrough channel"?

It is the reason for the NOANSWER in the auto-fallthrough message, but the message itself is normal. It just means you ran off the end of the dialplan with the current default behaviour of ending the call, rather than the old one of giving dial tone for another try.

Okay.

In my iOS application, I’m sending a voip push token to open the app while it’s kill mode and once user accept the call then app will registering the Ext and request to join the channel.
this flow is working prefect fine if user accept the call with in couple of seconds, But if user will accept the call after 12 to 15 seconds then it does not connecting to the channel as dial plan execution was already been completed and it does not found a register ext.

Is there any solution to for this?
Or is there any way to call dial plan manually or call the dial plan once ext gets register?

You can check the device state to see if it is registered, or analyze the failure, to see if that was consistent with being unregistered. In both cases, looping and retrying.

However, failed to pick up is not a failure you would get for an unregistered endpoint. You would get an immediate unavailable condition.

Yes, you are right!!.

I’m getting the channel “UNAVAILABLE”.

I have added the below code to the dial plan if its get’s failed for any of the below reasons.

I simply want to execute retrial 5 times in 3 seconds intervals for PJSIP extensions if Ext is not registered.

exten => _X!,n,Set(DIALSTATUS=${IF($["${FM_DIALSTATUS}"="NOT_INUSE"&"${DIALSTATUS}"!="CHANUNAVAIL"]?NOANSWER:${IF($["${DIALSTATUS}"="CHANUNAVAIL"|"${FM_DIALSTATUS}"="UNAVAILABLE"|"${FM_DIALSTATUS}"="UNKNOWN"|"${FM_DIALSTATUS}"="INVALID"]?CHANUNAVAIL:BUSY)})})
exten => _X!,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"] ? RetryDial(please-wait,5,3,PJSIP/${EXTEN},10,d))

But, Seems it does not work.

The SET assigns to a dead variable. It makes no sense.

Whilst I believe that DIALSTATUS is real variable and, therefore, can be setting is confusing, and, in this case, nothing will read it between when it is set and when Dial sets it.

Also, this looks like a case where _X! can end up matching a special extension, so is unsafe.

Here is the exact dial plan.

[followme-sub]
include => followme-sub-custom
exten => _X!,1,GotoIf($[${LEN(${BLINDTRANSFER})} > 0 | ${LEN(${ATTENDEDTRANSFER})} > 0]?skipclid)
exten => _X!,n,Macro(user-callerid,)
exten => _X!,n(skipclid),Set(DIAL_OPTIONS=${DIAL_OPTIONS}I)
exten => _X!,n,Set(CONNECTEDLINE(num,i)=${EXTEN})
exten => _X!,n,Gosub(sub-presencestate-display,s,1(${EXTEN}))
exten => _X!,n,Set(CONNECTEDLINE(name)=${DB(AMPUSER/${EXTEN}/cidname)}${PRESENCESTATE_DISPLAY})
exten => _X!,n,Set(FM_DIALSTATUS=${EXTENSION_STATE(${EXTEN}@ext-local)})
exten => _X!,n,Set(__EXTTOCALL=${EXTEN})
exten => _X!,n,Set(__PICKUPMARK=${EXTEN})
exten => _X!,n,Macro(blkvm-setifempty,)
exten => _X!,n,GotoIf($["${GOSUB_RETVAL}" = "TRUE"]?skipov)
exten => _X!,n,Macro(blkvm-set,reset)
exten => _X!,n,Set(__NODEST=)
exten => _X!,n(skipov),Set(RRNODEST=${NODEST})
exten => _X!,n(skipvmblk),Set(__NODEST=${EXTEN})
exten => _X!,n,GosubIf($[${DB_EXISTS(AMPUSER/${EXTEN}/followme/changecid)} = 1 & "${DB(AMPUSER/${EXTEN}/followme/changecid)}" != "default" & "${DB(AMPUSER/${EXTEN}/followme/changecid)}" != ""]?sub-fmsetcid,s,1())
exten => _X!,n,GotoIf($[ "${DB(AMPUSER/${EXTEN}/followme/grppre)}" = "" ]?skipprepend)
exten => _X!,n,Macro(prepend-cid,${DB(AMPUSER/${EXTEN}/followme/grppre)})
exten => _X!,n(skipprepend),Set(RecordMethod=Group)
exten => _X!,n(checkrecord),Gosub(sub-record-check,s,1(exten,${EXTEN},))
exten => _X!,n,GotoIf($[ $["${DB(AMPUSER/${EXTEN}/followme/dring)}" = ""] | $["${ALERT_INFO}"!=""] ]?skipdring)
exten => _X!,n,Set(DRING=${DB(AMPUSER/${EXTEN}/followme/dring)})
exten => _X!,n,Set(__ALERT_INFO=${STRREPLACE(DRING,\;,\\;)})
exten => _X!,n(skipdring),Set(STRATEGY=${DB(AMPUSER/${EXTEN}/followme/strategy)})
exten => _X!,n,Set(__RVOL=${DB(AMPUSER/${EXTEN}/followme/rvolume)})
exten => _X!,n,GotoIf($["${CUT(STRATEGY,-,1)}"="ringallv2"]?skipsimple)
exten => _X!,n,GotoIf($[$[ "${DB(AMPUSER/${EXTEN}/followme/prering)}" = "0" ] | $[ "${DB(AMPUSER/${EXTEN}/followme/prering)}" = "" ]] ?skipsimple)
exten => _X!,n,Macro(simple-dial,${EXTEN},${DB(AMPUSER/${EXTEN}/followme/prering)})
exten => _X!,n(skipsimple),Set(RingGroupMethod=${STRATEGY})
exten => _X!,n,Set(_FMGRP=${EXTEN})
exten => _X!,n,GotoIf($[$["${DB(AMPUSER/${EXTEN}/followme/annmsg)}" = ""] | $["${DIALSTATUS}" = "ANSWER"] | $["foo${RRNODEST}" != "foo"]]?DIALGRP)
exten => _X!,n,Answer
exten => _X!,n,Wait(1)
exten => _X!,n,Playback(${DB(AMPUSER/${EXTEN}/followme/annmsg)})
exten => _X!,n(DIALGRP),ExecIf($[$["${DB(AMPUSER/${EXTEN}/followme/ringing)}"="Ring"] | $["${DB(AMPUSER/${EXTEN}/followme/ringing)}"=""]]?Set(DOPTS=${DIAL_OPTIONS}):Set(DOPTS=m(${DB(AMPUSER/${EXTEN}/followme/ringing)})${STRREPLACE(DIAL_OPTIONS,r)}))
exten => _X!,n,Set(__ALT_CONFIRM_MSG=${IF($["${ALT_CONFIRM_MSG}"!=""]?${ALT_CONFIRM_MSG}:${IF($[${LEN(${VQ_CONFIRMMSG})}>1]?${VQ_CONFIRMMSG}:)})})
exten => _X!,n,GotoIf($[(("${DB(AMPUSER/${EXTEN}/followme/grpconf)}"="ENABLED") | ("${FORCE_CONFIRM}"!="") | ($[${LEN(${VQ_CONFIRMMSG})}>1])) & ("${RG_CONFIRM}" != "1")]?doconfirm)
exten => _X!,n,GotoIf($["${CUT(STRATEGY,-,1)}"="ringallv2"]?ringallv21)
exten => _X!,n,Macro(dial,${DB(AMPUSER/${EXTEN}/followme/grptime)},${DOPTS},${DB(AMPUSER/${EXTEN}/followme/grplist)})
exten => _X!,n,Goto(nextstep)
exten => _X!,n(ringallv21),Macro(dial,$[ ${DB(AMPUSER/${EXTEN}/followme/grptime)} + ${DB(AMPUSER/${EXTEN}/followme/prering)} ],${DOPTS},${DB(AMPUSER/${EXTEN}/followme/grplist)})
exten => _X!,n,Goto(nextstep)
exten => _X!,n(doconfirm),GotoIf($["${CUT(STRATEGY,-,1)}"="ringallv2"]?ringallv22)
exten => _X!,n,Macro(dial-confirm,${DB(AMPUSER/${EXTEN}/followme/grptime)},${DOPTS},${DB(AMPUSER/${EXTEN}/followme/grplist)},${EXTEN})
exten => _X!,n,Goto(nextstep)
exten => _X!,n(ringallv22),Macro(dial-confirm,$[ ${DB(AMPUSER/${EXTEN}/followme/grptime)} + ${DB(AMPUSER/${EXTEN}/followme/prering)} ],${DOPTS},${DB(AMPUSER/${EXTEN}/followme/grplist)},${EXTEN})
exten => _X!,n(nextstep),Set(RingGroupMethod=)
exten => _X!,n,GotoIf($["foo${RRNODEST}" != "foo"]?nodest)
exten => _X!,n,Set(__NODEST=)
exten => _X!,n,Set(__PICKUPMARK=)
exten => _X!,n,Macro(blkvm-clr,)
exten => _X!,n,Set(DIALSTATUS=${IF($["${FM_DIALSTATUS}"="NOT_INUSE"&"${DIALSTATUS}"!="CHANUNAVAIL"]?NOANSWER:${IF($["${DIALSTATUS}"="CHANUNAVAIL"|"${FM_DIALSTATUS}"="UNAVAILABLE"|"${FM_DIALSTATUS}"="UNKNOWN"|"${FM_DIALSTATUS}"="INVALID"]?CHANUNAVAIL:BUSY)})})
;exten => _X!,n,RetryDial(please-wait,5,3,PJSIP/${EXTEN},10,d)

**exten => _X!,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"] ? RetryDial(please-wait,5,3,PJSIP/${EXTEN},60,m))**
**exten => _X!,n,GotoIf($["${DB(AMPUSER/${EXTEN}/followme/postdest)}"=""]?dohangup)**
exten => _X!,n,Goto(${DB(AMPUSER/${EXTEN}/followme/postdest)})
exten => _X!,n(dohangup),Hangup
exten => _X!,n(nodest),Noop(SKIPPING DEST, CALL CAME FROM Q/RG: ${RRNODEST})
exten => _X!,n,Return()

;--== end of [followme-sub] ==--;

Variables prefixed with AMP are normally part of FreePBX, which is not supported on this forum.

Yes, But I just want to execute the retrydial. which is not working right now.

Can you pls guide for this?

is retrydial syntax correct or Am I need to pass channel over there rather than ext?

Your question is using FreePBX terminology. The documentation says:

dialargs - Same format as arguments provided to the Dial application

Dial expects a dialstring, which is what you seem to have. It never expects an Asterisk extension name.

You haven’t provide a log demonstrating this, although it is difficult for us to interpret logs created by FreePBX systems, so I can’t guarantee that anyone will try on this forum.