[Freeswitch-users] valet_park help needed

Michael Collins msc at freeswitch.org
Fri Nov 30 21:52:28 MSK 2012


I haven't had a chance to familiarize my self with the Lua/dbh way of
connecting to a database so I'll have to defer to Chad and the other
hardcore Lua gurus. This much I can tell you: there is a valet_info API
that you can run at fs_cli or from Lua that will tell you what parking
spots are currently in use.

-MC

On Fri, Nov 30, 2012 at 3:35 AM, Nitin Tomer <ntomer at newgen.co.in> wrote:

>  Hi Michael,****
>
> ** **
>
> I’ve decided to do it through Lua. I’ve written a Lua script which will
> check whether an entry for an extension exists in the database. And if it
> doesn’t, it’ll assume that extension as free and will park the call there.
> ****
>
> ** **
>
> I’ve made the following changes in the dialplan –****
>
> ** **
>
> <extension>****
>
> <condition field="destination_number" expression="^(450)$">****
>
> <action application="play_and_get_digits" data="10 16 3 3000 # say:'Press
> your account number, followed by hash key' say:'Wrong Input' res \d+" />**
> **
>
>             <action application="phrase" data="spell,${res}"/>****
>
>             <action application="set" data="caller_id_name=Change Address
> Request" />****
>
>             <action application="set" data="call_timeout=60" />****
>
>             <action application="set" data="originate_timeout=60" />****
>
>             <action inline="true" application="lua" data="test.lua "/>****
>
>             <action application="db"
> data="insert/testapp/${parkednumber}/${res}" />****
>
> <action application="valet_park" data="my_lot ${parkednumber}" />****
>
> </condition>****
>
>   </extension>****
>
> ** **
>
> Test.lua:****
>
> ** **
>
> local dbh = freeswitch.Dbh("freeswitch-connector", "root", "system123#")**
> **
>
> ** **
>
> if dbh:connected() then****
>
>     if stream then****
>
>         stream:write("result - database connected\n\n")****
>
>     else****
>
>       print("database connected")****
>
>     end****
>
> else  ****
>
>     if stream then****
>
>       stream:write("result - database error\n")****
>
>     else****
>
>       print("database error")****
>
>     end****
>
>     return****
>
> end****
>
> ** **
>
> -- set variable - or print to console if no session is available ****
>
> local function sv(key, val)****
>
>    if session then****
>
>        session:setVariable("parkednumber", val)****
>
>        print("value set in session")****
>
>    elseif stream then****
>
>        stream:write(string.format("%25s : %s\n", key, val))****
>
>    else -- a script executed using luarun does not have a stream****
>
>        print(key .. " : " .. val)****
>
>    end****
>
> end****
>
> ** **
>
> number = 8501****
>
> ** **
>
> while(number < 8600)****
>
> local my_query = "select data from db_data where data_key = '" .. tries ..
> “’”****
>
> ** **
>
>       assert(dbh:query(my_query, function(row)****
>
>             for key, val in pairs(row) do     -- in this example only one*
> ***
>
> row with one column will be returned****
>
>                         sv(key, val)                   -- so here key =
> 'user'****
>
>             end****
>
>       end))****
>
>       tries = tries + 1****
>
> end****
>
> ** **
>
> I want to execute the above query, and check whether any result came. If
> results came, then I want to proceed to next number. And if no result came,
> then I want to set it in the session variable and break from the while
> loop. But I could only find the syntax for assert, no way to check whether
> the query returned any result or not. Please help me out.****
>
> ** **
>
> Regards****
>
> ** **
>
> Nitin****
>
> ** **
>
> *From:* freeswitch-users-bounces at lists.freeswitch.org [mailto:
> freeswitch-users-bounces at lists.freeswitch.org] *On Behalf Of *Nitin Tomer
> *Sent:* Friday, November 30, 2012 10:03 AM
>
> *To:* 'FreeSWITCH Users Help'
> *Subject:* Re: [Freeswitch-users] valet_park help needed****
>
>  ** **
>
> Dear Michael,****
>
> ** **
>
> Thanks for your response.****
>
> ** **
>
> If I can’t suppress the announcement of location to caller, then I will
> have to look at an alternative approach.****
>
> ** **
>
> I make entries for every location on which a call is parked in my
> database, so will it be possible for me to do –****
>
> ** **
>
> **1.       **Suppose I have assigned extension 8501 to 8599 for parking.**
> **
>
> **2.       **Run a for loop, from 8501 to 8599****
>
> **3.       **Check whether an entry exists for that extension in the
> database****
>
> **4.       **If an entry exists, it means a call is parked at that
> extension, move to next extension****
>
> **5.       **If no entry exists, it means extension is free. Park the
> call there and make entry in database****
>
> **6.       **Break the loop****
>
> ** **
>
> Will it work? And if it will, please guide me on how to do that. I am new
> to Freeswitch and not very well-versed  with it.****
>
> ** **
>
> Regards****
>
> ** **
>
> Nitin****
>
> ** **
>
> *From:* freeswitch-users-bounces at lists.freeswitch.org [mailto:
> freeswitch-users-bounces at lists.freeswitch.org] *On Behalf Of *Michael
> Collins
> *Sent:* Friday, November 30, 2012 8:30 AM
> *To:* FreeSWITCH Users Help
> *Subject:* Re: [Freeswitch-users] valet_park help needed****
>
> ** **
>
> As far as I know you can't suppress the announcement of the location to
> the caller.
>
> For the event socket you have a lot of homework to do. I recommend:
> FS Book<https://www.packtpub.com/freeswitch-1-0-6-build-robust-high-performance-telephony-systems/book>,
> chapter 9
> FS Cookbook <http://link.packtpub.com/nuIOlX>, chapter 4
> Wiki event socket (see link on left)
>
> For a really quick dive into what events look like:
> launch fs_cli and type:
> /log 0
> /events plain all
>
> You'll see EVERY event that the system throws. Try this to narrow it down
> just to valet events:
>
> /filter Event-Class valet_parking::info
>
> I typed most of this off the top of my head, so standard disclaimer<http://wiki.freeswitch.org/wiki/Reporting_Bugs#Standard_Disclaimer>applies. Hope this helps you get started!
> -MC****
>
> On Thu, Nov 29, 2012 at 6:09 PM, Nitin Tomer <ntomer at newgen.co.in> wrote:*
> ***
>
> Dear Michael,
>
> Thanks for your help.
>
> About thsis - "Using 'auto in' the system will announce the parking
> location. If you are sending a call in from an IVR then the caller will
> hear their park location. The only way to know where the call went would be
> to watch the event socket for relevant valet events. "
>
> Yes, right now the extension where call is parked, is announced to the
> caller. I don't want that to happen. I don't want it announced to caller,
> rather I want it retruned to me, so that I can store it in database. So
> that my agents can pick the call after seeing the extension where it is
> parked.
>
> Please tell me more details about how to watch the event socket for valet
> events.
>
> Regards
>
> Nitin
>
> On Friday, 30-11-2012 on 6:38 Michael Collins wrote:****
>
> Answers inline...****
>
> On Thu, Nov 29, 2012 at 2:15 AM, Nitin Tomer <ntomer at newgen.co.in> wrote:*
> ***
>
> Hi,****
>
>  ****
>
> I am using valet_park. I’ve configure a IVR menu of an extension, based on
> user’s input call is forwarded to other extensions.****
>
>  ****
>
> Extension on which end-users will call –****
>
>  ****
>
> <extension name="ivr_nitin">
>       <condition field="destination_number" expression="^5002$">
>         <action application="answer"/>
>         <action application="sleep" data="500"/>
>         <action application="ivr" data="nitin_ivr"/>
>       </condition>
> </extension>****
>
>  ****
>
> The IVR configuration XML is –****
>
>  ****
>
> <include>
>         <menu name="nitin_ivr"
>                 greet-long="say:Welcome to Newgen General Insurance
> Company. Press 1 for Changing Address, 2 for Changing Nominee or 3 for
> Close Policy."
>                 greet-short="say:Welcome to Newgen. Press 1 for Changing
> Address, 2 for Changing Nominee or 3 for Close Policy."
>                 invalid-sound="ivr/ivr-that_was_an_invalid_entry.wav"
>                 exit-sound="voicemail/vm-goodbye.wav"
>                 confirm-macro=""
>                 confirm-key=""
>                 tts-engine="flite"
>                 tts-voice="slt"
>                 confirm-attempts="3"
>                 timeout="3000"
>                 inter-digit-timeout="2000"
>                 max-failures="3"
>                 max-timeouts="3"
>                 digit-len="4">
>
>                 <entry action="menu-exec-app" digits="1" param="transfer
> 450 XML default"/>    <!-- Change Address -->
>                 <entry action="menu-exec-app" digits="2" param="transfer
> 451 XML default"/>    <!-- Change Nominee -->
>                 <entry action="menu-exec-app" digits="3" param="transfer
> 452 XML default"/>    <!-- Close Policy -->
>
>         </menu>
> </include>****
>
> Once user presses “1”, call is forwarded to 450, for this extension
> dialplan entry is –****
>
>  ****
>
> <extension>
>           <condition field="destination_number" expression="^(450)$">
>           <action application="play_and_get_digits" data="10 16 3 3000 #
> say:'Press your account number, followed by hash key' say:'Wrong Input' res
> \d+" />
>           <action application="phrase" data="spell,${res}"/>
>           <action application="db" data="insert/testapp/newcall1/${res}"
> />
>               <action application="set" data="caller_id_name=Change
> Address Request" />
>               <action application="set" data="call_timeout=60" />
>               <action application="set" data="originate_timeout=60" />
>               <action application="valet_park" data="my_lot auto in 8501
> 8599" />           ****
>
>           </condition>
> </extension>****
>
>  ****
>
> Here, the call is parked at any available extension between 8501 to 8599.*
> ***
>
>  ****
>
> Then I’ve set up an extension to pick up calls –****
>
>  ****
>
> <extension name="park-out">
>    <condition field="destination_number" expression="^(85\d\d)$">
>      <action application="answer"/>
>      <action application="valet_park" data="my_lot $1"/>
>    </condition>
>  </extension>****
>
>  ****
>
> I have a few questions –****
>
>  ****
>
> 1.       Valet_park parks the call on any available extension between
> 8501 to 8599 (<action application="valet_park" data="my_lot auto in 8501
> 8599" />). Is there any way to let me know on which extension the call have
> been parked?****
>
> Using 'auto in' the system will announce the parking location. If you are
> sending a call in from an IVR then the caller will hear their park
> location. The only way to know where the call went would be to watch the
> event socket for relevant valet events. ****
>
>   2.       How can I get the number from which call was made in extension
> 450. The idea is to use the caller number as key and entered value as value
> while making entry in database (<action application="db"
> data="insert/testapp/newcall1/${res}" />)?****
>
>  Do you mean the caller id number? That's literally in channel variable
> ${caller_id_number} ****
>
>   3.       If two users call on extension 5002 (where IVR menu is
> played), what will happen? Will the second user have to wait for first to
> finish or whether both will be connected parallel?****
>
>  Both can be in the IVR at the same time and they won't affect each other
> at all.
>
> -MC ****
>
>    ****
>
> Please help me out.****
>
>  ****
>
> Regards****
>
>  ****
>
> Nitin****
>
> ** **
>  Disclaimer :- This e-mail and any attachment may contain confidential,
> proprietary or legally privileged information. If you are not the original
> intended recipient and have erroneously received this message, you are
> prohibited from using, copying, altering or disclosing the content of this
> message. Please delete it immediately and notify the sender. Newgen
> Software Technologies Ltd (NSTL) accepts no responsibilities for loss or
> damage arising from the use of the information transmitted by this email
> including damages from virus and further acknowledges that no binding
> nature of the message shall be implied or assumed unless the sender does so
> expressly with due authority of NSTL. ****
>
> ** **
>
>
> _________________________________________________________________________
> Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org
> http://www.freeswitchsolutions.com
>
> 
> 
>
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://wiki.freeswitch.org
> http://www.cluecon.com
>
> 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****
>
>
>
>
> --
> Michael S Collins
> Twitter: @mercutioviz
> http://www.FreeSWITCH.org
> http://www.ClueCon.com
> http://www.OSTAG.org****
>
> ** **
>  Disclaimer :- This e-mail and any attachment may contain confidential,
> proprietary or legally privileged information. If you are not the original
> intended recipient and have erroneously received this message, you are
> prohibited from using, copying, altering or disclosing the content of this
> message. Please delete it immediately and notify the sender. Newgen
> Software Technologies Ltd (NSTL) accepts no responsibilities for loss or
> damage arising from the use of the information transmitted by this email
> including damages from virus and further acknowledges that no binding
> nature of the message shall be implied or assumed unless the sender does so
> expressly with due authority of NSTL. ****
>
> ** **
>
>
> _________________________________________________________________________
> Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org
> http://www.freeswitchsolutions.com
>
> 
> 
>
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://wiki.freeswitch.org
> http://www.cluecon.com
>
> 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****
>
>
>
>
> --
> Michael S Collins
> Twitter: @mercutioviz
> http://www.FreeSWITCH.org
> http://www.ClueCon.com
> http://www.OSTAG.org****
>
> ** **
> Disclaimer :- This e-mail and any attachment may contain confidential,
> proprietary or legally privileged information. If you are not the original
> intended recipient and have erroneously received this message, you are
> prohibited from using, copying, altering or disclosing the content of this
> message. Please delete it immediately and notify the sender. Newgen
> Software Technologies Ltd (NSTL) accepts no responsibilities for loss or
> damage arising from the use of the information transmitted by this email
> including damages from virus and further acknowledges that no binding
> nature of the message shall be implied or assumed unless the sender does so
> expressly with due authority of NSTL. ****
>
> ** **
>
> Disclaimer :- This e-mail and any attachment may contain confidential,
> proprietary or legally privileged information. If you are not the original
> intended recipient and have erroneously received this message, you are
> prohibited from using, copying, altering or disclosing the content of this
> message. Please delete it immediately and notify the sender. Newgen
> Software Technologies Ltd (NSTL) accepts no responsibilities for loss or
> damage arising from the use of the information transmitted by this email
> including damages from virus and further acknowledges that no binding
> nature of the message shall be implied or assumed unless the sender does so
> expressly with due authority of NSTL.
>
>
> _________________________________________________________________________
> Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org
> http://www.freeswitchsolutions.com
>
> 
> 
>
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://wiki.freeswitch.org
> http://www.cluecon.com
>
> 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
>
>


-- 
Michael S Collins
Twitter: @mercutioviz
http://www.FreeSWITCH.org
http://www.ClueCon.com
http://www.OSTAG.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20121130/6e47aac8/attachment-0001.html 


Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-users mailing list