cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
6575
Views
1
Helpful
0
Comments
cdnadmin
Level 11
Level 11
This document was generated from CDN thread

Created by: Bill Westby on 22-02-2013 06:44:13 PM
Finally have Studio and ICM apps working after figuring out a nice nugget where our cvp_dbuser on the reporting server had a "must change password at next login" and that was causng the servlet call to the reporting server to fail. I'm using bone stock Studio samples from the ops console examples.  Call goes into CallbackEntry, and at the first Validate_01 throws an element error in the error log: 10.31.250.14.1361578511894.9.CallbackEntry,02/22/2013 18:15:12.315,A VoiceXML error occurred of type "error.com.cisco.callhandoff.failure". I am not able to program the gateway (single ingress and vxml combined), I'm having to rely on someone else to do that due to security (ugh).   So does this error seem to indicate that it failed to retrieve what it needs from the gateway or possibly the gateway is not programmed correctly?   Also one more question for now is this, the documentation says The Callback_Enter_Queue element is responsible for adding a new caller to queue. This element must be executedfor all callers even if the caller may not be offered a callback. And I'm wondering why?  If a call isn't going to do callback why can't I just use normal treatment on it, I have to use Studio apps now for my queue treatments and messages ?   Since my Callback Entry fails I see the call makes it to CallbackQueue app and just sits there playing their default MOH configured in the app.  Obviously we do lots of custom messages for callers who stay in queue, do I "have" to use a Studio VXML app to keep the call in queue once I go down this road of using CCB? Thanks, Bill.

Subject: RE: CCB Newbie issues
Replied by: Mark Pareja on 22-02-2013 11:35:32 PM
Bill,
    First CCB is a difficult endeavor even more so in complex environments as your familiar with mine. But it sounds like your voice guy did not enable "signal forward unconditional" either on the CVP dial-peer or globally on your ingress VGA.

I have a lengthy write up on CCB I can share with you if you would like just shoot me an e-mail.


Bill Westby:
Finally have Studio and ICM apps working after figuring out a nice nugget where our cvp_dbuser on the reporting server had a &#034;must change password at next login&#034; and that was causng the servlet call to the reporting server to fail. I&#039;m using bone stock Studio samples from the ops console examples.  Call goes into CallbackEntry, and at the first Validate_01 throws an element error in the error log: 10.31.250.14.1361578511894.9.CallbackEntry,02/22/2013 18:15:12.315,A VoiceXML error occurred of type &#034;error.com.cisco.callhandoff.failure&#034;. I am not able to program the gateway (single ingress and vxml combined), I&#039;m having to rely on someone else to do that due to security (ugh).   So does this error seem to indicate that it failed to retrieve what it needs from the gateway or possibly the gateway is not programmed correctly?   Also one more question for now is this, the documentation says The <strong><strong>Callback_Enter_Queue </strong></strong>element is responsible for adding a new caller to queue. This element must be executedfor all callers even if the caller may not be offered a callback. And I&#039;m wondering why?  If a call isn&#039;t going to do callback why can&#039;t I just use normal treatment on it, I have to use Studio apps now for my queue treatments and messages ?   Since my Callback Entry fails I see the call makes it to CallbackQueue app and just sits there playing their default MOH configured in the app.  Obviously we do lots of custom messages for callers who stay in queue, do I &#034;have&#034; to use a Studio VXML app to keep the call in queue once I go down this road of using CCB? Thanks, Bill.


Subject: RE: CCB Newbie issues
Replied by: Paul Tindall on 23-02-2013 02:04:38 AM
Control is passed temporarily from VoiceXML to a TCL application on the VoiceXML gateway.  The handoff failure is because the the TCL applications haven't been configured on that gateway.   Set them up as shown in the config guide and that error should be sorted.

Subject: RE: CCB Newbie issues
Replied by: Matthew Reiter on 25-02-2013 10:30:37 AM
The reason CCB requires that all calls go through Callback_Enter_Queue is that it needs to know about every call in CCB-enabled queues in order to accurately estimate queue times. If there are any calls that it doesn't know about, the estimated wait time will be lower than expected and so callers will be called back too soon.

Subject: Re: New Message from Matthew Reiter in Customer Voice Portal (CVP) - Genera
Replied by: Bill Westby on 25-02-2013 12:18:54 PM
Thank you Matthew, so for each queue that I use CCB with, I'll have to move
my queue "treatments" (messages, MOH, etc) into Studio apps is that how I'm
understanding this ?  Has to stay in the Studio app to be tracked by the
CCB system....

Bill.

On Mon, Feb 25, 2013 at 8:30 AM, Cisco Developer Community Forums <
cdicuser@developer.cisco.com> wrote:

> Matthew Reiter has created a new message in the forum "General Discussion
> - All Versions":
> -------------------------------------------------------------- The reason
> CCB requires that all calls go through Callback_Enter_Queue is that it
> needs to know about every call in CCB-enabled queues in order to accurately
> estimate queue times. If there are any calls that it doesn't know about,
> the estimated wait time will be lower than expected and so callers will be
> called back too soon.
> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12353903or simply reply to this email.

Subject: Re: New Message from Bill Westby in Customer Voice Portal (CVP) - General D
Replied by: Janine Graves on 25-02-2013 01:32:54 PM
Yes, put all your MOH and treatment into either the CallbackQueue app or the BillingQueue app. And if you have different treatment for different queues, then you'll probably want to modify the ICM script. Right now the ICM scrip uses SetVariable node to assign into the ToExtVxml array  "qname=billing" - you'll want to change billing to your queue name. That way the CCB 'shadow' queues will more closely resemble your real queues. TheStudio app BillingQueue  can check the Session data named 'qname' and play different MOH. 

Subject: RE: Re: New Message from Matthew Reiter in Customer Voice Portal (CVP) - Ge
Replied by: Mark Pareja on 25-02-2013 02:41:56 PM
Bill,       
           In CallbackEntry you can use the "qname" session var to read in what you set the value too in ICM.  So if you have two Routing scripts say one for "Sales" and one for "Billing". You would set the "qname" in ICM to "Sales" and in CallbackEntry you can interogate tha value of "qname" and route to the corisponding "QueueDefaults" element. thus having multiple QueueDefaults elements but only one being used at a time based on the "qname"   
See attached CCB CallbackEntry App Spec   

Subject: Re: New Message from Mark Pareja in Customer Voice Portal (CVP) - General D
Replied by: Bill Westby on 26-02-2013 12:27:54 AM
Hi Mark, long time no talk, good to see you here!!   Finally got it working
tonight with standard PRIs which one group uses, other uses IB SIP which
I'm told is "acting like a CUBE" whatever the heck that means, time soon
will tell...IP originated doesn't work yet as well but tomorrow is a new
day of testing.

I've ventured deeper into the Studio apps and finally figured out what they
are doing and thank you, your advice and guidance worked well.  Hate having
to use Studio to handle the queue treatment from now on, reminds me of IP
IVR days.  Oh well, more work for me since nobody here knows Studio besides
me!

One question I'm hoping I can get answered is trunk reservation....  If we
"reserve" trunks with the "param ..." in the dial-peer, does IOS reserve
trunks for CCB purposes?  Like if I reserve an entire PRI which is likely
the case given the call volume, does that essentially lock up a PRI for OB
usage?  We reserve PRIs for inbound so that's not an issue, but for OB it
is.  Worse case I can throw another PRI or two at CCB and reserve those for
CCB usage, just not sure how the trunk reservation works in IOS.

