[Freeswitch-users] mod_python fetching data from mysql for VM

mbsip mbsip at gazeta.pl
Mon Feb 15 02:50:30 PST 2010


Anybody could help with this?

Thx,
Maciej.


> Hi.
>
> Please correct me if my approach is okay.
> 1. in python.conf.xml
>    <param name="xml-handler-script" value="testscript"/>
>    <param name="xml-handler-bindings" value="directory"/>
> 2. in dialplan
>    <extension name="public_did_11digits">
>      <condition field="destination_number" expression="^(\d{11})$">
>        <action application="answer"/>
>        <action application="voicemail" data="default $${domain} $1"/>
>      </condition>
>    </extension>
> 3.testscript.py (as for now only static entries)
> def xml_fetch(params):
>
>        xml = '''
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <document type="freeswitch/xml">
>  <section name="directory">
>    <domain name="mydomainHERE">
>      <params>
>        <param name="dial-string"
> value="{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}"/>
>      </params>
>      <groups>
>        <group name="default">
>         <users>
>          <user id="12345678901">
>            <params>
>               <param name="vm-mailto" value="email at aaa.com"/
>            </params>
>          </user>
>        </group>
>       </users>
>      </groups>
>    </domain>
>  </section>
> </document>
> '''
>
>        return xml
>
>
> Unfortunately aforemetnioned configuration does not work at all and
> produce following errors:
> 2010-02-14 17:31:16.878878 [DEBUG] sofia.c:4110 Channel
> sofia/internal/100 at 10.10.10.10 entering state [completed][200]
> 2010-02-14 17:31:16.878878 [DEBUG] switch_core_session.c:638 Send
> signal sofia/internal/100 at 10.10.10.10 [BREAK]
> 2010-02-14 17:31:16.878878 [NOTICE] mod_dptools.c:715 Channel
> [sofia/internal/100 at 10.10.10.10] has been answered
> EXECUTE sofia/internal/100 at 10.10.10.10 voicemail(default mydomainHERE
> 12345678901)
> 2010-02-14 17:31:16.888821 [DEBUG] mod_voicemail.c:728 [default] rwlock
> 2010-02-14 17:31:16.888821 [NOTICE] mod_python.c:118 Invoking py module: obadamy
> 2010-02-14 17:31:16.888821 [DEBUG] mod_python.c:188 Call python script
> 2010-02-14 17:31:16.888821 [DEBUG] mod_python.c:191 Finished calling
> python script
> 2010-02-14 17:31:16.888821 [ERR] mod_python.c:200 Error calling python script
> 2010-02-14 17:31:16.888821 [WARNING] mod_voicemail.c:2923 Can't find
> user [12345678901 at mydomainHERE]
> 2010-02-14 17:31:16.888821 [DEBUG] switch_ivr_play_say.c:118 No
> language specified - Using [en]
> 2010-02-14 17:31:16.888821 [DEBUG] sofia.c:4110 Channel
> sofia/internal/100 at 10.10.10.10 entering state [ready][200]
> 2010-02-14 17:31:16.888821 [DEBUG] switch_ivr_play_say.c:273 Handle
> play-file:[voicemail/vm-goodbye.wav] (en:en)
> 2010-02-14 17:31:16.888821 [DEBUG] switch_ivr_play_say.c:1158 Codec
> Activated L16 at 8000hz 1 channels 20ms
>
> The same output with simplified python script.
> def xml_fetch(params):
>
>        xml = '''
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <document type="freeswitch/xml">
>  <section name="directory">
>    <domain name="62.29.162.90">
>      <user id="48223891699">
>        <params>
>        </params>
>      </user>
>    </domain>
>  </section>
> </document>
> '''
>
>        return xml
>
>
>
> As for now I have no idea how to solve this, but still digging.
> Funny is that dialplan bindings work okay.
>
> Any help pls.
> Thx,
> Maciej
>
>
> 2010/2/13 mbsip <mbsip at gazeta.pl>:
>> João,
>>
>> Thanks for hint, because i don't know how the db fetched data could be
>> used with voicemail.
>> I am about to ready it carefully :P
>>
>> Thanks,
>> Maciej
>>
>> 2010/2/13 João Mesquita <jmesquita at freeswitch.org>:
>>> Maciej,
>>>
>>> Take a look at the xml_hooks we have on mod_python. Might do the trick for
>>> you.
>>>
>>> http://svn.freeswitch.org/svn/freeswitch/trunk/src/mod/languages/mod_python/python_example.py
>>>
>>> JM
>>>
>>>
>>> On Sat, Feb 13, 2010 at 6:59 PM, mbsip <mbsip at gazeta.pl> wrote:
>>>>
>>>> There is a lack of connection between fatched data and voicemail and I
>>>> dont know how to achieve it.
>>>>
>>>> Thx,
>>>> Maciej.
>>>>
>>>>
>>>> 2010/2/13 mbsip <mbsip at gazeta.pl>:
>>>> > Thx for prompt reply.
>>>> >
>>>> > The main task is to be able to use Mysql db in conjunction with VM
>>>> > (but not only voicemail_msgs, voicemail_prefs).
>>>> >
>>>> > Lets imagine sb is calling 1000 and wants to record the message.
>>>> > According to mod_voicemail settings message should be sent to some
>>>> > email address.
>>>> > But the information about user 1000 and his settings like email
>>>> > address, passwd, quota should be fetched from Mysql db, not from
>>>> > directory/default/1000.xml.
>>>> > That's why I am using <action application="python" data="test"/> in my
>>>> > dialplan to work with python script which in turn should do the magic.
>>>> > The script should be able to gather all necessery data about user 1000
>>>> > (like email address in shown example) and use them in VM.
>>>> >
>>>> > So the problem is how to modify the script to force voicemail app to
>>>> > use data from DB.
>>>> > Currently  session.execute("voicemail", "default ${domain} " +
>>>> > the_dest) is still using .xml files.
>>>> >
>>>> > Thx,
>>>> > Maciej.
>>>> >
>>>> >
>>>> > 2010/2/13 Michael Jerris <mike at jerris.com>:
>>>> >> Can you describe what your trying to accomplish, I don't understand
>>>> >> what the goal is.  What feature are you looking for that does not already
>>>> >> exist in mod_voiceamil.
>>>> >>
>>>> >> Mike
>>>> >>
>>>> >> On Feb 13, 2010, at 3:03 PM, mbsip wrote:
>>>> >>
>>>> >>> Hello,
>>>> >>>
>>>> >>> I am trying to use mod_python to fetch data from Mysql db (through
>>>> >>> ODBC) and execute voicemail application.
>>>> >>> Below a part of my script:
>>>> >>>
>>>> >>> db=MySQLdb.connect("localhost","root","","test")
>>>> >>>       Cursor=db.cursor()
>>>> >>>       sql = "SELECT email FROM VM WHERE called_num=%s" % the_dest
>>>> >>>       Cursor.execute(sql)
>>>> >>>       while (1):
>>>> >>>               Results = Cursor.fetchone()
>>>> >>>               if Results == None:
>>>> >>>                       break
>>>> >>>               consoleLog("debug", "Found email " + Results[0] +"\n")
>>>> >>>               the_recipient = Results[0]
>>>> >>>       db.close()
>>>> >>>
>>>> >>> Now i have email address corresponding with called number. The
>>>> >>> question is how to use it for voicemail application?
>>>> >>> So it also means how to omit all /directory/default/....xml, where
>>>> >>> there are all VM parameters set and use fetched data.
>>>> >>>
>>>> >>>       session.answer()
>>>> >>>       session.execute("voicemail", "default ${domain} " + the_dest)
>>>> >>>
>>>> >>> Is this possible or should I start all VM app in python from the
>>>> >>> scratch?
>>>> >>
>>>> >>
>>>> >> _______________________________________________
>>>> >> 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
>>>> >>
>>>> >
>>>>
>>>> _______________________________________________
>>>> 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
>>>
>>>
>>> _______________________________________________
>>> 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
>>>
>>>
>>
>




More information about the FreeSWITCH-users mailing list