From: Rodrigo Ramírez Norambuena Date: Wed, 25 Aug 2021 13:15:59 +0000 (+0000) Subject: app_queue: Add LoginTime field for member in a queue. X-Git-Tag: 16.23.0-rc1~76 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b12e8b5924a87f8ec0223dd9e2dbcdf83dcb8a25;p=thirdparty%2Fasterisk.git app_queue: Add LoginTime field for member in a queue. Add a time_t logintime to storage a time when a member is added into a queue. Also, includes show this time (in seconds) using a 'queue show' command and the field LoginTime for response for AMI events. ASTERISK-18069 #close Change-Id: Ied6c3a300f78d78eebedeb3e16a1520fc3fff190 --- diff --git a/apps/app_queue.c b/apps/app_queue.c index a4f6dcef17..1b053660a1 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -1080,6 +1080,9 @@ The time when started last paused the queue member. + + The time this member logged in to the queue, expressed in seconds since 00:00, Jan 1, 1970 UTC. + Set to 1 if member is in call. Set to 0 after LastCall time is updated. @@ -1618,6 +1621,7 @@ struct member { time_t starttime; /*!< The time at which the member answered the current caller. */ time_t lastcall; /*!< When last successful call was hungup */ time_t lastpause; /*!< When started the last pause */ + time_t logintime; /*!< The time when started the login */ struct call_queue *lastqueue; /*!< Last queue we received a call */ unsigned int dead:1; /*!< Used to detect members deleted in realtime */ unsigned int delme:1; /*!< Flag to delete entry on reload */ @@ -2266,7 +2270,7 @@ static void queue_publish_member_blob(struct stasis_message_type *type, struct a static struct ast_json *queue_member_blob_create(struct call_queue *q, struct member *mem) { - return ast_json_pack("{s: s, s: s, s: s, s: s, s: s, s: i, s: i, s: i, s: i, s: i, s: i, s: i, s: s, s: i, s: i}", + return ast_json_pack("{s: s, s: s, s: s, s: s, s: s, s: i, s: i, s: i, s: i, s: i, s: i, s: i, s: i, s: s, s: i, s: i}", "Queue", q->name, "MemberName", mem->membername, "Interface", mem->interface, @@ -2276,6 +2280,7 @@ static struct ast_json *queue_member_blob_create(struct call_queue *q, struct me "CallsTaken", mem->calls, "LastCall", (int)mem->lastcall, "LastPause", (int)mem->lastpause, + "LoginTime", (int)mem->logintime, "InCall", mem->starttime ? 1 : 0, "Status", mem->status, "Paused", mem->paused, @@ -2749,6 +2754,7 @@ static struct member *create_queue_member(const char *interface, const char *mem if (paused) { time(&cur->lastpause); /* Update time of last pause */ } + time(&cur->logintime); ast_copy_string(cur->interface, interface, sizeof(cur->interface)); if (!ast_strlen_zero(state_interface)) { ast_copy_string(cur->state_interface, state_interface, sizeof(cur->state_interface)); @@ -9779,6 +9785,10 @@ static void print_queue(struct mansession *s, int fd, struct call_queue *q) } else { ast_str_append(&out, 0, " has taken no calls yet"); } + ast_str_append(&out, 0, " %s(login was %ld secs ago)%s", + ast_term_color(COLOR_BROWN, COLOR_BLACK), + (long) (now - mem->logintime), + ast_term_reset()); do_print(s, fd, ast_str_buffer(out)); ao2_ref(mem, -1); } @@ -10221,6 +10231,7 @@ static int manager_queues_status(struct mansession *s, const struct message *m) "CallsTaken: %d\r\n" "LastCall: %d\r\n" "LastPause: %d\r\n" + "LoginTime: %d\r\n" "InCall: %d\r\n" "Status: %d\r\n" "Paused: %d\r\n" @@ -10229,7 +10240,7 @@ static int manager_queues_status(struct mansession *s, const struct message *m) "%s" "\r\n", q->name, mem->membername, mem->interface, mem->state_interface, mem->dynamic ? "dynamic" : "static", - mem->penalty, mem->calls, (int)mem->lastcall, (int)mem->lastpause, mem->starttime ? 1 : 0, mem->status, + mem->penalty, mem->calls, (int)mem->lastcall, (int)mem->lastpause, (int)mem->logintime, mem->starttime ? 1 : 0, mem->status, mem->paused, mem->reason_paused, mem->wrapuptime, idText); ++q_items; } diff --git a/doc/CHANGES-staging/app_queue_logintime.txt b/doc/CHANGES-staging/app_queue_logintime.txt new file mode 100644 index 0000000000..5b0eea414f --- /dev/null +++ b/doc/CHANGES-staging/app_queue_logintime.txt @@ -0,0 +1,9 @@ +Subject: app_queue + +Add field to save the time value when a member enter a queue. +Shows this time in seconds using 'queue show' command and the +field LoginTime for responses for AMI the events. + +The output for the CLI command `queue show` is changed by added a +extra data field for the information of the time login time for each +member.