If you or anyone else has any thoughts I'd appreciate it.  Cool feature how
they accomplished it I'll admit, but my CCB solution I wrote on 7.5 was a
whole lot easier using the OB dialer to hold the caller's place in queue
haha, didn't care about trunk type at all.

Thanks,
- Bill Westby

On Mon, Feb 25, 2013 at 12:42 PM, Cisco Developer Community Forums <
cdicuser@developer.cisco.com> wrote:

> Mark Pareja has created a new message in the forum "General Discussion -
> All Versions":
> -------------------------------------------------------------- Bill,
>            In CallbackEntry you can use the "qname" session var to read in
> what you set the value too in ICM.  So if you have two Routing scripts say
> one for "Sales" and one for "Billing". You would set the "qname" in ICM to
> "Sales" and in CallbackEntry you can interogate tha value of "qname" and
> route to the corisponding "QueueDefaults" element. thus having multiple
> QueueDefaults elements but only one being used at a time based on the
> "qname"
> See attached CCB CallbackEntry App Spec
> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12365034or simply reply to this email.

Subject: RE: CCB Newbie issues
Replied by: Kristian Martell on 26-02-2013 07:48:10 AM
Bill,
From what I can tell the system does not Reserve the outbound trunks, that perameter only serves as a Max Limit as to how many calls the system will make at any one time. You should set this based on the AVG number of Idel ports you have available for making CCB's. One other thing you may want to take into consideration, I noticed from the posts above that you have a few files in your Queue Loop, make sure the Keepalive Interval is set for longer than the total duration of your wav files in the application being used for the QueueApp. 
Good Luck,
kristian
 

Subject: RE: Re: New Message from Mark Pareja in Customer Voice Portal (CVP) - Gener
Replied by: Mark Pareja on 26-02-2013 09:57:23 AM
Bill, 
    The Trunk Param is used by survivability to determin how to throtle the CCB calls as to not consume too many trunks. In my architecture I'm actually sending the CCB leg out a different egress Voice gateway with ded PSTN-LD trunks and a ded IP-LD (CUBE) trunks. As you know we ingess voice across 6 different PSTN VG's and each are built to support CCB. We do not use the built in mechanisim to throtle CCB calls so we have set the trunks param to 200, in theory that would equal a total CCB concurrent request capacity of 1200 (200x6). But our throtle mechanism is our WFM team, they insure that outbound teams have been transitioned to Inbound to help bring down the queue, and CCB has subsequently been activated. 
   One other thing to note we route 40-60k calls a day, when we activate CCB during high queue times we get an adoption rate of 40-50%. Plan ahead, instute reporting for the CallBack application, and provide customer education prior to releasing CCB into the wild.  
   In other words the trunks are not reserved, if the CCB call fails to route, CVP will count it as a failed attempt and dispose of it as "no trunks avaliable" if i remember correctly. CCB Keeps track of all the requests for a specified VG and insures that the # of concurrent Callback Requests do not exceed the Trunks param value. You can see how this could get very complicated very fast. 

Subject: RE: New Message from Mark Pareja in Customer Voice Portal (CVP) - General D
Replied by: Hemal Mehta on 26-02-2013 10:40:14 AM
Is there a way to specifically block some nos and dnis patterns that prevent them from being offered CCB.  I can definitely do it a scripting level.  However wanted to see if it could be done before that.
Also how do you check the no of ccb calls queued in the system in ICM.  I would like to check this vs the no of regular calls queued in the system.
Hemal


From: Cisco Developer Community Forums [mailto:cdicuser@developer.cisco.com]
Sent: Tuesday, February 26, 2013 9:58 AM
To: cdicuser@developer.cisco.com
Subject: New Message from Mark Pareja in Customer Voice Portal (CVP) - General Discussion - All Versions: RE: Re: New Message from Mark Pareja in Customer Voice Portal (CVP) - Gener

Mark Pareja has created a new message in the forum "General Discussion - All Versions": -------------------------------------------------------------- Bill,
    The Trunk Param is used by survivability to determin how to throtle the CCB calls as to not consume too many trunks. In my architecture I'm actually sending the CCB leg out a different egress Voice gateway with ded PSTN-LD trunks and a ded IP-LD (CUBE) trunks. As you know we ingess voice across 6 different PSTN VG's and each are built to support CCB. We do not use the built in mechanisim to throtle CCB calls so we have set the trunks param to 200, in theory that would equal a total CCB concurrent request capacity of 1200 (200x6). But our throtle mechanism is our WFM team, they insure that outbound teams have been transitioned to Inbound to help bring down the queue, and CCB has subsequently been activated.
   One other thing to note we route 40-60k calls a day, when we activate CCB during high queue times we get an adoption rate of 40-50%. Plan ahead, instute reporting for the CallBack application, and provide customer education prior to releasing CCB into the wild.
   In other words the trunks are not reserved, if the CCB call fails to route, CVP will count it as a failed attempt and dispose of it as "no trunks avaliable" if i remember correctly. CCB Keeps track of all the requests for a specified VG and insures that the # of concurrent Callback Requests do not exceed the Trunks param value. You can see how this could get very complicated very fast.
--
To respond to this post, please click the following link: http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12395530 or simply reply to this email.

Subject: RE: Re: New Message from Mark Pareja in Customer Voice Portal (CVP) - Gener
Replied by: Mark Pareja on 26-02-2013 11:34:19 AM
Cisco CCB = Time Delayed CallBack not Virtual Hold 
Bucher and Suter have a real Virtual Hold solution that actually holds your place in line. Moving to evaluate thier offerings. 

Subject: RE: Re: New Message from Mark Pareja in Customer Voice Portal (CVP) - Gener
Replied by: Mark Pareja on 26-02-2013 11:36:58 AM
Hemal,  Use a translation rule on the ingress VG and set the action to block on the dialpeer. This will generate a Network rejection to your upstream carrier for the numbers supplied.    http://www.cisco.com/en/US/tech/tk652/tk90/technologies_configuration_example09186a00803f818a.shtml#con11   There are some canned CVP reports for CCB that can be loaded into CUIC, you can always load up infomix db sdk and create a dsn and query the Reporting server DB yourself.  CVP Reporting Guide http://www.cisco.com/en/US/docs/voice_ip_comm/cust_contact/contact_center/customer_voice_portal/cvp9_0/configuration/guide/CCVP_BK_RB4BC4B7_00_reporting-guide-cisco-unified-cvp.pdf

Subject: RE: New Message from Mark Pareja in Customer Voice Portal (CVP) - General D
Replied by: Hemal Mehta on 26-02-2013 11:38:14 AM
Thanks Mark.  Let me check.
Hemal

From: Cisco Developer Community Forums [mailto:cdicuser@developer.cisco.com]
Sent: Tuesday, February 26, 2013 11:37 AM
To: cdicuser@developer.cisco.com
Subject: New Message from Mark Pareja in Customer Voice Portal (CVP) - General Discussion - All Versions: RE: Re: New Message from Mark Pareja in Customer Voice Portal (CVP) - Gener

Mark Pareja has created a new message in the forum "General Discussion - All Versions": -------------------------------------------------------------- Hemal,
Use a translation rule on the ingress VG and set the action to block on the dialpeer. This will generate a Network rejection to your upstream carrier for the numbers supplied.

http://www.cisco.com/en/US/tech/tk652/tk90/technologies_configuration_example09186a00803f818a.shtml#con11
--
To respond to this post, please click the following link: http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12399811 or simply reply to this email.

