Awesome example code, Nicolas! Thanks! On Thu, Jan 21, 2010 at 6:35 AM, Nicolas Brenner <nicolas@medularis.com>wrote:
On Wed, Jan 20, 2010 at 7:06 PM, Mike van Lammeren <mike@van.lammeren.net>wrote:
So, I've been reading about early media in the wiki, and have made a little progress, which leads to more questions.
I understand now why a call is considered connected before one person has picked up the phone. I am also able to get my script to wait for the phone to be picked up, by setting the ignore_early_media variable when starting a new session, like this:
customerSession = freeswitch.Session("{ignore_early_media=true}sofia/gateway/example.com/" .. customerPhoneNumber)
After that line, the script waits for the other phone to be picked up.
However, now I wonder what to do with calls that don't complete, get busy signals, etc.
What do people do in this case? The only related example I can find on the web is for a javascript dialer, which doesn't address any of these cases.
I guess it depends on what you want to do. For example I have a lua script very similar to what you describe, although there is no confirmation involved. Depending on the hangup cause the session gets, it might try redialing with a different gateway, try again or just hangup.
Take a look here http://wiki.freeswitch.org/wiki/Hangup_causes to see what each hangup cause means. You don't need to have a special case for all of them, only the ones you are interested in.
Here's an example in code which retries a call depending on the hangup cause. It retries max_retries1 times and alternates between 2 different gateways:
session1 = null; max_retries1 = 3; retries = 0; ostr = ""; repeat retries = retries + 1; if (retries % 2) then ostr = originate_str1; else ostr = originate_str12; end freeswitch.consoleLog("notice", "*********** Dialing Leg1: " .. ostr .. " - Try: "..retries.." ***********\n"); session1 = freeswitch.Session(ostr); local hcause = session1:hangupCause(); freeswitch.consoleLog("notice", "*********** Leg1: " .. hcause .. " - Try: "..retries.." ***********\n"); until not ((hcause == 'NO_ROUTE_DESTINATION' or hcause == 'RECOVERY_ON_TIMER_EXPIRE' or hcause == 'INCOMPATIBLE_DESTINATION' or hcause == 'CALL_REJECTED' or hcause == 'NORMAL_TEMPORARY_FAILURE') and (retries < max_retriesl1))
Note: originate_str1 and originate_str2 are two different dial strings for 2 different gateways.
Early Media: http://wiki.freeswitch.org/wiki/Early_media ignore_early_media variable: http://wiki.freeswitch.org/wiki/Variable_ignore_early_media <http://wiki.freeswitch.org/wiki/Variable_ignore_early_media>javascript dialer: http://alexn.org/docs/dialer.html
<http://alexn.org/docs/dialer.html>Mike van Lammeren
On Wed, Jan 20, 2010 at 4:45 PM, Mike van Lammeren <mike@van.lammeren.net
wrote:
Hi Rob!
Unfortunately, I have the next few weeks to complete this part of the project. Without a stable release of 1.0.5, I have to stick with 1.0.4. I'm sure that 1.0.4 can detect and report when a phone is picked up. It's just that I can't figure out how to get that information! Either that, or I have something mis-configured.
Mike van Lammeren
On Wed, Jan 20, 2010 at 4:32 PM, Rob Forman <rob4manhere@gmail.com>wrote:
Hi Mike,
I don't think v1.0.4 is supported any longer. You'll have better luck getting assistance by upgrading to trunk or the latest tar and reporting back.
Good luck! Rob
On Wed, Jan 20, 2010 at 3:18 PM, Mike van Lammeren < mike@van.lammeren.net> wrote:
Hello!
Some day, I'll probably laugh at asking this question, but today I can't figure it out.
I've written a Lua script that listens for a call, then dials a phone number to a second person. It plays a message, then prompts the second person to hit pound to connect. If the second person hits pound, then it bridges the two calls together.
All that works great, but I can't figure out how to get the session for the second person to wait until that person answers.
I'm using FreeSWITCH 1.0.4, and although there is a *getState*function documented in the wiki, it doesn't seem to exist for me.
Any help would be appreciated!
Mike van Lammeren
_______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE: http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE: http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org