No problem, here it is:
On Thu, Jan 21, 2010 at 3: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 = "";repeatretries = retries + 1;if (retries % 2) then ostr = originate_str1;else ostr = originate_str12; endfreeswitch.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.
Nicolas,
This is really nice. Would you be willing to add this script and a brief explanation to the wiki? You could create a whole new page and just link to it from here: http://wiki.freeswitch.org/wiki/Mod_lua#More_Samples
If you have any questions please let me know!
-MC
_______________________________________________
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