You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

60 lines
2.1 KiB

## PUSHER ROLE
####### SQL OPS module ##########
#!ifndef TSILO_LOADED
loadmodule "tsilo.so"
modparam("tsilo", "use_domain", 1)
#!trydef TSILO_LOADED
#!endif
route[PUSHER_ROUTE]
{
if ( (!is_method("INVITE")) || (!isflagset(FLAG_INTERNALLY_SOURCED)) || $hdr(X-KAZOO-PUSHER-Token-ID) == $null)
return;
if(registered("location") && $hdr(X-KAZOO-PUSHER-Invite-Format) == "invite_only") {
return;
}
xlog("L_INFO", "$ci|pusher received request to wakeup $(tu{s.tolower})\n");
send_reply(100, "waking the dead guy");
t_set_fr(0, 20000);
if (t_newtran()) {
route(SEND_PUSH_NOTIFICATION);
remove_hf_re("^X-.*");
t_on_reply("EXTERNAL_REPLY");
t_save_lumps();
ts_store("$(tu{s.tolower})");
t_set_auto_inv_100(0);
t_suspend();
} else {
sl_send_reply(500, "error creating transaction for waking the dead guy");
}
if($hdr(X-KAZOO-PUSHER-Invite-Format) == "push_and_invite") {
return;
}
exit();
}
route[SEND_PUSH_NOTIFICATION]
{
$var(TokenID) = $hdr(X-KAZOO-PUSHER-Token-ID);
$var(TokenType) = $hdr(X-KAZOO-PUSHER-Token-Type);
$var(TokenApp) = $hdr(X-KAZOO-PUSHER-Token-App);
$var(rp) = $hdr(Remote-Party-ID);
$var(from) = $(var(rp){tobody.user}) + " - " + $(var(rp){tobody.display}{s.escape.common});
$var(Payload) = '{ "Event-Category" : "notification", "Event-Name" : "push_req", "Call-ID" : "$ci", "Token-ID" : "$var(TokenID)", "Token-Type" : "$var(TokenType)", "Token-App" : "$var(TokenApp)", "Alert-Body" : "$var(from)" }';
$var(RoutingKey) = "notification.push." + $var(TokenType) + "." + $var(TokenID);
$var(exchange) = "pushes";
kazoo_publish($var(exchange), $var(RoutingKey), $var(Payload));
}
route[PUSHER_ON_REGISTRATION]
{
if($(xavp(ulattrs=>custom_channel_vars){kz.json,Pusher-Application}{s.len}) > 0 && $var(Status) == "Registered") {
xlog("L_INFO", "$ci| pusher ON_REGISTRATION - $(xavp(ulattrs=>custom_channel_vars){kz.json,Pusher-Application})\n");
ts_append("location", "$tu");
}
}