diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index 7b89527c79..9f567120b8 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -2862,11 +2862,11 @@ static int list_result_callback(void *pArg, int argc, char **argv, char **column "\tcallcenter_config queue unload [queue_name] | \n" \ "\tcallcenter_config queue reload [queue_name] | \n" \ "\tcallcenter_config queue list | \n" \ -"\tcallcenter_config queue list agents [queue_name] [status] | \n" \ +"\tcallcenter_config queue list agents [queue_name] [status] [state] | \n" \ "\tcallcenter_config queue list members [queue_name] | \n" \ "\tcallcenter_config queue list tiers [queue_name] | \n" \ "\tcallcenter_config queue count | \n" \ -"\tcallcenter_config queue count agents [queue_name] [status] | \n" \ +"\tcallcenter_config queue count agents [queue_name] [status] [state] | \n" \ "\tcallcenter_config queue count members [queue_name] | \n" \ "\tcallcenter_config queue count tiers [queue_name]" @@ -3220,6 +3220,7 @@ SWITCH_STANDARD_API(cc_config_api_function) const char *sub_action = argv[0 + initial_argc]; const char *queue_name = argv[1 + initial_argc]; const char *status = NULL; + const char *state = NULL; struct list_result cbt; /* queue list agents */ @@ -3227,7 +3228,13 @@ SWITCH_STANDARD_API(cc_config_api_function) if (argc-initial_argc > 2) { status = argv[2 + initial_argc]; } - if (status) { + if (argc-initial_argc > 3) { + state = argv[3 + initial_argc]; + } + if (state) { + sql = switch_mprintf("SELECT agents.* FROM agents,tiers WHERE tiers.agent = agents.name AND tiers.queue = '%q' AND agents.status = '%q' AND agents.state = '%q'", queue_name, status, state); + } + else if (status) { sql = switch_mprintf("SELECT agents.* FROM agents,tiers WHERE tiers.agent = agents.name AND tiers.queue = '%q' AND agents.status = '%q'", queue_name, status); } else { sql = switch_mprintf("SELECT agents.* FROM agents,tiers WHERE tiers.agent = agents.name AND tiers.queue = '%q'", queue_name); @@ -3266,6 +3273,7 @@ SWITCH_STANDARD_API(cc_config_api_function) const char *sub_action = argv[0 + initial_argc]; const char *queue_name = argv[1 + initial_argc]; const char *status = NULL; + const char *state = NULL; char res[256] = ""; /* queue count agents */ @@ -3273,7 +3281,13 @@ SWITCH_STANDARD_API(cc_config_api_function) if (argc-initial_argc > 2) { status = argv[2 + initial_argc]; } - if (status) { + if (argc-initial_argc > 3) { + state = argv[3 + initial_argc]; + } + if (state) { + sql = switch_mprintf("SELECT count(*) FROM agents,tiers WHERE tiers.agent = agents.name AND tiers.queue = '%q' AND agents.status = '%q' AND agents.state = '%q'", queue_name, status, state); + } + else if (status) { sql = switch_mprintf("SELECT count(*) FROM agents,tiers WHERE tiers.agent = agents.name AND tiers.queue = '%q' AND agents.status = '%q'", queue_name, status); } else { sql = switch_mprintf("SELECT count(*) FROM agents,tiers WHERE tiers.agent = agents.name AND tiers.queue = '%q'", queue_name);