Outbound call Scenario/Campaign

Unanswered Question
Oct 10th, 2008
User Badges:


This is a scenario of emergency, where when once the IVR application is initiated, it makes outbound calls to numbers which are fetched from an xml file or database.

Each call on conencting announces a message to called party and then disconnects.

The customer requirement is 1000 outbound calls in 20 minutes.The solution suggested is IPCCX 5.0 with IPIVR license.

From the CRS scripting(IPIVR) , is this achievable?

Can CRS code/scripting, initiate paralled outbound calls?

IF not, what is the actual solution to this scenario?


  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 4.6 (6 ratings)
ra_jeshkalra_2 Fri, 10/10/2008 - 03:40
User Badges:

Hi Mohammad,

We will me using CCM 6.0.But The link you gave me is IPCC enterprise.

Can we make fast/parallel calls from IPCCX(express 5.0)?

Edward Umansky Fri, 10/10/2008 - 07:20
User Badges:
  • Silver, 250 points or more

You can try and make this happen with UCCX. There is no built-in mechanism for automatically launching scripts, you would have to develop a custom application that launches UCCX scripts using HTTP triggers in order to place outbound calls. You can write this to launch multiple calls in parallel, limited basically by how many IVR ports configured and CUCM capacity. I would say no more than 10 calls placed per second.

However note that UCCX is not really a Dialer product, though it can recreate some of the functionality. There are things you will not be able to do with UCCX, for example, you cannot do automatic answering machine/fax/modem detection. If your call is answered by an answering machine, there is no way to detect that or to wait for the beep before playing your message. If you need a more robust and full featured dialer you should look at using UCC Enterprise with Outbound Option. As a lower cost option, you can also go with System UCC, which is basically a streamlined version of UCC Enterprise with lower agent capacity.

ra_jeshkalra_2 Fri, 10/10/2008 - 10:46
User Badges:


1.How to use create/HTTP trigger.How to write this custom application?what resources/skill sets are required to do this?

2.How to launch multiple calls?which CRS scripting function to use?

3.Once each call connects we want to disconnect it after playing a IVR message with say 30 secs.How can I track the duration of the call.which function to use?

Basically we have to achieve 1000 calls in 20 minutes.

The solution of IPCCX(express)5.0 with CUCM 6.0 has been sold.So can 1000 calls in 20 minutes be achieved.

How many E1's will be required for this outbound capaign.

Please help ..

ra_jeshkalra_2 Mon, 10/13/2008 - 03:27
User Badges:

Hi Umansky,

Can you please elaborate in steps:

1)I want to initiate the CRS script with an HTTP request , instead of a normal telephone call to the IVR.

2)The triggered application should in turn place multiple outgoing calls which it picks from and xml file and database(parallel calls).

What will be the steps involved to achieve 1) and 2) above.


You are actually building a Dialer. This can be done but it's a lot of work. We built one in Java, running as a service, reading information from a database and using the HTTP mechanism of IP IVR to place a call. The trigger places one call, but the trigger is called many times in each pass through the database. The trigger part is documented - but building the scheduler that calls this is non-trivial.



ra_jeshkalra_2 Mon, 10/13/2008 - 14:22
User Badges:

Hi Geoff,

Can you please elaborate "the HTTP mechanism of IP IVR to place a call using Trigger".

What is the function used for this, please also refer me to the documentation.

"The trigger places one call", are you referrening calling the script using HTTP subsystem/trigger insead of a normal phone call to trigger script like a inbound call centre customer call and then the called script makes one call using place call step?


chrismanuh Thu, 10/16/2008 - 06:03
User Badges:
  • Bronze, 100 points or more

the HTTP trigger is a normal URL that you can make an HTTP GET request to an IVR application as if it was triggered by a telephone call. as suggested above, you'll first create your IVR script that uses a "Place Call" step to make the outbound call and deliver the message to your calling parties.

Next, you'll create an IVR application for this script and create a Cisco HTTP trigger for it. the administration page will ask you for the url. eg. /dialer. in this case the full URL to trigger your application is going to be http://:8080/dialer.

Once your application is triggered by making HTTP GET request to this application, you don't need to keep the HTTP contact alive, so you can just send it a nice OK message and disconnect the HTTP contact (this is so you can continue to trigger more instances of your IVR application while the outbound calling is taking place). after terminating the HTTP contact, you can continue within your script to the "Place Call" and continue with the rest of the functionality.

Note that the original HTTP contact is no longer active so don't try to communicate with it after disconnecting.

hope this helps

ra_jeshkalra_2 Fri, 10/17/2008 - 01:13
User Badges:

Hi chrismanuh,

1.I have created the script caller dialer.aef to place call.any idea which function I use in this to announce message to

called party once the call is connected?

