ICM Scripting. value on variable Call.RoutingClient

Scenario:
- UCCE 8.5 with CVP 8.5 - Type 10 NVRU
-  Call initiated from a IP Phone dialing a CTI RP.
-  CUCM is the routing client of the original call.
-  UCCE script launch.
-  Eventually the call hits a SendToVRU node.
- At this time the NVRU label is sent back to CUCM. CUCM then sends the call to the CVP Call Server, and the routing client changes to be the CVP Call Server.
- Afterward the call re-enters the UCCE script and I would expect variable Call.RoutingClient to contain the name of the CVP Call Server but still holds the name of the CUCM routing client.
- Curiously the value of Call.RoutingClientId changes to the dbid (RCID) of the corresponding CVP Call Server routing client, which is normal because the RCID is used by the router to send the labels to the right routing client.
Thus, I am curious why the disconnect between Call.RoutingClient and Call.RoutingClientID on CUCM originated calls after the routing client changes from CUCM to CVP Call Server.
Which value should I expect on variable Call.RoutingClient? The original routing client, or the current routing client?

The way I see it, the originating CUCM is a factor to determine which CVP Call Server will handle the call. After that, which VXML GW, VXML Server or media server decisions are made based on the location of the CVP Call Server and no so much the CUCM. To ensure that the closest VXML GW is use you need to use either different Network VRU labels for the CVP Call Server routing clients, or other mechanisms. CUCM will decide only which CVP Call Server the call connects in first place, and after that all decisions are off CUCM realm.
Below is a more detailed description of what I am trying to accomplish.
When the originating party dials the CUCM Route Point that triggers and associated ICM script. Eventually the script reaches the SendToVRU node and sends the label defined for the CUCM peripheral on the Network VRU. That  is a first transfer to a CVP Call Server and CUCM will handle it because at this time CUCM is still the routing client.
When CUCM receives the label a decision is made either by CUCM route patterns with static routes (this is my case), SIP Proxy or H.323 GK, to which CVP Call Server to send the call.  If you have different CUCM clusters you can have different labels and make different decision (the Bangalore cluster send calls to CVP Call Servers in Bangalore, the London cluster uses CVP Call Server in London, and so on). If you have only one cluster serving agents all over the planet I don't think there is much room to fine control the CVP Call Server decision based on the actual location of the agent's phone that is what really matters.
Anyway. when the call is connected to the CVP Call Server the routing client functions are passed to the CVP Call Server and CUCM is at that time totally out of the picture as far as routing decisions go.  
The call re-enters the ICM Script now with a CVP Call Server being the routing client, and the CVP Call Server Routing Client Network VRU label is sent this time to the CVP Call Server looking for a VXML GW. That is a second transfers that is performed behind the scenes and is not expliticly seen on the ICM script.
All the above works just fine.
The challenge I am having is that I am using CVP Combos (VXML and CVP Call Server together) and I want to use the VXML Server that is co-resident with the CVP Call Server handling the call.  Obviously I don't have a SIP proxy or a CSS on the solution.
To achieve that I have created ip host entries on the VXML GW to match the CVP Call Server routing client. For example if my CVP Call Server routing client name is CVP01 I have the following entries on the VXML GW
ip host CPV01 10.0.0.1
ip host CVP01-backup 10.0.0.2
and on my ICM script I  want to use variable {Call.RoutingClient} to create the VXML Server url that goes in the microapp.media_server variable.
That achieves two purposes,  first that I always use the co-resident VXML server to service the call, and second provides a basic redundancy through the CVP IVR -backup mechanism.
It works just fine on the inbound calls because the value on Call.RoutingClient is correct, referring to the name of the routing client for the CVP Call Server handling the call.
The problem is that for the CUCM originated calls, even if the routing client changed to be one of the CVP Call Servers, the value on the variable Call.RoutingClient still refers to the CUCM routing client name.
Again, variable Call.RoutingClientID value is always correct. The issue is with the value on the Call.RoutingClient.
I would assume that both should be consistent, and they are not at this time. There are workarounds but there are not as clean as I would like.
The cleanest workaround I have come up with is to define ip host entries on the VXML GW to  match the CUCM routing client name, but I think that is confussing for  anyone reading the GW configuration that will wonder why the reference  to CUCM.
So far at this time on the ICM script I have a bunch of IF Nodes to check the Call.RoutingClientID and then create the right VXML Server URI based on the the related name, but all is just to account for the fact that calls originated by CUCM have the wrong value on the Call.RoutingClient variable. All this I believe can be avoided if the values on the variables were consistent.
I would like to hear some opinions from Cisco developers on this matter.

