Skip to main content

Voice Applications Management

In Cloudonix, a voice application is the core element that provides user interactions through a voice call. You can think of a voice application as a single series of functions (or operations) that are performed in a synchronous manner. For example, a voice application may answer the inbound voice calls (from a trunk or subscriber), then playback a pre-recorded message, followed by a call forward to a new destination. While a voice application is a relatively simplistic element, the combination between multiple voice applications and the REST API creates an experience called a Call Flow.

A Basic Experience Call Flow

A Call Flow may include multiple voice applications, that transfer the user between them, in order to achieve a certain interaction. For example, imagine the following scenario:

  • Step #1: Answer the inbound voice calls (from a trunk or subscriber)
  • Step #2: Playback a message and retrieve an ID from the caller
  • Step #3: Obtain relevant data based on the caller input
  • Step #4: Playback a generated message using the retrieved data from step #3
  • Step #5: Goto back to step #1

In the above case, we'll have 2 distinct voice applications. Steps #1-#3 will be the first voice application, steps #4-#5 will be the second one.

Voice applications use the CXML Language to describe their functionality. Here is an example of the above-mentioned voice applications:

Voice Application #1 (name: script1)

<Response>
<Gather action="https://example.com/script2">
<Say>Please enter your shipment ID number, followed by the hash key.</Say>
</Gather>
</Response>

Voice Application #2 (name: script2)

<Response>
<Say>
The shipment ID number [previously entered digit string]
status is current [shipment status]
</Say>
<Redirect>https://example.com/script1</Redirect>
</Response>

Of course, the above is very simplistic - but it illustrates how voice applications can interact into a single experience.

Voice Application Resources

Cloudonix provides three different voice application resources. While a customer has full control over Service and Container application resources, Service application resources are managed by Cloudonix and provided to all customers a basic account boilerplate for simple call-routing functionality.

Service Applications

Following is a list of Service Applications provided as defaults, to any provisioned Cloudonix Domain.

Application NameDescriptionToggleable
call-routingThis application provides a basic routing capability for voice-calls, based on their destination and the relevant Domain properties.
blackholeThis application is a DEAD END application the will return an error signal to the caller.

Remote Applications

Remote Applications are voice applications that are hosted on a customer provided server (or remote NoCode platform, such as Make.com). These applications process a single HTTP POST request that Cloudonix will issue to these, in a predefined format (Voice Application Request) and answer with a CXML Document.

Container Applications

Container Applications are very similar to Remote Applications, however, these are hosted on the Cloudonix platform, removing the requirement for a customer server. Container Applications may be developed using various run times, as defined by the Container Application Data Model.

Voice Applications Management View

Logon to the Cloudonix cockpit and select (or create) a domain from the domains list. Once selected, click the Voice Applications (

) icon to access the domain applications. A screen similar to the below will appear:

Creating a New Voice Application

Step 1: Declare your voice application to Cloudonix

Click the purple plus button at the top left side of the view:

The following dialog box will appear:

The default is to create a Remote Application Resource as detailed above. For the time being, let's focus on that - we'll discuss Container Applications in a different section. The following properties are mandatory in order to add your new voice application:

PropertyDescriptionDefault Value
Application NameA string representing your voice application to be created.None
Application Resource TypeIndicates the voice application type. This may be Remote Application, Service Application or Container Application.Remote Application Resource
Application URLA remote URL serving the voice application.None
Application RuntimeWhat type of remote application this is. Currently, only CXML is supported.CXML
HTTP MethodWhat HTTP method should be used to activate the remote application, POST or GET.POST

Once your Voice Application properties are set, click the Create button to have the platform save your setup. The Voice Applications view will change as the following example:

Step 2: Assign a DNID to your voice application

A DNID (a number that is dialled by either a subscriber or received from an inbound trunk) is the means by which a Voice Application is selected to be executed. For example, let us assume that we'll assign the DNID number 12127773456 to the previously created Voice Application - thus, when the DNID is intercepted, by Cloudonix - it will activate the associated Voice Application. To manage your Voice Application assigned DNID numbers, click the Voice Applications Settings icon, the following view will appear in the cockpit:

Click the purple plus (+) button to enter the DNID view. A similar dialog will appear on your screen:

A DNID may be defined using 4 different mechanisms:

DNID Match TypeDescription
Prefix MatchA prefix match is based upon the first digits or characters of the DNID entered.
Glob WildcardA wildcard expressions uses the * and ? characters to designate locations in the DNID where various characters may appear.
Asterisk ExpressionAn Asterisk expression is based upon the Asterisk Dialplan language.
Regular ExpressionA regular expression, as explained here.

Once you've defined your DNID, you will be returned to the voice application view, that will look similar to the below:

Now, your voice application is associated with the DNID number 12127773456. If a voice call is intercepted, dialled to that number, it will activate the voiceApplicationDemo we previously created.