Subject: RE: New Message from Mark Pareja in Customer Voice Portal (CVP) - General D
Replied by: Hemal Mehta on 26-02-2013 12:09:54 PM
Mark,
Wouldn’t this reject the no period ?  I want the no to come but just not be considered eligible for CCB, however can stay in queue and be connected to agent after waiting.  I want to see if this could be done at VG level.
Hemal

From: Cisco Developer Community Forums [mailto:cdicuser@developer.cisco.com]
Sent: Tuesday, February 26, 2013 11:37 AM
To: cdicuser@developer.cisco.com
Subject: New Message from Mark Pareja in Customer Voice Portal (CVP) - General Discussion - All Versions: RE: Re: New Message from Mark Pareja in Customer Voice Portal (CVP) - Gener

Mark Pareja has created a new message in the forum "General Discussion - All Versions": -------------------------------------------------------------- Hemal,
Use a translation rule on the ingress VG and set the action to block on the dialpeer. This will generate a Network rejection to your upstream carrier for the numbers supplied.

http://www.cisco.com/en/US/tech/tk652/tk90/technologies_configuration_example09186a00803f818a.shtml#con11
--
To respond to this post, please click the following link: http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12399811 or simply reply to this email.

Subject: Re: New Message from Mark Pareja in Customer Voice Portal (CVP) - General D
Replied by: Bill Westby on 26-02-2013 12:36:03 PM
Great info, thank you Mark!

-Bill.

On Tue, Feb 26, 2013 at 7:57 AM, Cisco Developer Community Forums <
cdicuser@developer.cisco.com> wrote:

> Mark Pareja has created a new message in the forum "General Discussion -
> All Versions":
> -------------------------------------------------------------- Bill,
>     The Trunk Param is used by survivability to determin how to throtle
> the CCB calls as to not consume too many trunks. In my architecture I'm
> actually sending the CCB leg out a different egress Voice gateway with ded
> PSTN-LD trunks and a ded IP-LD (CUBE) trunks. As you know we ingess voice
> across 6 different PSTN VG's and each are built to support CCB. We do not
> use the built in mechanisim to throtle CCB calls so we have set the trunks
> param to 200, in theory that would equal a total CCB concurrent request
> capacity of 1200 (200x6). But our throtle mechanism is our WFM team, they
> insure that outbound teams have been transitioned to Inbound to help bring
> down the queue, and CCB has subsequently been activated.
>    One other thing to note we route 40-60k calls a day, when we activate
> CCB during high queue times we get an adoption rate of 40-50%. Plan ahead,
> instute reporting for the CallBack application, and provide customer
> education prior to releasing CCB into the wild.
>    In other words the trunks are not reserved, if the CCB call fails to
> route, CVP will count it as a failed attempt and dispose of it as "no
> trunks avaliable" if i remember correctly. CCB Keeps track of all the
> requests for a specified VG and insures that the # of concurrent Callback
> Requests do not exceed the Trunks param value. You can see how this could
> get very complicated very fast.
> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12395530or simply reply to this email.

Subject: Re: New Message from Hemal Mehta in Customer Voice Portal (CVP) - General D
Replied by: Janine Graves on 26-02-2013 12:55:03 PM
Hemal,
In the ops console, you can set up which CCB phone numbers to allow and
which ones to disallow.
Just add it in there under System > Courtesy Callback.

To do that programmatically, you'd have to figure out where this info is
being stored.

Subject: RE: New Message from Janine Graves in Customer Voice Portal (CVP) - General
Replied by: Hemal Mehta on 26-02-2013 01:09:03 PM
Cool.. I know there was something that could be set outside the script.   This should be good.  Do you know if internally this gets blocked at the CVP level ?
Thanks,
Hemal

From: Cisco Developer Community Forums [mailto:cdicuser@developer.cisco.com]
Sent: Tuesday, February 26, 2013 12:55 PM
To: cdicuser@developer.cisco.com
Subject: New Message from Janine Graves in Customer Voice Portal (CVP) - General Discussion - All Versions: Re: New Message from Hemal Mehta in Customer Voice Portal (CVP) - General D

Janine Graves has created a new message in the forum "General Discussion - All Versions": -------------------------------------------------------------- Hemal,
In the ops console, you can set up which CCB phone numbers to allow and
which ones to disallow.
Just add it in there under System > Courtesy Callback.

To do that programmatically, you'd have to figure out where this info is
being stored.
--
To respond to this post, please click the following link: http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12404792 or simply reply to this email.

Subject: Re: New Message from Hemal Mehta in Customer Voice Portal (CVP) - General D
Replied by: Janine Graves on 26-02-2013 01:40:03 PM
All I know is that in the CallbackEntry app, the element named CallbackValid executes a ccb_servlet and comes back with element data specifying if the number is allowed to be called back. On 2/26/2013 12:09 PM, Cisco Developer Community Forums wrote: Hemal Mehta has created a new message in the forum "General Discussion - All Versions": -------------------------------------------------------------- Cool.. I know there was something that could be set outside the script. This should be good. Do you know if internally this gets blocked at the CVP level ? Thanks, Hemal From: Cisco Developer Community Forums [mailto:cdicuser@developer.cisco.com] Sent: Tuesday, February 26, 2013 12:55 PM To: cdicuser@developer.cisco.com Subject: New Message from Janine Graves in Customer Voice Portal (CVP) - General Discussion - All Versions: Re: New Message from Hemal Mehta in Customer Voice Portal (CVP) - General D Janine Graves has created a new message in the forum "General Discussion - All Versions": -------------------------------------------------------------- Hemal, In the ops console, you can set up which CCB phone numbers to allow and which ones to disallow. Just add it in there under System > Courtesy Callback. To do that programmatically, you'd have to figure out where this info is being stored. -- To respond to this post, please click the following link: http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12404792 or simply reply to this email. -- To respond to this post, please click the following link: http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12405235 or simply reply to this email. -- Janine Graves

Subject: Re: New Message from Hemal Mehta in Customer Voice Portal (CVP) - General D
Replied by: Janine Graves on 26-02-2013 01:45:03 PM
Hemal,
In the CallbackEntry app, after the element executes that determines if
the phone number is allowed to be called back or not, it's the app that
is branching and telling the caller that this is not a valid number to
callback. It's not the gateway blocking the call.

Subject: RE: New Message from Janine Graves in Customer Voice Portal (CVP) - General
Replied by: Hemal Mehta on 26-02-2013 02:03:03 PM
Yes, that makes sense.
Thx

From: Cisco Developer Community Forums [mailto:cdicuser@developer.cisco.com]
Sent: Tuesday, February 26, 2013 1:45 PM
To: cdicuser@developer.cisco.com
Subject: New Message from Janine Graves in Customer Voice Portal (CVP) - General Discussion - All Versions: Re: New Message from Hemal Mehta in Customer Voice Portal (CVP) - General D

Janine Graves has created a new message in the forum "General Discussion - All Versions": -------------------------------------------------------------- Hemal,
In the CallbackEntry app, after the element executes that determines if
the phone number is allowed to be called back or not, it's the app that
is branching and telling the caller that this is not a valid number to
callback. It's not the gateway blocking the call.
--
To respond to this post, please click the following link: http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12405841 or simply reply to this email.

Subject: Re: New Message from Kristian Martell in Customer Voice Portal (CVP) - Gene
Replied by: Bill Westby on 07-03-2013 07:12:58 PM
Now that we have CCB working with stock apps and PRIs only for now (thanks
to everyone who helped with that), I'm moving all the ICM queue treatments
into Call Studio since that is where the call has to be held.

