" /> Answering Machine Detect (AMD) - Genesys CTI User Forum

Author Topic: Answering Machine Detect (AMD)  (Read 6963 times)

Offline raza990

  • Full Member
  • ***
  • Posts: 214
  • Karma: 5
Answering Machine Detect (AMD)
« on: March 16, 2015, 06:02:51 AM »
Advertisement
Hi,

Can anyone tell me, How to deactivate Answering Machine Detect (AMD) on the GVP ?

Offline raza990

  • Full Member
  • ***
  • Posts: 214
  • Karma: 5
Re: Answering Machine Detect (AMD)
« Reply #1 on: March 17, 2015, 09:39:37 AM »
Genesys OCS is not used for RequestMakePredictiveCall dialing, we are using SSG (Supplementary Service Gateway) but I couldn't find any option under SSG,SIP & MCP appliaction about disabling of AMD (Answering Machine Detection).

From Genesys KB, I have found "call_answer_type_recognition=no_am_detection" then AMD will disabled but this option is for OCS.

From logs, I have found that SIP Server is receiving "call_answer_type_recognition" parameter when RequestMakePredictiveCall initiated.

13:48:38.871 Trc 04541 RequestMakePredictiveCall received from [788] (0000000d ATP_TServerSIP_Pri 10.112.2.21:1421)
message RequestMakePredictiveCall
AttributeThisDN 'AP'
AttributeOtherDN '027577285'
AttributeTimeout 20
AttributeUserData [178] 00 06 00 00..
'OutboundData' 'INSTID=240295'
'GSW_SESSION_DBID' -1
'gsw-session-dbid' -1
'gsw-ivr-profile-name' 'CCSurvey'
'outbound-ivr-call' 1
'SSG_APP_NAME' 'AP_VPSuppSvcGWay_01'
AttributeExtensions [240] 00 08 00 00..
'CPNDigits' '70128079'
'ivr-profile-name' 'CCSurvey'
'SIP_HEADERS' 'OutboundData'
'OutboundData' 'INSTID=240295'
'call_timeguard_timeout' 16000
'cpd-record' 'off'
'cpd-on-connect' 'on'
[b]'call_answer_type_recognition' 'full_positive_am_detection'[/b]
AttributeReferenceID 29709

But I don't know from where SIP Server is taking parameter "call_answer_type_recognition'".

Can anyone guide, where to locate so I can find "call_answer_type_recognition'" and then I will make it "no_am_detection".

Offline Kubig

  • Hero Member
  • *****
  • Posts: 2755
  • Karma: 44
Re: Answering Machine Detect (AMD)
« Reply #2 on: March 17, 2015, 09:51:13 AM »
You have to define CPD parameters within request to the SSG from your trigger application.

Offline raza990

  • Full Member
  • ***
  • Posts: 214
  • Karma: 5
Re: Answering Machine Detect (AMD)
« Reply #3 on: March 17, 2015, 10:06:57 AM »
I have found the trigger application, but I am confused in disabling AMD. Which value is responsible to de-activate AMD.

<xs:schema  xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="SSGRequest">
        <xs:complexType>
  <xs:annotation>
    <xs:documentation xml:lang="en">
    A single POST body can contain single create/query/cancel or multiple,
    and any combination of the three.
    It must conform to the XML request schema present in schema directory
    under root path.
  </xs:documentation>
  </xs:annotation>       
<xs:sequence>
<xs:element name="CreateRequest" minOccurs="0" maxOccurs="unbounded" type="CreateRequestDef"/>
  <xs:element name="QueryRequest" minOccurs="0" maxOccurs="unbounded" type="QueryRequestDef"/>
<xs:element name="CancelRequest" minOccurs="0" maxOccurs="unbounded" type="CancelRequestDef"/>
</xs:sequence>
        </xs:complexType>
</xs:element>

<xs:complexType name="CreateRequestDef">
  <xs:annotation>
    <xs:documentation xml:lang="en">
    "CreateRequest" tag is used to specify the attributes used for
    creating new outbound call requests. 
  </xs:documentation>
  </xs:annotation>
<xs:sequence>
<xs:element name="cpd"  minOccurs="0" maxOccurs="1">
<xs:annotation>
  <xs:documentation xml:lang="en">
  "cpd" tag defined in CreateRequest is used for supporting Call Progress Detection in SSG.
  All CPD attributes are optional. 
  </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="record" use="optional">
<xs:annotation>
  <xs:documentation xml:lang="en">
  Specifies if the CPD part of the call should be recorded.
  true or 1: CPD part to be recorded
  false or 0: Do not record CPD part
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:boolean"/>
</xs:simpleType>
</xs:attribute>