Similar Messages

  • How to acess a value of variable(calling prg) inside the methods of a class

    Hi SapAll.
    i wrote a program where i need to acess a value of a variable inside the class method.
    for eg:
    CALL METHOD gcl_utl_app_log->display_log
        EXPORTING
          it_edidc = lt_edidc
          it_msg   = lt_msg.
    while debugging under the method 'DISPLAY_LOG' when i want to acess a value of a variable (calling program) i cont get that value but i can acess the value of the variable just before the CALL METHOD statement.
    so can any body help me in finding the solution for this.
    regards.
    Varma

    Hi jhings.
    i have delcared the variable in the main program like below
    main program
    PERFORM populate_z1edrmdseqnr01.
    FORM populate_z1edrmdseqnr01 .
    other code
    CALL FUNCTION 'NUMBER_GET_NEXT'
        EXPORTING
          nr_range_nr             = gv_number_nr
          object                  = lv_obj
        IMPORTING
          number                  = gv_nextno
    move gv_nextno to gv_seqno.
      EXPORT gv_seqno  to memory ID 'MEM1'.
    PERFORM FORM application_log.
    FORM application_log.
      CALL METHOD gcl_utl_app_log->display_log
        EXPORTING
          it_edidc = lt_edidc
          it_msg   = lt_msg.
    ENDFORM
    METHOD display_log.
    IMPORT gv_seqno from MEMORY ID 'MEM1'.
    *********when i save and check the above code iam getting the error as 'FiledGV_SEQNO is unknown,it is neither in one of specified tables not defined by 'DATA ' statement.**********
    regards.
    Varma

  • HTTP trigger script using ECC variable/Call sub flow - not working

    Hello all,
    I am trying to http trigger script which will show the real time stats of the CSQs. The script is based on "Day of week" and Time of day" checking the queue time and will update the HTML doc to show as real time data. The scripts for various CSQs has multiple boolean variable (parameter, set to false by default) like "open/night/emergency/meeting" which can be set to open or close the queue by the supervisor depending on the situation. For ex, if a variable is set to True in application page for any of the Queue, I am trying to send that "true" value to the http trigger script, so that these can be shown real time.
    Steps tried:
    1. Tried using ECC variable - setting a ECC variable to True in the main script and getting that value in the http trigger script to a local variable, if found True, the display as "CSQ1 = OPEN", else "CSQ1 = CLOSED" ; but the script gave an error as attached (http1.png)
    2. Tried using Call sub flow - Like Holiday check, under the "Rest" branch of "Time of Day" - will check the queue and will get the value returned to the local variable - Failed and it shows an error as attached (http2.png)
    As of now, I have completed the script with the logic of checking the logged in agents count in the CSQs and updating the Real time data. But it has some issues like, if an agent didnt logged out properly or if an agent is asked to login during OOH although the queue is closed, as per the logged in resource logic, the data is shown as OPEN.
    Please share your thoughts on this and if you have come across such a script, kindly share as a knowledge share.
    Thanks in advance.
    Bala.

    Hello all,
    I am trying to http trigger script which will show the real time stats of the CSQs. The script is based on "Day of week" and Time of day" checking the queue time and will update the HTML doc to show as real time data. The scripts for various CSQs has multiple boolean variable (parameter, set to false by default) like "open/night/emergency/meeting" which can be set to open or close the queue by the supervisor depending on the situation. For ex, if a variable is set to True in application page for any of the Queue, I am trying to send that "true" value to the http trigger script, so that these can be shown real time.
    Steps tried:
    1. Tried using ECC variable - setting a ECC variable to True in the main script and getting that value in the http trigger script to a local variable, if found True, the display as "CSQ1 = OPEN", else "CSQ1 = CLOSED" ; but the script gave an error as attached (http1.png)
    2. Tried using Call sub flow - Like Holiday check, under the "Rest" branch of "Time of Day" - will check the queue and will get the value returned to the local variable - Failed and it shows an error as attached (http2.png)
    As of now, I have completed the script with the logic of checking the logged in agents count in the CSQs and updating the Real time data. But it has some issues like, if an agent didnt logged out properly or if an agent is asked to login during OOH although the queue is closed, as per the logged in resource logic, the data is shown as OPEN.
    Please share your thoughts on this and if you have come across such a script, kindly share as a knowledge share.
    Thanks in advance.
    Bala.

  • Broadcast calls rather than LAA to a skill group within ICM script?

       We have the need to create an ICM script/queue in which calls in queue are broadcast to the agents (much like in a line group distribution algorithm in CUCM) rather than distributed by longest available, top down, etc. Any suggestions are greatly appreciated.
    - Mike M           

    Gergely is correct (not sure why low rating) +5 for Gergely for correct answer. No ACD has been designed to ring multiple agents at the same time as that goes against what Automatic Call Distribution stands for. 
    One option would be to route calls via ICM, but then send the call back to CUCM broadcast hunt group, this way you will at least get overall reporting on call_types without agent reporting.
    HTH,
    Chris

  • How to Schedule an ICM Script to Play a IVR Prompt

    Hi,
    My name is Abraham and I work with the voice support team that manages the voice infra of a National Bank Contact Center.
    Requirement : Schedule a script to play an holiday message prompt on a particular date from 12AM to 12PM..
    Please guide me on how to upload this prompt message to the IVR and to schedule this script in the ICM and point it to the new prompt.

    There are two parts here.
    1. The first part is a modification in the ICM script so that every call knows whether the holiday message should be played or not. You can modify the routing script to directly compare the current date against a set date (say 12/25/2009) and if true, then check the current time against a spread using a Time Of Day node.
    Alternatively, you can do all this in a an Admin Script that runs every minute and controls a global variable that the main routing script checks.
    You can develop this and test it without actually doing anything - just watching the path of calls through your script as the day and time of day falls into the slot.
    2. Now you need the technique to activate a Run External Script that runs the .aef. Since this has already been done by the "Cisco Partner Vendor", you just need to copy those nodes into the holiday path.
    Regards,
    Geoff

  • Using a single sequence value over multiple scripts (in a variable?)

    Hi all...
    I'm writing a number of scripts that insert rows into tables.
    To better explain my point, I'll paste a simple breakdown of the scripts here as that will be easier to understand...
    Script 1:
    INSERT INTO WORKGROUP_DEPARTMENTS(ID, DEPT_NAME, DEPT_TYPE)
    VALUES (SEQ_WGDPT.NEXTVAL, 'Staff', 3);
    Script 2:
    INSERT INTO WORKGROUP_SECTIONS(ID, SECT_NAME, WGDPT_ID)
    VALUES (SEQ_WGSEC.NEXTVAL, 'Staff 1',
    (SELECT ID FROM WORKGROUP_DEPARTMENTS
    WHERE DEPT_NAME = 'Staff'
    AND DEPT_TYPE = '3')
    Script 3:
    INSERT INTO WORKGROUPS(NAME, UNIT_TYPE, WGSEC_ID)
    VALUES ('Staff Room', 3,
    (SELECT ID FROM WORKGROUP_SECTIONS
    WHERE SECT_NAME = 'Staff 1')
    As you can see, in scripts 1 and 2 a new value is produced from a sequence (SEQ_WGDPT & SEQ_WGSEC respectively). Then, in scripts 2 & 3 (respectively) these values are inserted into another table.
    What I'm trying to figure out is: can I do the same thing here without having to include the horrible SELECT statements in scripts 2 & 3 in order to find the ID, which was produced by the sequence in the previous script?
    Unfortunately they do have to be separate scripts, and as such I can't call Sequence.CurrVal from a different script as other users may have used the sequence since it was used initially in the previous script. I could call it from the original calling script, and save it intop a variable, but I have no idea how to - even if it is the right idea!
    I tried to insert the sequence value into a variable a la PL/SQL so that I could call this variable from the next script, but failed miserably as I'm rubbish!
    Any help would be great. Thanks.

    You can use PL/SQL, for example:
    SQL> desc t
    Name                                      Null?    Type
    ID                                                 NUMBER
    NAME                                               VARCHAR2(10)
    SQL> desc t1
    Name                                      Null?    Type
    ID                                                 NUMBER
    NAME                                               VARCHAR2(10)
    ID1                                                NUMBER
    SQL> desc t2
    Name                                      Null?    Type
    ID                                                 NUMBER
    NAME                                               VARCHAR2(10)
    ID2                                                NUMBER
    SQL> create sequence seq_1;
    Sequence created.
    SQL> declare
      2   prev_id number;
      3  begin
      4   insert into t values(seq_1.nextval,'A')
      5   returning id into prev_id;
      6   insert into t1 values(seq_1.nextval,'B',prev_id)
      7   returning id into prev_id;
      8   insert into t2 values(seq_1.nextval,'C',prev_id);
      9  end;
    10  /
    PL/SQL procedure successfully completed.
    SQL> select * from t;
            ID NAME
             1 A
    SQL> select * from t1;
            ID NAME              ID1
             2 B                   1
    SQL> select * from t2;
            ID NAME              ID2
             3 C                   2
    Rgds

  • Send variables between ICM scripts

    Hi,
    It is a UCCE environment with CVP.
    I have Post Call Survey configured and running.
    In the CVP survey script, I don't want the caller to select again the language.
    Is there a way to send variables between ICM scripts so the language selected in the first CVP script will be sent to ICM script1 then ICM script2 then CVP script2?
    Your help is highly appreciated.
    Thank you in advance
    Lara

    Hi David,
    I still have an issue with the above. In the initial CVP script the customer can choose to listen to announcements without the need to be transferred to an agent. In this case, the Survey script is launched but the call variables are not populated and the language is showing as Null in the log which is causing a bad fetch error.
    Kindly, is there a workaround?
    Thank you in advance.
    Lara

  • How to pass values to variables in WAD 7.0 using java script

    Hi.,
    My requirement is based on WAD 7.0.
    The sales value has to displayed in WAD using graph with various chart types.
    I have created variables for plant and material group in a query.
    I have created drop down box for plant with all plants in it, check box for material group and a Submit button in WAD in FORM tag of HTML coding.
    Once all the values are set in drop down box, checkbox and if the user clicks on submit button, the values has to captured by the variables for which I have created and the graph has to be aligned to the new values in variables.
    Kindly help me how to use java script to get the values from FORM and pass it to variables.
    Regards,
    Selva

    Hi Selva,
    You do not need to use Javascript for this. Instead you can achieve this by using API Commands in WAD 7.0.
    Please configure Action on the ButtonGroup webitem to use 'Commands'.
    ->Choose Command 'Set Variables Values / SET_VARIABLES_STATE' under Commands for Web Templates
    ->Set Display Variable Screen setting to OFF
    ->Choose Query Variable for Plant, Select Variable Type as 'Binding Type', Binding Type as 'Data Provider Selection', Data Provider as the one you have assigned to the Dropdown webitem, Characteristic as 0PLANT or as that assigned to the Dropdown webitem
    ->Repeat above steps for Query Variable Material Group
    Now when you make a selection from the Dropdown webitems, the Chart output will change accordingly. Let me know if this helps.
    --Priya

  • UCCE: Forceful Release an Agent Call from ICM Script, Can I?

    Hi, let me explain the requirement first. Customer wants to make their IVR free of cost but they want to start billing only when the call is landed to skill group/agent. So far I can think to make it possible by triggering their billing server by ODBC gateway through Application Gateway process. But also the customer wants to release that particular call when that pre-paid caller is out of charge. They might trigger one of my application or can modify any particular database field and put the calling# into there and my task would be release that call.
    I have thought an idea to develop a TCL script run into the voice gateways and release the call from there by searching the particular call with calling#, but I do not know TCL scripting or any idea how to develope TCL , can't I release that call from ICM script? Do I have any control on calls from ICM when the call is landed and connected to agent?
    Any help would be hightly appreciated.

    That's a nasty piece of work. Just imagine how jacked off you would be if you are the customer, you have enough in your bank account to get to an agent who is then starting to help you, and in the middle of your conversation you are simply cut off!
    I don't think it's possible - although CVP would be your best shot because of the switch leg.
    But not only that, I don't think it is desirable. If you check the customer's balance before going to an agent, that should be sufficient. Anything else is just terrible customer service.
    Regards,
    Geoff

  • How do I transfer calls from CM 7.x to ICM script in CVP environment with no SIP.

    So I have a customer who currently send all internal help desk calls to PSTN, then they come to VXML Gateway that goes to CVP finally landing on ICM script to be processed and handled by an internal agent.
    Ideally we want to keep this call with in the platform.  No SIP here its H323 gateways and gatekeepers, dialpeers etc.
    current setup is you dial 5000 that gets translation route to dial out PSTN outdial 866 123 4567 lands back on VoiceGateways with DNIS 4567.  Eventually based on DNIS that get sent to ICM where its processed based on Dial script associated with DNIS and call type.
    Seems something real simple in IPIVR but CVP makes it CVP-complex visually perplexing.
    Thanks,
    Baseer.

    CUCM originated calls can be processed in CVP using H.323 - look at the sections in the Guide for warm transfers. The mechanics are similar to SIP.
    Regards,
    Geoff

  • Sending call to 3rd party VRU from ICM Script

    Integrating ICM Script with 3rd party VRU using GED-125 interface. I am having trouble to send the call from Cisco CM to 3rd party VRU. Trying Send to VRU node but it is not clear how to pass the destination for 3rd party VRU.
    Any feedback would be helpful.

    Move this to contact center forum to get better response.
    Here: https://supportforums.cisco.com/community/5926/contact-center
    -Terry

  • ICM Script CED not cleared

    Hello All,
    I'm having issues on ICM scripts where I have sub menus
    MY UCCE IS:
    CUCM:  6.1.4.1190-3
    CVP:  7.0(2) ES16, ES 19 and ES21
    ICM:  7.5(5)
    3845 SIP/VXML GW: version 12.4(24)T2
    Scripts Microapps, VRU-> CVP
    Script example is
    Run External Script:           Menu 1
    CED:                                             Option 1, 2, 3
                                                           2 invalid, 2 repeats, release the call.
    Run External Script:          Menu 2
    CED:                                 Option 1, 2,3
                                                           2 invalid, 2 repeats, go back to menu 1.
    I'm having failures on the following test:
    Listen to menu 1 and pressed 1
    Listen to menu 2 and didn't press anything
    Listen to the message: "Please make a selection"
    Listen to menu 2 and didn't press anything
    DIDN't GO BACK TO MENU 1 as expected.
    Went to Option 1 on Menu 2.
    Is like ICM is keeping the first selected CED if you don't press anything else.
    Has anyone had this issue before?
    Any suggesitons?
    Thank you!
    I have attached the script

    Agreed.
    I've had other interesting behaviour with CED, so it pays to be careful.
    For example, getting the caller entered digits (in my case, the extension to be dialed as I had to build an AA in CVP), testing that the CED was within a certain range, then having a PM saying "connecting" go to a dynamic label which used the CED to transfer - sounds right and simple enough.
    But the "connecting" PM means that the CED is no longer there for the label to use. The play media microapp clears the CED - actually it return an empty string. You wouldn't think a play media would need to gather digits.
    Had to use an intermediate variable.
    Regards,
    Geoff

  • ICM Scripting Error Handling Best Practice

    Can someone tell me what is the best way to handle errors in ICM scripting. For example false node on Send to VRU or Run Ext Script node, I normally handle this with calltypes for errors and then continue the callflow. But recently I noticed that some of my clients are using peripheral variable to store an error message instead of calltype. I am just wonderinmg which is the best option?

    I don't think you need a call type, I usually set PV10 = "Error: XYZ".  Creating a call type just seems a little redundant, however it would make it easier on the reporting side as you don't have to create any custom queries to search for a specific error type.
    david

  • ICM script formula for busy hour

    Hi all,
    I'm trying to find what is the best/most accurate statistic which is available in ICM script editor to determine the peak & non-peak hours. Based on this info, I want to point to a different precision queue
    a) Number of calls in queue a specific PQ?
    b) Number of available / busy agents in a specific PQ?
    Any other recommendation?
    Thanks!
    -JT-

    Hi G,
    The peak & non peak hours differs based on call type rather than being similar overall. Different call treatment is applied during these periods
    a) Low peak - more conditions, steps & longer waiting time within PQ 
    b) High peak - less conditions, steps & shorter waiting time within PQ
    The 2 different approach is to either
    a) pre-set the low/high peak based on fixed value (9-12pm peak, 1-pm non peak) - more maintenance
    b) dynamically determine high/low based on call statistics in the ICM script - less maintenance
    Thanks!
    -JT-

  • Queue priority ICM Script editor 8.5

    HI,
    Can some please let me know about Queue priority node wth example?
    ICM Script editor 8.5

    it changes the priority of the call in ICM, default is 5. but you can change to lower value say 4,3,2 based on customer.
    i will give you 2 examples:
    1. if any priority customer call in, you do DB lookup or any other thing to carried out that the customer is priority at should be treated as earliest.
    so for priority customer you branch out the script and increase their queue priority by this node, and queue them to skill group, this will put them ahead from all the call with normal priority.
    2. when Rona happens:
    in case of customer is assigned an agent, and agent does not pick the call, RNA happens, and CVP will take back the call from agent and request requery to ICM.
    in re query request you can increase the priority of the call take it ahead from all the normal priority call.
    this will reduce customer to once again wait in queue.
    ~ Chintan
    rate all helpful posts

Maybe you are looking for

  • Module processing inside Sender File Adapter

    Hello, I am trying to analyze whether I can create a specialized module inside Sender File Adapter. As of right now, the Sender File Adapter and Receiver as well, assume endSeparator character in the end of each record. For files that do not have thi

  • Getting Error message when trying to burn disk

    I keep getting an error message when I try to burn my IDVD theme project t disk. I checked the path and all the videos appear to be there. Can you help me?

  • Embedding music; XSPF vs. Flash MX 2004

    I'm working on a little personal site that feaatures articles about musicians and short sound clips of some of the their best songs. I've found two good ways to have a little embedded player: XSPF (frree from SourceForge.net) or Flash. Two things I'm

  • RT settings in FCP 7 not complete

    Hi All, I have just found out that my RT settings are incomplete! I only seem to have the following settings Play base layer only / Use Playback settings /Full Quality and cannot seem to adjust them. I would like to not have render every time i made

  • Burning question please help!

    I am trying to burn a wedding DVD and have done this many times before without problem. Now, I continuously get a media error at stage 4. I switched media, (was using a cheaper, printable brand) to use an apple disk...which worked once. I am trying t