diff --git a/kamailio/default.cfg b/kamailio/default.cfg index e25eec1..991cef3 100644 --- a/kamailio/default.cfg +++ b/kamailio/default.cfg @@ -172,6 +172,9 @@ loadmodule "avpops.so" ######## UAC Redirection module ######## loadmodule "uac_redirect.so" +#### json rpc #### +loadmodule "jsonrpcs.so" + ####### SQL OPS module ########## loadmodule "sqlops.so" modparam("sqlops","sqlcon", "cb=>KAZOO_DB_URL") diff --git a/kamailio/dispatcher-role.cfg b/kamailio/dispatcher-role.cfg index a9bfaa2..1c0eae6 100644 --- a/kamailio/dispatcher-role.cfg +++ b/kamailio/dispatcher-role.cfg @@ -229,26 +229,29 @@ route[DISPATCHER_CHECK_MEDIA_SERVER] } } -route[DISPATCHER_SUMMARY] +route[DISPATCHER_STATUS] { - $var(ds_groups_json) = ""; - if (sql_xquery("cb", "select * from dispatcher order by setid, id", "ra") == 1) - { - $var(Sep1) = ""; - while($xavp(ra) != $null) { - $var(ds_group) = $xavp(ra=>setid); - $var(Sep2)=""; - $var(ds_group_json)=""; - while($xavp(ra) != $null && $var(ds_group) == $xavp(ra=>setid) ) - { - $var(record) = $_s("$xavp(ra=>id)" : {"destination" : "$xavp(ra=>destination)", "flags" : "$xavp(ra=>flags)", "priority" : $xavp(ra=>priority), "attrs" : "$xavp(ra=>attrs)" , "description" : "$xavp(ra=>description)"}); - $var(ds_group_json) = $var(ds_group_json) + $var(Sep2) + $var(record); - $var(Sep2) = ","; - pv_unset("$xavp(ra)"); - } - $var(ds_groups_json) = $var(ds_groups_json) + $var(Sep1) + $_s("$var(ds_group)" : { $var(ds_group_json) }); - $var(Sep1)=", "; - } + jsonrpc_exec('{"jsonrpc": "2.0", "method": "dispatcher.list", "id": 1}'); + $var(Sets) = $(jsonrpl(body){kz.json, result.NRSETS}); + $var(i) = 0; + $var(ds_groups_json)=""; + $var(Sep1) = ""; + while($var(i) < $var(Sets)) { + $var(Set) = $(jsonrpl(body){kz.json, result.RECORDS[$var(i)].SET}); + $var(SetCount) = $(var(Set){kz.json.count,TARGETS}); + $var(Sep2)=""; + $var(ds_group_json)=""; + $var(c) = 0; + while($var(c) < $var(SetCount)) { + $var(Dest) = $(var(Set){kz.json,TARGETS[$var(c)].DEST}); + $var(record) = $_s("$(var(Dest){kz.json,URI})" : {"destination" : "$(var(Dest){kz.json,URI})", "flags" : "$(var(Dest){kz.json,FLAGS})", "priority" : $(var(Dest){kz.json,PRIORITY}), "attrs" : "$(var(Dest){kz.json,ATTRS.BODY})"}); + $var(ds_group_json) = $var(ds_group_json) + $var(Sep2) + $var(record); + $var(Sep2) = ","; + $var(c) = $var(c) + 1; + } + $var(ds_groups_json) = $var(ds_groups_json) + $var(Sep1) + $_s("$(var(Set){kz.json,ID})" : { $var(ds_group_json) }); + $var(Sep1)=", "; + $var(i) = $var(i) + 1; } } diff --git a/kamailio/nodes-role.cfg b/kamailio/nodes-role.cfg index 9fe4668..c8de709 100644 --- a/kamailio/nodes-role.cfg +++ b/kamailio/nodes-role.cfg @@ -35,8 +35,8 @@ route[NODES_ADVERTISE_ROUTE] $var(Registrar) = ""; #!endif -#!ifdef DISPATCHER_ROLE - route(DISPATCHER_SUMMARY); +#!ifdef DISPATCHER_ROLE + route(DISPATCHER_STATUS); $var(Dispatcher) = $_s("Dispatcher" : {"Groups" : { $var(ds_groups_json) }}); #!else $var(Dispatcher) = "";