« Back to General Discussion - All Versions

RE: Re: New Message from Bill Westby in Customer Voice Portal (CVP) - Gener

Combination View Flat View Tree View
Threads [ Previous | Next ]
Showing 21 - 40 of 54 results.
of 3
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.

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.

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).

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?

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.

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.

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!
 
 

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.

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.

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

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/1288138emoticonr simply reply to this email.

Janine,
What are the other things you don't know?

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?

emoticonIn 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!!!!

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.

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? ;-)

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

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.


 

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

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!

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.

Showing 21 - 40 of 54 results.
of 3