]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
mod_callcenter: Allow to get queue info via api
authorMarc Olivier Chouinard <mochouinard@moctel.com>
Wed, 13 Oct 2010 05:40:18 +0000 (01:40 -0400)
committerMarc Olivier Chouinard <mochouinard@moctel.com>
Wed, 13 Oct 2010 05:40:18 +0000 (01:40 -0400)
src/mod/applications/mod_callcenter/mod_callcenter.c

index ddd2cd5175838b491f2f7daee4f25884c7beafe1..56c817ab3368d31de0a5b7bfef07a41414dd891e 100644 (file)
@@ -2631,7 +2631,21 @@ SWITCH_STANDARD_API(cc_config_api_function)
                        }
                } else if (action && !strcasecmp(action, "list")) {
                        if (argc-initial_argc < 1) {
-                               stream->write_function(stream, "%s", "-ERR Invalid!\n");
+                               switch_hash_index_t *hi;
+                               stream->write_function(stream, "%s", "name|strategy|moh_sound|time_base_score|tier_rules_apply|tier_rule_wait_second|tier_rule_wait_multiply_level|tier_rule_no_agent_no_wait|discard_abandoned_after|abandoned_resume_allowed|max_wait_time|max_wait_time_with_no_agent|record_template\n");
+                               switch_mutex_lock(globals.mutex);
+                               for (hi = switch_hash_first(NULL, globals.queue_hash); hi; hi = switch_hash_next(hi)) {
+                                       void *val = NULL;
+                                       const void *key;
+                                       switch_ssize_t keylen;
+                                       cc_queue_t *queue;
+                                       switch_hash_this(hi, &key, &keylen, &val);
+                                       queue = (cc_queue_t *) val;
+                                       stream->write_function(stream, "%s|%s|%s|%s|%s|%d|%s|%s|%d|%s|%d|%d|%s\n", queue->name, queue->strategy, queue->moh, queue->time_base_score, (queue->tier_rules_apply?"true":"false"), queue->tier_rule_wait_second, (queue->tier_rule_wait_multiply_level?"true":"false"), (queue->tier_rule_no_agent_no_wait?"true":"false"), queue->discard_abandoned_after, (queue->abandoned_resume_allowed?"true":"false"), queue->max_wait_time, queue->max_wait_time_with_no_agent, queue->record_template);
+                                       queue = NULL;
+                               }
+                               switch_mutex_unlock(globals.mutex);
+                               stream->write_function(stream, "%s", "+OK\n");
                                goto done;
                        } else {
                                const char *queue_name = argv[0 + initial_argc];