Aculab .NET UAS Overview

Introduction

Aculab Cloud allows development of voice applications through a cloud-based media processing and communications platform. Your applications are developed using high-level languages such as Python, C#, VB, F#, C++ and Java and run within a User Application Server (UAS) that resides on your own platform.

Inbound applications run in response to specific incoming calls to the cloud. Outbound applications run in response to specific requests to invoke them.



The UAS is configured and monitored via the UAS Management Console. Users create their own accounts on the cloud via cloud.aculab.com. This allows them to configure how individual applications are invoked, to invoke outbound applications and to manage their media files on the cloud through a graphical web interface.

A Web Services (WS) API provides a programmatic means of doing the same things.

Introduction

Rapide is a physical platform that supports voice and fax applications that interact with telephone calls on SIP and TDM. Your applications are developed using high-level languages such as Python, C#, VB, F#, C++ and Java and run within a User Application Server (UAS) that resides on your own platform.

Rapide shares much with Aculab Cloud and is designed to allow you to migrate easily between the two. So applications written on one will work on the other and operations such as starting outbound applications and managing files are near identical on both.

Inbound applications run in response to specific incoming calls to a Rapide server. Outbound applications run in response to specific requests to start them.



The UAS is configured and monitored via the UAS Management Console. Users create their own accounts on a Rapide server via its Web Site. This allows them to configure how individual applications are started, to start outbound applications and to manage their files, stored on the Rapide server, through a graphical web interface.

A Web Services (WS) API provides a programmatic means of doing the same things.


Language Support

UAS download packages are available that support a variety of programming languages. The following documentation refers to the .NET UAS which provides CLS-compliant APIs for writing applications in any of the Microsoft .NET-supported languages: C#, VB, F# and C++.

A number of sample UAS applications are provided with the .NET UAS that illustrate some typical simple scenarios. C# and VB versions exist for all of these scenarios and a few selected samples have been written in F# and C++.

In addition, a few C# samples have been included that illustrate how to use the various Web Service interfaces to initiate outgoing services, manage files, manage large conferences, manage reports, purchase and manage inbound telephone numbers and monitor the connections between the UAS and the cloud.
In addition, a few C# samples have been included that illustrate how to use the various Web Service interfaces to initiate outgoing services, manage files and manage reports.


.Net Framework Support

.Net Framework 4.6.2 is supported.
.NET UAS applications can be developed and built using Visual Studio or one of the various .NET language-specific IDEs and must be built against this .NET Framework.


Architecture

The .NET UAS runs applications that use the UASAppAPI and UASClassLibrary libraries (and can also use the WS API). These provide call handling, media processing, file handling and diagnostic facilities.

Standalone WS applications use the WS API to invoke outbound applications and manage files.



The .NET UAS receives a request from the Aculab Cloud instructing it to run a selected user application that is currently loaded in the UAS.

User applications typically handle a primary call, either inbound or outbound, and may make other secondary outbound calls. A call may be connected or transferred to another call.

A UAS application is invoked by the cloud in response to either an incoming call to a specific address or to a request to invoke an application that makes an outbound call.
Standalone WS applications use the WS API to start outbound applications and manage files. They access a Rapide server via its IP address and, where the WS API requires a Cloud ID, 0-0-0 is used. That helps to make using Rapide and using Aculab Cloud as similar as possible.



The .NET UAS receives a request from a Rapide server instructing it to run a selected user application that is currently loaded in the UAS.

User applications typically handle a primary call, either inbound or outbound, and may make other secondary outbound calls. A call may be connected to another call.

A UAS application is started by a Rapide server in response to either an incoming call to a specific address or to a request to start an application that makes an outbound call.


Compatibility:

The .Net UAS is compatible with Microsoft Windows 10/11.


UAS Management Console

Use the Management Console to manage cloud connections, applications and diagnostic information on the UAS.

Cloud Configuration

