Hi Janine,
Today the ReqICMLabel functionality is supported in the standaone model only. Based on tests that I have done, it won't work in the comprehensive model today since the call server does not pass the ANI/DNIS up to the VXML Server as part of the VXML generated via the GS VXML template when starting the VXML Server sub-dialog(i.e. send call to VXML Server to run an app)
One could pass the DNIS/ANI today using the ToExtVXML vars array but then would somehow need to override the ANI/DNIS in CallData of the VXML app since that's the one that's used when the ReqICMLabel from VXML Server is sent to CVP Call Server. As far as I know, it's not possible to override the call data with session data.
Even if the change is made where this data is passed up to the VXML Server, the current implementation would not easily fit in the comprehensive call flow for the following reason.
Comprehensive call flow is as follows:
- Call comes into CVP call server (SIP or H.323) with DNIS 1111
- Switch leg dialog is setup with ICM and NEW_CALL request is sent to ICM
- ICM responds with a VRU label on the switch leg
- SIP or H.323 sub-system will send an outbound call to the VXML GW to setup the VRU leg of the call
- VRU leg dialog is setup with ICM and a REQUEST_INSTRUCTIOn is sent to ICM
- ICM sends back a RUN_SCRIPT_REQ on the VRU leg dialog (i.e. GS microapp)
- Call server sends this VXML up to IOS GW which sends the call to VXML Server
At this point, since the VRU leg dialog from CVP Call Server to ICM is already setup and a RUN_SCRIPT_REQ is sent from ICM to CVP Call Server to start the VXML Server sub-dialog(e.g. GS microapp), we can do nothing but send back a RUN_SCRIPT_RESULT on this dialog.
Hence, the call from VXML Server has to be a new dialog with ICM(e.g. another NEW_CALL). But what DNIS should this request use? If the same DNIS(1111) is used, the same script that started with the call from Call Server will execute again.
So again, there are multiple solutions here:
- If the original DNIS is used to send the ReqICMLabel NEW_CALL, the ICM script could be written with an IF block differentiating the NEW_CALL request from the call server vs. the request from VXML Server with some flag in the call/ECC vars.
- Instead of passing up the original DNIS, we allow the script writer to configure a dnis on the request ICM label node which may be different from the original dnis in which case there's no need to pass up the original DNIS.
- Now the user could run the same script with an IF node or another script in ICM based on this DNIS
Again, all of the above proposed solution is speculative as none of this is implemented today.
In terms of what's going on with the ReqICMLabel today in the standalone model, basically when a stand alone call in VXML Server today hits the ReqICMLabel node, a NEW_CALL request is sent to ICM via the CVP Call server with the DNIS/ANI of the standalone call. The script that's scheduled in ICM based on this DNIS will be executed. The RUN_SCRIPT_REQ nodes are not supported with the ReqICMLabel functionality. One can do other operations in the script such as DB lookup etc.. but in the end, only a CONNECT message from ICM is what's supported which includes the call context (call vars/ecc vars).
One of the key reasons behind the development of this element was so that a Self Service application can transfer its call to a separate full-blown Unified CVP system for agent selection and queuing. Full call context is preserved throughout.
For example, think of the CVP Standalone VoiceXML Server as just another routing client in ICM. ICM can send any label to it including, for example, a translation route to VRU label. Unfortunately you can't use Type 10 and SendToVRU here, because the correlationId won't be handled correctly inside the VXML Subsystem.
So the ICM routing script would do a TranslationRouteToVRU to the full CVP (which is Type 10), and because it is Type 10 it would do its automatic second transfer to the VRU leg.
The configuration from ICM's perspective is identical to doing a transfer into CVP from a 3rd party TDM VRU or ACD.
Hope this clarifies some of the questions!
-Harun