@ -261,32 +261,12 @@ event_route[kazoo:consumer-event-presence-dialog-update]
#!ifdef FAST_PICKUP_ROLE
route(FAST_PICKUP_INIT);
#!endif
$var(presentity) = $(kzE{kz.json,From});
if($(kzE{kz.json,State}) = = "terminated") {
route(COUNT_PRESENTITIES);
} else {
route(COUNT_SUBSCRIBERS);
}
$var(payload) = $kzE;
route(PRESENCE_UPDATE);
if($xavp(watchers = >dialog) > 0) {
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|publishing $(kzE{kz.json,From}) dialog update for $xavp(watchers = >dialog) watchers\n");
kazoo_pua_publish_dialoginfo($var(JObj));
pres_refresh_watchers("$(kzE{kz.json,From})", "dialog", 1);
} else {
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|skip dialog update for $(kzE{kz.json,From})\n");
}
if($xavp(watchers = >presence) > 0) {
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|publishing $(kzE{kz.json,From}) presence update for $xavp(watchers = >presence) watchers\n");
kazoo_pua_publish_presence($kzE);
pres_refresh_watchers("$(kzE{kz.json,From})", "presence", 1);
} else {
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|skip presence update for $(kzE{kz.json,From})\n");
}
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|finished processing $(kzE{kz.json,Event-Package}) update for $(kzE{kz.json,From}) state $(kzE{kz.json,State}) from $(kzE{kz.json,Switch-URI}) at $(kzE{kz.json,AMQP-Received})/$var(Now)/$TS\n");
}
@ -301,40 +281,82 @@ event_route[kazoo:consumer-event-presence-mwi-update]
kazoo_pua_publish_mwi($kzE);
pres_refresh_watchers("$(kzE{kz.json,From})", "message-summary", 1);
} else {
xlog("L_INFO ", "$(kzE{kz.json,Call-ID})|log|skip message-summary update for $(kzE{kz.json,From})\n");
xlog("L_DEBUG ", "$(kzE{kz.json,Call-ID})|log|skip message-summary update for $(kzE{kz.json,From})\n");
}
route(MWI_AS_PRESENCE);
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|finished processing message-summary update for $(kzE{kz.json,From}) light should be on ? $(kzE{kz.json,Messages-Waiting}) at $(kzE{kz.json,AMQP-Received})/$var(Now)/$TS\n");
}
event_route[kazoo:consumer-event-presence-update]
{
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|received presence update for $(kzE{kz.json,Presence-ID}) : $kzE\n");
$var(JObj) = $kzE;
$var(presentity) = $_s(sip:$(kzE{kz.json,Presence-ID}));
$var(payload) = $kzE;
route(PRESENCE_UPDATE);
if($(kzE{kz.json,State}) = = "terminated") {
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|finished processing $(kzE{kz.json,Event-Package}) update for $(kzE{kz.json,From}) state $(kzE{kz.json,State}) from $(kzE{kz.json,Switch-URI}) at $(kzE{kz.json,AMQP-Received})/$var(Now)/$TS\n");
}
route[PRESENCE_UPDATE]
{
if($(var(payload){kz.json,State}) = = "terminated") {
route(COUNT_PRESENTITIES);
} else {
route(COUNT_SUBSCRIBERS);
}
if($xavp(watchers = >dialog) > 0) {
xlog("L_INFO", "$(kzE {kz.json,Call-ID})|log|publishing $var(presentity) dialog update for $xavp(watchers = >dialog) watchers\n");
kazoo_pua_publish_dialoginfo($kzE );
xlog("L_INFO", "$(var(payload) {kz.json,Call-ID})|log|publishing $var(presentity) dialog update for $xavp(watchers = >dialog) watchers\n");
kazoo_pua_publish_dialoginfo($var(JObj) );
pres_refresh_watchers("$var(presentity)", "dialog", 1);
} else {
xlog("L_INFO", "$(kzE {kz.json,Call-ID})|log|skip dialog update for $var(presentity)\n");
xlog("L_DEBUG", "$(var(payload) {kz.json,Call-ID})|log|skip dialog update for $var(presentity)\n");
}
if($xavp(watchers = >presence) > 0) {
xlog("L_INFO", "$(kzE {kz.json,Call-ID})|log|publishing $var(presentity) presence update for $xavp(watchers = >presence) watchers\n");
kazoo_pua_publish_presence($kzE );
xlog("L_INFO", "$(var(payload) {kz.json,Call-ID})|log|publishing $var(presentity) presence update for $xavp(watchers = >presence) watchers\n");
kazoo_pua_publish_presence($var(payload) );
pres_refresh_watchers("$var(presentity)", "presence", 1);
} else {
xlog("L_INFO ", "$(kzE{kz.json,Call-ID})|log|skip presence update for $var(presentity)\n");
xlog("L_DEBUG ", "$(kzE{kz.json,Call-ID})|log|skip presence update for $var(presentity)\n");
}
}
#!define MWI_PRESENCE_BODY $(kzE{re.subst,/"Messages-Waiting"\s*\:\s*"[^"]*"/"State" : "$var(State)"/} \
{re.subst,/"From"\s*\:\s*"[^"]*"/"From" : "$var(presentity)"/} \
{re.subst,/"From-User"\s*\:\s*"[^"]*"/"From-User" : "$var(user)"/} \
{re.subst,/"To"\s*\:\s*"[^"]*"/"To" : "$var(presentity)"/} \
{re.subst,/"To-User"\s*\:\s*"[^"]*"/"To-User" : "$var(user)"/} \
{re.subst,/"Messages-New"\s*\:\s*[^,]*/"Direction" : "initiator"/} \
{re.subst,/"Event-Name"\s*\:\s*"[^"]*"/"Event-Name" : "presence"/});
route[MWI_AS_PRESENCE]
{
if( $(kzE{kz.json,Extended-Presence-ID}) = = "" ) {
return;
}
$var(realm) = $(kzE{kz.json,From-Realm});
$var(user) = $(kzE{kz.json,Extended-Presence-ID});
$var(presentity) = $_s(sip:$var(user)@$var(realm));
if( $(kzE{kz.json,Messages-Waiting}) = = "yes" ) {
$var(State) = "confirmed";
} else {
$var(State) = "terminated";
}
$var(payload) = MWI_PRESENCE_BODY
$var(JObj) = $var(payload);
route(PRESENCE_UPDATE);
}
#!include_file "presence-reset.cfg"
route[PRESENCE_BINDINGS]