SDMP Message Protocol is the published API protocol to allow integrators to interface with Softdial CallGem™.
From V10 - the existing SDMP protocol has been extended to provide a standardised API framework - SDMP2 - that
Exposing all service APIs through the same framing (and with routing through a single point of communication) facilitates the development and integration of rich client side applications and, when fully implemented, the extended SDMP2 API framework, together with SCC's existing capabilities will provide a platform for delivering large-scale distributed solutions.
As of release of Version 10, SDMP2 framing is fully supported by
RouterNET, our high level API component, offers SDMP2 Interfaces to
The functional changes to the protocol are small. Firstly, the current framing format
CC\P1[]\P2...
is still supported so there is no need for integrators to change code. This type of framing will be referred to as SDMP.
Message framing for SDMP2 messages is as follows:
AA:BB:CC\P1[]\P2...
where
The Type of Service and Interface ID indicators provide some information about which service the message is sent to, or event message is sent from. For example, the Softdial CallGem™ Open Campaign [OC] message is framed as follows using SDMP2:
CG:CA:OC\TDdefault\CNHello
Possible Types of Service and their permitted Interface IDs are as follows:
Type of Service | Interface ID |
---|---|
CG - Softdial CallGem™ | AG - Agent CA - Campaign CT - CTI MA - Management |
CM - Softdial Campaign Manager™ | DE - default |
NS - |
|
RI - Routing Information |
The reason for making this extension is to allow other services within Softdial Contact Center™ to process messages conforming to SDMP protocol framing. This theoretically enables published APIs to all services.
This framing change also means that log files for Softdial CallGem™ and Softdial Campaign Manager™ Server show the new framing on messages sent using that framing. If you have a home grown log parser application you would need to edit it to take the new framing into account.
From the message framing and body of a message, it is possible to work out exactly which service it ought to be sent to. With some exchange of information between services that support SDMP2, it is possible to set up return routes for events relating to a message or class of message that a client is interested in.
For the exchange of routing information, there is the RI (Routing information) Type of Service (with its associated DE (default) Interface ID). Softdial services that support routing of SDMP2 traffic implement the RI set of messages.
A full discussion of the detail implementation of message routing is beyond the scope of this help document. If a third party integrator has a need to support SDMP2 message routing (unlikely unless you are a network infrastructure provider) then Sytel will provide technical assistance.
Softdial CallGem™ can process SDMP and SDMP2 framing interchangeably. On a given socket connection, it is possible (but not advisable) to mix both types of framing. In order to bring some predictability to the framing of messages Softdial CallGem™ monitors the framing type of messages sent to it from each connection. After 20 consecutive messages with the same framing, Softdial CallGem™ 'hardens' the socket to support only that type of framing. This ensures that applications that are written to deal with only one frame type for event messages will work reliably.
An SDMP2 message that is sent to a service (e.g. Softdial Campaign Manager™) via Softdial CallGem™, must have an Originator ID (OI) parameter attached. This provides message routing detail such that there is a recorded path in all supporting SDMP2 services between the sender and the destination service, i.e.
The rules for generating Originator ID (OI) are similar to that for a Token (TK). The Originator ID (OI) value must be a string that uniquely identifies the originator of the message for the duration of the message exchange across all activity for the tenant at any given time.
Some requests may result in a single response, e.g. the Get Columns [GC] request (CM:DE:GC)
Other requests may result in multiple responses until cancellation, e.g. the enumeration messages or Softdial Campaign Manager™ Status Broadcast [SB].
If communicating directly with Softdial CallGem™, APIs that belong to Softdial CallGem™ (CG: prefixed messages), do not strictly require Originator ID (OI), since the message is going directly to Softdial CallGem™ and Softdial CallGem™ coordinates the message routing. In this situation, adding an Originator ID (OI) parameter is still valid, though not necessary.
However, if sending a request that belongs to another service, e.g. Softdial Campaign Manager™ (CM: prefix), then the Originator ID (OI) parameter is mandatory.
To construct a unique Originator ID (OI) value, you can use some combination (but not all) of
See also RouterNET Integration.
The Softdial Campaign Manager™ Status Request [SR] and the Status Broadcast [SB] response (CM:DE:SB) works in one of 2 ways as shown below
Sends a single status report (i.e. does not require Stop Status Request [SS])
The following example sends a Status Request [SR] with Token (TK) and without Transaction Identifier (TX)
CM:DE:SR\TDdefault\OItest5\TKtest5
CM:DE:MV\TKtest5
CM:DE:SB\TDdefault\TKtest5\DT<CampaignStatus Time="2009-10-23T08:56:08Z"><Campaign ID="87" Name="Mobiles" State="0" Type="1" Cache="0" LinkMaster=" IsLocked="false" LockTag=" LockTime=" Agents="0" CallsMade="1" ListRemaining="4724" ListTotal="4890" RunoutEstimate="570"/><Campaign ID="88" Name="m" State="0" Type="0" Cache="0" LinkMaster="m" IsLocked="false" LockTag=" LockTime=" Agents="0" CallsMade="0" ListRemaining="0" ListTotal="0" RunoutEstimate="0"/><Campaign ID="89" Name="s1" State="0" Type="0" Cache="0" LinkMaster=" IsLocked="false" LockTag=" LockTime=" Agents="0" CallsMade="0" ListRemaining="0" ListTotal="0" RunoutEstimate="0"/><Campaign ID="90" Name="test" State="0" Type="0" Cache="0" LinkMaster="m" IsLocked="false" LockTag=" LockTime=" Agents="0" CallsMade="0" ListRemaining="0" ListTotal="0" RunoutEstimate="0"/></CampaignStatus>\TS40109.372320
Sends a status update every 10 seconds (i.e.requires Stop Status Request [SS] (CM:DE:SS) to stop updates)
The following example sends a Status Request [SR] with both Token (TK) and Transaction Identifier (TX), then sends a Stop Status Request [SS] to stop the broadcasting.
CM:DE:SR\TDdefault\TXcm1\TKtest3
CM:DE:MV\TKtest3
CM:DE:SB\TD...document as for single broadcast...
CM:DE:SB\TD...document as for single broadcast...
CM:DE:SB\TD...document as for single broadcast...
CM:DE:SS\TDdefault\TXcm1\OItest4\TKtest4
CM:DE:MV\TKtest4
The values for Originator ID (OI) and Token (TK) presented here are not good examples (not very unique), but sufficient to demonstrate it working.
A sample C# project and compiled application (showing basic use of the new messages included with V10.0.0.55 and above) can be found at C:\<root>\Samples\CS\SDMPSample.
You will need to repair the references to the RouterNet and SytelMdn2 dlls, both of which can be found in the root folder.
See also RouterNET Integration.