Author Topic: Tracking IVR - Services and Queues  (Read 7925 times)

d4rkstar

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
    • View Profile
Tracking IVR - Services and Queues
« 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) 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

QueueMetrics

  • Loway
  • Hero Member
  • *
  • Posts: 2999
  • Karma: 39
    • View Profile
    • QueueMetrics
Re: Tracking IVR - Services and Queues
« Reply #1 on: February 14, 2014, 09:37:24 »
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.

d4rkstar

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
    • View Profile
Re: Tracking IVR - Services and Queues
« Reply #2 on: February 14, 2014, 10:16:17 »
Hello,
in my idea, if you track a queue on IVRSTART and IVRSTOP you may always produce statistics for that call.

Bruno

QueueMetrics

  • Loway
  • Hero Member
  • *
  • Posts: 2999
  • Karma: 39
    • View Profile
    • QueueMetrics
Re: Tracking IVR - Services and Queues
« Reply #3 on: February 25, 2014, 10:42:41 »
Yes it's so - it already is.

gavinlew

  • Newbie
  • *
  • Posts: 26
  • Karma: 0
    • View Profile
    • Email
Re: Tracking IVR - Services and Queues
« Reply #4 on: March 18, 2014, 10:53:16 »
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



gavinlew

  • Newbie
  • *
  • Posts: 26
  • Karma: 0
    • View Profile
    • Email
Re: Tracking IVR - Services and Queues
« Reply #5 on: March 18, 2014, 16:42:46 »
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?

gavinlew

  • Newbie
  • *
  • Posts: 26
  • Karma: 0
    • View Profile
    • Email
Re: Tracking IVR - Services and Queues
« Reply #6 on: March 18, 2014, 17:04:24 »
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?

QueueMetrics

  • Loway
  • Hero Member
  • *
  • Posts: 2999
  • Karma: 39
    • View Profile
    • QueueMetrics
Re: Tracking IVR - Services and Queues
« Reply #7 on: March 20, 2014, 10:13:23 »
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.
 

gavinlew

  • Newbie
  • *
  • Posts: 26
  • Karma: 0
    • View Profile
    • Email
Re: Tracking IVR - Services and Queues
« Reply #8 on: March 20, 2014, 10:27:24 »
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})


QueueMetrics

  • Loway
  • Hero Member
  • *
  • Posts: 2999
  • Karma: 39
    • View Profile
    • QueueMetrics
Re: Tracking IVR - Services and Queues
« Reply #9 on: March 28, 2014, 17:42:52 »
Can you get me an example of the queue_log generated?

gavinlew

  • Newbie
  • *
  • Posts: 26
  • Karma: 0
    • View Profile
    • Email
Re: Tracking IVR - Services and Queues
« Reply #10 on: March 31, 2014, 10:27:06 »
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

QueueMetrics

  • Loway
  • Hero Member
  • *
  • Posts: 2999
  • Karma: 39
    • View Profile
    • QueueMetrics
Re: Tracking IVR - Services and Queues
« Reply #11 on: April 02, 2014, 09:51:51 »
Why do you get all those t's? you likely have a timeout that's too short.