2.Then I created the application "dialer" , which is associated with the script dialer.aef

3.Created HTTP trigger for the application in step 2.By using sunsystem->HTTP->Add HTTP trigger and giving URL as: /dialer

>>In fact now in my IE if I give the http://:8080/dialer I can see a dialout and call connects!! But after that I see an Error:500 on the web page. Location : /dialer

4.I am not able to figure out the HTTP GET part , I believe is the function "Get HTTP Contact info".What will be

the parameters for this function.

Will this function be written as a new IVR script which will in turn call the application "dialer" ??

Do I need to have another application for this?

5.Also can you please elaborate:-

"Once your application is triggered by making HTTP GET request to this application, you don't need to keep the HTTP contact

alive, so you can just send it a nice OK message and disconnect the HTTP contact (this is so you can continue to trigger

more instances of your IVR application while the outbound calling is taking place). after terminating the HTTP contact, you

can continue within your script to the "Place Call" and continue with the rest of the functionality. "

The idea is to place multiple IVR callouts parallely to a list of numbers.


chrismanuh Mon, 10/20/2008 - 08:58
User Badges:
  • Bronze, 100 points or more

1. Use the 'Place Call' step to place a call to a given number. After the 'Place Call' step, you'll have a Contact variable as a return value.

Use the 'Play Prompt' step to play a wav file containing the announcment to the Contact variable from the 'Place Call' step.

3. The browser is probably timing out. if you're writing C#/PHP,etc code, examine the error code to see what the underlying message is.

4. You performed an HTTP GET request when you pointed your browser to dialer application at: http://:8080/dialer. If you're writing code (java/c#/php,etc) you can make similar HTTP GET request. so HTTP GET just means make a call to http://:8080/dialer either with a browser or with some custom code that you write.

5. It's possible your dialer application is taking too long to complete so the browser times out, which might explain the error you're getting. if that's the case, you'll need to respond to the original HTTP request so it doesn't wait until it timeouts. and that's what point #5 is about.

ra_jeshkalra_2 Mon, 10/20/2008 - 11:15
User Badges:

1.I am using contact variable now, instead of the default triggering contact, but getting error.(See screenshot).

I also attached if you can have a look.

2.I am triggering the script using the HTTP trigger just from the IE, using


I never wrote any code writing code (java/c#/php,etc)--In fact I am not a developer.

It seems to me I have in the CRS script, I have to say nice OK as you mentioned in your previous reply:-

"Once your application is triggered by making HTTP GET request to this application, you don't need to keep the HTTP contact

alive, so you can just send it a nice OK message and disconnect the HTTP contact (this is so you can continue to trigger more

instances of your IVR application while the outbound calling is taking place). after terminating the HTTP contact, you can

continue within your script to the "Place Call" and continue with the rest of the functionality.

Note that the original HTTP contact is no longer active so don't try to communicate with it after disconnecting. "

So how to say that nice o.k.

Pls help,, may be can modify the script and post!!

Thanks in advance.

chrismanuh Mon, 10/20/2008 - 13:34
User Badges:
  • Bronze, 100 points or more

Will revise it and send you an update soon.

chrismanuh Mon, 10/20/2008 - 17:06
User Badges:
  • Bronze, 100 points or more

here's the updated script. it's not tested though so try it out and see if it does what you intended.

ra_jeshkalra_2 Mon, 10/20/2008 - 17:57
User Badges:


Thanks for the script.

Just tested, but it gives some errors:

1)response variable is not declared, is it simply of type "Document" with value DOC[]? or any other value?

2)Do I need to do any change in

SET=TEXT["CRS ResponseSuccess"]


chrismanuh Tue, 10/21/2008 - 05:56
User Badges:
  • Bronze, 100 points or more

forgot to declare the response document variable.

remember that this script assume you're using http trigger and not cisco jtapi trigger so sending http response will fail if you use jtapi trigger. if you intend to do that, remove the "Send Http Response" step.

ra_jeshkalra_2 Wed, 10/22/2008 - 05:27
User Badges:


Now I am able to make one call to an external number and play the prompt.

How can I now initiate multiple parallel calls on different numbers.

Can you please give an idea.Do I need to write any other script??

ra_jeshkalra_2 Wed, 10/22/2008 - 05:21
User Badges:


Thanks lot.

Now I have one CRS IVR script(say script2) which I initiate using HTTP trigger.this script calls one number and announces the prompt then disconnect the calll.

Now I want to call multiple numbers parallely.

Can you just give an idea on the custom application.. will it be another IVR script or a separate external Java programme will have to be written.What would be the logic??


chrismanuh Wed, 10/22/2008 - 06:08
User Badges:
  • Bronze, 100 points or more

