V10.7 includes a new HTTP API for integrators who want to communicate with Softdial CallGem™ using HTTP.
The API is presented by the CallGem HTTP Proxy (or 'the Proxy'), an intermediate service between Softdial CallGem™/ Softdial Campaign Manager™ (the two services that consume SDMP messages) and the web client. The Proxy's main functions are:
The Proxy eliminates the need for the previous
The sockets-based SDMP protocol delivers real-time interfaces to core contact center protocols but its reliability on sockets-as-sessions makes it vulnerable when deploying into the cloud. In order to mitigate this, and to provide a web API more consistent with the APIs offered by other Softdial services, Softdial Contact Center™ (SCC) provides a mediation mechanism that allows the SDMP protocol to be re-expressed as a HTTP API in a number of different forms.
SoftdialConnection and the Proxy library between them provide an HTTP tunnel mechanism that delivers transport recovery, message queuing and support for HTTP over SSL. This in turn means that SCC 10.7 can be deployed to public cloud without having to manage connection reliability.
Broadly speaking, the HTTP API works in one of two ways:
This is supported for all interfaces for services that consume SDMP. It facilitates using HTTP for server-side applications which allows the session to survive a socket disconnection. Since the HTTP API is regular, server-side applications that have been written to use SDMP messaging via the Sytel.Mdn2 library SoftdialConnection class can configure the connection to use HTTP as the underlying transport rather than sockets.
This is supported for the CallGem user and agent interfaces, and the CM default interface. This facilitates partners developing stateless Web clients in Javascript without the need for middle-tier code to mediate to a legacy API.
All requests support use of HTTP request methods GET and POST. When using POST, the postvars are simply the message parameters formatted as if passed in the URL as part of a GET request.
Generally use of GET will suffice. However there are exceptions to this if using the HTTP API to transmit large amounts of parameter data e.g. record data in the Data (DT) parameter which may be up to 128K characters in length. Even though there are no prescribed limits in the HTTP protocol itself and the SCC web service infrastructure imposes no limits, using POST to pass large amounts of data has a better chance of ensuring data gets through the network unscathed.
The Softdial HTTP proxy listens (via URL rewrite) on URL base path
http://<WebServerHost>/softdial/scc/<TypeOfService>
The type of service is either CG (CallGem) or CM (CampaignManager)
Session methods are served directly from the base URL or can be called at a tenant level
If an application uses more than one type of service, session methods apply to each service. This means that if you produce an application that interacts with both CallGem and Campaign Manager for tenant xyz, you should invoke the SessionProperties method on each path (see Session Methods) to set session properties consistently, e.g.
http://host/softdial/scc/CG/xyz/SessionProperties?ReceiveEvents=LongPolling and
http://host/softdial/scc/CM/xyz/SessionProperties?ReceiveEvents=LongPolling
The HTTP API methods use the following path conventions:
This approach follows REST conventions for path-based access to resources, and enables future work on improvements to the SCC service bus for sharding of core services to be transparent to clients.
<tenant> is the same tenant identifier configured in repository and used as the Tenant Descriptor (TD) parameter in the SDMP API.
typeOfService and interfaceId can either be the short form 2 character codes or the descriptive names for interfaces. These can be used interchangeably, so
http://host/softdial/scc/CG/default/AG/...
and
http://host/softdial/scc/CallGem/default/Agent/...
are equivalent and will resolve to the same resource.
The methods in this help section are presented Camel Cased. Method names are subject to case-invariant comparison, to accommodate varied programming styles. This means that
http://host/softdial/scc/cg/sessionproperties and
http://host/softdial/scc/CG/SessionProperties and
http://host/softdial/scc/CG/SeSSIOnproperTIEs
are all equivalent.
However, instance methods use the instance name in the path. Instance names are subject to case-sensitive comparison as the identifiers used in SDMP are also case-sensitive.
Session control parameters are presented in the documentation Camel Cased but are subject to case-invariant comparison, to accommodate varied programming styles.
All methods may consume the id parameter. The id parameter contains the session key for an authenticated HTTP session.
Clients that cache session cookies will not need to pass the id parameter explicitly once a session has been authenticated. The method parameter lists in the API documentation omit the id parameter for brevity.
Session cookies may become stale if not used for a time. The timeout is part of system configuration. Services that poll or handle callbacks will not become stale. Blocking Clients left idle for long periods may do, in which case a blocking client should implement standard handling for 403 (Forbidden) responses.
All methods in the HTTP API require use of an authenticated session, either passed in the request as a session cookie or passed in the API as the id parameter. For details, see Authentication and Authorisation.
A selection of sample HTTP scripts is included with the installation along with details on how to use them. This can be found in the following folder after installation:
\Softdial\Samples\CS\HTTPProxySampleCs