|
|
######## Presence query server module ########
|
|
|
|
|
|
####### SQL OPS module ##########
|
|
|
#!ifndef SQLOPS_LOADED
|
|
|
loadmodule "sqlops.so"
|
|
|
modparam("sqlops","sqlcon", "cb=>KAZOO_DB_URL")
|
|
|
#!trydef SQLOPS_LOADED
|
|
|
#!endif
|
|
|
|
|
|
event_route[kazoo:consumer-event-presence-search-req]
|
|
|
{
|
|
|
xlog("L_INFO", "received presence search_req $kzE\n");
|
|
|
$var(Queue) = $(kzE{kz.json,Server-ID});
|
|
|
$var(Event) = $(kzE{kz.json,Event-Package});
|
|
|
$var(Domain) = $(kzE{kz.json,Realm});
|
|
|
$var(Username) = $(kzE{kz.json,Username});
|
|
|
$var(Now) = $TS;
|
|
|
$var(Items) = "";
|
|
|
$var(Query) = $_s(select * from presentity where domain = "$var(Domain)");
|
|
|
if($var(Event) != "") {
|
|
|
$var(Query) = $var(Query) + $_s( and event = "$var(Event)");
|
|
|
}
|
|
|
if($var(Username) != "") {
|
|
|
$var(Query) = $var(Query) + $_s( and username = "$var(Username)");
|
|
|
}
|
|
|
$var(Query) = $var(Query) + " order by username, event, id";
|
|
|
xlog("L_INFO", "$ci| QUERY $var(Query)\n");
|
|
|
|
|
|
if (sql_xquery("cb", "$var(Query)", "ra") == 1)
|
|
|
{
|
|
|
while($xavp(ra) != $null) {
|
|
|
$var(Username) = $xavp(ra=>username);
|
|
|
$var(Sep2)="";
|
|
|
$var(Evt)="";
|
|
|
while($xavp(ra) != $null && $var(Username) == $xavp(ra=>username))
|
|
|
{
|
|
|
$var(Event) = $xavp(ra=>event);
|
|
|
$var(Sep3)="";
|
|
|
$var(Sub)="";
|
|
|
while($xavp(ra) != $null && $var(Username) == $xavp(ra=>username) && $var(Event) == $xavp(ra=>event))
|
|
|
{
|
|
|
$var(Sub) = $var(Sub) + $_s($var(Sep3)"$xavp(ra=>id)" : {"etag" : "$xavp(ra=>etag)", "body" : "$(xavp(ra=>body){s.escape.common})" });
|
|
|
$var(Sep3)=", ";
|
|
|
pv_unset("$xavp(ra)");
|
|
|
}
|
|
|
$var(Evt) = $var(Evt) + $var(Sep2) + $_s("$var(Event)") + " : { " + $var(Sub) + "}";
|
|
|
$var(Sep2)=", ";
|
|
|
}
|
|
|
$var(Usr) = $_s("$var(Username)") + " : { " + $var(Evt) + " }";
|
|
|
xlog("L_INFO", "$ci| RESULT \"Subscriptions\" : { $var(Usr) }\n");
|
|
|
$var(amqp_payload_request) = '{"Event-Category" : "presence", "Event-Name" : "search_partial_resp", "Msg-ID" : "$(kzE{kz.json,Msg-ID})", "Subscriptions" : { $var(Usr) } }';
|
|
|
kazoo_publish("targeted", "$var(Queue)", $var(amqp_payload_request));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$var(amqp_payload_request) = '{"Event-Category" : "presence", "Event-Name" : "search_resp", "Msg-ID" : "$(kzE{kz.json,Msg-ID})" }';
|
|
|
kazoo_publish("targeted", "$var(Queue)", $var(amqp_payload_request));
|
|
|
|
|
|
}
|
|
|
|
|
|
# vim: tabstop=4 softtabstop=4 shiftwidth=4 expandtab
|
|
|
|