I've hit a snag, an example is how do you test if reps are still logged
in?   The ReqICMLabel element only provides PV values that I can tell,
anyone have thoughts on how I could query ICM skill group data from my app,
guess I could write a SQL query element against the DB directly and read
the agent and skill group real time tables?

Also we have global "Emergency" variables that are checked every queue loop
in case of evacuation so need to be able to check those as well..I guess
for that I could set those variables using a CVP app which writes the
current data to a local resource file and returns it to ICM as well.

Lastly, the RONA handling in the sample ICM script just disconnects the
call.  So I enabled requery on the queue node and send it back to
CallbackQueue with the ECC CCB var set to "N" for the remainder of the
call, seems to work but just if anyone thinks that is not right, or not how
you did it, I'd like to hear about it.

Thanks again,

Bill Westby.


>
> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12390220or simply reply to this email.

Subject: Re: New Message from Bill Westby in Customer Voice Portal (CVP) - General D
Replied by: Janine Graves on 08-03-2013 12:22:18 PM
Can't you call ICM from ReqIcmLabel element and have ICM execute an IF
element and check number of agents logged in? Or in a skill group? ICM
can assign those values into the ToExtVXML array with semi-colon
separated name=value pairs.

Those will come into Studio as Session data (similarly to the way ICM
sends data when it first sends a call to Studio).

Subject: RE: Re: New Message from Bill Westby in Customer Voice Portal (CVP) - Gener
Replied by: Bill Webb on 08-03-2013 01:07:41 PM
Yes, what Janine said... ;-)
I'm a big fan of the ReqICMLabel element, though using it in this fashion is not necessarily how it is designed to be used, according to Cisco on some other threads, BUT it does work.
Just remember the rules are the same, even though it might seem backwards. This is CVP sending a request to ICM (reverse of the norm), but the information from CVP to ICM is still passed in the FromExtVXML variable array, and information from ICM returned to CVP in the response is still in the ToExtVXML variable array. The cool thing, though, is that you can also get Call Variable information directly, and a "result" Element data with the ICM Label.
I've <ahem> "modified" the ReqICMLabel element to de-couple it somewhat from its intended use, so that I can set the request data specifically (DN, ANI, etc.), but I'd love to see this done more officially...
Hey Cisco, if you're listening - think of ReqICMLabel in CVP Comprehensive deployment like "Get Reporting Statistic" step in UCCX. Maybe create a new element with this in mind, or release the source code for this element so we can modify ourselves?

Subject: Re: New Message from Bill Webb in Customer Voice Portal (CVP) - General Dis
Replied by: Janine Graves on 08-03-2013 01:21:18 PM
Be careful with ReqIcmLabel element - it will affect your ICM reports
because this element causes a request to ICM that looks like  another
'NewCall' for the original dialed number.

And that's where I think Cisco should enhance this element - decouple it
from the original DNIS. Then it would be very useful!

FYI - ReqIcmLabel element can configure the Settings to populate the 10
PVs and the FromExtVxml and the caller_input veriables (that's a lot of
data you can send from VxmlServer to ICM).

And ICM can modify the PVs (assign a new value) and they will become
element data for the ReqIcmLabel element (called callvarReturn1, 2, 3,
etc).

ICM can also  populate the ToExtVxml array with semi-colon separated
name=value pairs, these will become Session data with those names/values.

ICM ends with Label node, and that value also becomes element data
called 'result' for the ReqIcmLabel element.

Subject: Re: New Message from Janine Graves in Customer Voice Portal (CVP) - General
Replied by: Bill Westby on 11-03-2013 10:04:18 AM
Janine and Bill,

Thanks for the replies.  After much googling I found an old thread with
both of you involved in this exact topic :-)   There was lots of talk about
only working with CVP Standalone until 8.5 but I have no reference any
longer as we are on 8.5

So I followed that thread and tried to get ReqICMLabel working but it was
failing to find a script for the DN which in my case turned out to be
SIGDIG + what I think was the correlation ID.  So I found in that thread
that if I override _dnis in the ToVXML I could specifiy what DN I wanted to
invoke and execute my routing script to population PV1-10 and return to
CVP.  Woohoo it worked.

For anyone who wants to give it a try I agree with Bill, I'm now a big fan
of the element, and here's what I did:

1) If needed override _dnis in ToVXML passed into CVP.  You'll know if you
need to by first trying the element in one of your CVP applications then
check the Router Log Viewer in ICM when the ReqICMLabel fails to find out
what DN is being passed.  Or you can check your activity log and see what
_dnis is being passed into your app by CVP.
2) Configure the DN (_dnis value) in ICM, need one for each CVP routing
client you have configured.
3) Create a call type for the DN and associate with the DN
4) Create a routing script that populates PV1-10 as needed, you can also as
mentioned populate the FromExtVXML and caller_input vars, keep in mind the
PV vars are two way, you can pass data to your routing script and use that
to determine what to do.  So you could use the same DN for multiple
applications and pass for example in PV1=<ID> and then in your routing
script test If PV1=<ID> do this else do that...
5) Associate the call type in call type manager with the routing script.
6) Very important, the last node in your ICM script should be a label/  I
used a dynamic one and just returned "BACKFROMICM" since I don't really
care what the label is.
7) Use ReqICMLabel in your Studio app, populate call vars 1-10 and when
your routing script starts in ICM you can test the values and make further
"if" routing decisions, then populate call vars 1-10 and return them to
CVP.  Note that you have to hard code the element data in ReqICMLabel on
the return, why they don't make it available in the drop down boxes is odd,
but it works if you follow the examples in the Element Specification Guide
for CVP 8.5.

THANKS!!!

Bill Westby.

On Fri, Mar 8, 2013 at 11:21 AM, Cisco Developer Community Forums <
cdicuser@developer.cisco.com> wrote:

> Janine Graves has created a new message in the forum "General Discussion -
> All Versions":
> -------------------------------------------------------------- Be careful
> with ReqIcmLabel element - it will affect your ICM reports
> because this element causes a request to ICM that looks like another
> 'NewCall' for the original dialed number.
>
> And that's where I think Cisco should enhance this element - decouple it
> from the original DNIS. Then it would be very useful!
>
> FYI - ReqIcmLabel element can configure the Settings to populate the 10
> PVs and the FromExtVxml and the caller_input veriables (that's a lot of
> data you can send from VxmlServer to ICM).
>
> And ICM can modify the PVs (assign a new value) and they will become
> element data for the ReqIcmLabel element (called callvarReturn1, 2, 3,
> etc).
>
> ICM can also populate the ToExtVxml array with semi-colon separated
> name=value pairs, these will become Session data with those names/values.
>
> ICM ends with Label node, and that value also becomes element data
> called 'result' for the ReqIcmLabel element.
> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12799975or simply reply to this email.

Subject: RE: Re: New Message from Janine Graves in Customer Voice Portal (CVP) - Gen
Replied by: Janine Graves on 11-03-2013 10:54:36 AM
Thanks for posting a complete overview of how you made it work!
And I did NOT know that you could override the _dnis and get a different ICM script to kick off! That's great news and I will definitely pass it along to my students. Now, ReqICMLabel is a VERY useful element!
 
Hooray for the forum allowing us to pool all these fragments of knowledge into a very useful body of knowledge!
 
 

Subject: Re: New Message from Janine Graves in Customer Voice Portal (CVP) - General
Replied by: Bill Westby on 11-03-2013 11:38:58 AM
Allow me to give proper credit, here is the thread :
http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/5400484

