Microsoft SALT Interpreter CSTA Private Data Extensions
For some call control services and events, the TIM sends and receives private data extensions embedded in those messages. These extensions are required in order to enable some core scenarios for speech applications running in a SALT interpreter. The following table shows the details of these extensions.
Public Events | Private data extension | Function | Support in SDK |
---|---|---|---|
MakeCall | setCallAnalysis | Allows the application to set whether the TIM should:
|
Not supported by the MakeCall control. Application developers need to manually create the MakeCall request. |
setOutboundCallingDevice | This allows the application to set the ANI or caller ID for the call when the call is originated from MSS. callingDevice can also be set to the ANI, but this would be overridden by this private data extension. | Not supported by the MakeCall control. Application developers need to manually create the MakeCall request. | |
ConsultationCall | setCallAnalysis | Same as MakeCall | Same as MakeCall in fact there is no SDK control for consultation or supervised calls. |
setOutboundCallingDevice | Same as MakeCall. This allows for the ANI (or caller ID) of the held party to be passed to the consulted party. | Same as MakeCall in fact there is no SDK control for consultation or supervised calls. | |
DeliveredEvent | correlatorData | Contains CTI data that can be used by the application to uniquely correlate the call with the rest of the call center infrastructure, including back-end data systems. | Supported as part of the CallInfo object. |
EstablishedEvent | correlatorData | Same as DeliveredEvent | Same as DeliveredEvent |
callAnalysis | For an outbound call, this extension allows an application to adapt its behavior depending how whether the TIM determines that the call has been answered by a person or by a facsimile or answering machine. | Not explicitly supported as part of the MakeCall control. Application developers need to inspect the EstablishedEvent for this private data extension. |
Example
The following example shows private data extension that an application can send to the TIM as part of a MakeCall CSTA service request.
<MakeCall xmlns="http://www.ecma.ch/standards/ecma-323/csta/ed2">
<callingDevice>0</callingDevice>
<calledDirectoryNumber>18753013002</calledDirectoryNumber>
<extensions>
<privateData>
<private xmlns:pri="https://schemas.microsoft.com/speech/2003/08/CSTAPrivateData">
<pri:setOutboundCallingDevice>12345</pri:setOutboundCallingDevice>
<pri:setCallAnalysis>true</pri:setCallAnalysis>
</private>
</privateData>
</extensions>
</MakeCall>
Private Data Extensions Schema
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="https://schemas.microsoft.com/speech/2003/08/CSTAPrivateData" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:pri="https://schemas.microsoft.com/speech/2003/08/CSTAPrivateData" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:annotation>
<xs:documentation>Private data schema for CTI correlation and for Call Analysis produced by Microsoft.</xs:documentation>
</xs:annotation>
<xs:complexType name="LineInfo">
<xs:annotation>
<xs:documentation>Default line information used for correlating calls between a switch/CTI and the IVR</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="machineName">
<xs:annotation>
<xs:documentation>Contains machine name (if known). If not known, add notKnown</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:element>
<xs:element name="board">
<xs:annotation>
<xs:documentation>Contains board index. If not known set to -1</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:long">
<xs:minInclusive value="-1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="trunk">
<xs:annotation>
<xs:documentation>Contains trunk index. If not known set to -1</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:long">
<xs:minInclusive value="-1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="channel">
<xs:annotation>
<xs:documentation>Contains channel index. If not known set to -1</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:long">
<xs:minInclusive value="-1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="extraInfo" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CallReference">
<xs:annotation>
<xs:documentation>This contains the call reference ID as provided by the switch or CTI plus any other useful information</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="externalCallRefID">
<xs:annotation>
<xs:documentation>If there is no external call reference ID, then this field must be set to notKnown</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:element>
<xs:element name="extraInfo" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="CallAnalysis">
<xs:restriction base="xs:string">
<xs:enumeration value="humanVoice"/>
<xs:enumeration value="answeringMachine"/>
<xs:enumeration value="facsimileMachine"/>
<xs:enumeration value="notKnown"/>
<xs:enumeration value="other"/>
<xs:enumeration value="notEnabled"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="callAnalysis" type="pri:CallAnalysis"/>
<xs:simpleType name="SetOutboundCallingDevice">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="setOutboundCallingDevice" type="pri:SetOutboundCallingDevice"/>
<xs:simpleType name="SetCallAnalysis">
<xs:restriction base="xs:boolean"/>
</xs:simpleType>
<xs:element name="setCallAnalysis" type="pri:SetCallAnalysis"/>
<xs:element name="correlator">
<xs:complexType>
<xs:sequence>
<xs:element name="lineInfo" type="pri:LineInfo"/>
<xs:element name="callReference" type="pri:CallReference"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>