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