<xs:attribute name="preconnect" use="optional">
<xs:annotation>
  <xs:documentation xml:lang="en">
  This attribute is used to decide when to start the CPD.
    true or 1: CPD is started as soon as the first RTP packet is received.
    false or 0: CPD is started when call is connected.
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:boolean"/>
</xs:simpleType>
</xs:attribute>

<xs:attribute name="rnatimeout" use="optional">
<xs:annotation>
  <xs:documentation xml:lang="en">
  Timeout to be applied for Ring No Answer scenario.
  Unit is in sec (e.g. 30s). If no unit is specified, seconds assumed.
  The range, enforced by SSG through XML Schema is 1 to 60 seconds.
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
      <xs:pattern value="60|[1-9]s|[1-5][0-9]s|60s|[1-9]|[1-5][0-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

<xs:attribute name="postconnecttimeout" use="optional">
<xs:annotation>
  <xs:documentation xml:lang="en">
  Timeout to be applied for postconnect CPD.
  Unit is in sec or msec (e.g. 20s or 3000ms). If no unit is specified, seconds assumed.
  The range, enforced by SSG through XML Schema is 1 to 60 seconds.
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
      <xs:pattern value="60|[1-9]s|[1-5][0-9]s|60s|[1-9]|[1-5][0-9]|[1-9][0-9]{3}ms|[1-5][0-9]{4}ms|60000ms"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

<xs:attribute name="detect" use="optional">
<xs:annotation>
  <xs:documentation xml:lang="en">
  This attribute provides control to the Trigger Application about
  what to do with the outbound call when various types of CPD are detected.
  none (default): CPD in not requested at all by the customer. As soon as call is connected, start IVR.
  all: Turn on full CPD. As soon as call is connected, start IVR.
  voice: Only if voice is detected, connect to IVR. Any other detection, retry.
  am: Only if answering m/c is detected, connect to IVR. Any other detection, retry.
  fax: Only if fax is detected, connect to IVR. Any other detection, retry.
  voice/am/fax can be combined with comma separation (e.g. voice,am or am,fax or voice,am,fax etc.).
  Refer the XML Schema for the combinations
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:enumeration value="none" />
      <xs:enumeration value="all" />
      <xs:enumeration value="voice" />
      <xs:enumeration value="am" />
      <xs:enumeration value="fax" />
      <xs:enumeration value="voice,am" />
      <xs:enumeration value="voice,fax" />
      <xs:enumeration value="am,fax" />
      <xs:enumeration value="voice,am,fax" />
    </xs:restriction>
</xs:simpleType>
</xs:attribute>

</xs:complexType>
</xs:element>

<xs:element name="CustomData"  minOccurs="0" maxOccurs="1">
<xs:complexType>
  <xs:annotation>
    <xs:documentation xml:lang="en">
      "CustomData" tag defined in CreateRequest is to allow the user to pass
      additional key/value pairs to the IVR application. 
      To add each Key/Value pair, a sub-element "KeyValue" should be added with attributes
    "Key" carrying "KeyName" and
    "Value" carrying "Value" for the above KeyName.
    </xs:documentation>
          </xs:annotation>
<xs:sequence>
<xs:element name="KeyValue" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
</xs:sequence>
<xs:attribute name="Key" use="required">
  <xs:annotation>
    <xs:documentation xml:lang="en">
      "Key" carrying "KeyName"
    </xs:documentation>
          </xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

<xs:attribute name="Value" use="required">                               
  <xs:annotation>
    <xs:documentation xml:lang="en">
      Value to be provided for the KeyName
    </xs:documentation>
          </xs:annotation>

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>

<xs:attribute name="IVRProfileName" use="required">
<xs:annotation>
  <xs:documentation xml:lang="en">
  Name of the Application Profile to be used for an outbound call.
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:minLength value="1"/>
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

<xs:attribute name="NotificationURL" use="required">
<xs:annotation>
  <xs:documentation xml:lang="en">
  This URL will be used by SSG to asynchronously notify the
  Trigger Application with the result of an outbound call
  (success or failure).
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

<xs:attribute name="Telnum" use="required">
<xs:annotation>
  <xs:documentation xml:lang="en">
  Telephone Number to make an outbound call.
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:minLength value="1"/>
<xs:pattern value="([a-z0-9A-Z.])*(@)?([a-z0-9A-Z.])*"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

<xs:attribute name="Token" use="required">
<xs:annotation>
  <xs:documentation xml:lang="en">
  The Trigger Application is expected to pass a unique Token with each
  create request to SSG.
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:minLength value="1"/>
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

<xs:attribute name="MaxAttempts" use="required">
<xs:annotation>
  <xs:documentation xml:lang="en">
  Number of times SSG should attempt to place the outbound call.
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:nonNegativeInteger">
<xs:minInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

