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 |
---|---|
Make Call [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 (Number Back [NB] message). If the PT parameter is specified, any CE parameter is ignored. |
Message | Description |
---|---|
Modify Group [MG] | This message has the same parameter set as Group Add [AG] with the exception of the ON parameter. Modify Group [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 |
---|---|
Add Incoming Call Route [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 Update Incoming Call Route [UI] or Delete Incoming Call Route [DI] message is generated. |
Update Incoming Call Route [UI] | This message has the same parameters as Add Incoming Call Route [AI]. This message updates the incoming call route table. |
Delete Incoming Call Route [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 (Group Add [AG]) or update (e.g. Group Membership [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 (Group Out Of Service [OG]) and delete it (Group Delete [DG]) but in the round this will not be necessary.
SDMP (Softdial Message Protocol) is the API protocol Sytel has published 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, Sytel have extended the existing SDMP protocol to provide a standardised API framework that meets the following objectives:
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 Sytel'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
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 SDMP 2.0:
CG:CA:OC\TDdefault\CNHello
Type of Service may be:
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 Sytel to provide published APIs to all services.
From V10, SDMP2 framing is fully supported by
RouterNET, our high level API component offers Interfaces to
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) then contact Sytel for technical assistance.
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 Get Columns [GC] request; other requests may result in multiple responses until cancellation, e.g. the enumeration messages (Enumerate Agents [EA], Enumerate Campaigns [EC], etc) or Softdial Campaign Manager™ Status Broadcast [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:
Softdial Campaign Manager™ Status Request [SR] and the Status Broadcast [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 Status Request [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 Status Request [SR] with both Token (TK) and Transaction Identifier (TX) parameters, then send 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
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:\Softdial\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 Softdial folder (C:\Softdial).
For more information, see the Softdial Campaign Manager™ RouterNET Integration.