aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authormnicholson <mnicholson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-06-23 22:33:51 +0000
committermnicholson <mnicholson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-06-23 22:33:51 +0000
commitb2c68285f0552b098394b0000c6d86c888f9c858 (patch)
treefe494e8b8c71a6557a2243b89a4b8d82541be0db /apps
parent9e599ec66c6d428f8247db9bcbe2b7684e430374 (diff)
Send AgentComplete manager events in the event of blind and attended transfers.
(closes issue #16819) Reported by: elbriga Patches: app_queue.diff uploaded by elbriga (license 482) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@272367 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rw-r--r--apps/app_queue.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c
index bbfc8bd58..7690fedc9 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -3286,6 +3286,20 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "TRANSFER", "%s|%s|%ld|%ld",
qe->chan->exten, qe->chan->context, (long) (callstart - qe->start),
(long) (time(NULL) - callstart));
+ if (qe->parent->eventwhencalled)
+ manager_event(EVENT_FLAG_AGENT, "AgentComplete",
+ "Queue: %s\r\n"
+ "Uniqueid: %s\r\n"
+ "Channel: %s\r\n"
+ "Member: %s\r\n"
+ "MemberName: %s\r\n"
+ "HoldTime: %ld\r\n"
+ "TalkTime: %ld\r\n"
+ "Reason: transfer\r\n"
+ "%s",
+ queuename, qe->chan->uniqueid, peer->name, member->interface, member->membername,
+ (long)(callstart - qe->start), (long)(time(NULL) - callstart),
+ qe->parent->eventwhencalled == QUEUE_EVENT_VARIABLES ? vars2manager(qe->chan, vars, sizeof(vars)) : "");
} else if (qe->chan->_softhangup) {
ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "COMPLETECALLER", "%ld|%ld|%d",
(long) (callstart - qe->start), (long) (time(NULL) - callstart), qe->opos);
@@ -3325,6 +3339,21 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
ast_channel_datastore_remove(qe->chan, tds);
}
update_queue(qe->parent, member, callcompletedinsl);
+ } else {
+ if (qe->parent->eventwhencalled)
+ manager_event(EVENT_FLAG_AGENT, "AgentComplete",
+ "Queue: %s\r\n"
+ "Uniqueid: %s\r\n"
+ "Channel: %s\r\n"
+ "Member: %s\r\n"
+ "MemberName: %s\r\n"
+ "HoldTime: %ld\r\n"
+ "TalkTime: %ld\r\n"
+ "Reason: transfer\r\n"
+ "%s",
+ queuename, qe->chan->uniqueid, peer->name, member->interface, member->membername, (long)(callstart - qe->start),
+ (long)(time(NULL) - callstart),
+ qe->parent->eventwhencalled == QUEUE_EVENT_VARIABLES ? vars2manager(qe->chan, vars, sizeof(vars)) : "");
}
if (transfer_ds) {