you'll have to write an external desktop/services application that basically makes multiple http requests to your dialer ivr application using the http trigger (http://:8080/dialer) you've created. you can pass the number to call as a parameter,header or cookie to the script and retrieve it using the "Get Http Contact Info" step.

ra_jeshkalra_2 Wed, 10/22/2008 - 06:53
User Badges:


In which language this desktop services will have to be written?Will it be in Java or something else??

Once this desktop/services application passes one number as parameter to HTTP trigger,will it wait for the first call to be finished(one call is IVR call out,call gets connected and plays prompt)


it can immediately pick up another number without waiting for the first call to finish.


BCOLE2007 Wed, 10/22/2008 - 07:06
User Badges:
  • Bronze, 100 points or more

This can be written in Java, C#, Vbscript, or any other language that supports http messaging. Applications such as Peoplesoft, Oracle Apps, Websphere Middleware, etc... that support "messaging" are also possible.

Depends on how many sessions are defined for the App, if you have 10 sessions set, then 10 Apps can be triggered, yielding 10 call contact attempts... depending on how fast you send the triggering message will determine how close they are together.

To build this can be alot of work.

*Please rate all useful posts.


chrismanuh Wed, 10/22/2008 - 09:39
User Badges:
  • Bronze, 100 points or more

the dialer.aef script as it stands does not wait for the triggered call to complete before returning a response to its caller so you can trigger as many requests as you want. the limit is determined by the "maximum number of session" parameter on the trigger/application configuration page.

as previously answered, you can write the application in any language you want as long as it's capable of making http requests.

ra_jeshkalra_2 Wed, 10/22/2008 - 11:35
User Badges:

Hi Chris,

In the dialer.aef script you send, If I don't remove the Termina(triggering contact) after send HTTP response, I get an error...(see attached)

and the control doesn't go forward from there and place a call.

-->from the MIVR log on CRS server I see this message

"%MIVR-SS_HTTP-1-HTTP_REQUEST_ERROR:Http Request Error: Cause of Http request error=com.cisco.contact.ContactInactiveException: Contact id: 188, Contact is inactive when getting channel"

Hence, I am forced to remove Terminate(triggering contact), and place terminate(outcall,P[JTC\emergency.wave] ,, after the prompt is played to customer.

For the final time can you have a look at the script, and see I can get rid of the error.

(attached is the script in which I don't get error, since I have removed Terminate(triggering contact),,, but have to be place this step after playing prompt to customer).

Can you please suggest/resend script.Please test once yourself.

Note:--->for the above I was initiating the IVR script using URL:8080/dialer from IE.

MAX sessions on the trigger/application configuration page is set to 5.

chrismanuh Thu, 10/23/2008 - 05:35
User Badges:
  • Bronze, 100 points or more

you can go ahead and remove the terminate step. in your desktop/service application, use asynchronous requests or multi-thread your applications so you can do concurrent callings.

ra_jeshkalra_2 Fri, 10/24/2008 - 12:25
User Badges:

Hi Chris,

Thanks for your help so far.

Can we somehow, get the HTTP request terminated before place call(as you were mentioning earlier), and proceed with place call also!!

This way I may not have to write the external application for multithreading and no dependability on the ext application writer!Isn't it.

If yes, pls tell how.


ra_jeshkalra_2 Tue, 11/11/2008 - 01:55
User Badges:

Hi Chris/Blair,

We are writing an application in ASP.NET to trigger the Cisco CRS application script which in turn places outbound calls, as suggested.

Just one more step ahead , if the user were to initiate the outbound campaign using a telephone call.Is this possible?

Can we take the following steps.

1)Write a script to accept user call(who calls for initiating the campaign),then if user press 1 to go ahead, make a HTTP request to the ASP.net application to fire HTTP trigger in asyn/multithread mode.

2)the ASP.net script then calls CRS appl/script which places call out.

Question:for 1) can a CRS script place HTTP request to the ASP.net appliaction?


BCOLE2007 Tue, 11/11/2008 - 07:02
User Badges:
  • Bronze, 100 points or more


I have not had a need for a CRS script initiate an HTTP request, I believe it could be done using a Custom Java class loaded into CRS and called by the script.

another idea includes using a Database table outside of CRS that the ASP.Net watches.

*please rate all posts

Good luck,


ra_jeshkalra_2 Mon, 02/16/2009 - 05:26
User Badges:

Hi Umansky,

Thanks for your useful inputs.

Today I am at a stage where I can use an external application to HTTP trigger a CRS script which can place outgoing call(as multithread).

The script gets the prompt to be announced & number to dial out from ext appln as parameters.

But, when the script dials out and places outgoing call, it doesn't log any records in the CRS database.

I am attaching the CRs script which places call out using 'place call".

Can you suggest what is the issue?

Basically I am interesting in knowing the call start & end times, when the call got connected & hung up by the script, when it called out.



This Discussion