cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Announcements
374
Views
0
Helpful
4
Replies
Highlighted
Beginner

CRS Script with dynamic messages

Hi,

I am writing a script based on the call flow attached and need to check if a queue specific message exits,if present play the message or else continue with the default messages.

Also if the wait time in the queue is more than 90 seconds,the call should be queued to another skill group.

Can anyone help me writing this script.

Regards,

Jagadish S

4 REPLIES 4
Highlighted
Enthusiast

Hi Jagadish,

Please take a look at the below script and see if it meets your requirements.The following script will queue the call to CSQ1, if no agent available in CSQ1 for MaxQueueTries, the call gets queued to CSQ2. The example script looks like this,

Accept

Select Resource(Contact:Triggering Contact-, CSQ:CSQ1)

----->Connected

----->Queued

---------->queueLoop:

---------->If (TestMsgFlag==1) Then (Check if Test Msg Flag is ON)

------------>True

-------------->Play Queue Specific Msg using Play Prompt Step

------------->False

--------------->Play Quality Message using Play Prompt Step.

---------->Call Hold (Contact:-Triggering Contact)

---------->Delay 30 secs (During this time you will hear MOH source that is configured on a CTI Port as User Hold Audio Source)

---------->Increment QueueLoopCounter (QueueLoopCounter is an integer variable takes initial default value as 0 and keep incrementing everytime when the iteration proceed. )

---------->If(QueueLoopCounter == MaxQueueTries) Then (Variable MaxQueueTries (integer datatype) as paramater attribute which holds the maximum queue iteration allowed for a queue. If the queueloopcounter equals to MaxQueueTries, call will be queued for CSQ2)

------------->True

---------------->Use Dequeue Step if you dont want the call to be queued for both CSQ1 and CSQ2

---------------->Goto QueueToCSQ2

------------->False

---------->Call Unhold (Contact:-Triggering Contact)

---------->Goto queueLoop

QueueToCSQ2:

Select Resource (Contact:-Triggering Contact--, CSQ:CSQ2)

------>Connected

------>Queued

------------>queueLoop1:

------------>Play Queue Prompt

-------------> Call Hold (Contact:-Triggering Contact)

-------------->Delay 30 secs

--------------->Call Unhold (Contact:-Triggering Contact)

---------------->queueLoop1

----------->End

Regards

Venkat

Highlighted

Hi,

In order to get the value of wait time in queue, use "Get Reporting Statistic" step.

Refer the editor step reference guide for more info

http://www.cisco.com/univercd/cc/td/doc/product/voice/sw_ap_to/apps_3_5/english/admn_app/step.pdf - pg.No: 1-14

Set the properties of Get Reporting Statistic as follows

Report Object : CSQ ICD

Field : Expected wait time

Row Identifier : String variable that holds the CSQ name.

Statistic Variable : Integer variable that stores the expected wait time in queue. Assume X is the integer variable that holds this value.

--->Label1:

--->Select Resource(CSQ1)

------>Connected

------>Queued

---------->Get Reporting Statistic

---------->If ( X > 90)

--------------->True

------------------->Dequeue(CSQ1)

------------------->Go to Label2

--------------->False

------------------->Go to Label1

--->Label2:

--->Select Resource(CSQ2)

.....

Hope it helps.

Regards

Yogi

Highlighted

Hi,

First of all Thanks for your response.I will use the Get reporting Statistic step and check.

Regarding the testmsg flag,it should be set before the connect step,so that if there is any queue specific messages it will be played followed by the quality messages and then connect to an agent,if available or go to the queue loop.

How can we check whether a queue specific message is present and if present it is played or else it goes directly to the quality messages ?

Regards,

Jagadish S

Highlighted

Hi,

Different ways which I could think of achieving the same is as follows

1. By setting the testmsg flag as a parameter variable. In this case you can set a value for this variable through appadmin -> configure applications.

Note : You need to set the value of the parameter variable while configuring the script.

2. Another method is by using XML document. Assume sample XML document as stated below

WelcomePrompt.wav

ScriptFlow is as follows

--->Start

--->Accept

--->Create File Document

--->Create XML Document

--->Message = Extract XML Document Data(Document = "/descendant::MessageName")

--->Play Prompt(Message)

....other steps

Note :

1. Message is a string variable that holds the value of the wav file to be played.

2. If you need to set a different filename, you need to change XML file accordingly. Script doesnot required to be changed. Hence this method is more advantageous.

Refer the Editor step reference guide for more info on document steps

http://www.cisco.com/univercd/cc/td/doc/product/voice/sw_ap_to/apps_3_5/english/admn_app/step.pdf

3. Another method is by doing database dips. But this is expensive solution.

Hope your query is addressed.

Regards

Yogi