Asterisk dialplan - waitexten hangs up immediately and does not wait - asterisk

Consider the following asterisk dialplan. After the last sound file is played it hangs up immediately and the waitexten timeout parameter seems to be ignored. The behaviour I am trying to achieve is to wait a given number of seconds after the last sound file is completed to get a response and then hang up. The last sound file says "Dial * to hear these options again". If I set the waitexten timeout to say 60, it hangs up before the sound files are played. A shorter time allows them all to be played but then it hangs up immediately. Any suggestions for handling this a better way are welcome
[mainmenu]
exten => s,1,Wait(0.25)
same => 2,Answer()
same => 3,Background(/srv/asterisk/sounds/optionslist)
same => n,Background(/srv/asterisk/sounds/dial2cs)
same => n,Background(/srv/asterisk/sounds/dial3ma)
same => n,Background(/srv/asterisk/sounds/dial4ac)
same => n,Background(/srv/asterisk/sounds/dial0)
same => n,Background(/srv/asterisk/sounds/dialstar)
same => n,WaitExten(20)
exten => 2,1,Goto(cs,2,1)
exten => *,1,Goto(s,3)
console output
== Using SIP RTP CoS mark 5
-- Executing [+12345#public:1] Goto("SIP/xxx.pstn.twilio.com-00000044", "mainmenu,s,1") in new stack
-- Goto (mainmenu,s,1)
-- Executing [s#mainmenu:1] Wait("SIP/xxx.pstn.twilio.com-00000044", "0.25") in new stack
-- Executing [s#mainmenu:4] BackGround("SIP/xxx.pstn.twilio.com-00000044", "/srv/asterisk/sounds/dial2cs") in new stack
-- Executing [s#mainmenu:5] BackGround("SIP/xxx.pstn.twilio.com-00000044", "/srv/asterisk/sounds/dial3ma") in new stack
-- <SIP/xxx.pstn.twilio.com-00000044> Playing '/srv/asterisk/sounds/dial3ma.slin' (language 'en')
-- Executing [s#mainmenu:6] BackGround("SIP/xxx.pstn.twilio.com-00000044", "/srv/asterisk/sounds/dial4ac") in new stack
-- <SIP/xxx.pstn.twilio.com-00000044> Playing '/srv/asterisk/sounds/dial4ac.slin' (language 'en')
-- Executing [s#mainmenu:7] BackGround("SIP/xxx.pstn.twilio.com-00000044", "/srv/asterisk/sounds/dial0") in new stack
-- <SIP/xxx.pstn.twilio.com-00000044> Playing '/srv/asterisk/sounds/dial0.slin' (language 'en')
-- Executing [s#mainmenu:8] BackGround("SIP/xxx.pstn.twilio.com-00000044", "/srv/asterisk/sounds/dialstar") in new stack
-- <SIP/xxx.pstn.twilio.com-00000044> Playing '/srv/asterisk/sounds/dialstar.slin' (language 'en')
[
[Aug 4 05:03:28] WARNING[2225]: chan_sip.c:4175 retrans_pkt: Retransmission timeout reached on transmission xxx#0.0.0.0 for seqno 5305 (Critical Response) -- See https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions
Packet timed out after 32001ms with no response
[Aug 4 05:03:28] WARNING[2225]: chan_sip.c:4204 retrans_pkt: Hanging up call xxx#0.0.0.0 - no reply to our critical packet (see https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions).
== Spawn extension (mainmenu, s, 8) exited non-zero on 'SIP/xxx.pstn.twilio.com-00000044'
Asterisk 11.7.0~dfsg-1ubuntu1

I assume that you have a problem like in this topic Asterisk,SIP Retransmission timeout. Try to solve the problem with the NAT settings or firewall.
In this answer propose to set canreinvite=no in sip.conf.

Related

Asterisk GOTOIf Command not hitting branch correctly

This is the code in my .conf file for asterisk freepbx I know for sure blocked is true
same => n,Noop(${Blocked})
same => n,GotoIf($["${Blocked}"=="TRUE"]?blah-ivr-v5-difficulties,s,1)
same => n,Noop("The code reaches here and doesnt hit the context at the top but its value is true")
This is the logs from asterisk saying Blocked is true
[2021-10-28 11:53:08] VERBOSE[11267][C-001e313b] pbx.c: Executing [s#blah-ivr-v5-pinreset-2:11] NoOp("SIP/blah-00245082", "true") in new stack
[2021-10-28 11:53:08] VERBOSE[11267][C-001e313b] pbx.c: Executing [s#blah-ivr-v5-pinreset-2:12] GotoIf("SIP/blah-00245082", "0?blah-ivr-v5-difficulties,s,1") in new stack
Any Idea why its not branching correctly?
Unfortanly asterisk know nothing about machine learning etc and does not think that
"true" == "TRUE"
In this case both are strings and strings with capitals not the same as lower strings(see UTF-8 table).
Even more, asterisk's boolean value is 1(integer)
https://unicode-table.com/en/
http://www.asteriskdocs.org/en/2nd_Edition/asterisk-book-html-chunk/asterisk-APP-B-89.html
https://wiki.asterisk.org/wiki/display/AST/Manipulating+Variables+Basics

How to record friend call on Asterisk

I have installed Asterisk on Ubuntu
sip.conf
[10000001]
type=friend
host=dynamic
qualify=yes
secret=pw_random
context=demo
[10000002]
type=friend
host=dynamic
qualify=yes
secret=pw_random
context=demo
...
extensions.conf
[demo]
exten => _1XXXXXXX,1,Dial(SIP/${EXTEN})
exten => _1XXXXXXX,2,Set(CALLFILENAME=${EXTEN:1})
exten => _1XXXXXXX,3,Monitor(wav,${CALLFILENAME},m)
However, Asterisk runs Dial and gets stuck, the users can talk each other on call, but Asterisk doesn't record the audio
run asterisk -rvvv, I get
-- Executing [10000001#demo:1] Dial("SIP/10000002-00000045", "SIP/10000001") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/10000001
-- SIP/10000001-00000046 is ringing
-- SIP/10000001-00000046 answered SIP/10000002-00000045
-- Channel SIP/10000002-00000045 joined 'simple_bridge' basic-bridge <1b882cee-b0f0-473f-aafb-651169788159>
-- Channel SIP/10000001-00000046 joined 'simple_bridge' basic-bridge <1b882cee-b0f0-473f-aafb-651169788159>
Any idea? Thanks!!
Update:
If I modify extensions.conf to
exten => _1XXXXXXX,1,Set(CALLFILENAME=${EXTEN})
exten => _1XXXXXXX,2,Monitor(wav,${CALLFILENAME},m)
exten => _1XXXXXXX,3,Dial(SIP/${EXTEN})
log is
-- Executing [10000001#demo:1] Set("SIP/10000002-00000000", "CALLFILENAME=10000001") in new stack
[Apr 14 00:56:50] WARNING[8649][C-00000000]: pbx.c:4910 pbx_extension_helper: No application 'Monitor' for extension (demo, 10000001, 2)
== Spawn extension (demo, 10000001, 2) exited non-zero on 'SIP/10000002-00000000'
error pbx_extension_helper: No application 'Monitor' for extension is weird.
I fixed it.
It's due to pbx_extension_helper: No application 'Monitor' for extension
Application 'Monitor' is not found because asterisk doesn't load res_monitor module according to this link
So, I add load=res_monitor.so in /etc/asterisk/modules.conf
The file looks like
[modules]
autoload=yes
load=pbx_config.so
load=chan_sip.so
load=chan_iax2.so
load=res_rtp_asterisk.so
load=app_hangup.so
load=app_dial.so
load=app_stack.so
load=res_monitor.so
load=pbx_functions.so
load=codec_ulaw.so
load=codec_gsm.so
load=bridge_simple.so
Thank Shu Zhang!
Have you checked the directory /var/lib/asterisk/sounds/, /var/spool/asterisk/monitor, or you can find your ubuntu files by your file name. Since the verbose didn't show any warning I believe you are doing this right but the recorded file is hiding somewhere. You can fix the file name .
exten => _1XXXXXXX,3,Monitor(wav,fixedfilename)
And find this file name in linux.
Moreover you can take a look of this
[a link]http://www.voip-info.org/wiki/view/Asterisk+cmd+Record
this is an old but i had the same problem, the way you solved it its correct, but you are just loading ALL MODULES... instead of making an slim module load.
[modules]
autoload=yes <---- THIS
load=pbx_config.so <---- DISABLED THIS
load=chan_sip.so
load=chan_iax2.so
So in order to make it work in a slim module load configuracion you must load
[modules]
autoload=no <---- THIS to NO
...
load=func_periodic_hook.so <---- THIS IS NEEDED IN ORDER TO LOAD MONITOR
load=load=res_monitor.so.so
...
Obviouly you need codecs and formats, here is a good slim config.
https://www.voip-info.org/asterisk-slimming/

Asterisk exit when answer()

My asterisk can move around the extension with "Goto()" but it exits immediately when meets the answer application. Could anyone help me to figure out the problem?
Executing [6138#from-sip-external:1] Goto("SIP/10.65.104.17-00000005", "kiem-tra-so-goi-vao,s,1") in new stack
-- Goto (kiem-tra-so-goi-vao,s,1)
-- Executing [s#kiem-tra-so-goi-vao:1] Answer("SIP/10.65.104.17-00000005", "") in new stack
== Spawn extension (kiem-tra-so-goi-vao, s, 1) exited non-zero on 'SIP/10.65.104.17-00000005'
Below is my dialplan:
[from-sip-external]
exten => 1234,1(dest-ext),Goto(kiem-tra-so-goi-vao,s,1)
[kiem-tra-so-goi-vao]
exten => s,1,Answer()
exten => s,n,Playback(hello-world)
exten => s,n,hangup()
Most likly you have NAT or codec issues
To get more info you have enable sip debug
asterisk -r
sip set debug on
If you see in rtp part local ips, while connection from outside, that mean you have issues with nat.
IF you see "not acceptable here", that is codec.
I guess, it should be Hangup() not hangup(). I hope that will solve the problem. If not, most likely, codec mismatch is the culprit.
Change your last line to this.
same =>n, Hangup()

Asterisk Multi Language

I am currently working with freepbx version 2.11.038 using asterisk version 11.6. I am trying to set up an English Extension and a Spanish Extension ie when you ring one number you hit the ext 100049 which is for English and when you ring the other you hit ext 100050 which of for Spanish.
I need the voicemails of these extensions to be in the required language ie 100049 has English voice prompts and 100050 has Spanish voice prompts.
Currently when ringing both I get an English voice.
In the Settings->Advanced Sip Settings, I can set the language to say es. But then all the voice prompts are changed to Spanish on a global scale. I am looking to only do a single extension.
In Settings->Voicemail admin, I can set the various extensions voicemail language using a language code. The issue is that when a user calls both extensions they get the English voice prompts still. However if 100049 dial "*97" for voicemail they hear a password request in English, if 100050 dial "*97" for voicemail they are requested the password in Spanish. So this voicemail settings only seems to affect when a user dials into their own voicemail and not when an external calls hits their voicemail.
Here is my structure of the sound files
Here are my Extensions
Today I have installed the FreePBX language module, which seems to allow me to enter the extension language on the extension page rather than via the voicemail admin, but the result is the same, ext to "*97" language correct, external calls still gets default language.
Here are the log files for the calls made to ext 100049, the English Extension
-- Executing [vmx#macro-vm:10] NoOp("SIP/NodoProvicnial-000001cd", "Checking if ext 100049 is enabled: ") in new stack
-- Executing [vmx#macro-vm:11] GotoIf("SIP/NodoProvicnial-000001cd", "1?s-CHANUNAVAIL,1") in new stack
-- Goto (macro-vm,s-CHANUNAVAIL,1)
-- Executing [s-CHANUNAVAIL#macro-vm:1] Macro("SIP/NodoProvicnial-000001cd","get-vmcontext,100049") in new stack
-- Executing [s#macro-get-vmcontext:1] Set("SIP/NodoProvicnial-000001cd", "VMCONTEXT=default") in new stack
-- Executing [s#macro-get-vmcontext:2] GotoIf("SIP/NodoProvicnial-000001cd","0?200:300") in new stack
-- Goto (macro-get-vmcontext,s,300)
-- Executing [s#macro-get-vmcontext:300] NoOp("SIP/NodoProvicnial-000001cd","") in new stack
-- Executing [s-CHANUNAVAIL#macro-vm:2] VoiceMail("SIP/NodoProvicnial-000001cd", "100049#default,u") in new stack
-- <SIP/NodoProvicnial-000001cd> Playing 'vm-theperson.gsm' (language 'en')[2014-08-07 11:10:52] NOTICE[4184][C-000000d1]: channel.c:4259 __ast_read: Dropping incompatible voice frame on SIP/NodoProvicnial-000001cd of format g729 since our native format has changed to (alaw)
-- <SIP/NodoProvicnial-000001cd> Playing 'digits/1.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001cd> Playing 'digits/0.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001cd> Playing 'digits/0.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001cd> Playing 'digits/0.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001cd> Playing 'digits/4.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001cd> Playing 'digits/9.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001cd> Playing 'vm-isunavail.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001cd> Playing 'vm-intro.gsm' (language 'en')
== Spawn extension (macro-vm, s-CHANUNAVAIL, 2) exited non-zero on 'SIP/NodoProvicnial-000001cd' in macro 'vm'
== Spawn extension (macro-exten-vm, s, 14) exited non-zero on 'SIP/NodoProvicnial-000001cd' in macro 'exten-vm'
== Spawn extension (from-did-direct, 100049, 2) exited non-zero on 'SIP/NodoProvicnial-000001cd'
-- Executing [h#from-did-direct:1] Macro("SIP/NodoProvicnial-000001cd", "hangupcall,") in new stack
-- Executing [s#macro-hangupcall:1] GotoIf("SIP/NodoProvicnial-000001cd", "1?theend") in new stack
-- Goto (macro-hangupcall,s,3)
-- Executing [s#macro-hangupcall:3] ExecIf("SIP/NodoProvicnial-000001cd", "0?Set(CDR(recordingfile)=)") in new stack
-- Executing [s#macro-hangupcall:4] Hangup("SIP/NodoProvicnial-000001cd", "") in new stack
== Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'SIP/NodoProvicnial-000001cd' in macro 'hangupcall'
== Spawn extension (from-did-direct, h, 1) exited non-zero on 'SIP/NodoProvicnial-000001cd'
== MixMonitor close filestream (mixed)
== End MixMonitor Recording SIP/NodoProvicnial-000001cd
== Spawn extension (macro-vm, s-CHANUNAVAIL, 2) exited non-zero on 'SIP/NodoProvicnial-000001cd' in macro 'vm'
== Spawn extension (macro-exten-vm, s, 14) exited non-zero on 'SIP/NodoProvicnial-000001cd' in macro 'exten-vm'
== Spawn extension (from-did-direct, 100049, 2) exited non-zero on 'SIP/NodoProvicnial-000001cd'
-- Executing [h#from-did-direct:1] Macro("SIP/NodoProvicnial-000001cd", "hangupcall,") in new stack
-- Executing [s#macro-hangupcall:1] GotoIf("SIP/NodoProvicnial-000001cd", "1?theend") in new stack
-- Goto (macro-hangupcall,s,3)
-- Executing [s#macro-hangupcall:3] ExecIf("SIP/NodoProvicnial-000001cd", "0?Set(CDR(recordingfile)=)") in new stack
-- Executing [s#macro-hangupcall:4] Hangup("SIP/NodoProvicnial-000001cd", "") in new stack
== Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'SIP/NodoProvicnial-000001cd' in macro 'hangupcall'
== Spawn extension (from-did-direct, h, 1) exited non-zero on 'SIP/NodoProvicnial-000001cd'
== MixMonitor close filestream (mixed)
== End MixMonitor Recording SIP/NodoProvicnial-000001cd
Here are the logs for ext 100050 ie Spanish Extension:
-- Executing [vmx#macro-vm:10] NoOp("SIP/NodoProvicnial-000001d0", "Checking if ext 100050is enabled: ") in new stack
-- Executing [vmx#macro-vm:11] GotoIf("SIP/NodoProvicnial-000001d0", "1?s-NOANSWER,1") in new stack
-- Goto (macro-vm,s-NOANSWER,1)
-- Executing [s-NOANSWER#macro-vm:1] Macro("SIP/NodoProvicnial-000001d0", "get-vmcontext,100050") in new stack
-- Executing [s#macro-get-vmcontext:1] Set("SIP/NodoProvicnial-000001d0","VMCONTEXT=default") in new stack
-- Executing [s#macro-get-vmcontext:2] GotoIf("SIP/NodoProvicnial-000001d0", "0?00:300") in new stack
-- Goto (macro-get-vmcontext,s,300)
-- Executing [s#macro-get-vmcontext:300] NoOp("SIP/NodoProvicnial-000001d0", "") in new stack
-- Executing [s-NOANSWER#macro-vm:2] VoiceMail("SIP/NodoProvicnial-000001d0","100050#default,u") in new stack
-- <SIP/NodoProvicnial-000001d0> Playing 'vm-theperson.gsm' (language 'en')[2014-08-07 11:14:50] NOTICE[4191][C-000000d3]: channel.c:4259 __ast_read: Dropping incompatible voice frame on SIP/NodoProvicnial-000001d0 of format g729 since our native format has changed to (alaw)
-- <SIP/NodoProvicnial-000001d0> Playing 'digits/1.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001d0> Playing 'digits/0.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001d0> Playing 'digits/0.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001d0> Playing 'digits/0.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001d0> Playing 'digits/5.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001d0> Playing 'digits/0.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001d0> Playing 'vm-isunavail.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001d0> Playing 'vm-intro.gsm' (language 'en')
-- <SIP/NodoProvicnial-000001d0> Playing 'beep.gsm' (language 'en')
-- Recording the message
-- x=0, open writing: /var/spool/asterisk/voicemail/default/100050/tmp/JKE7il format: wav49, 0x7fccb8064b98
-- x=1, open writing: /var/spool/asterisk/voicemail/default/100050/tmp/JKE7il format: gsm, 0x7fccb8060a78
-- x=2, open writing: /var/spool/asterisk/voicemail/default/100050/tmp/JKE7il format: wav, 0x7fccb807eac8
-- User hung up
I have asked this on the FreePBX forum also please see the following link.
FreePbx Forum Post
Any advice would be great as I am at a bit of a loss. Any other information I can provide please let me know.
You have download module called "Languages" via module admin and setup other language.
After that you can change language in dialplan, for example select in ivr on press 1 language es and go next destination as you set it.
Also you can change language in extensions tab, that will work for outbound calls from thoose extension.

Call cannot come into asterisk

I am Novice in asterisk I installed Asterisk but now when I calling with telephony call cannot
come into asterisk &
I config ed Outgoing call bat call cannot out asterisk when I write(asterisk -vvvvvr)
& I calling with outdoor display for me
-- Executing [09396464991#DLPN_Main:1] Macro("SIP/6001-00000000", "trunkdial -failover-0.3,DAHDI/g2/09396464991,DAHDI/g1/09396464991,trunk_1,trunk_1") in newstack
-- Executing [s#macro-trunkdial-failover-0.3:1] GotoIf("SIP/6001-00000000","0?1-fmsetcid,1") in new stack
-- Executing [s#macro-trunkdial-failover-0.3:2] GotoIf("SIP/6001-00000000","0?1-setgbobname,1") in new stack
-- Executing [s#macro-trunkdial-failover-0.3:3] Set("SIP/6001-00000000", "CALLERID(num)=6001") in new stack
-- Executing [s#macro-trunkdial-failover-0.3:4] Set("SIP/6001-00000000", "CALLERID(all)=") in new stack
-- Executing [s#macro-trunkdial-failover-0.3:5] GotoIf("SIP/6001-00000000","0?1-dial,1") in new stack
-- Executing [s#macro-trunkdial-failover-0.3:6] Set("SIP/6001-00000000", "CALLERID(all)=") in new stack
-- Executing [s#macro-trunkdial-failover-0.3:7] Set("SIP/6001-00000000", "CALLERID(all)=") in new stack
-- Executing [s#macro-trunkdial-failover-0.3:8] Goto("SIP/6001-00000000", "1-dial,1") in new stack
-- Goto (macro-trunkdial-failover-0.3,1-dial,1)
-- Executing [1-dial#macro-trunkdial-failover-0.3:1] Dial("SIP/6001-00000000:", "DAHDI/g2/09396464991") in new stack
[Mar 10 13:40:04] **WARNING[2106]: channel.c:5627 ast_request: No channel type registered for 'DAHDI'**
[Mar 10 13:40:04] WARNING[2106]: app_dial.c:2274 dial_exec_full: Unable to create channel of type 'DAHDI' (cause 66 - Channel not implemented)== Everyone is busy/congested at this time (1:0/0/1)
-- Executing [1-dial#macro-trunkdial-failover-0.3:2] GotoIf("SIP/6001-00000000", "20 > 0?1-CHANUNAVAIL,1:1-out,1") in new stack
-- Goto (macro-trunkdial-failover-0.3,1-CHANUNAVAIL,1)
-- Executing [1-CHANUNAVAIL#macro-trunkdial-failover-0.3:1] Dial("SIP/6001-00000000", "DAHDI/g1/09396464991") in new stack [Mar 10 13:40:04] WARNING[2106]: channel.c:5627 ast_request: No channel type registered for 'DAHDI'
**[Mar 10 13:40:04] WARNING[2106]: app_dial.c:2274 dial_exec_full: Unable to create channel of type 'DAHDI' (cause 66 - Channel not implemented)== Everyone is busy/congested at this time (1:0/0/1)
-- Executing [1-CHANUNAVAIL#macro-trunkdial-failover-0.3:2] Hangup("SIP/6001-00000000", "") in new stack**== Spawn extension (macro-trunkdial-failover-0.3, 1-CHANUNAVAIL, 2) exited non-zero on 'SIP/6001-00000000' in macro 'trunkdial-failover-0.3'== Spawn extension (DLPN_Main, 09396464991, 1) exited non-zero on 'SIP/6001-00
1) First check your dahdi config is present and it is ok. Use following to check it
dahdi_cfg -vvvv
2) check that your asterisk have pri/dahdi support.

Resources