QueueMetrics forum
QueueMetrics => Running QueueMetrics => Topic started by: d4rkstar on February 11, 2014, 16:16:15
-
Hello,
i'm new to queuemetrics and i'm trying to setup IVR tracking. I've a question to do, but need to introduce.
Well, in the official QM Manual (http://manuals.loway.ch/QM_UserManual-chunked/ar01s09.html (http://manuals.loway.ch/QM_UserManual-chunked/ar01s09.html)) i read:
"QueueMetrics handles IVRs when running reports by filtering all calls by the set of queues specified in the report. As IVRs have no queues, all IVRs are processed for the time period requested. IVRs that end up on queues different from the ones being reported on are reported as "lost"."
This means that we can trace the IVR calls, but in the reports calls that do not belong to the queue that we are analyzing will be identified as "lost".
It is said also that the IVR has no queue: I think this is only true from a technical point of view, because for Asterisk "IVR" and "Queue" are two separate objects. But the logic of a Call Center "Service" can consider "welcome IVR" and "tail" as two objects of the same set.
Why can not associate the IVR information to a Queue? All the more reason that we still have to log the information of IVRSTART and IVRSTOP through QueueLog ?
Now the question: would not it be more consistent to add in that log, also the name of a queue of QM to aggregate queues accessible from the IVR Asterisk?
For Example:
considering a callcenter service with an ivr that can lead the call to two different queues (named "CALL-CENTER-SERVICE-AGENTS-1" and "CALL-CENTER-SERVICE-AGENTS-2"):
IVRSTART -> QUEUE "CALL-CENTER-SERVICE"
IVRAPPEND [...]
IVREND -> QUEUE "CALL-CENTER-SERVICE"
QUEUE -> "CALL-CENTER-SERVICE-AGENTS-1"
In this case, we could build a QM Queue named CALL-CENTER-SERVICE that can analyze queues "CALL-CENTER-SERVICE-AGENTS-1" and "CALL-CENTER-SERVICE-AGENTS-2".
And all the data will be more consistent because we're analyzing different parts of the same call for the same service.
Hope to be clear.
Best Reagards
BS
-
In general you are not sure if an IVR has a queue - for example, you could have a classic IVR "press 1 for English press 2 for Spanish" and then "press 1 for sales, press 2 for support" that has no queue until you make a final selection.
-
Hello,
in my idea, if you track a queue on IVRSTART and IVRSTOP you may always produce statistics for that call.
Bruno
-
Yes it's so - it already is.
-
Hi,
Are there any new examples of how to track an IVR call correctly, since I last looked at this it would seem things have changed in later Queuemetrics revisions and the code required to be inserted into the dialplan appears to of changed?
Many Thanks,
Gavin
-
Hi,
I have this working by using the following code
/etc/asterisk/extensions_additional.conf
exten => 1,1,Noop(Deleting: ${BLKVM_OVERRIDE} ${DB_DELETE(${BLKVM_OVERRIDE})})
exten => 1,n,Set(__NODEST=)
exten => 1,n,Set(IVRSELECTION=${EXTEN}|${IVR_CONTEXT})
exten => 1,n,QueueLog(NONE,${UNIQUEID},NONE,INFO,IVRAPPEND|${IVRSELECTION})
exten => 1,n,Goto(ext-miscdests,17,1)
Which results in the following being created in /var/log/asterisk/queue_log
1395157010|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395157042|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
Should my code be moved somehow into extensions_custom.conf or similar files?
-
Ive tried modifying my code and moving it to extensions_custom.conf , but I do not think it is working -
[ivr-12-custom]
exten => _X.,n,Set(IVRSELECTION=${EXTEN}|${IVR_CONTEXT})
exten => _X.,n,QueueLog(NONE,${UNIQUEID},NONE,INFO,IVRAPPEND|${IVRSELECTION})
[ivr-13-custom]
exten => _X.,n,Set(IVRSELECTION=${EXTEN}|${IVR_CONTEXT})
exten => _X.,n,QueueLog(NONE,${UNIQUEID},NONE,INFO,IVRAPPEND|${IVRSELECTION})
Any pointers?
-
This is how it is supposed to work: http://manuals.loway.ch/QM_UserManual-chunked/ch09.html
My suggestion is: try and extract the log you generate for a call and post it here, so we can check whether it's correct or not.
-
Hi,
I can get the correct code generated, however I am querying adding the new code into the dialplan as I cannot edit the FreePBX files directly as these will be overwritten. The elastix distribution does not run FreePBX 2.11 so the module cannot be used to manage this functionality.
Currently, my code looks like
/etc/asterisk/extensions_additional.conf
[ivr-12]
include => ivr-12-custom
exten => fax,1,Goto(${CUT(FAX_DEST,^,1)},${CUT(FAX_DEST,^,2)},${CUT(FAX_DEST,^,3)})
exten => h,1,Hangup
exten => s,1,Set(MSG=custom/G-DCS1)
exten => s,n,Set(LOOPCOUNT=0)
exten => s,n,Set(__DIR-CONTEXT=)
exten => s,n,Set(_IVR_CONTEXT_${CONTEXT}=${IVR_CONTEXT})
exten => s,n,Set(_IVR_CONTEXT=${CONTEXT})
exten => s,n,GotoIf($["${CDR(disposition)}" = "ANSWERED"]?begin)
exten => s,n,Answer
exten => s,n,Wait(1)
exten => s,n(begin),Set(TIMEOUT(digit)=3)
exten => s,n,Set(TIMEOUT(response)=10)
exten => s,n,Set(__IVR_RETVM=)
exten => s,n,ExecIf($["${MSG}" != ""]?Background(${MSG}))
exten => s,n,WaitExten(,)
exten => hang,1,Playback(vm-goodbye)
exten => hang,n,Hangup
exten => 1,1,Noop(Deleting: ${BLKVM_OVERRIDE} ${DB_DELETE(${BLKVM_OVERRIDE})})
exten => 1,n,Set(__NODEST=)
exten => 1,n,Goto(app-announcement-9,s,1)
exten => 2,1,Noop(Deleting: ${BLKVM_OVERRIDE} ${DB_DELETE(${BLKVM_OVERRIDE})})
exten => 2,n,Set(__NODEST=)
exten => 2,n,Goto(app-announcement-10,s,1)
exten => 3,1,Noop(Deleting: ${BLKVM_OVERRIDE} ${DB_DELETE(${BLKVM_OVERRIDE})})
exten => 3,n,Set(__NODEST=)
exten => 3,n,Goto(app-announcement-11,s,1)
exten => 4,1,Noop(Deleting: ${BLKVM_OVERRIDE} ${DB_DELETE(${BLKVM_OVERRIDE})})
exten => 4,n,Set(__NODEST=)
exten => 4,n,Goto(app-daynight,2,1)
exten => t,1,Set(LOOPCOUNT=$[${LOOPCOUNT} + 1])
exten => t,n,GotoIf($[${LOOPCOUNT} <= 2]?s,begin)
exten => t,n,Noop(Deleting: ${BLKVM_OVERRIDE} ${DB_DELETE(${BLKVM_OVERRIDE})})
exten => t,n,Set(__NODEST=)
exten => t,n,Goto(ivr-12,s,begin)
exten => i,1,Playback(invalid)
exten => i,n,Goto(loop,1)
exten => loop,1,Set(LOOPCOUNT=$[${LOOPCOUNT} + 1])
exten => loop,n,GotoIf($[${LOOPCOUNT} > 2]?hang,1)
exten => loop,n,Goto(ivr-12,s,begin)
exten => return,1,Set(MSG=custom/G-DCS1)
exten => return,n,Set(_IVR_CONTEXT=${CONTEXT})
exten => return,n,Set(_IVR_CONTEXT_${CONTEXT}=${IVR_CONTEXT_${CONTEXT}})
exten => return,n,Goto(ivr-12,s,begin)
; end of [ivr-12]
extensions_custom.conf
[ivr-12-custom]
exten => _X.,n,Set(IVRSELECTION=${EXTEN}|${IVR_CONTEXT})
exten => _X.,n,QueueLog(NONE,${UNIQUEID},NONE,INFO,IVRAPPEND|${IVRSELECTION})
-
Can you get me an example of the queue_log generated?
-
Hi,
Heres an example of the queue_log being generated ;
1395157759|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395157792|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395157824|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395157857|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395157889|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395157922|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395157951|1395157893.962972|NONE|NONE|INFO|IVRAPPEND|3|ivr-12
1395157955|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395157987|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395158020|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395158052|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395158085|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395158118|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395158150|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395158183|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395158215|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395158248|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395158281|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395158313|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395158346|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
1395158351|1395158322.963345|NONE|NONE|INFO|IVRAPPEND|1|ivr-12
1395158378|1395144559.952245|NONE|NONE|INFO|IVRAPPEND|t|ivr-12
-
Why do you get all those t's? you likely have a timeout that's too short.