Paul Tindall discovered that nugget.  Now everyone "ssshhh" so they don't
take it away LOL :-)

Bill.

On Mon, Mar 11, 2013 at 8:54 AM, Cisco Developer Community Forums <
cdicuser@developer.cisco.com> wrote:

> Janine Graves has created a new message in the forum "General Discussion -
> All Versions":
> -------------------------------------------------------------- Thanks for
> posting a complete overview of how you made it work!
> And I did NOT know that you could override the _dnis and get a different
> ICM script to kick off! That's great news and I will definitely pass it
> along to my students. Now, ReqICMLabel is a VERY useful element!
>
> Hooray for the forum allowing us to pool all these fragments of knowledge
> into a very useful body of knowledge!
>
>
> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12879416or simply reply to this email.

Subject: RE: Re: New Message from Janine Graves in Customer Voice Portal (CVP) - Gen
Replied by: Paul Tindall on 11-03-2013 12:12:22 PM
Bill,
That's funny, you've just cleared my conscience.  I was reading Janine's reply and feeling guilty that I'd never told anyone about that, yet I actually did think I had.  Problem with the forum is the useful snippets can get a bit dispersed and buried.   We probably need to collate some of these into 100 Useful CVP Tips or something similar.

Subject: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - General
Replied by: Janine Graves on 11-03-2013 12:31:58 PM
Paul,That would be great! Wish you could help with more of the things I don't know - like does the vxml gateway hold the 'disconnect' event until it gets the next vxml page from the vxml server? Janine -- Janine Graves

Subject: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - General
Replied by: Bill Westby on 11-03-2013 12:47:58 PM
Paul I agree, sometimes it's like following a trail of bread crumbs to the
mean old lady's house ha.  I tend to internal Wiki everything I find like
how to enable VXML debugging, how to add email support, and now how to use
reqICMLabel because it's not so often I have to do those things.  Wonder if
we could have a sub forum created for that on the site, where we could post
these useful nuggets we find as you suggested in a top 100 type format, or
FAQ area sort of thing.
Bill.

On Mon, Mar 11, 2013 at 10:12 AM, Cisco Developer Community Forums <
cdicuser@developer.cisco.com> wrote:

> Paul Tindall has created a new message in the forum "General Discussion -
> All Versions":
> -------------------------------------------------------------- Bill,
> That's funny, you've just cleared my conscience.  I was reading Janine's
> reply and feeling guilty that I'd never told anyone about that, yet I
> actually did think I had.  Problem with the forum is the useful snippets
> can get a bit dispersed and buried.   We probably need to collate some of
> these into 100 Useful CVP Tips or something similar.
> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/1288138 suspicious r simply reply to this email.

Subject: RE: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - Gene
Replied by: Paul Tindall on 12-03-2013 04:04:20 AM
Janine,
What are the other things you don't know?

Subject: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - General
Replied by: Janine Graves on 12-03-2013 11:42:58 AM
Hi Paul, Thanks for asking! Here are a few things I don't know (off the
top of my head):

1. Courtesy Callback is a bit of a mystery. I totally understand the ICM
script and the 5 Studio applications. But, the Studio Callback elements
are a bit mysterious in what they're doing behind the scenes.

A) During Courtesy Callback, there are 2 wait times continually being
decremented. The one from ICM (using whatever formula the user enters
into the script) and another one calculated internally. Can you tell me
how this second one is being calculated?

In the Callback Entry app that announces the EWT, is it speaking the
EWT from ICM or the internally calculated EWT?

C) After disconnecting the caller during CCB, if a lot of agents
suddenly log in (or out) will the callback occur sooner (or later) than
the estimated time originally spoken to the caller? That is, can the CCB
somehow detect this?

2. Is there a way to clear the vxml gateway's DTMF-buffer (the
type-ahead buffer) from the Studio application?

3. With the ICM "PM" microapp, the gateway blocks on audio (plays it to
completion) - is there any way from the Studio application to accomplish
this (other than to play the Audio from another invoked Subdialog
application?)

4. When playing a combination of pre-recorded audio prompts and TTS
prompts from one Studio element, is it always the TTS server that
retrieves the pre-recorded audio file? And is it cached on the TTS
server or on the Vxml Gateway? I'm using RealSpeak 4.0 and that's
currently the behavior (in this case, the prompt isn't being cached on
the gateway).

5. Are there any plans to support certificates and secure web service
connections in the WebServices element? Every customer uses web services
for the 'secure' nature of them.

THANKS!!!!

Subject: Re: New Message from Bill Westby in Customer Voice Portal (CVP) - General D
Replied by: Bill Westby on 12-03-2013 11:45:58 AM
Discovered some interesting stuff testing the ReqICMLabel and overriding
_dnis in the ToVXML:

If I do not override _dnis in ToVXML parameters, my _dnis is passed as my
test toll free number as expected.  When I execute ReqICMLabel it uses
SIGDIG+correlationID as the DNIS which is impossible to program.  Of course
I wouldn't really want t to use my toll free number since that would fire
off the routing script I originally came in on, but just thought that was
interesting, I wish ReqICMLabel would allow a DN value as an input param.

If I do override _dnis in the ToVXML parameters then ReqICMLabel uses that
_dnis to execute the routing script.

I'm not sure if overriding _dnis will impact courtesy callback or not, I
set the dnis in the queue defaults element so hopefully not, still testing
that part.

Bill W.

On Thu, Mar 7, 2013 at 5:13 PM, Cisco Developer Community Forums <
cdicuser@developer.cisco.com> wrote:

> >
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12390220orsimply reply to this email.
> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12772475or simply reply to this email.

