SDMP API Update
We have made a number of changes to the Softdial CallGem™ API in support of the 10.2 release, which will also ease migration to a web services architecture for dial plan management.


Message | Description |
---|---|
MakeCall [MC] | This message has a new parameter Call Expiry (CE). Formatting is same as the Planned Time (PT) parameter, and is treated as local time (as per PT parameter). If calls are not dialed by the expiry time, Softdial CallGem™ returns the call undialed with Reason Code (RE) of 0 (NumberBack [NB] message). If the PT parameter is specified, any CE parameter is ignored. |


Message | Description |
---|---|
ModifyGroup [MG] | This message has the same parameter set as GroupAdd [AG] with the exception of the ON parameter. ModifyGroup [MG] can be sent at any time after a group/ queue has been created. It will apply the changes in real-time, although calls already in queue will not have timers or messages changed. |

Message | Description |
---|---|
AddIncomingCallRoute [AI] | This message includes the following parameters:
The AI message adds an entry to Softdial CallGem™'s incoming call route table. The Namespace is now used to generate messages that alter the routing table in real-time. On system startup, all routing table entries are added. Any time a routing table entry is changed in the Namespace, a UpdateIncomingCallRoute [UI] or DeleteIncomingCallRoute [DI] message is generated. |
UpdateIncomingCallRoute [UI] | This message has the same parameters as AddIncomingCallRoute [AI]. This message updates the incoming call route table. |
DeleteIncomingCallRoute [DI] | This message has an Identity (ID) parameter. The incoming call route with the specified identity is deleted. |

Queue changes are also observed in real time in the new build. Again, changes to the Namespace will result in a message being sent to Softdial CallGem™ to add (GroupAdd [AG]) or update (e.g. GroupMembership [GM]) a queue in real-time.
Namespace queue deletion will only take effect on campaign close. This is to prevent inadvertent loss of calls.
It is possible to put a queue out of service (GroupOutOfService [OG]) and delete it (GroupDelete [DG]) but in the round this will not be necessary.

SDMP (Softdial Message Protocol) is the published API protocol to allow integrators to interface with Softdial CallGem™. Until now the SDMP API has not supported Softdial Campaign Manager™ which has used a separate private low level protocol.
There has been demand from many integrators who wish to integrate their own or other 3rd party line of business systems with Softdial Campaign Manager™.
With V10, the existing SDMP protocol has been extended to provide a standardised API framework that meets the following objectives:
- standardise protocols across all SCC services
- provide simple 3rd party integration options through generated high level APIs
- provide support for standards based protocols for communicating over public networks
- allow Softdial services to route other Softdial service traffic, shielding client applications from server-side implementation detail
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.

The functional changes to the protocol are small. 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
- AA is a Type of Service indicator
- BB is an Interface ID indicator
- CC is a message code
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™ OpenCampaign [OC] message is framed as follows using SDMP 2.0:
CG:CA:OC\TDdefault\CNHello
Type of Service may be:
- CG - CallGem
- CM - Campaign Manager
- NS - Namespace
- RI - Routing Information
Interface ID is implementation dependent as described below:
Application | Implements... | Description |
---|---|---|
Softdial CallGem™ |
AG |
Softdial CallGem™'s four logical interfaces: Agent Campaign CTI Management |
Softdial Campaign Manager™ | DE | Default |
Namespace | DE | Default |
Routing Information | DE | Default |
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 the provision of published APIs to all services.
From V10, SDMP2 framing is fully supported by
- Softdial CallGem™
- Softdial Campaign Manager™ Server
- Softdial Scripter™ 2 Engine
RouterNET, our high level API component offers Interfaces to
- Softdial CallGem™
- Softdial Campaign Manager™ Server
These interfaces are implemented using SDMP2 framing.

It is possible to work out from the message framing and body of a message, 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.
There is a Type of Service, RI (Routing information) and Interface ID, DE (default) that implements a set of messages and event messages to deal with exchanging routing information. Softdial services that support routing of SDMP2 traffic implement this set of messages.
A full discussion of the detail implementation of message routing is beyond the scope of this topic. If a third party integrator has a need to support SDMP2 message routing (unlikely unless you are a network infrastructure provider),

Also affected by this framing change are log files for Softdial CallGem™ and Softdial Campaign Manager™ Server, which 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.

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.
application <-> dialer <-> campaign manager
The rules for generating OI are similar to that for a Token (TK). The 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. e.g. Some requests may result in a single response, e.g. the GetColumns [GC] request; other requests may result in multiple responses until cancellation, e.g. the enumeration messages (EnumerateAgents [EA], EnumerateCampaigns [EC], etc) or Softdial Campaign Manager™ StatusBroadcast [SB].
If communicating directly with Softdial CallGem™, APIs that belongs to Softdial CallGem™ (CG: prefixed messages) do not strictly require OI parameter, since the message is going directly to Softdial CallGem™ and Softdial CallGem™ coordinates the message routing. In this situation, adding an 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 OI param is mandatory. You can use some combination (but not all) of the following to construct a unique OI value:
- application name
- machine name
- tenant name
- GUID
- sequential count
Softdial Campaign Manager™ StatusRequest [SR] and the StatusBroadcast [SB] response works in one of 2 ways as shown below.
The values for OI and TK presented here are not good examples (not very unique), but sufficient to demonstrate it working.

Sends a single status report.
Send StatusRequest [SR] with a Token (TK) parameter and without a Transaction Identifier (TX) parameter. No need to stop the status request.
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.
Send StatusRequest [SR] with both Token (TK) and Transaction Identifier (TX) parameters, then send StopStatusRequest [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
Included with the GA V10 installer (V10.0.0.55 and above) is a sample C# project and compiled application showing basic use of the new messages . This can be found in 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.
For more information, see the Softdial Campaign Manager™ RouterNET Integration.