|
|
|
|
|
route[HANDLE_MESSAGE]
|
|
|
{
|
|
|
if (!is_method("MESSAGE")) return;
|
|
|
|
|
|
if (isflagset(FLAG_INTERNALLY_SOURCED) || src_ip == myself) return;
|
|
|
|
|
|
xlog("L_INFO", "$ci|log|MESSAGE from $fu to $tu\n");
|
|
|
if (!isflagset(FLAG_AUTHORIZED)) {
|
|
|
send_reply("403", "Forbidden");
|
|
|
exit;
|
|
|
} else {
|
|
|
if($hdr(Content-Type) =~ "text/plain" ||
|
|
|
$hdr(Content-Type) =~ "text/html") {
|
|
|
route(MESSAGE_INBOUND);
|
|
|
} else {
|
|
|
xlog("L_WARN", "$ci|end|dropping MESSAGE $hdr(Content-Type)\n");
|
|
|
send_reply("200", "OK");
|
|
|
exit;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
route[MESSAGE_INBOUND]
|
|
|
{
|
|
|
$var(key) = "kamailio@MY_HOSTNAME";
|
|
|
route(AUTH_HEADERS_JSON);
|
|
|
$var(Payload) = $_s({"Event-Category" : "sms", "Event-Name" : "inbound", "Call-ID" : "$ci", "Message-ID" : "$ci", "Route-Type" : "onnet", "Route-ID" : "$(var(key){kz.encode})", "From" : "$fU", "To" : "$tU", "Body" : "$rb", "Custom-SIP-Headers" : $var(headers_json), "Msg-ID" : "$uuid(g)"});
|
|
|
|
|
|
$var(exchange) = "im";
|
|
|
$var(RoutingKey) = $_s(sms.inbound.onnet.$(ci{kz.encode}));
|
|
|
xlog("L_INFO", "$ci|msg|sending inbound message $var(RoutingKey) => $var(Payload)\n");
|
|
|
kazoo_publish($var(exchange), $var(RoutingKey), $var(Payload));
|
|
|
t_reply("200", "OK");
|
|
|
exit;
|
|
|
|
|
|
}
|
|
|
|
|
|
event_route[kazoo:consumer-event-sms-outbound]
|
|
|
{
|
|
|
xlog("L_INFO", "$(kzE{kz.json,Message-ID})|log|received message outbound for $(kzE{kz.json,Endpoints[0].To-DID})\n");
|
|
|
$var(from_uri) = $_s(sip:$(kzE{kz.json,From})@$(kzE{kz.json,Custom-Vars.Realm}));
|
|
|
$var(to_uri) = $_s(sip:$(kzE{kz.json,Endpoints[0].To-Username})@$(kzE{kz.json,Endpoints[0].To-Realm}));
|
|
|
$uac_req(method)="MESSAGE";
|
|
|
$uac_req(body)= $kzE;
|
|
|
$uac_req(hdrs)="X-TM-Local: MESSAGE_ROUTE\r\nX-KAZOO-AOR: " + $var(to_uri)+ "\r\nContent-Type: text/plain\r\n";
|
|
|
$uac_req(turi) = $var(to_uri);
|
|
|
$uac_req(ruri) = $var(to_uri);
|
|
|
$uac_req(furi) = $var(from_uri);
|
|
|
$uac_req(ouri) = "sip:127.0.0.1:5090;transport=tcp";
|
|
|
$uac_req(callid) = $(kzE{kz.json,Message-ID});
|
|
|
xlog("L_INFO", "$(kzE{kz.json,Message-ID})|log|sending message from $var(from_uri) to $var(to_uri) \n");
|
|
|
uac_req_send();
|
|
|
}
|
|
|
|
|
|
route[MESSAGE_ROUTE]
|
|
|
{
|
|
|
remove_hf_re("^X-");
|
|
|
|
|
|
route(ROUTE_TO_AOR);
|
|
|
$var(JObj) = $rb;
|
|
|
set_body("$(var(JObj){kz.json,Body})", "text/plain");
|
|
|
$avp(message_id) = $(var(JObj){kz.json,Message-ID});
|
|
|
$avp(msg_id) = $(var(JObj){kz.json,Msg-ID});
|
|
|
$avp(server_id) = $(var(JObj){kz.json,Server-ID});
|
|
|
t_on_reply("MESSAGE_REPLY");
|
|
|
t_on_failure("MESSAGE_FAULT");
|
|
|
|
|
|
t_relay();
|
|
|
|
|
|
}
|
|
|
|
|
|
onreply_route[MESSAGE_REPLY]
|
|
|
{
|
|
|
if($T_reply_code < 300) {
|
|
|
xlog("L_INFO", "$ci|log|sending success delivery message to $avp(server_id)\n");
|
|
|
$var(Payload) = $_s({"Event-Category" : "message", "Event-Name" : "delivery", "Call-ID" : "$ci", "Message-ID" : "$avp(message_id)" , "Delivery-Result-Code" : "sip:$T_reply_code", "Msg-ID" : "$avp(msg_id)" , "Status" : "delivered"});
|
|
|
$var(exchange) = "targeted";
|
|
|
$var(RK) = $avp(server_id);
|
|
|
kazoo_publish($var(exchange), $var(RK), $var(Payload));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
failure_route[MESSAGE_FAULT]
|
|
|
{
|
|
|
xlog("L_INFO", "$ci|log|sending failure delivery message to $avp(server_id)\n");
|
|
|
$var(Payload) = $_s({"Event-Category" : "message", "Event-Name" : "delivery", "Call-ID" : "$ci", "Message-ID" : "$avp(message_id)" , "Delivery-Result-Code" : "sip:$T_reply_code", "Msg-ID" : "$avp(msg_id)" , "Status" : "failure"});
|
|
|
$var(exchange) = "targeted";
|
|
|
$var(RK) = $avp(server_id);
|
|
|
kazoo_publish($var(exchange), $var(RK), $var(Payload));
|
|
|
}
|
|
|
|
|
|
route[MESSAGE_BINDINGS]
|
|
|
{
|
|
|
$var(key) = "kamailio@MY_HOSTNAME";
|
|
|
$var(payload) = $_s({"name": "sms", "exchange": "im", "type": "topic", "queue": "MSG-QUEUE-MY_HOSTNAME", "routing": "sms.outbound.$(var(key){kz.encode}).*", "no_ack": false, "federate": true });
|
|
|
kazoo_subscribe("$var(payload)");
|
|
|
}
|
|
|
|
|
|
# vim: tabstop=4 softtabstop=4 shiftwidth=4 expandtab
|