<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    Hi All in the list,<br>
    <br>
    I want to implement a click and dial feature using the xhttp
    interface<br>
    but also keeping working the XCAP functionality. Than I added some<br>
    code about the dialog module (it's my first time I try it) so that
    the<br>
    URL look like
    <a class="moz-txt-link-freetext" href="http://localhost:5060/sip-bridge/">http://localhost:5060/sip-bridge/</a>&lt;from&gt;/&lt;to&gt;<br>
    <br>
    #!ifdef WITH_XCAPSRV<br>
    #!define WITH_XHTTPAUTH<br>
    event_route[xhttp:request] {<br>
    &nbsp; xdbg("===== xhttp: request [$rv] $rm =&gt; $hu\n");<br>
    &nbsp;<br>
    &nbsp; if($hu=~"^/xcap-root/")<br>
    &nbsp; {<br>
    #!ifdef WITH_XHTTPAUTH <br>
    &nbsp;&nbsp;&nbsp; if (!www_authorize("xcap", "subscriber"))<br>
    &nbsp;&nbsp;&nbsp; {<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; www_challenge("xcap", "0");<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>
    &nbsp;&nbsp;&nbsp; }<br>
    #!endif<br>
    &nbsp;&nbsp;&nbsp; set_reply_close();<br>
    &nbsp;&nbsp;&nbsp; set_reply_no_connect();<br>
    &nbsp;&nbsp;&nbsp; # xcap ops<br>
    &nbsp;&nbsp;&nbsp; $xcapuri(u=&gt;data) = $hu;<br>
    &nbsp;&nbsp;&nbsp; if($xcapuri(u=&gt;xuid)=~<a class="moz-txt-link-rfc2396E" href="mailto:^sip:.+@.+">"^sip:.+@.+"</a>)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $var(uri) = $xcapuri(u=&gt;xuid);<br>
    &nbsp;&nbsp;&nbsp; else if($xcapuri(u=&gt;xuid)=~<a class="moz-txt-link-rfc2396E" href="mailto:.+@.+">".+@.+"</a>)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $var(uri) = "sip:" + $xcapuri(u=&gt;xuid);<br>
    &nbsp;&nbsp;&nbsp; else<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $var(uri) = "sip:"+ $xcapuri(u=&gt;xuid) + "@" + $Ri;<br>
    &nbsp;&nbsp;&nbsp; xlog("===== xhttp: $xcapuri(u=&gt;auid) :
    $xcapuri(u=&gt;xuid)\n");<br>
    &nbsp;&nbsp;&nbsp; if($xcapuri(u=&gt;auid)=="xcap-caps")<br>
    &nbsp;&nbsp;&nbsp; {<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $var(xbody) =<br>
    "&lt;?xml version='1.0' encoding='UTF-8'?&gt;<br>
    &lt;xcap-caps xmlns='urn:ietf:params:xml:ns:xcap-caps'&gt;<br>
    &nbsp; &lt;auids&gt;<br>
    &nbsp;&nbsp;&nbsp; &lt;auid&gt;rls-services&lt;/auid&gt;<br>
    &nbsp;&nbsp;&nbsp; &lt;auid&gt;pidf-manipulation&lt;/auid&gt;<br>
    &nbsp;&nbsp;&nbsp; &lt;auid&gt;xcap-caps&lt;/auid&gt;<br>
    &nbsp;&nbsp;&nbsp; &lt;auid&gt;resource-lists&lt;/auid&gt;<br>
    &nbsp;&nbsp;&nbsp; &lt;auid&gt;pres-rules&lt;/auid&gt;<br>
    &nbsp;&nbsp;&nbsp; &lt;auid&gt;org.openmobilealliance.pres-rules&lt;/auid&gt;<br>
    &nbsp; &lt;/auids&gt;<br>
    &nbsp; &lt;extensions&gt;<br>
    &nbsp; &lt;/extensions&gt;<br>
    &nbsp; &lt;namespaces&gt;<br>
    &nbsp;&nbsp;&nbsp;
    &lt;namespace&gt;urn:ietf:params:xml:ns:rls-services&lt;/namespace&gt;<br>
    &nbsp;&nbsp;&nbsp; &lt;namespace&gt;urn:ietf:params:xml:ns:pidf&lt;/namespace&gt;<br>
    &nbsp;&nbsp;&nbsp;
    &lt;namespace&gt;urn:ietf:params:xml:ns:xcap-caps&lt;/namespace&gt;<br>
    &nbsp;&nbsp;&nbsp;
    &lt;namespace&gt;urn:ietf:params:xml:ns:resource-lists&lt;/namespace&gt;<br>
    &nbsp;&nbsp;&nbsp;
    &lt;namespace&gt;urn:ietf:params:xml:ns:pres-rules&lt;/namespace&gt;<br>
    &nbsp; &lt;/namespaces&gt;<br>
    &lt;/xcap-caps&gt;";<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xhttp_reply("200", "ok", "application/xcap-caps+xml",<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "$var(xbody)");<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>
    &nbsp;&nbsp;&nbsp; }<br>
    #!ifdef WITH_XHTTPAUTH<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # be sure auth user access only its documents<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($au!=$(var(uri){uri.user})) {<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xhttp_reply("403", "Forbidden", "text/html",<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    "&lt;html&gt;&lt;body&gt;$si:$sp&lt;/body&gt;&lt;/html&gt;");<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
    &nbsp;<br>
    #!endif<br>
    &nbsp;&nbsp;&nbsp; switch($rm) {<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case "PUT":<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xcaps_put("$var(uri)", "$hu", "$rb");<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($xcapuri(u=&gt;auid)=~"pres-rules")<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog("===== xhttp put: refreshing watchers for
    $var(uri)\n");<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pres_update_watchers("$var(uri)", "presence");<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pres_refresh_watchers("$var(uri)", "presence", 1);<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case "GET":<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog("===== xhttp: get $var(uri) =&gt; $hu\n");<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xcaps_get("$var(uri)", "$hu");<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case "DELETE":<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xcaps_del("$var(uri)", "$hu");<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($xcapuri(u=&gt;auid)=~"pres-rules")<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog("===== xhttp del: refreshing watchers for
    $var(uri)\n");<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pres_update_watchers("$var(uri)", "presence");<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pres_refresh_watchers("$var(uri)", "presence", 1);<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>
    &nbsp;&nbsp;&nbsp; }<br>
    &nbsp; }<br>
    &nbsp; else if($hu=~"^/sip-bridge/")<br>
    &nbsp; {<br>
    &nbsp;&nbsp;&nbsp; <br>
    &nbsp;&nbsp;&nbsp; if ( ! ( src_ip == 127.0.0.1 ) )<br>
    &nbsp;&nbsp;&nbsp; {<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xhttp_reply( "403", "Forbidden", "text/html",
    "&lt;html&gt;&lt;body&gt;Invalid Access&lt;/body&gt;&lt;/html&gt;"
    );<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>
    &nbsp;&nbsp;&nbsp; }<br>
    <br>
    &nbsp;&nbsp;&nbsp; $var(uri) = $hu;<br>
    &nbsp;&nbsp;&nbsp; $var(from) = $(var(uri){s.select,2,/});<br>
    &nbsp;&nbsp;&nbsp; $var(to) = $(var(uri){s.select,3,/});<br>
    <br>
    &nbsp;&nbsp;&nbsp; xdbg( "=== GOT sip-bridge between $var(caller) =&gt;
    $var(callee) ===" );<br>
    &nbsp;&nbsp;&nbsp; <br>
    &nbsp;&nbsp;&nbsp;<b> dlg_bridge( $var(from), $var(to), "sip:192.168.2.92:5060" );</b><br>
    <br>
    &nbsp; } <br>
    <br>
    &nbsp; # http ops<br>
    &nbsp; xhttp_reply("200", "ok", "text/html",<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "&lt;html&gt;&lt;body&gt;OK:
    $si:$sp&lt;/body&gt;&lt;/html&gt;");<br>
    &nbsp; exit;<br>
    }<br>
    #!endif<br>
    <br>
    but I got the error below:<br>
    <br>
    Not starting : invalid configuration file!<br>
    <br>
    &nbsp;0(22256) : &lt;core&gt; [cfg.y:3409]: parse error in config file
    //etc/kamailio/kamailio.cfg, line 986, column 17-26: function
    dlg_bridge: parameter 1 is not constant<br>
    <br>
    &nbsp;0(22256) : &lt;core&gt; [cfg.y:3412]: parse error in config file
    //etc/kamailio/kamailio.cfg, line 986, column 63: bad command<br>
    ERROR: bad config file (2 errors)<br>
    <br>
    so my question is how can I call the dlg_bridge() passing some
    parameters<br>
    coming from the http request?<br>
    <br>
    Thanks in advance.<br>
    Roberto Fichera.<br>
  </body>
</html>