Outbound Calls

Placing an outbound call

An outbound call can be placed on Aculab Cloud by calling service_start which takes the name of one of your Outbound Services and a telephone number or SIP address for the call destination. If the Outbound Service has been written as a UAS application, the service starts an instance of the UAS application which then controls when to make the outbound call. For REST, the service makes the outbound call and starts the REST application once the call is answered.

If the call destination is a telephone number the call uses an outbound telephony provider to route the call. If it is a SIP address then the call can be made directly to the SIP endpoint.

For telephone numbers you must specify a valid Caller ID (you can set this in the Cloud Console's Settings / Caller IDs page).

You can use Live Speaker Detection, also known as Answering Machine Detection (AMD), to establish how the call has been answered. There are also some best practices that can be followed.

Note that, due to the way in which the telephone network works, if the called party of an outbound call hangs up, the Aculab Cloud may not generally be informed of this immediately and, therefore, cannot guarantee to inform your application in a timely manner. So, we strongly recommend that you write your application to interact with the called party and, in the event of repeated no response, hang up the call.

Call prefixes

When specifying telephone numbers and sip addresses Aculab Cloud will treat anything containing only digits, optionally separated by a single '-', as a telephone number and everything else as a SIP address.

One of the following prefixes can be used to declare a specific type of number/address.

Prefix Description Example
tel a telephone or cell (mobile) number tel:441908273800
sip a SIP username@address sip:contact@example.com
loc an inbound service hosted on the same cloud region loc:my_inbound_service
webrtc a WebRTC client identified by the supplied client ID webrtc:clientId
con a conference room name con:MyConferenceRoom

When using the tel prefix for a call destination, the full international number must be supplied. This must not contain any leading '0'. The leading '+' is optional. The call will be placed with Aculab's default providers. Aculab Cloud does not support calling premium rate numbers via our outbound provider.

Examples:

"443069990123" is equivalent to "tel:443069990123"
"bob@acompany.com" is equivalent to "sip:bob@acompany.com"
"loc:MyInboundService" for an inbound service named "MyInboundService"
"webrtc:Client7356" for a webRTC client with id "Client7356"
"con:MyConferenceRoom" for a conference room name "MyConferenceRoom"

Blocked prefixes

You can set a list of blocked prefixes on your account via Settings. Outbound calls using Aculab's provider to numbers that start with any of these prefixes will fail with a code of -103.

On each of your inbound and outbound services you can override this list by specifying a set a list of blocked prefixes specific to that service from the Outbound Calls section of the General tab.

Example:

Blocked prefix: 44
- blocks calls to numbers starting with 44

Allowed prefixes

You can set a list of allowed prefixes on your account via Settings. Outbound calls using Aculab's provider to numbers that start with any of these prefixes will be allowed through, overriding any relevant blocked prefix.

On each of your inbound and outbound services you can override this list by specifying a set a list of allowed prefixes specific to that service from the Outbound Calls section of the General tab.

Example:

Blocked prefix: 44
Allowed prefix: 447
- allows calls to numbers starting with 447, but blocks calls to all other 44 numbers

Price cap

You can set a USD/min price cap on the rate for each outbound call that you make on your account that uses Aculab's provider. You can modify this in Settings. Outbound calls that have a price rate that exceeds this will fail with a code of -103.

On each of your inbound and outbound services you can override this account default by specifying a price cap specific to that service from the Outbound Calls section of the General tab.

The maximum price cap you can set is 0.5 USD/min. If you want to raise this limit please contact us.

Call destination

The type of your application determines how you specify the call destination:

  • For REST applications, you specify your call destinations in rest_calls, a JSON array of objects each with a 'to' property, and a 'from' property for the caller id. An application instance will be created for each object in the array.

    Examples:

    service_start?rest_calls=[{ "to" : "443069990123", "from" : "443069999876"}, { "to" : "bob@acompany.com" }]
    service_start?rest_calls=[{ "to" : "loc:MyInboundService"}, { "to" : "webrtc:Client7356" }]

    Aculab Cloud makes the outbound call and starts the REST application once the call is answered.

  • For UAS applications, you specify a list of data strings in outbound_parameters. One application will be started for each data string in the list and receive the data string in its outbound_parameters argument. You are free to pass any information, such as call destinations in each data string. If specifying more than one data string, the list will be delimited by a character you specify as an additional argument

    Examples:

    service_start?outbound_parameters=443069990123;443069999876,bob@acompany.com&delimiter=,
    service_start?outbound_parameters=tel:443069990123;tel:443069999876,sip:bob@acompany.com&delimiter=,
    service_start?outbound_parameters=webrtc:Client7356

    The UAS application then uses one of the high-level UAS APIs to make an outbound call.

    Examples:

    (C#) channel.Call("443069990123", "443069999876");
    (C#) channel.Call("webrtc:Client7356");
    (C#) channel.CallInboundService("MyInboundService");
    (Python) channel.call("443069990123", call_from="443069999876")
    (Python) channel.call("webrtc:Client7356")
    (Python) channel.call_inbound_service("MyInboundService")

Outbound telephony providers

Outbound telephone calls placed via Aculab's provider will be charged to your account. In addition to using Aculab's default outbound telephony provider, it is possible to add your own. If you'd like to add an outbound provider to the list and manage their billing yourself, you'll need to contact us in order to supply the connection details. There may be a charge for this facility.

When signed in, the current list of available providers will be listed here. Each entry in the list has a selector number associated with it.

In this example two providers have been added to the list in addition to the default Aculab provider.

Selector Provider Name
0 aculab
1 providerA
2 providerB

The selector number is a zero-based digit, used as a prefix that determines the provider that should be used. The default provider is aculab and unless the destination address is modified calls will be routed to Aculab's default provider. So a destination address of tel:12225551234 will go via aculab.

Prefixing the destination number with 0 as the selector number will also use aculab as the provider, eg tel:0-12225551234.

To change the provider to providerA the selector number 1 must be used, tel:1-12225551234. Other providers in the list can be selected in the same way.