Subject: RE: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - Gene
Replied by: Bill Webb on 12-03-2013 11:50:20 AM
Hi Paul -
For me, I'm happy to have some acknowledgment that the element can be used in the manner we're talking about, within a "Comprehensive" CVP deployment. I think one of the other things we need to know is whether there are any other caveats to using the element in this manner? I've seen it behave strangely if it is called out multiple times within a short time span (in terms of the application and its execution, that is).
Not to repeat my sermon from the other thread, but I do think since this has come up again that it is good for Cisco to see the value in it. There are lots of good reasons for not bouncing back and forth between UCCE and CVP for things like queuing loops or even menu trees, etc. One example is even architectural - if you want to use a centralized UCCE/CVP deployment and you have remote gateways in another country, for instance, where network latency can cause call processing delays, then this can be mostly remedied or at least worked around by limiting the number of "Run External Script" calls the UCCE script makes.
I see 3 key things (though certainly this isn't all-inclusive) needed to minimize the "back and forth":
1. Ability to view real-time data/environment variables (the ReqICMLabel element can provide this, as we're talking about - again, I liken it to an enhanced version of "Get )
2. Ability to get valuable reporting data for calls in Studio apps (CVP Reporting Server is a good start - need more templates that are geared towards self-service or menu navigation)
3. Ability to set/change Call Type form within a Studio app for the active call (does not yet exist, but would be a GREAT feature...!)
4. Ability to update CED and Call Variables from within a Studio app (does not exist yet, would be a nice to have, and since the "update" function is part of the GED-125 interface, it would seem like it is not much of a stretch. The ReqICMLabel element already allows it via a route request/request instruction message)
You're inching your way there - inclusion of the ani/dnis/cid information in 8.5 was a welcome addition...can we get CED and Call Variables automatically as well? ;-)

Subject: RE: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - Gene
Replied by: Paul Tindall on 12-03-2013 05:57:08 PM
Maybe I'm already beginning to regret asking.  Let me start with an easy one; they're not all going to get answers tonight.

3. With the ICM "PM" microapp, the gateway blocks on audio (plays it to
completion) - is there any way from the Studio application to accomplish
this (other than to play the Audio from another invoked Subdialog
application?)


Answer
The PM microapp VoiceXML includes an <object> element after the audio part that points to something that doesn't exist.  It's just there as a dummy to cause the document to block until the audio has completed.  In an earlier CVP release you may have been aware of a different method to achieve the same effect; instead of using an <object> element there used to be a dummy <transfer> element specifying 987654 as the destination.   This transfer was intended to always fail but the sub-optimal choice of the dummy destination (beginning with 9) meant that configured intended to fail. 
On Studio, out the box, there's no way to play blocking audio using the Audio Element; you have to use a different element that includes an audio group but will block, such as transfer, caller input, etc.  The more elegant way is to build a custom element or extend the standard Audio Element to include a boolean setting to wait for audio completion or not and include the dummy <object> if blocking is selected.

Hope that helps as a starting point.

Paul

Subject: RE: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - Gene
Replied by: Paul Tindall on 12-03-2013 06:04:40 PM
The answer was corrupted slightly for some reason when I published so here it is again (hopefully corrected).


Answer
The PM microapp VoiceXML includes an <object> element after the audio part that points to something that doesn't exist.  It's just there as a dummy to cause the document to block until the audio has completed.  In an earlier CVP release you may have been aware of a different method to achieve the same effect; instead of using an <object> element there used to be a dummy <transfer> element specifying 987654 as the destination.   This transfer was intended to always fail but the sub-optimal choice of the dummy destination (beginning with 9) meant that it often matched a dial peer inadvertantly.   If anyone wondered, that's why the config guide included setup for a dial peer with destination 987654 that was configured explicitly to reject the transfer attempt.
 
On Studio, out the box, there's no way to play blocking audio using the Audio Element; you have to use a different element that includes an audio group but will block, such as transfer, caller input, etc.  The more elegant way is to build a custom element or extend the standard Audio Element to include a boolean setting to wait for audio completion or not and include the dummy <object> if blocking is selected.


 

Subject: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - General
Replied by: Janine Graves on 12-03-2013 06:22:58 PM
That helps. I can teach my Java students to extend the Audio element to contain the object tag. I didn't realize that's how ICM accomplished it even though I've looked at the playmedia template file before. Thanks!   -- To respond to this post, please click the following link: http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12943310 or simply reply to this email. -- Janine Graves

Subject: RE: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - Gene
Replied by: Paul Tindall on 13-03-2013 09:45:03 AM
Yes, PlayMediaIOS is the one. The other one was for the internal voice browser in the old Version 1.0 H.323 model which didn't use the IOS VoiceXML capability.

Subject: RE: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - Gene
Replied by: Janine Graves on 13-03-2013 09:35:04 AM
Hi Paul,
I always assumed PlayMedia.template was the file used for the PM microapp when playing audio from Media Server. But I must be wrong as it doesn't contain an <object> tag.
However, the PlayMediaIOS.template contains an <object> tag with an imbedded <prompt> - this must be the one you are talking about.

Thanks for clarifying this for me. I've wondered about it for about 4 years!

Subject: Re: New Message from Bill Webb in Customer Voice Portal (CVP) - General Dis
Replied by: Bill Westby on 18-03-2013 01:03:10 PM
Seems you cannot invoke reqICMLabel from in an application called by a
"sub-dialog invoke" in CVP (e.g. "BillingQueue" example in CC.   All the
values are passed as "NA" but they actually must be 'null' because a call
to reqICMLabel throws a null pointer exception in the error log.  I tried
passing both "_dnis" and "dnis" as some value in the sub-dialog invoke with
no luck.  If anyone has an idea how to pass it that would be wonderful.
Otherwise I'll continue to use reqICMLabel from the root CVP app which
works fine, just more programming for multiple skill sets using the feature.

10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.292,,start,source,CallbackEntry
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.292,,start,ani,NA
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.292,,start,areacode,NA
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.292,,start,exchange,NA
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.292,,start,dnis,NA
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.292,,start,uui,NA
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.292,,start,iidigits,NA
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.292,,start,parameter,callid=48B82C8000010000000000F964FA1F0A
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013 12:09:08.292,CVP
Subdialog Start_01,enter,
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013 12:09:08.527,CVP
Subdialog Start_01,exit,done
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.527,getDefaultAudioPath,enter,
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.527,getDefaultAudioPath,custom,INFO,IVRAudioPath=
http://10.31.250.14/en-us/app/CRDM/
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.527,getDefaultAudioPath,exit,Done
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.527,setDefaultAudioPath,enter,
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.527,setDefaultAudioPath,exit,done
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.527,get_set_SystemAudioPath,enter,
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.527,get_set_SystemAudioPath,custom,INFO,SystemAudioPath=
http://10.31.250.14/en-us/sys/
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.527,get_set_SystemAudioPath,exit,Done
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.527,ReqICMLabel_01,enter,
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.527,ReqICMLabel_01,element,error,A custom element encountered an
exception.
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.527,ReqICMLabel_01,exit,
10.31.250.14.1363626542599.32.CRDMPSQueue,03/18/2013
12:09:08.527,,element,error,


Thanks,
Bill Westby.



> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12928580or simply reply to this email.

Subject: Re: New Message from Bill Westby in Customer Voice Portal (CVP) - General D
Replied by: Janine Graves on 18-03-2013 01:17:09 PM
Bill, Did you try passing _dnis in the URL string (the same way ICM
passes it?) - it'll show in the Activity Log, and it'll be copied into
CallData dnis and Session Data _dnis. You could also pass the _ani this
way if you needed to.

URL: /CVP/Server?application=SomeApp&_dnis=1234

And in the Subdialog app do NOT enter _dnis in the SubdialogStart element.

Subject: Re: New Message from Bill Westby in Customer Voice Portal (CVP) - General D
Replied by: Janine Graves on 18-03-2013 01:19:09 PM
Just noticed your log - you must be passing dnis in the Setting called:
Parameter - this won't create the right thing. Try the method I just
sent you. It'll work, I'm sure (although I haven't tried it, but you'll
see the DNIS and _dnis in the Activity Log.

Subject: Re: New Message from Janine Graves in Customer Voice Portal (CVP) - General
Replied by: Bill Westby on 18-03-2013 01:49:35 PM
Yeah, that fixed it, thanks Janine!   Ah, that makes life so much easier.

Very cool.

Bill Westby.

On Mon, Mar 18, 2013 at 11:17 AM, Cisco Developer Community Forums <
cdicuser@developer.cisco.com> wrote:

> Janine Graves has created a new message in the forum "General Discussion -
> All Versions":
> -------------------------------------------------------------- Bill, Did
> you try passing _dnis in the URL string (the same way ICM
> passes it?) - it'll show in the Activity Log, and it'll be copied into
> CallData dnis and Session Data _dnis. You could also pass the _ani this
> way if you needed to.
>
> URL: /CVP/Server?application=SomeApp&_dnis=1234
>
> And in the Subdialog app do NOT enter _dnis in the SubdialogStart element.
> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/1320972 suspicious r simply reply to this email.

Subject: Re: New Message from Bill Webb in Customer Voice Portal (CVP) - General Dis
Replied by: Bill Westby on 19-03-2013 11:28:10 AM
I can't figure out why Cisco uses a CVP Subdialog start and return in the
"queue" app part of the Courtesy Call Back sample Studio apps.  I want to
return data to the calling application and the only way to get to the queue
app is from CallbackEntry or CallbackQueue, you can't get there from ICM.

For the life of me, and I'm pleading dumb here, I tried to return a
variable via the CVP Subdialog return in the queue app and it always comes
back empty.  I switched the queue app to regular Subdialog starts and
returns and it works fine.

When I use CVP Subdialog Return and set var=value in the return VXML
parameter it just goes empty in the calling app, what am I missing ?  WIth
all the warnings to not modify some of the sample apps not sure I want to
switch out the Subdialog elements in the queue app or not, works ok but
concerned about support if something goes wrong.

Thanks,
Bill Westby.

> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12928580or simply reply to this email.

Subject: Re: New Message from Janine Graves in Customer Voice Portal (CVP) - General
Replied by: Janine Graves on 19-03-2013 12:31:10 PM
Oops, typo: The second part should've said: And in the CallbackEntry and CallbackQueue apps, if you want to receive the data back, then set the ReturnValue settings to Return Value: caller_input Return Value: FromExtVXML0 Return Value: FromExtVXML1 (Careful to get the upper/lower case correct!)

Subject: Re: New Message from Bill Westby in Customer Voice Portal (CVP) - General D
Replied by: Janine Graves on 19-03-2013 11:52:35 AM
I wonder the same thing!  The ONLY reason to use CVP_Subdialog_Return is
if this app is sometimes called directly from ICM.
I bet it's left over from when they were testing/developing the CCB
code. Perhaps they were calling it from ICM Microapps.

Here's one thing you could do if you're squeamish about replacing the
CVP_Subdialog_Return. In this element, just return data without
name=value pairs. For example:
Caller Input:  success
FromExtVXML0:  janine
FromExtVXML1:  graves

And in the CallbackEntry and CallbackQueue apps, if you want receive the
data back, then set the ReturnValue settings to
Parameter: caller_input
Parameter: FromExtVXML0
Parameter: FromExtVXML1

(these have to be spelled the way they are returned from the
CVP_Subd_Return element)

Subject: Re: New Message from Janine Graves in Customer Voice Portal (CVP) - General
Replied by: Bill Westby on 19-03-2013 01:02:09 PM
Thanks Janine, I'll give it a try, appreciate your help.

I have another question for you and the group...

For anyone using Survivability, do you run every ingress call through
the survivability TCL script or just specific numbers in the dial-peers.
We use CUSP and 99% of our calls arrive on the same 800 number we route all
8T to CUSP.  So we would have to have survivability on that dial-peer by
default to offer CCB later on.  Just curious if anyone has any experience
if this puts any addiitional load on the gateway or caused you other issues
like with voicemail, dtmf, etc. I'm working to find a resource at Cisco via
our VAR but figured I'd ask here first :-)

Thanks, Bill.

On Tue, Mar 19, 2013 at 10:31 AM, Cisco Developer Community Forums <
cdicuser@developer.cisco.com> wrote:

> Janine Graves has created a new message in the forum "General Discussion -
> All Versions":
> -------------------------------------------------------------- Oops, typo:
> The second part should've said: And in the CallbackEntry and CallbackQueue
> apps, if you want to receive the data back, then set the ReturnValue
> settings to Return Value: caller_input Return Value: FromExtVXML0 Return
> Value: FromExtVXML1 (Careful to get the upper/lower case correct!)
> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/13257133or simply reply to this email.

Subject: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - General
Replied by: Bill Westby on 26-03-2013 01:19:51 PM
I've now run into an issue moving things into production for CCB.  It has
to do with the "Callback_Enter_Queue".

In our lab it returns the ewt I passed in from ICM "ewt=xx" as element data
(not all logs are pasted here, I snipped the relevant ones):
10.31.250.14.1364316083193.15.CallbackEntry,03/26/2013
11:41:23.193,,start,parameter,qname=CRDMPS
10.31.250.14.1364316083193.15.CallbackEntry,03/26/2013
11:41:23.193,,start,parameter,queueapp=CRDMPSQueue
10.31.250.14.1364316083193.15.CallbackEntry,03/26/2013
11:41:23.193,,start,parameter,ewt=60
10.31.250.14.1364316083193.15.CallbackEntry,03/26/2013 11:41:23.568,Enter
Queue_01,data,ewt,60

In production it always returns 0 as ewt:
10.48.143.191.1364319696831.7630.CallbackEntry,03/26/2013
12:41:36.831,,start,parameter,qname=CRDMPS
10.48.143.191.1364319696831.7630.CallbackEntry,03/26/2013
12:41:36.831,,start,parameter,queueapp=CRDMPSQueue
10.48.143.191.1364319696831.7630.CallbackEntry,03/26/2013
12:41:36.831,,start,parameter,ewt=187
10.48.143.191.1364319696831.7630.CallbackEntry,03/26/2013
12:41:37.065,Enter Queue_01,data,ewt,0

Same ES6 and ES10 on lab and production Call and VXML Servers.

Only difference is ES6 and ES17 on the CVP reporting servers.  The lab is
just base reporting server.  Do I need ES10 on reporting server as well and
if so do I need to remove ES17, apply ES10, apply ES17 again, unclear if
they have to be installed in numerical order.

Has anyone experienced this issue during your testing ?

Thank you. Bill Westby.

Thanks, Bill.

On Sat, Feb 23, 2013 at 12:04 AM, Cisco Developer Community Forums <
cdicuser@developer.cisco.com> wrote:

> Paul Tindall has created a new message in the forum "General Discussion -
> All Versions":
> -------------------------------------------------------------- Control is
> passed temporarily from VoiceXML to a TCL application on the VoiceXML
> gateway.  The handoff failure is because the the TCL applications haven't
> been configured on that gateway.   Set them up as shown in the config guide
> and that error should be sorted.
> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/12293401or simply reply to this email.

Subject: Re: New Message from Bill Westby in Customer Voice Portal (CVP) - General D
Replied by: Janine Graves on 26-03-2013 02:28:50 PM
Bill, If you run the CCB diagnostic console when that call enters the studio app, does it also show ewt=0? http://IPreportingserver:8000/cvp/CallbackServlet?method=Diag

Subject: Re: New Message from Janine Graves in Customer Voice Portal (CVP) - General
Replied by: Bill Westby on 26-03-2013 03:42:50 PM
Hi Janine,

No it does not, it updates ICM EWT with whatever you pass to it with the
current call, constantly updating it.

I'm doing more testing to see if the callback actual wait time is having an
issue.   I modified the CVP "math" element provided with the CVP
CallbackEntry sample app to calculate ewt in minutes to look at the session
ewt instead of the Callback_enter_queue element data which fixes the ewt
playback wait time to caller issue.

But once in my testing I passed in a 4 minute ewt and before I could even
hangup the scheduled callback session it was already calling me back which
concerned me and started me down this path where I found this ewt,0 value
was always being returned after Callback_Enter_Queue where before it was
passing back the ewt.

I guess whether this impacts callback times is still inconclusive like I
said, still testing.  I am curious if anyone else has these ES's installed
on their reporting servers and had any issues.

Thanks!!!

Bill.



On Tue, Mar 26, 2013 at 12:28 PM, Cisco Developer Community Forums <
cdicuser@developer.cisco.com> wrote:

> Janine Graves has created a new message in the forum "General Discussion -
> All Versions":
> -------------------------------------------------------------- Bill, If you
> run the CCB diagnostic console when that call enters the studio app, does
> it also show ewt=0?
> http://IPreportingserver:8000/cvp/CallbackServlet?method=Diag<http://ipreportingserver:8000/cvp/CallbackServlet?method=Diag>
> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/13534052or simply reply to this email.

Subject: Re: New Message from Janine Graves in Customer Voice Portal (CVP) - General
Replied by: Bill Westby on 26-03-2013 03:42:51 PM
Hi Janine,

No it does not, it updates ICM EWT with whatever you pass to it with the
current call, constantly updating it.

I'm doing more testing to see if the callback actual wait time is having an
issue.   I modified the CVP "math" element provided with the CVP
CallbackEntry sample app to calculate ewt in minutes to look at the session
ewt instead of the Callback_enter_queue element data which fixes the ewt
playback wait time to caller issue.

But once in my testing I passed in a 4 minute ewt and before I could even
hangup the scheduled callback session it was already calling me back which
concerned me and started me down this path where I found this ewt,0 value
was always being returned after Callback_Enter_Queue where before it was
passing back the ewt.

I guess whether this impacts callback times is still inconclusive like I
said, still testing.  I am curious if anyone else has these ES's installed
on their reporting servers and had any issues.

Thanks!!!

Bill.



On Tue, Mar 26, 2013 at 12:28 PM, Cisco Developer Community Forums <
cdicuser@developer.cisco.com> wrote:

> Janine Graves has created a new message in the forum "General Discussion -
> All Versions":
> -------------------------------------------------------------- Bill, If you
> run the CCB diagnostic console when that call enters the studio app, does
> it also show ewt=0?
> http://IPreportingserver:8000/cvp/CallbackServlet?method=Diag<http://ipreportingserver:8000/cvp/CallbackServlet?method=Diag>
> --
> To respond to this post, please click the following link:
> http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/13534052or simply reply to this email.

Subject: RE: Re: New Message from Bill Westby in Customer Voice Portal (CVP) - Gener
Replied by: Janine Graves on 08-04-2013 04:18:16 PM
Pushing the envelope to use ReqIcmLabel element to set call types in ICM - here are a few things I just tried (get a life, Janine! :-)
I'd like to know people's opinion - which of these is best or worthwhile - for the sake of ICM reporting.
 
As some of you know, if the caller hangs up before they hear the goodbye played from VxmlServer in its entirety, the ICM script aborts in the RunExtScript node and no data is returned to ICM. This proposes a workaround to that:
1)a) In ICM, set the ToExtVXML array with "_dnis=XXXX" (where XXXX is a dnis that hits an ICM script that will run when you use ReqIcmLabel element in Studio. The ICM Script for dnis XXXX checks PVs and sets appropriate CallTypes based on these PVs and ends with a Label element).
b) In Studio, use a HotEvent element that catches telephone.disconnect.hangup (caller hung up)
c) connect this to a ReqIcmLabel element and send data to an ICM script to set call types based upon what the caller did in Studio.
d) connect this to either a CVP_Subdialog_Return or Hangup element (so Studio deploys, since these have no exit states). I think either of these will cause CallServer errors, since the call is already gone.
e) My 2 qualms about this method are (i)sending in a fake _dnis to the Studio app; and (ii) Using CVP_Subd_Return or Hangup after the call's already ended.
------------------------------------------------------------
To get around the 1st qualm of sending in a fake _dnis - here's a workaround I just verified:
Instead of setting the _dnis=XXXX in the ICM routing script,  you can use a Studio SubdialogInvoke element (when the caller hangs up) and set the _dnis in the URL string that invokes the subdialog app (URI: /CVP/Server?application=SetCallTypeApp&_dnis=XXXX). (Where SetCallTypeApp is a Studio app; and XXXX = number that triggers the ICM script that sets the call types). 
In the invoked Studio App (SetCallTypeApp), retrieve data passed in, use the ReqIcmLabel element to pass data to ICM to set call types; and return to the main Studio app using Subdialog_Retrun.
So now the scenario is:
2) a) don't override _dnis in the ICM script.
a) In Studio, use a HotEvent element that catches telephone.disconnect.hangup (caller hung up).
b) connect this to a SubdialogInvoke element (URI:/CVP/Server?application=SetCallTypeApp&_dnis=XXXX)  and  pass data for call types to set;
c) connect the SubdInvoke to either a CVP_Subdialog_Return or a Hangup element (for syntactical purposes).
----------------------------------------------------------------------
Questions:
1) Is it better to use a SubdialogInvoke so you don't need to muck around with the _dnis being sent from ICM?
2) Is it worth putting up with the Hangup error (since the call's already ended) so you can set ICM call types if caller hangs up in VxmlServer app?
3) Or is it better to use End of Call java to send the caller_input and FromExtVxml array to the Termination Call Variable table and then have to use it for reporting info for caller hangups?

