ICM Scripting


Thu, 03/21/2013 - 14:26
Jun 9th, 2009

CUICM Routing Script

Create and schedule a routing script on AW by using the script editor software.

Following picture shows a sample routing script.


The logic that is followed for creating this script is as under

  • Start the script with the start node
  • Set the value of media server HTTP URL in Call.user.microapp.media_server variable. This is the web server URL from where .wav files will be played
  • Set the value of language in Call.user.microapp.local
  • Set the value of input type (which is digits in this sample script) in Call.user.microapp.input_type variable
  • After setting the variables send the call to IVR using “Send to VRU” node
  • Run external script called “get4digits” that will ask customer to enter 4 digits
  • The value will be saved in Call.user.microapp.play_data variable
  • Then run another external scrip called playdigits. This script will play the value stored in Call.user.microapp.play_data variable
  • The select LAA (Longest Available Agent)
  • If agent is available, send the caller to agent using the Skill Group node
  • If agent is not available, send the caller to Queue
  • While the caller is in queue, play agent busy and music on hold .wav files in loop

Upgrading CUICM System

After or before the configuration is done, you may upgrade the ICM and CTIO Server software with the new versions.

UCCE Routing Script Example#2

Following screen shot shows another example of UCCE Routing Script. Following script is simpler than the previous one.

  • The Script is executed when call comes in from CVP by dialing 23490. Following diagram shows the scrip logic


  • Call flow is that a Jabber iPAD user dials 23490 from CUCM
  • CUCM sends this call to a SIP Trunk that points it to CVP Call Server (
  • CVP Call Server takes the call and send it to UCCE Router
  • A script is scheduled to run all the time and will be involked when the DN is 23490
  • Script will set the IP address of which is also acting as Media Server (IIS is running as Medial Server)
  • "en-us" and "app" are IIS directory names where holdmusic.wav file is saved.
  • So basically the script will create a link at the end and CVP will send it to the VXML-Browser (VXML Browser is actually the VXML-GW)
  • The hold music will be payed until and agent becomes available
  • Till then call will be "Queue to Skill Group" in the CUCM_PIM_1.Cisco.Voice.CVE skill group
  • This audio will be played for the infinite amount of time, till the agent becomes available

Example#2 Screen Shots

Media Server should be added in the CVP Call Server





VXML Gateway debugs ("debug voice applicaton vxml") will show you the call coming in from CVP



Mar 21 20:52:29.161: //828/F84D03000000/VXML:/vxml_formitem_select:


Mar 21 20:52:29.161: vxml_object_proc:

Mar 21 20:52:29.161: //828/F84D03000000/VXML:/vxml_item_attrs_proc:


Mar 21 20:52:29.161: vxml_param_proc: name=return expr=true valuetype=123

Mar 21 20:52:29.161: vxml_param_proc: name=app-uri expr='builtin://dummyobj' valuetype=123

Mar 21 20:52:29.161: //828/F84D03000000/VXML:/vxml_prompt_proc:

         <prompt>: typeaheadflush=0 alternative=0

Mar 21 20:52:29.161: //828/F84D03000000/VXML:/vxml_audio_proc:





   path=/en-us/app/holdmusic.wav caching=fast fetchhint=invalid fetchtimeout=4 maxage=-1 maxstale=-1

Mar 21 20:52:29.161: //828/F84D03000000/VXML:/vxml_vapp_media_play:

   bargein=1 timeout=0 typeaheadflush=0 vcr=0 rate=0 alternative=0 hotword=0 maxtime=0

Mar 21 20:52:29.161: //828/F84D03000000/VXML:/vxml_vapp_media_play:

   str= cachable=1 timeout4 maxage=-1 maxstale=-1 codec=-1

Mar 21 20:52:29.161: //828//AFW_:/vapp_media_play:

Mar 21 20:52:29.161: //828//AFW_:/vapp_media_play: prompt=

Mar 21 20:52:29.161: //828/F84D03000000/VXML:/vxml_formitem_select:

   loop cnt=0,

Mar 21 20:52:29.161: //828/F84D03000000/VXML:/vxml_load_immediate_done:


Mar 21 20:52:29.161: //828//AFW_:/vapp_checksessionstate:

Mar 21 20:52:29.161: //828//AFW_:/vapp_checkifdone: Object: 1, Leg: 1

Mar 21 20:52:29.369: //828//AFW_:/vapp_driver: evtID: 181 vapp record state: 0

Mar 21 20:52:29.369: //828//AFW_:/vapp_play_done: evID=181 reason=12, protocol=2, status_code=404, dur=0, rate=0

Mar 21 20:52:29.369: //828/F84D03000000/VXML:/vxml_media_done:

   status 2 async_status 104000000 duration=0 rate=0

Mar 21 20:52:29.369: //828/F84D03000000/VXML:/vxml_save_lastprompt_info:

gerardoderosas Thu, 08/12/2010 - 14:33

Hi Syed. About this routing script, what if you remove the SELECT LAA and SKILL GROUP nodes, and go directly to QUEUE TO SKILL GROUP? Does this suggested flow have any unexpected behavior or inconvenient?
Best regards!

shridhar reddy Mon, 05/07/2012 - 00:27


You cann't do, bcoz LAA is decision making Node for selecting agents based on certain algorithms which you implement like LAA, eventually in your business your customer's calls should be served by some available agents not queuing calls all the time of the day ,so SKILL GROUP Node is required.

Thanks !!

Shridhar Reddy


This Document

Related Content