Browse Source

handle the case where listener is not available for a zone

update-rsyslog-config
lazedo 7 years ago
parent
commit
8de93984be
5 changed files with 79 additions and 6 deletions
  1. +3
    -0
      kamailio/db_queries_kazoo.cfg
  2. +47
    -3
      kamailio/kazoo-bindings.cfg
  3. +4
    -2
      kamailio/presence-notify.cfg
  4. +24
    -0
      kamailio/presence-reset.cfg
  5. +1
    -1
      kamailio/presence-role.cfg

+ 3
- 0
kamailio/db_queries_kazoo.cfg View File

@ -18,3 +18,6 @@
# # #!substdef "!KZQ_RESET_ACCOUNT_UPDATE!update active_watchers set expires = \$TS where watcher_domain=\"\$(kzE{kz.json,Realm})\"!g"
#!substdef "!KZQ_RESET_ACCOUNT_UPDATE!INSERT INTO tmp_probe select distinct a.event, a.presentity_uri from presentities a inner join active_watchers b on a.presentity_uri = b.presentity_uri and a.event = b.event where domain=\"\$(kzE{kz.json,Realm})\" and state in('early', 'confirmed', 'onthephone', 'busy')!g"
#!substdef "!KZQ_RESET_ACCOUNT_RESET!delete from presentity where domain=\"\$(kzE{kz.json,Realm})\"!g"
#!substdef "!KZQ_RESET_PUBLISHER_ZONE_UPDATE!INSERT INTO tmp_probe select distinct a.event, a.presentity_uri from presentities a inner join wdispatcher c on a.sender = c.destination inner join active_watchers b on a.presentity_uri = b.presentity_uri and a.event = b.event where zone = \"\$var(Zone)\" and state in('early', 'confirmed', 'onthephone', 'busy')!g"
#!substdef "!KZQ_PRESENCE_ZONE_RESET!delete from presentity where id in(select a.id from presentities a join wdispatcher c on a.sender = c.destination where zone = \"\$var(Zone)\")!g"

+ 47
- 3
kamailio/kazoo-bindings.cfg View File

@ -46,17 +46,17 @@ event_route[kazoo:mod-init]
event_route[kazoo:consumer-event]
{
xlog("L_INFO","unhandled AMQP event, payload: $kzE\n");
xlog("L_DEBUG","unhandled AMQP event, payload: $kzE\n");
}
event_route[kazoo:consumer-event-connection-open]
{
xlog("L_INFO","connection to $(kzE{kz.json,host}) opened\n");
xlog("L_NOTICE","connection to $(kzE{kz.json,host}) opened\n");
}
event_route[kazoo:consumer-event-connection-closed]
{
xlog("L_INFO","connection to $(kzE{kz.json,host}) closed\n");
xlog("L_WARN","connection to $(kzE{kz.json,host}) closed\n");
}
event_route[kazoo:consumer-event-connection-zone-available]
@ -69,4 +69,48 @@ event_route[kazoo:consumer-event-connection-zone-unavailable]
xlog("L_WARN","amqp zone $(kzE{kz.json,zone}) is unavailable\n");
}
event_route[kazoo:consumer-event-connection-available]
{
xlog("L_DEBUG","amqp zone $(kzE{kz.json,zone}) is available\n");
}
event_route[kazoo:consumer-event-connection-unavailable]
{
xlog("L_DEBUG","amqp zone $(kzE{kz.json,zone}) is unavailable\n");
}
event_route[kazoo:consumer-event-connection-zone-listener-available]
{
xlog("L_DEBUG","amqp zone $(kzE{kz.json,zone}) is available\n");
}
event_route[kazoo:consumer-event-connection-zone-listener-unavailable]
{
xlog("L_DEBUG","amqp zone $(kzE{kz.json,zone}) is unavailable\n");
}
event_route[kazoo:consumer-event-connection-listener-zone-available]
{
xlog("L_DEBUG","amqp zone $(kzE{kz.json,zone}) is available\n");
}
event_route[kazoo:consumer-event-connection-listener-zone-unavailable]
{
xlog("L_DEBUG","amqp zone $(kzE{kz.json,zone}) is unavailable\n");
#!ifdef PRESENCE_ROLE
route(PRESENCE_ZONE_UNAVAILABLE);
#!endif
}
event_route[kazoo:consumer-event-connection-listener-available]
{
xlog("L_DEBUG","amqp zone $(kzE{kz.json,zone}) is available\n");
}
event_route[kazoo:consumer-event-connection-listener-unavailable]
{
xlog("L_DEBUG","amqp zone $(kzE{kz.json,zone}) is unavailable\n");
}
# vim: tabstop=4 softtabstop=4 shiftwidth=4 expandtab

+ 4
- 2
kamailio/presence-notify.cfg View File

@ -154,7 +154,9 @@ route[PRESENCE_PUBLISHER_CLEANUP]
if($var(sqlres) < 0) {
xlog("L_ERROR", "$var(ci)|log|error cleaning tmp_probe\n");
} else {
$var(nrows) = $sqlrows(cb);
xlog("L_INFO", "presence publisher cleanup processed $var(nrows) rows\n");
$var(nrows) = $sqlrows(cb);
if($var(nrows) > 0) {
xlog("L_INFO", "presence publisher cleanup processed $var(nrows) rows\n");
}
}
}

+ 24
- 0
kamailio/presence-reset.cfg View File

@ -42,6 +42,30 @@ route[RESET_PUBLISHER]
}
}
route[PRESENCE_ZONE_UNAVAILABLE]
{
if($(kzE{kz.json,name}) == "presence") {
$var(Zone) = $(kzE{kz.json,zone});
xlog("L_WARN", "amqp|reset|resetting publisher zone $var(Zone)\n");
route(RESET_PUBLISHER_ZONE);
}
}
route[RESET_PUBLISHER_ZONE]
{
if($sel(cfg_get.kazoo.presence_reset_blf_defer_update) == 0) {
$var(Query) = $_s(KZQ_RESET_PUBLISHER_ZONE_UPDATE);
sql_query("exec", "$var(Query)");
}
$var(Query) = $_s(KZQ_PRESENCE_ZONE_RESET);
sql_query("exec", "$var(Query)");
$var(presentities) = $sqlrows(exec);
xlog("L_INFO", "$var(Msg-ID)|reset|removed $var(presentities) presentities from publisher $var(MediaUrl)\n");
if($var(presentities) > 0) {
route(PRESENCE_PUBLISHER_CLEANUP);
}
}
route[RESET_ALL]
{
xlog("L_INFO", "$var(Msg-ID)|reset|received presence reset ALL\n");


+ 1
- 1
kamailio/presence-role.cfg View File

@ -469,7 +469,7 @@ route[PRESENCE_BINDINGS]
#!import_file "presence-custom-bindings.cfg"
#!ifndef PRESENCE_CUSTOM_BINDINGS
$var(payload) = $_s({ "exchange" : "presence", "type" : "topic", "queue" : "presence-dialog-MY_HOSTNAME", "routing" : ["dialog.*.*", "update.*.*", "mwi_updates.*.*"], "exclusive" : 0, "federate" : 1 });
$var(payload) = $_s({ "name" : "presence", "exchange" : "presence", "type" : "topic", "queue" : "presence-dialog-MY_HOSTNAME", "routing" : ["dialog.*.*", "update.*.*", "mwi_updates.*.*"], "exclusive" : 0, "federate" : 1 });
kazoo_subscribe("$var(payload)");
#!endif


Loading…
Cancel
Save