Browse Source

handle presence updates for dialog subscriptions

4.2
lazedo 8 years ago
committed by GitHub
parent
commit
36b0dbce98
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 24 additions and 8 deletions
  1. +24
    -8
      kamailio/presence-role.cfg

+ 24
- 8
kamailio/presence-role.cfg View File

@ -182,7 +182,7 @@ route[HANDLE_PUBLISH]
route[COUNT_PRESENTITIES] route[COUNT_PRESENTITIES]
{ {
$var(Query) = $_s(KZQ_COUNT_PRESENTITIES); $var(Query) = $_s(KZQ_COUNT_PRESENTITIES);
$var(p) = "uri="+$(kzE{kz.json,From});
$var(p) = $_s(uri=$var(presentity));
if (sql_xquery("cb", "$var(Query)", "subs") == 1) if (sql_xquery("cb", "$var(Query)", "subs") == 1)
{ {
while($xavp(subs) != $null) { while($xavp(subs) != $null) {
@ -247,10 +247,11 @@ event_route[kazoo:consumer-event-presence-dialog-update]
route(FAST_PICKUP_INIT); route(FAST_PICKUP_INIT);
#!endif #!endif
$var(presentity) = $(kzE{kz.json,From});
if($(kzE{kz.json,State}) == "terminated") { if($(kzE{kz.json,State}) == "terminated") {
route(COUNT_PRESENTITIES); route(COUNT_PRESENTITIES);
} else { } else {
$var(presentity) = $(kzE{kz.json,From});
route(COUNT_SUBSCRIBERS); route(COUNT_SUBSCRIBERS);
} }
@ -291,15 +292,30 @@ event_route[kazoo:consumer-event-presence-mwi-update]
event_route[kazoo:consumer-event-presence-update] event_route[kazoo:consumer-event-presence-update]
{ {
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|received presence update for $(kzE{kz.json,From})\n");
$var(presentity) = $(kzE{kz.json,From});
route(COUNT_SUBSCRIBERS);
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|received presence update for $(kzE{kz.json,Presence-ID}) : $kzE\n");
$var(presentity) = $_s(sip:$(kzE{kz.json,Presence-ID}));
if($(kzE{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);
pres_refresh_watchers("$var(presentity)", "dialog", 1);
} else {
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|skip dialog update for $var(presentity)\n");
}
if($xavp(watchers=>presence) > 0) { 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");
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); kazoo_pua_publish_presence($kzE);
pres_refresh_watchers("$(kzE{kz.json,From})", "presence", 1);
pres_refresh_watchers("$var(presentity)", "presence", 1);
} else { } 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|skip presence update for $var(presentity)\n");
} }
} }


Loading…
Cancel
Save