## 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-Simultaneous-Push-and-Invite) == null) { return; } xlog("L_INFO", "$ci| pusher received request to wakeup $tu\n"); sl_send_reply(180, "waking the dead guy"); if (t_newtran()) { route(SEND_PUSH_NOTIFICATION); remove_hf_re("^X-.*"); t_save_lumps(); ts_store("$(tu{s.tolower})"); } else { sl_send_reply(500, "error creating transaction for waking the dead guy"); } } 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"); } }