Partilhar via


Microsoft SALT Interpreter CSTA Private Data Extensions

  Microsoft Speech Technologies Homepage

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:
  • wait to detect what entity answered the phone before sending the EstablishedEvent (this is the default), or
  • send the EstablishedEvent as soon as the outbound call is connected
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>