Thanks! Janine
 
 

Subject: RE: Re: New Message from Bill Westby in Customer Voice Portal (CVP) - Gener
Replied by: Jameson Gagnepain on 08-04-2013 04:47:18 PM
Janine,

1) I agree, overriding the DNIS seems an inelegant way to pass data to ICM. Using SubdialogInvoke to send the data to a single-purpose CVP app which then sends the data to ICM is a little roundabout, but it's also simpler to troubleshoot because of the compartmentalization, and easier to re-use.
2) Reporting on Hangup events sounds important to me... though if the call initiates in ICM, you'll have an "abandon" count within the call type report for any calls which ICM isn't performing the hangup on anyway. The Hangup error is more useful for recording what happened in the call, not that the caller hung up. I would think of the Hangup error as a way purely to send the data back to ICM which it would have otherwise gotten had the caller stayed on the line long enough.
3) If I can do something directly within the Call Studio visual workspace (instead of End of Call Java), it's much easier for the next person to understand my code. Also, I wouldn't make a habit of manually insert/updating anything to UCCE standard databases.

-Jameson

Subject: RE: Re: New Message from Hemal Mehta in Customer Voice Portal (CVP) - Gener
Replied by: Hemal Mehta on 11-09-2013 01:06:40 PM
Folks,
    I see this  forumla provided in the  the Math element (EWT in minutes) for EWT:
