My apologies for not adding it in my previous message, but my lan network is a 10.0.0.x network. The 192.168.0.1 device does not exist on my network. Chris Danielson wrote:
After running some more tests I noticed something very interesting... see the 192.168.0.1 line:
2007-09-12 20:49:00 [DEBUG] sofia.c:1028 sofia_handle_sip_i_state() Channel sofia/sip.vonics.net/18881234567 entering state [calling] sres_resolver_receive(0x556cd0, 16) called RR received sip.vonics.net. CNAME IN 890 rdlen=9 RR received vonics.net. SOA IN 7199 rdlen=46 sres_cache_get(0x549370, SRV, "_sip._udp.sip.vonics.net.") called rr found in cache: _sip._udp.sip.vonics.net. 33 rr found in cache: _sip._udp.sip.vonics.net. 33 rr found in cache: _sip._udp.sip.vonics.net. 33 rr found in cache: _sip._udp.sip.vonics.net. 33 sres_cache_get(0x549370, SRV, "_sip._udp.sip.vonics.net.") returned 4 entries nta: for "sip.vonics.net" query "_sip._udp.sip.vonics.net" SRV (cached) nta: _sip._udp.sip.vonics.net IN SRV 0 0 5060 sipserver1.vonics.net. (udp) nta: _sip._udp.sip.vonics.net IN SRV 1 0 13412 sipserver1.vonics.net. (udp) nta: _sip._udp.sip.vonics.net IN SRV 2 0 5060 sipserver2.vonics.net. (udp) nta: _sip._udp.sip.vonics.net IN SRV 3 0 13412 sipserver2.vonics.net. (udp) sres_cache_get(0x549370, A, "sipserver1.vonics.net.") called nta: for "sip.vonics.net" query "sipserver1.vonics.net." A sres_query(0x556cd0, 0x690fb0, A, "sipserver1.vonics.net.") called sres_send_dns_query(0x556cd0, 0x691a70) called sres_send_dns_query(0x556cd0, 0x691a70) id=14532 A sipserver1.vonics.net. (to [192.168.0.1]:53) sres_resolver_receive(0x556cd0, 16) called sres_decode_msg: matching query for id=14531 sres_resolver_receive(0x556cd0, 16) called RR received sipserver1.vonics.net. CNAME IN 3599 rdlen=9 RR received juliet.vonics.net. A IN 4663 rdlen=4 RR received vonics.net. NS IN 4663 rdlen=6 RR received vonics.net. NS IN 4663 rdlen=6 RR received vonics.net. NS IN 4663 rdlen=6
And following this log I ran a netstat just to see the socket
MaxPowerSoft001:~# netstat -nalp |grep freeswitch tcp 0 0 10.0.0.2:13412 0.0.0.0:* LISTEN 14720/freeswitch udp 0 0 10.0.0.2:32826 192.168.0.1:53 ESTABLISHED14720/freeswitch udp 0 0 10.0.0.2:13412 0.0.0.0:* 14720/freeswitch
I am wondering if the 192.168.0.1 address is causing my issues. Thanks again for any light you shine on this issue.
Kind Regards, Chris Danielson
Chris Danielson wrote:
I attempted the session.streamFile(...) and was able to successfully hear the wav file. I also attempted calling the session.answer() for a second time within the cf_bridge_call function. Still, I am unable to hear the ringing sound even though the phone that I called is actually ringing. When the phone is answered, the originate appears to fail due to a 60 second timeout, which is reported as a NO_ANSWER. This happens regardless of whether or not the phone I am calling is answered or not.
Here is the current execution flow within my Javascript:
function cf_bridge_call(phone) { var str = "sofia/gateway/line2/"+phone; session.setVariable("ringback", "%(2000, 4000, 440.0, 480.0)"); session.preAnswer(); /* attemped a session.answer() here in another test. The sound file still played, not no ringing was heard. */ session.streamFile("/usr/local/freeswitch/sounds/you_rang.wav"); session.execute("bridge", str); }
session.answer(); session.flushDigits(); /** * Query database and dynamically load a phone number into variable **/ var phoneNo = db_get_phone(); cf_bridge_call(phoneNo);
The log output was:
2007-09-08 01:54:35 [DEBUG] switch_ivr_play_say.c:1007 switch_ivr_play_file() done playing file 2007-09-08 01:54:35 [NOTICE] switch_channel.c:385 switch_channel_set_name() New Chan sofia/sip.vonics.net/18881234567 [1f766c60-5de9-11dc-af73-3b3c22977fdb] 2007-09-08 01:54:35 [DEBUG] mod_sofia.c:1431 sofia_outgoing_channel() sofia/sip.vonics.net/18881234567 State Change CS_NEW -> CS_INIT 2007-09-08 01:54:35 [DEBUG] switch_core_session.c:647 switch_core_session_signal_state_change() Kill sofia/sip.vonics.net/18881234567 [BREAK] 2007-09-08 01:54:35 [DEBUG] switch_core_state_machine.c:383 switch_core_session_run() (sofia/sip.vonics.net/18881234567) State INIT 2007-09-08 01:54:35 [DEBUG] mod_sofia.c:92 sofia_on_init() SOFIA INIT 2007-09-08 01:54:35 [DEBUG] sofia.c:71 sofia_event_callback() event [nua_i_state] status [0][INVITE sent] session: sofia/sip.vonics.net/18881234567 2007-09-08 01:54:35 [DEBUG] sofia.c:1028 sofia_handle_sip_i_state() Channel sofia/sip.vonics.net/18881234567 entering state [calling] 2007-09-08 01:54:35 [DEBUG] mod_sofia.c:105 sofia_on_init() sofia/sip.vonics.net/18881234567 State Change CS_INIT -> CS_RING 2007-09-08 01:54:35 [DEBUG] switch_core_session.c:647 switch_core_session_signal_state_change() Kill sofia/sip.vonics.net/18881234567 [BREAK] 2007-09-08 01:54:35 [DEBUG] switch_core_state_machine.c:418 switch_core_session_run() (sofia/sip.vonics.net/18881234567) State RING 2007-09-08 01:54:35 [DEBUG] mod_sofia.c:120 sofia_on_ring() SOFIA RING 2007-09-08 01:54:35 [DEBUG] switch_ivr_originate.c:48 originate_on_ring() sofia/sip.vonics.net/18881234567 State Change CS_RING -> CS_HOLD 2007-09-08 01:54:35 [DEBUG] switch_core_session.c:647 switch_core_session_signal_state_change() Kill sofia/sip.vonics.net/18881234567 [BREAK] 2007-09-08 01:54:35 [DEBUG] switch_core_state_machine.c:596 switch_core_session_run() (sofia/sip.vonics.net/18881234567) State HOLD 2007-09-08 01:54:35 [DEBUG] switch_core_state_machine.c:204 switch_core_standard_on_hold() Standard HOLD 2007-09-08 01:54:35 [DEBUG] switch_ivr_originate.c:619 switch_ivr_originate() Raw Codec Activation Success L16@8000hz 1 channel 20ms 2007-09-08 01:54:35 [DEBUG] switch_ivr_originate.c:667 switch_ivr_originate() Play Ringback Tone [%(2000, 4000, 440.0, 480.0)] 2007-09-08 01:54:35 [DEBUG] sofia.c:71 sofia_event_callback() event [nua_r_invite] status [401][Unauthorized] session: sofia/sip.vonics.net/18881234567 2007-09-08 01:54:35 [DEBUG] sofia_reg.c:691 sofia_reg_handle_sip_r_challenge() Authenticating 'FreeSWITCH' with 'Digest:"sip.vonics.net":16191111111:5874'. 2007-09-08 01:54:35 [DEBUG] sofia.c:71 sofia_event_callback() event [nua_i_state] status [0][INVITE sent] session: sofia/sip.vonics.net/18881234567 2007-09-08 01:54:35 [DEBUG] sofia.c:1028 sofia_handle_sip_i_state() Channel sofia/sip.vonics.net/18881234567 entering state [calling] 2007-09-08 01:55:35 [NOTICE] switch_ivr_originate.c:805 switch_ivr_originate() Hangup sofia/sip.vonics.net/18881234567 [CS_HOLD] [NO_ANSWER] 2007-09-08 01:55:35 [DEBUG] switch_channel.c:1076 switch_channel_perform_hangup() Kill sofia/sip.vonics.net/18881234567 [KILL] 2007-09-08 01:55:35 [DEBUG] switch_core_session.c:647 switch_core_session_signal_state_change() Kill sofia/sip.vonics.net/18881234567 [BREAK] 2007-09-08 01:55:35 [DEBUG] switch_ivr_originate.c:878 switch_ivr_originate() Originate Cancelled by originator termination Cause: 19 [NO_ANSWER] 2007-09-08 01:55:35 [INFO] mod_dptools.c:1087 audio_bridge_function() Originate Failed. Cause: NO_ANSWER
Thanks again for all the help.
Kind Regards, Chris Danielson
Anthony Minessale wrote:
you can find out by playing a file in the script to make sure you have an audio path.
session.preAnswer(); session.streamFile("/some.wav");
If that doesn't work the inbound device may not support early media so try session.answer(); instead to compare what happens when you send a 200 ok instead of a 183 progress
Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/
AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference sip:888@conference.freeswitch.org iax:guest@conference.freeswitch.org/888 googletalk:conf+888@conference.freeswitch.org pstn:213-799-1400
----- Original Message ---- From: Chris Danielson <chris@maxpowersoft.com> To: freeswitch-users@lists.freeswitch.org Sent: Thursday, September 6, 2007 11:50:29 PM Subject: Re: [Freeswitch-users] 2 SIP Lines, Difficulty Originating Call
Thanks again for all the help. My apologies for not replying sooner, I was out of town for a week and needed some extra time to research and try some of the things you had mentioned. Everything that is brought up in this thread will get documented by me within the wiki.
So far I have tried both techniques within my JavaScript code that Anthony mentioned. Here is one example:
function cf_bridge_call(phone) { var str = "sofia/gateway/line2/"+phone; session.setVariable("ringback", "%(2000, 4000, 440.0, 480.0)"); session.preAnswer(); session.execute("bridge", str); } cf_bridge_call("18881234567");
When I make this call I still do not hear the ringing and notice that the console renders: nta: received 180 Ringing for INVITE (87950735) nta: 180 Ringing was discarded
When the phone is actually answered, I still cannot hear the person on the other side speaking too.
Is this possibly due to the fact that I am having a NAT issue? Or could this be that my carrier is doing something out of the norm? And finally, should I implement this strictly as a dialplan within the default_context.xml file and avoid handling this functionality within JavaScript?
Kind Regards, Chris Danielson
Anthony Minessale wrote:
You should choose one or the other not both. One is inband ringing generated by FreeSWITCH and the other is just the sip message telling the phone to indicate ringinig. Here is a description I wrote on an earlier posting here that someone may want to stick in the wiki.
---snip
ring_ready is a dialplan application that sends the protocol specific message to indicate ringing. In the case of SIP a 180 Ringing.
ringback is a channel variable you can set to artificially generate a tone or play an audio file to an originating channel while it waits to be connected to another call.
pre_answer is a dialplan application that will send the protocol specific message to indicate early media. In the case of SIP a 183 Progress
So, if you call into freeswitch with sip and the first entry in your dialplan is ring_ready followed by a bridge to some other destination when it hits ring_ready it will send "180 Ringing" back to your phone so it can generate the ringing sound.
If instead you use the set application to set ringback to a tone spec or audio file followed by a call to pre_answer to establish an early media connection followed by a call to bridge to another dest, then the core will generate this audio locally and send it back to your phone. Again, this occurs during early media meaning the call has not been answered but the SIP has negotiated a media path in advance for this type of pre-answer audio indication. SIP has no promise that early media must be supported so some switches and devices opt to not support it meaning you may not be able to hear any audio until the call is officially answered which would keep you from hearing the artificial ringback at all.
Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/
AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference sip:888@conference.freeswitch.org iax:guest@conference.freeswitch.org/888 googletalk:conf+888@conference.freeswitch.org pstn:213-799-1400
----- Original Message ---- From: Tamas Cseke <cstomi.levlist@gmail.com> To: chris@maxpowersoft.com; freeswitch-users@lists.freeswitch.org Sent: Monday, August 27, 2007 2:34:22 AM Subject: Re: [Freeswitch-users] 2 SIP Lines, Difficulty Originating Call
Chris Danielson írta:
If any one can help me, I am having two issues. Basically, while my javascript is executing a single inbound SIP call the script conditionally gets to a point where the end-user can originate a call to an external phone number. Keep in mind that I have two sip lines defined as gateways supplied by my carrier vonics.net. Upon calling the originate method, the call is actually placed and the destination phone actually begins to ring. At this point I still cannot hear the ringing on the original session that was originated by my inbound call. Also, the originate method times out regardless of whether or not the destination "phone" number was answered or not.
So my two issues are: 1) Why does the originate method start a call, the destination phone called actually rings, but always times out, regardless of whether or not the phone was answered? 2) When calling the originate method, I never hear the phone ringing on my inbound connection.
You should call ring_ready app, if you want to hear the ringing afaik.
/* set ringback tone */ session.setVariable("ringback", "%(2000, 4000, 440.0, 480.0)"); session.execute("ring_ready", "");
I found these pages, maybe you can find more about it on wiki. http://wiki.freeswitch.org/wiki/Custom_Ring_Back_Tones http://wiki.freeswitch.org/wiki/Misc._Dialplan_Tools_ring_ready
Hope this help!
Regards, Tamas