<xs:attribute name="TimeToLive" use="required">
<xs:annotation>
  <xs:documentation xml:lang="en">
  Duration the outbound call request can live in the persistent storage. 
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
      <xs:pattern value="[6-9][0-9]s|[1-9][0-9]{2}s|[1-9][0-9]{3}s|[1-9][0-9]{4}s|[6-9][0-9]|[1-9][0-9]{2}|[1-9][0-9]{3}|[1-9][0-9]{4}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

<xs:attribute name="ANI" use="optional">
<xs:annotation>
  <xs:documentation xml:lang="en">
  ANI that is passed on in the outbound call to the external party.
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z0-9A-Z.])*(@)?([a-z0-9A-Z.])*"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

</xs:complexType>

<xs:complexType name="QueryRequestDef">
  <xs:annotation>
    <xs:documentation xml:lang="en">
    "QueryRequest" tag is used to specify the attributes used for
    fetching the details of an existing outbound call requests from
    SSG's persistence storage. 
  </xs:documentation>
  </xs:annotation>
 
<xs:attribute name="Token" use="optional">
<xs:annotation>
  <xs:documentation xml:lang="en">
  The Trigger Application is expected to pass the Token with each
  query request to SSG that was received in create request.
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

<xs:attribute name="RequestID" use="required">
<xs:annotation>
  <xs:documentation xml:lang="en">
  The identifier of the outbound call request whose details needs to be
  fetched from SSG's persistent storage when passed in QueryRequest.
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:nonNegativeInteger">
<xs:minInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

</xs:complexType>
         
<xs:complexType name="CancelRequestDef">
  <xs:annotation>
    <xs:documentation xml:lang="en">
    "CancelRequest" tag is used to specify the attributes used for
    cancelling an existing outbound call requests from
    SSG's persistence storage. 
  </xs:documentation>
  </xs:annotation>


<xs:attribute name="Token" use="optional">
<xs:annotation>
  <xs:documentation xml:lang="en">
  The Trigger Application is expected to pass the Token with each
  cancel request to SSG that was received in create request.
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

<xs:attribute name="RequestID" use="required">
<xs:annotation>
  <xs:documentation xml:lang="en">
  The identifier of the outbound call request whose details needs to be
  deleted from persistent storage when passed in CancelRequest.
  </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:nonNegativeInteger">
<xs:minInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

</xs:complexType>

</xs:schema>
« Last Edit: March 17, 2015, 10:50:06 AM by raza990 »

Offline Kubig

  • Hero Member
  • *****
  • Posts: 2755
  • Karma: 44
Re: Answering Machine Detect (AMD)
« Reply #4 on: March 17, 2015, 11:28:08 AM »
It is attribute "detect" - it is described within documentation.

Offline raza990

  • Full Member
  • ***
  • Posts: 214
  • Karma: 5
Re: Answering Machine Detect (AMD)
« Reply #5 on: March 17, 2015, 01:49:18 PM »
Yes, but what to do with "detect" ?

Comment the below lines ?

            <xs:attribute name="detect" use="optional">
              <xs:annotation>
              <xs:documentation xml:lang="en">
              This attribute provides control to the Trigger Application about
              what to do with the outbound call when various types of CPD are detected.
                  none (default): CPD in not requested at all by the customer. As soon as call is connected, start IVR.
                  all: Turn on full CPD. As soon as call is connected, start IVR.
                  voice: Only if voice is detected, connect to IVR. Any other detection, retry.
                  am: Only if answering m/c is detected, connect to IVR. Any other detection, retry.
                  fax: Only if fax is detected, connect to IVR. Any other detection, retry.
                  voice/am/fax can be combined with comma separation (e.g. voice,am or am,fax or voice,am,fax etc.).
                  Refer the XML Schema for the combinations
              </xs:documentation>
            </xs:annotation>           
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="none" />
                    <xs:enumeration value="all" />
                    <xs:enumeration value="voice" />
                    <xs:enumeration value="am" />
                    <xs:enumeration value="fax" />
                    <xs:enumeration value="voice,am" />
                    <xs:enumeration value="voice,fax" />
                    <xs:enumeration value="am,fax" />
                    <xs:enumeration value="voice,am,fax" />
                </xs:restriction>
            </xs:simpleType>
            </xs:attribute>

or set to "none" to achieve "no_am_detection" ? If this is correct, then please write some sample so I will know how to do it.

Offline Kubig

  • Hero Member
  • *****
  • Posts: 2755
  • Karma: 44
Re: Answering Machine Detect (AMD)
« Reply #6 on: March 17, 2015, 01:52:11 PM »
I do not know your trigger application, so cannot help within this. But, you have just attached the XSD, no application code. You have to set "detect" parameter with required value, as is described in documentation.

Offline raza990

  • Full Member
  • ***
  • Posts: 214
  • Karma: 5
Re: Answering Machine Detect (AMD)
« Reply #7 on: March 17, 2015, 02:04:08 PM »
Thanks for the help Kubig  :)