((({Data.Element.Enter Queue_01.ewt}/60 * 1000000000000000) - (({Data.Element.Enter Queue_01.ewt}/60 * 1000000000000000) % 1000000000000000))/1000000000000000) + 1 
Does this work ?
Hemal

Subject: Re: New Message from Hemal Mehta in Customer Voice Portal (CVP) - General D
Replied by: Janine Graves on 11-09-2013 01:44:25 PM
Yes, they're converting seconds to minutes and adding 1 minute on (Perhaps trying to avoid round off errors with all those zeroes) -- Janine Graves

Subject: RE: Re: New Message from Hemal Mehta in Customer Voice Portal (CVP) - Gener
Replied by: Jameson Gagnepain on 11-09-2013 02:08:48 PM
It looks like the equation is trying to fake integer math with real numbers. If you refactor the math a little, you get this:
({Data.Element.Enter Queue_01.ewt}/60)  -  (({Data.Element.Enter Queue_01.ewt}/60 * 1000000000000000) % 1000000000000000)/1000000000000000) + 1
Which is roughly equivalent to (give or take a few decimal places):
({Data.Element.Enter Queue_01.ewt}/60)  -  (({Data.Element.Enter Queue_01.ewt}/60 * 1000) % 1000)/1000) + 1
Basically, that second parenthesis group is designed to give whatever's after the decimal in that first "(EWT/60)" value, so in total you end up with just the integer portion in minutes. The "+1" is to round up to the next integer.
Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community:

Quick Links