<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi,<div><br></div><div>Well, that's a coincidence.. I've been busy trying to figure out that same problem the entire weekend :-)</div><div><br></div><div>FS needs to know where to lookup the registered user, by indeed setting a dialstring.</div><div>The dialstring is described in the wiki page that's mentioned, but there's something more:</div><div><br></div><div>It says on that page that you should set a param in your user like this:</div><div><br></div><div>&lt;param name="dial-string" value="${sofia_contact(${dialed_user}@${dialed_domain})}"/></div><div><br></div><div>You can also test it in your cli like this:</div><div><br></div><div>expand echo ${sofia_contact(username@domainname)}</div><div><br></div><div><div>This will reply with:</div><div>error/facility_not_subscribed</div></div><div><br></div><div>sofia_contact will search your db in sip_registrations for all registered users. The actual arguments that can be given to the function are:</div><div><br></div><div>profilename/username@domainname/arguments</div><div><br></div><div>If you leave out the profilename, it will put your domainname there.</div><div><br></div><div>The function then checks whether a *profile* exists with that name, and then lookup the entries in the db and then returns them.</div><div>This can be fixed in two ways: either you specify the correct profilename (where the users are registered) with the sofia_contact function, or you alias the domainname to the profile where the user is registered in your sip profile.</div><div><br></div><div>The alias can be set in your profile like this:</div><div><br></div><div>&lt;aliases>&lt;alias name="domainname"/>&lt;/alias></div><div><br></div><div>or automatically like this:</div><div><br></div><div>&lt;domains>&lt;domain name="domainname" alias="true" parse="false"/>&lt;/domains></div><div>(where domainname can also be "all" to alias all domain names)</div><div><br></div><div>But this presents another problem: The domain names that are aliased in the last way are retrieved from the database at startup of mod_sofia, and it is done through a directory lookup with purpose=gateways, even though the parse attribute - which is for getting gateways - is set to false !! (took me some time to figure that one out)</div><div><br></div><div>So, I rewrote the mod_xml_odbc a bit so the set-channel-variables function does expansion on all attributes (from-name, from-value, to-name, to-value), and wrote the following template:</div><div><br></div><div>&lt;include></div><div>&nbsp;&nbsp;&lt;!-- purpose=gateways is not only called for getting gateways, but also for getting a list</div><div>&nbsp;&nbsp; &nbsp; &nbsp; of domains that will be aliased to a profile if &lt;domain .. alias="true"/> is set --></div><div>&nbsp;&nbsp;&lt;template name="directory-gateways"></div><div>&nbsp;&nbsp; &nbsp;&lt;document type="freeswitch/xml"></div><div>&nbsp;&nbsp; &nbsp; &nbsp;&lt;section name="directory"></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&lt;xml-odbc-do name="set-event-header" to-name="where-clause" to-value="`${key_name}`='${key_value}'"/></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&lt;xml-odbc-do name="set-event-header" if-name="where-clause" if-value="``=''" to-value="1"/></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&lt;xml-odbc-do name="query" on-empty-result-break-to="not-found"</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; value="SELECT name AS domain_name FROM dir_domains WHERE ${where-clause};"></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;domain name="${domain_name}"/></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;!-- select all gateways of users within this domain_name here, to make parse=true working --></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&lt;/xml-odbc-do></div><div>&nbsp;&nbsp; &nbsp; &nbsp;&lt;/section></div><div>&nbsp;&nbsp; &nbsp;&lt;/document></div><div>&nbsp;&nbsp;&lt;/template></div><div>&lt;/include></div><div>&nbsp;</div><div>This will simply return a list of all domains if no key_name and key_value were specified in the lookup, or list one domain if that is requested.</div><div><br></div><div>The updated mod_xml_odbc and the directory-gateways.conf.xml template are in svn trunk contrib.</div><div><br></div><div>This does work for me now but still some things feel a bit strange to me (perhaps someone can explain?):</div><div><br></div><div>For examplle, right now, when I have two profiles where users can register with the same domain (for example one with a v4 and one with a v6 address), what should I do ? I can't alias the same domain to two profiles, so that means I have to call sofia_contact twice, once for each profile ?</div><div><div><br></div><div>regards,</div><div><br></div><div>Leon</div><div><br></div><div><br></div></div><div><br><div><div>On Sep 6, 2009, at 6:08 AM, mayamatakeshi wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><br><div class="gmail_quote">On Sat, Sep 5, 2009 at 5:36 PM, Juan Backson <span dir="ltr">&lt;<a href="mailto:juanbackson@gmail.com" target="_blank">juanbackson@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> Hi,<br><br>I am getting no dial-string available error when using xml_odbc module to bridge a call.&nbsp; How can I resolve this problem?<br></blockquote><div><br>Hello,<br>I never tried the mod_xml_odbc.<br>But as the message says, you are not providing a dial-string.<br> I believe your template is incomplete.<br>Read about the dial-string here:<br><a href="http://wiki.freeswitch.org/wiki/XML_User_Directory_Guide#Dial_String">http://wiki.freeswitch.org/wiki/XML_User_Directory_Guide#Dial_String</a><br> &nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>EXECUTE sofia/internal/<a href="mailto:180001@192.168.1.130" target="_blank">180001@192.168.1.130</a> bridge(user/180001)<br> 2009-09-05 16:31:29.853456 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [key_value]=[192.168.1.134]<br>2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [key_name]=[name]<br> 2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [tag_name]=[domain]<br>2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [section]=[directory]<br> 2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [Event-Name]=[REQUEST_PARAMS]<br> 2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [Core-UUID]=[f649cdfd-3715-4d18-94d9-417aa7e26873]<br>2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [FreeSWITCH-Hostname]=[server]<br> 2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [FreeSWITCH-IPv4]=[192.168.1.134]<br>2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [FreeSWITCH-IPv6]=[::1]<br> 2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [Event-Date-Local]=[2009-09-05 16:31:29]<br>2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [Event-Date-GMT]=[Sat, 05 Sep 2009 08:31:29 GMT]<br> 2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [Event-Date-Timestamp]=[1252139489853456]<br>2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [Event-Calling-File]=[mod_dptools.c]<br> 2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [Event-Calling-Function]=[user_outgoing_channel]<br>2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [Event-Calling-Line-Number]=[2365]<br> 2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [as_channel]=[true]<br>2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [key]=[id]<br>2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [user]=[180001]<br> 2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:401 DEBUG in xml_odbc_search, header [domain]=[192.168.1.134]<br>2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:319 DEBUG GOING TO RENDER TEMPLATE [default]<br>2009-09-05 16:31:29.854400 [INFO] mod_xml_odbc.c:214 DEBUG Performing Query:<br> SELECT enabled, sip_password, account_id FROM agent WHERE&nbsp; sip_user =&nbsp; 180001<br>2009-09-05 16:31:29.855416 [INFO] mod_xml_odbc.c:214 DEBUG Performing Query:<br>SELECT sip_password FROM agent WHERE sip_user = 180001<br>2009-09-05 16:31:29.855416 [INFO] mod_xml_odbc.c:417 Debug dump of generated XML:<br> &lt;document type="freeswitch/xml"><br>&nbsp; &lt;section name="directory"><br>&nbsp;&nbsp;&nbsp; &lt;domain name="192.168.1.134"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;user id="180001"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;params><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name="password" value="111111">&lt;/param><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/params><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;variables><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;variable name="account_id" value="18">&lt;/variable><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/variables><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/user><br>&nbsp;&nbsp;&nbsp; &lt;/domain><br>&nbsp; &lt;/section><br>&lt;/document><br>2009-09-05 16:31:29.856442 [CONSOLE] mod_xml_odbc.c:457 Generated XML is in [/tmp/16d2f01a-4332-43ff-9535-5615a192b40e.tmp.xml]<br> 2009-09-05 16:31:29.856442 [ERR] mod_dptools.c:2430 No dial-string available, please check your user directory.<br>2009-09-05 16:31:29.856442 [ERR] switch_ivr_originate.c:1527 Cannot create outgoing channel of type [user] cause: [MANDATORY_IE_MISSING]<br> <br> <br>_______________________________________________<br> FreeSWITCH-users mailing list<br> <a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br> <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br> UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br> <a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br> <br></blockquote></div><br> _______________________________________________<br>FreeSWITCH-users mailing list<br><a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users<br>http://www.freeswitch.org<br></blockquote></div><br></div></body></html>