The UAS maintains a list of clouds to which it holds a connection. When you download the UAS from a particular cloud region, it will come pre-configured to connect to that cloud. If you'd like it to connect to other cloud regions, you need to configure the UAS with their details.

See the Using the UAS section for instructions on how to add and remove cloud regions from the UAS.

Use the Management Console to manage Rapide server connections, applications and diagnostic information on the UAS.

Connection Configuration

The UAS maintains a list of Rapide servers to which it holds a connection. When you download the UAS from a particular Rapide server, it will come pre-configured to connect to it. If you'd like it to connect to other Rapide servers, you need to configure the UAS with their details.

See the Using the UAS section for instructions on how to add and remove Rapide connections from the UAS.

Application Management

Applications developers can upload, remove, monitor and diagnose their applications.

See the Using the UAS section for instructions on how to manage applications on the UAS.


Writing Telephony Applications

A UAS application is simply a .NET class library assembly that uses the UASAppAPI and adheres to a few conventions. Writing a simple .NET UAS application is a straightforward task using the supplied Visual Studio project templates that are included in the UAS installation.

The UAS API is based on the Aculab Media System (AMS) Client API which provides powerful media processing and call control features via a high-level client API. It allows incoming and outgoing telephone calls to be controlled and connected together or transferred, wav file playback, wav file record, DTMF playback, DTMF detection, fax sending, fax receiving and conferencing.

See the Writing Applications section for guidance on developing applications for the UAS.


Inbound Applications

The target address of an incoming call (1) is used to determine which application is to be executed. A message is sent to the UAS to run an instance of the specified application (2). The application is handed an active incoming call and its first task is typically either to answer it or reject it (3). Optionally, the application can also make an additional outbound call (4).

Inbound Services

An Inbound Service must be registered on the relevant cloud region Rapide server in order for it to be able to start a particular inbound application in response to an incoming call. Each Inbound Service points to exactly one application while several Inbound Services can point to the same application.

You can create a new Inbound Service from Inbound Services (requires you to be logged in).


Starting Outbound Applications

While inbound applications are run automatically in response to incoming calls, outbound applications are typically started externally to the cloudthe Rapide server, via a standalone program.

Note that UAS applications can also start outbound applications.

The Aculab CloudRapide Web Services API can be used to write a WS Application that starts an outbound application on a particular cloud regionRapide server (1). A message is sent to the UAS to run an instance of the specified outbound application (2). The outbound application typically then makes an outbound call (3,4). Like inbound applications, an outbound application can usually also make additional outbound calls (4) on its extra channels.

Outbound Services

An Outbound Service must be registered on the relevant cloud regionthe Rapide server in order for it to be able to start a particular outbound application. Each Outbound Service points to exactly one application while several Outbound Services can point to the same application.

You can create a new Outbound Service from Outbound Services (requires you to be logged in).

Outbound Parameters

The particular cloud regionRapide server and user's account on which an Outbound Service resides are specified through the WS API. In addition this API provides an outboundParameters field that will ultimately be passed to the outbound application. Typically this contains the destination address of the resultant outbound call.

Managing Files

Files that can be managed include .wav media files that applications may play or record, .tif media files that applications may send or receive as faxes and REST API log files that are created when using the REST API. Encrypted .wav and .tif files can be uploaded and downloaded. See Protocols and formats for the supported encryption algorithms.

Uploaded and recorded files are located in a cloud media store, one per cloud account. Uploaded and recorded files are stored on the Rapide server. Some basic file manipulation methods are available to UAS applications via the FileManager property of UASApplication. In addition, the Web Services API can be used to perform more comprehensive file management.
See the Manage Files Web Service.

An account's cloud media file store can be browsed here.

High Level API

This release contains a high level extension api that provides additional high level functionality on top of the standard UASCallChannel. This includes methods to make and connect a call to another call, to prompt for and validate an entered number and to run an interactive menu.
See the CallChannelHelper class.