[Freeswitch-users] Same peace of code works with Javascript and not LUA
Boris Kovalenko
boris at tagnet.ru
Fri Jul 15 21:05:15 MSD 2011
:) Nice joke
Ok. Pastebin: http://pastebin.freeswitch.org/16818
The extension is:
<extension name="ext_office_disa2">
<condition field="destination_number" expression="^(73435230022)$">
<action application="set" data="disa_msg_enterpin=$${base_dir}/sound
s/ru/RU/elena/ivr/8000/ivr-please_enter_pin_followed_by_pound.wav"/>
<action application="set" data="disa_msg_wrongpin=$${base_dir}/sound
s/ru/RU/elena/ivr/8000/ivr-pin_or_extension_is-invalid.wav"/>
<action application="set" data="disa_msg_enterext=$${base_dir}/sound
s/ru/RU/elena/ivr/8000/ivr-enter_ext.wav"/>
<action application="lua" data="common/disa.lua"/>
<!-- <action application="javascript" data="common/disa2.js"/> -->
</condition>
</extension>
LUA script:
--[[
]]
-- if you choose not to require a pin then then you may want to add a
dialplan c
ondition for a specific caller id
local pin = "111111"; -- make sure to change the PIN number.
local digitmaxlength = 0;
local initialTimeout = 7500;
local interdigitTimeout = 5000;
local absoluteTimeout = 30000;
local msg_enterpin;
local msg_wrongPin;
local msg_enterext;
function disa()
if( not session:ready() ) then
return
end
msg_enterpin = session:getVariable("disa_msg_enterpin");
msg_wrongpin = session:getVariable("disa_msg_wrongpin");
msg_enterext = session:getVariable("disa_msg_enterext");
if( msg_enterpin == nil or msg_wrongpin == nil or msg_enterext ==
nil ) then
freeswitch.consoleLog("ALERT", "DISA: Please set necessary
variables");
return false;
end
session:answer();
session:sleep( 500 );
-- session:execute("start_dtmf", "");
if( string.len( pin ) > 0 ) then
digitmaxlength = 6;
session:flushDigits();
digits = session:playAndGetDigits(digitmaxlength,
digitmaxlength, 1, int
erdigitTimeout, "#", msg_enterpin, msg_wrongpin, "\\d+", absoluteTimeout);
freeswitch.consoleLog( "info", "DISA.lua pin: " .. digits ..
"\n" );
end
if( digits == pin or string.len( pin ) == 0 ) then
local ru_ring = session:getVariable("ru-ring");
local originate_string;
originate_session = nil;
session:setVariable("ringback", ru_ring); -- set
to ringto
ne
session:setVariable("transfer_ringback", ru_ring); -- set
to ringto
ne
session:setVariable("hangup_after_bridge", "true");
session:setVariable("v_numbering_plan", "RU");
digits = ""; -- clear dtmf digits to prepare for next dtmf
request
digitmaxlength = 20;
session:flushDigits();
digits = session:playAndGetDigits(6, digitmaxlength, 1,
interdigitTimeou
t, "#", msg_enterext, "", "\\d+", absoluteTimeout);
if( string.len( digits ) == 0 ) then
return false;
end
freeswitch.consoleLog( "info", "DISA.lua Collected: " .. digits
.. "\n"
);
originate_string =
"{ignore_early_media=true" ..
",origination_caller_id_number=" ..
session:getVariable("caller_id_n
umber") ..
",originate_timeout=90" ..
-- ",uuid=" .. session:get_uuid() ..
"}" ..
"sofia/ipbx/" .. session:getVariable("v_ats_srcport") .. "#" ..
digits .. "@192.168.1.1:5060";
originate_session = freeswitch.Session( originate_string,
session );
session:setAutoHangup( false );
originate_session:setAutoHangup( false );
if( originate_session:ready() ) then
freeswitch.bridge(session, originate_session);
-- originate_session:hangup();
end
end
end
local digits = "";
disa();
if( session:ready() ) then
session:hangup();
end
The extension where originate is placed:
<extension name="ext_domestic_e164">
<condition field="destination_number" expression="^(7[0-9]{10})$">
<action application="log" data="NOTICE [top.ctx] - ext_domestic"/>
<action application="set" data="hangup_after_bridge=true"/>
<action application="set" data="continue_on_fail=false"/>
<action application="set" data="failure_causes=USER_BUSY,NO_ANSWER"/>
<action application="set" data="fail_on_single_reject=true"/>
<!-- Least Cost Routing scheme -->
<action application="lcr" data="$1 lcr_tagnet"/>
<action application="set" data="call_timeout=60"/>
<action application="set" data="bridge_answer_timeout=60"/>
<action application="bridge" data="${lcr_auto_route}"/>
<action application="hangup"/>
</condition>
</extension>
> Try harder..
>
> On Jul 15, 2011 4:43 AM, "Boris Kovalenko" <boris at tagnet.ru
> <mailto:boris at tagnet.ru>> wrote:
> > Hello!
> >
> > I tried, no success.
> >
> >> after you create it
> >>
> >> session:setAutoHangup(0)
> >>
> >> or it will hangup when the script exits
> >>
> >> On Thu, Jul 14, 2011 at 1:11 PM, Boris Kovalenko<boris at tagnet.ru
> <mailto:boris at tagnet.ru>> wrote:
> >>> Hello!
> >>>
> >>> Here it is http://pastebin.freeswitch.org/16809
> >>> Hope somebody help
> >>>
> >>> get a console log w/ siptrace of that scenario and put it on
> pastebin. the
> >>> gang here will take a look.
> >>> -MC
> >>>
> >>> On Thu, Jul 14, 2011 at 10:39 AM, Boris Kovalenko<boris at tagnet.ru
> <mailto:boris at tagnet.ru>> wrote:
> >>>> And another problem found. If the remote party answers
> immediately all
> >>>> is ok. But if remote waits more then 8-10 seconds before answer - the
> >>>> call is dropped when answered. Can't understand where to look for a
> >>>> problem.
> >>>>> Hello!
> >>>>>
> >>>>> I found a problem. originate_session must not to be local.
> >>>>>> Hello!
> >>>>>>
> >>>>>> I'm trying to migrate DISA from Javascript to LUA. This peace of
> >>>>>> code works fine in Javascript:
> >>>>>>
> >>>>>> ostr = "{ignore_early_media=true" +
> >>>>>> ",origination_caller_id_number=" +
> >>>>>> session.getVariable("caller_id_number") +
> >>>>>> "}sofia/ipbx/50004#" + digits +
> >>>>>> "@192.168.1.1:5060 <http://192.168.1.1:5060>";
> >>>>>> osession = new Session( ostr );
> >>>>>> bridge(session, osession);
> >>>>>> osession.hangup();
> >>>>>>
> >>>>>> With LUA not:
> >>>>>> originate_string =
> >>>>>> "{ignore_early_media=true" ..
> >>>>>> ",origination_caller_id_number=" ..
> >>>>>> session:getVariable("caller_id_number") ..
> >>>>>> "}" ..
> >>>>>> "sofia/ipbx/50004#" ..
> >>>>>> digits .. "@192.168.1.1:5060 <http://192.168.1.1:5060>";
> >>>>>> originate_session = freeswitch.Session( originate_string );
> >>>>>> freeswitch.bridge(session, originate_session);
> >>>>>> originate_session:hangup();
> >>>>>>
> >>>>>> The call is droped when remote answers. There is an error in log:
> >>>>>> bridge: session not ready. I tried to use
> >>>>>> if( originate_session:ready() ) then
> >>>>>> freeswitch.bridge(session, originate_session);
> >>>>>> originate_session:hangup();
> >>>>>> end
> >>>>>>
> >>>>>> with no luck :(. Please, help me. What am I doing wrong?
> >>>>>>
> >>>>
> >>>> --
> >>>> Regards,
> >>>> Boris
> >>>>
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> Join us at ClueCon 2011, Aug 9-11, Chicago
> >>>> http://www.cluecon.com 877-7-4ACLUE
> >>>>
> >>>> FreeSWITCH-users mailing list
> >>>> FreeSWITCH-users at lists.freeswitch.org
> <mailto:FreeSWITCH-users at lists.freeswitch.org>
> >>>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> >>>>
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> >>>> http://www.freeswitch.org
> >>>
> >>>
> >>> _______________________________________________
> >>> Join us at ClueCon 2011, Aug 9-11, Chicago
> >>> http://www.cluecon.com 877-7-4ACLUE
> >>>
> >>> FreeSWITCH-users mailing list
> >>> FreeSWITCH-users at lists.freeswitch.org
> <mailto:FreeSWITCH-users at lists.freeswitch.org>
> >>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> >>>
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> >>> http://www.freeswitch.org
> >>>
> >>>
> >>> --
> >>> Regards,
> >>> Boris
> >>>
> >>>
> >>> _______________________________________________
> >>> Join us at ClueCon 2011, Aug 9-11, Chicago
> >>> http://www.cluecon.com 877-7-4ACLUE
> >>>
> >>> FreeSWITCH-users mailing list
> >>> FreeSWITCH-users at lists.freeswitch.org
> <mailto:FreeSWITCH-users at lists.freeswitch.org>
> >>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> >>>
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> >>> http://www.freeswitch.org
> >>>
> >>>
> >>
> >>
> >
> >
> > --
> > Regards,
> > Boris
> >
> >
> >
> > _______________________________________________
> > Join us at ClueCon 2011, Aug 9-11, Chicago
> > http://www.cluecon.com 877-7-4ACLUE
> >
> > FreeSWITCH-users mailing list
> > FreeSWITCH-users at lists.freeswitch.org
> <mailto:FreeSWITCH-users at lists.freeswitch.org>
> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> > http://www.freeswitch.org
>
>
> _______________________________________________
> Join us at ClueCon 2011, Aug 9-11, Chicago
> http://www.cluecon.com 877-7-4ACLUE
>
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
--
Regards,
Boris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20110715/ce9db0e4/attachment-0001.html
More information about the FreeSWITCH-users
mailing list