Skip to content

/AWS1/IF_CNT=>DESCRIBECONTACT()

About DescribeContact

This API is in preview release for Amazon Connect and is subject to change.

Describes the specified contact.

Use cases

Following are common uses cases for this API:

  • Retrieve contact information such as the caller's phone number and the specific number the caller dialed to integrate into custom monitoring or custom agent experience solutions.

  • Detect when a customer chat session disconnects due to a network issue on the agent's end. Use the DisconnectReason field in the ContactTraceRecord to detect this event and then re-queue the chat for followup.

  • Identify after contact work (ACW) duration and call recordings information when a COMPLETED event is received by using the contact event stream.

Important things to know

  • SystemEndpoint is not populated for contacts with initiation method of MONITOR, QUEUE_TRANSFER, or CALLBACK

  • Contact information remains available in Amazon Connect for 24 months from the InitiationTimestamp, and then it is deleted. Only contact information that is available in Amazon Connect is returned by this API.

Endpoints: See Amazon Connect endpoints and quotas.

Method Signature

METHODS /AWS1/IF_CNT~DESCRIBECONTACT
  IMPORTING
    !IV_INSTANCEID TYPE /AWS1/CNTINSTANCEID OPTIONAL
    !IV_CONTACTID TYPE /AWS1/CNTCONTACTID OPTIONAL
  RETURNING
    VALUE(OO_OUTPUT) TYPE REF TO /aws1/cl_cntdescrcontactrsp
  RAISING
    /AWS1/CX_CNTINTERNALSERVICEEX
    /AWS1/CX_CNTINVALIDPARAMETEREX
    /AWS1/CX_CNTINVALIDREQUESTEX
    /AWS1/CX_CNTRESOURCENOTFOUNDEX
    /AWS1/CX_CNTTHROTTLINGEX
    /AWS1/CX_CNTCLIENTEXC
    /AWS1/CX_CNTSERVEREXC
    /AWS1/CX_RT_TECHNICAL_GENERIC
    /AWS1/CX_RT_SERVICE_GENERIC.

IMPORTING

Required arguments:

iv_instanceid TYPE /AWS1/CNTINSTANCEID /AWS1/CNTINSTANCEID

The identifier of the Amazon Connect instance. You can find the instance ID in the Amazon Resource Name (ARN) of the instance.

iv_contactid TYPE /AWS1/CNTCONTACTID /AWS1/CNTCONTACTID

The identifier of the contact.

RETURNING

oo_output TYPE REF TO /aws1/cl_cntdescrcontactrsp /AWS1/CL_CNTDESCRCONTACTRSP

Domain /AWS1/RT_ACCOUNT_ID
Primitive Type NUMC

Examples

Syntax Example

This is an example of the syntax for calling the method. It includes every possible argument and initializes every possible value. The data provided is not necessarily semantically accurate (for example the value "string" may be provided for something that is intended to be an instance ID, or in some cases two arguments may be mutually exclusive). The syntax shows the ABAP syntax for creating the various data structures.

DATA(lo_result) = lo_client->describecontact(
  iv_contactid = |string|
  iv_instanceid = |string|
).

This is an example of reading all possible response values

lo_result = lo_result.
IF lo_result IS NOT INITIAL.
  lo_contact = lo_result->get_contact( ).
  IF lo_contact IS NOT INITIAL.
    lv_arn = lo_contact->get_arn( ).
    lv_contactid = lo_contact->get_id( ).
    lv_contactid = lo_contact->get_initialcontactid( ).
    lv_contactid = lo_contact->get_previouscontactid( ).
    lv_contactid = lo_contact->get_contactassociationid( ).
    lv_contactinitiationmethod = lo_contact->get_initiationmethod( ).
    lv_name = lo_contact->get_name( ).
    lv_description = lo_contact->get_description( ).
    lv_channel = lo_contact->get_channel( ).
    lo_queueinfo = lo_contact->get_queueinfo( ).
    IF lo_queueinfo IS NOT INITIAL.
      lv_queueid = lo_queueinfo->get_id( ).
      lv_timestamp = lo_queueinfo->get_enqueuetimestamp( ).
    ENDIF.
    lo_agentinfo = lo_contact->get_agentinfo( ).
    IF lo_agentinfo IS NOT INITIAL.
      lv_agentresourceid = lo_agentinfo->get_id( ).
      lv_timestamp = lo_agentinfo->get_acceptedbyagenttimestamp( ).
      lv_timestamp = lo_agentinfo->get_previewendtimestamp( ).
      lv_timestamp = lo_agentinfo->get_connectedtoagenttsmp( ).
      lv_agentpausedurationinsec = lo_agentinfo->get_agentpausedurinseconds( ).
      lo_hierarchygroups = lo_agentinfo->get_hierarchygroups( ).
      IF lo_hierarchygroups IS NOT INITIAL.
        lo_agenthierarchygroup = lo_hierarchygroups->get_level1( ).
        IF lo_agenthierarchygroup IS NOT INITIAL.
          lv_arn = lo_agenthierarchygroup->get_arn( ).
        ENDIF.
        lo_agenthierarchygroup = lo_hierarchygroups->get_level2( ).
        IF lo_agenthierarchygroup IS NOT INITIAL.
          lv_arn = lo_agenthierarchygroup->get_arn( ).
        ENDIF.
        lo_agenthierarchygroup = lo_hierarchygroups->get_level3( ).
        IF lo_agenthierarchygroup IS NOT INITIAL.
          lv_arn = lo_agenthierarchygroup->get_arn( ).
        ENDIF.
        lo_agenthierarchygroup = lo_hierarchygroups->get_level4( ).
        IF lo_agenthierarchygroup IS NOT INITIAL.
          lv_arn = lo_agenthierarchygroup->get_arn( ).
        ENDIF.
        lo_agenthierarchygroup = lo_hierarchygroups->get_level5( ).
        IF lo_agenthierarchygroup IS NOT INITIAL.
          lv_arn = lo_agenthierarchygroup->get_arn( ).
        ENDIF.
      ENDIF.
      lo_deviceinfo = lo_agentinfo->get_deviceinfo( ).
      IF lo_deviceinfo IS NOT INITIAL.
        lv_platformname = lo_deviceinfo->get_platformname( ).
        lv_platformversion = lo_deviceinfo->get_platformversion( ).
        lv_operatingsystem = lo_deviceinfo->get_operatingsystem( ).
      ENDIF.
      lo_participantcapabilities = lo_agentinfo->get_capabilities( ).
      IF lo_participantcapabilities IS NOT INITIAL.
        lv_videocapability = lo_participantcapabilities->get_video( ).
        lv_screensharecapability = lo_participantcapabilities->get_screenshare( ).
      ENDIF.
      lv_duration = lo_agentinfo->get_aftercontactworkduration( ).
      lv_timestamp = lo_agentinfo->get_afrcontactworkstarttsmp( ).
      lv_timestamp = lo_agentinfo->get_aftercontactworkendtsmp( ).
      lv_duration = lo_agentinfo->get_agentinitiatedholddur( ).
      LOOP AT lo_agentinfo->get_statetransitions( ) into lo_row.
        lo_row_1 = lo_row.
        IF lo_row_1 IS NOT INITIAL.
          lv_participantstate = lo_row_1->get_state( ).
          lv_timestamp = lo_row_1->get_statestarttimestamp( ).
          lv_timestamp = lo_row_1->get_stateendtimestamp( ).
        ENDIF.
      ENDLOOP.
    ENDIF.
    lv_timestamp = lo_contact->get_initiationtimestamp( ).
    lv_timestamp = lo_contact->get_disconnecttimestamp( ).
    lv_timestamp = lo_contact->get_lastupdatetimestamp( ).
    lv_timestamp = lo_contact->get_lastpausedtimestamp( ).
    lv_timestamp = lo_contact->get_lastresumedtimestamp( ).
    lv_totalpausecount = lo_contact->get_totalpausecount( ).
    lv_totalpausedurationinsec = lo_contact->get_totalpausedurinseconds( ).
    lv_timestamp = lo_contact->get_scheduledtimestamp( ).
    lv_contactid = lo_contact->get_relatedcontactid( ).
    lo_wisdominfo = lo_contact->get_wisdominfo( ).
    IF lo_wisdominfo IS NOT INITIAL.
      lv_arn = lo_wisdominfo->get_sessionarn( ).
    ENDIF.
    lv_customerid = lo_contact->get_customerid( ).
    lo_endpointinfo = lo_contact->get_customerendpoint( ).
    IF lo_endpointinfo IS NOT INITIAL.
      lv_endpointtype = lo_endpointinfo->get_type( ).
      lv_endpointaddress = lo_endpointinfo->get_address( ).
      lv_endpointdisplayname = lo_endpointinfo->get_displayname( ).
    ENDIF.
    lo_endpointinfo = lo_contact->get_systemendpoint( ).
    IF lo_endpointinfo IS NOT INITIAL.
      lv_endpointtype = lo_endpointinfo->get_type( ).
      lv_endpointaddress = lo_endpointinfo->get_address( ).
      lv_endpointdisplayname = lo_endpointinfo->get_displayname( ).
    ENDIF.
    lv_queuetimeadjustmentseco = lo_contact->get_queuetimeadjustmentsecs( ).
    lv_queuepriority = lo_contact->get_queuepriority( ).
    LOOP AT lo_contact->get_tags( ) into ls_row_2.
      lv_key = ls_row_2-key.
      lo_value = ls_row_2-value.
      IF lo_value IS NOT INITIAL.
        lv_contacttagvalue = lo_value->get_value( ).
      ENDIF.
    ENDLOOP.
    lv_timestamp = lo_contact->get_connectedtosystemtsmp( ).
    lo_routingcriteria = lo_contact->get_routingcriteria( ).
    IF lo_routingcriteria IS NOT INITIAL.
      LOOP AT lo_routingcriteria->get_steps( ) into lo_row_3.
        lo_row_4 = lo_row_3.
        IF lo_row_4 IS NOT INITIAL.
          lo_expiry = lo_row_4->get_expiry( ).
          IF lo_expiry IS NOT INITIAL.
            lv_durationinseconds = lo_expiry->get_durationinseconds( ).
            lv_timestamp = lo_expiry->get_expirytimestamp( ).
          ENDIF.
          lo_expression = lo_row_4->get_expression( ).
          IF lo_expression IS NOT INITIAL.
            lo_attributecondition = lo_expression->get_attributecondition( ).
            IF lo_attributecondition IS NOT INITIAL.
              lv_predefinedattributename = lo_attributecondition->get_name( ).
              lv_proficiencyvalue = lo_attributecondition->get_value( ).
              lv_nullableproficiencyleve = lo_attributecondition->get_proficiencylevel( ).
              lo_range = lo_attributecondition->get_range( ).
              IF lo_range IS NOT INITIAL.
                lv_nullableproficiencyleve = lo_range->get_minproficiencylevel( ).
                lv_nullableproficiencyleve = lo_range->get_maxproficiencylevel( ).
              ENDIF.
              lo_matchcriteria = lo_attributecondition->get_matchcriteria( ).
              IF lo_matchcriteria IS NOT INITIAL.
                lo_agentscriteria = lo_matchcriteria->get_agentscriteria( ).
                IF lo_agentscriteria IS NOT INITIAL.
                  LOOP AT lo_agentscriteria->get_agentids( ) into lo_row_5.
                    lo_row_6 = lo_row_5.
                    IF lo_row_6 IS NOT INITIAL.
                      lv_agentid = lo_row_6->get_value( ).
                    ENDIF.
                  ENDLOOP.
                ENDIF.
              ENDIF.
              lv_comparisonoperator = lo_attributecondition->get_comparisonoperator( ).
            ENDIF.
            LOOP AT lo_expression->get_andexpression( ) into lo_row_7.
              lo_row_8 = lo_row_7.
              IF lo_row_8 IS NOT INITIAL.
                lo_attributecondition = lo_row_8->get_attributecondition( ).
                IF lo_attributecondition IS NOT INITIAL.
                  lv_predefinedattributename = lo_attributecondition->get_name( ).
                  lv_proficiencyvalue = lo_attributecondition->get_value( ).
                  lv_nullableproficiencyleve = lo_attributecondition->get_proficiencylevel( ).
                  lo_range = lo_attributecondition->get_range( ).
                  IF lo_range IS NOT INITIAL.
                    lv_nullableproficiencyleve = lo_range->get_minproficiencylevel( ).
                    lv_nullableproficiencyleve = lo_range->get_maxproficiencylevel( ).
                  ENDIF.
                  lo_matchcriteria = lo_attributecondition->get_matchcriteria( ).
                  IF lo_matchcriteria IS NOT INITIAL.
                    lo_agentscriteria = lo_matchcriteria->get_agentscriteria( ).
                    IF lo_agentscriteria IS NOT INITIAL.
                      LOOP AT lo_agentscriteria->get_agentids( ) into lo_row_5.
                        lo_row_6 = lo_row_5.
                        IF lo_row_6 IS NOT INITIAL.
                          lv_agentid = lo_row_6->get_value( ).
                        ENDIF.
                      ENDLOOP.
                    ENDIF.
                  ENDIF.
                  lv_comparisonoperator = lo_attributecondition->get_comparisonoperator( ).
                ENDIF.
                " Skipping lo_row_7 to avoid recursion
                LOOP AT lo_row_8->get_orexpression( ) into lo_row_9.
                  lo_row_10 = lo_row_9.
                  IF lo_row_10 IS NOT INITIAL.
                    lo_attributecondition = lo_row_10->get_attributecondition( ).
                    IF lo_attributecondition IS NOT INITIAL.
                      lv_predefinedattributename = lo_attributecondition->get_name( ).
                      lv_proficiencyvalue = lo_attributecondition->get_value( ).
                      lv_nullableproficiencyleve = lo_attributecondition->get_proficiencylevel( ).
                      lo_range = lo_attributecondition->get_range( ).
                      IF lo_range IS NOT INITIAL.
                        lv_nullableproficiencyleve = lo_range->get_minproficiencylevel( ).
                        lv_nullableproficiencyleve = lo_range->get_maxproficiencylevel( ).
                      ENDIF.
                      lo_matchcriteria = lo_attributecondition->get_matchcriteria( ).
                      IF lo_matchcriteria IS NOT INITIAL.
                        lo_agentscriteria = lo_matchcriteria->get_agentscriteria( ).
                        IF lo_agentscriteria IS NOT INITIAL.
                          LOOP AT lo_agentscriteria->get_agentids( ) into lo_row_5.
                            lo_row_6 = lo_row_5.
                            IF lo_row_6 IS NOT INITIAL.
                              lv_agentid = lo_row_6->get_value( ).
                            ENDIF.
                          ENDLOOP.
                        ENDIF.
                      ENDIF.
                      lv_comparisonoperator = lo_attributecondition->get_comparisonoperator( ).
                    ENDIF.
                    " Skipping lo_row_9 to avoid recursion
                    " Skipping lo_row_9 to avoid recursion
                    lo_attributecondition = lo_row_10->get_notattributecondition( ).
                    IF lo_attributecondition IS NOT INITIAL.
                      lv_predefinedattributename = lo_attributecondition->get_name( ).
                      lv_proficiencyvalue = lo_attributecondition->get_value( ).
                      lv_nullableproficiencyleve = lo_attributecondition->get_proficiencylevel( ).
                      lo_range = lo_attributecondition->get_range( ).
                      IF lo_range IS NOT INITIAL.
                        lv_nullableproficiencyleve = lo_range->get_minproficiencylevel( ).
                        lv_nullableproficiencyleve = lo_range->get_maxproficiencylevel( ).
                      ENDIF.
                      lo_matchcriteria = lo_attributecondition->get_matchcriteria( ).
                      IF lo_matchcriteria IS NOT INITIAL.
                        lo_agentscriteria = lo_matchcriteria->get_agentscriteria( ).
                        IF lo_agentscriteria IS NOT INITIAL.
                          LOOP AT lo_agentscriteria->get_agentids( ) into lo_row_5.
                            lo_row_6 = lo_row_5.
                            IF lo_row_6 IS NOT INITIAL.
                              lv_agentid = lo_row_6->get_value( ).
                            ENDIF.
                          ENDLOOP.
                        ENDIF.
                      ENDIF.
                      lv_comparisonoperator = lo_attributecondition->get_comparisonoperator( ).
                    ENDIF.
                  ENDIF.
                ENDLOOP.
                lo_attributecondition = lo_row_8->get_notattributecondition( ).
                IF lo_attributecondition IS NOT INITIAL.
                  lv_predefinedattributename = lo_attributecondition->get_name( ).
                  lv_proficiencyvalue = lo_attributecondition->get_value( ).
                  lv_nullableproficiencyleve = lo_attributecondition->get_proficiencylevel( ).
                  lo_range = lo_attributecondition->get_range( ).
                  IF lo_range IS NOT INITIAL.
                    lv_nullableproficiencyleve = lo_range->get_minproficiencylevel( ).
                    lv_nullableproficiencyleve = lo_range->get_maxproficiencylevel( ).
                  ENDIF.
                  lo_matchcriteria = lo_attributecondition->get_matchcriteria( ).
                  IF lo_matchcriteria IS NOT INITIAL.
                    lo_agentscriteria = lo_matchcriteria->get_agentscriteria( ).
                    IF lo_agentscriteria IS NOT INITIAL.
                      LOOP AT lo_agentscriteria->get_agentids( ) into lo_row_5.
                        lo_row_6 = lo_row_5.
                        IF lo_row_6 IS NOT INITIAL.
                          lv_agentid = lo_row_6->get_value( ).
                        ENDIF.
                      ENDLOOP.
                    ENDIF.
                  ENDIF.
                  lv_comparisonoperator = lo_attributecondition->get_comparisonoperator( ).
                ENDIF.
              ENDIF.
            ENDLOOP.
            LOOP AT lo_expression->get_orexpression( ) into lo_row_7.
              lo_row_8 = lo_row_7.
              IF lo_row_8 IS NOT INITIAL.
                lo_attributecondition = lo_row_8->get_attributecondition( ).
                IF lo_attributecondition IS NOT INITIAL.
                  lv_predefinedattributename = lo_attributecondition->get_name( ).
                  lv_proficiencyvalue = lo_attributecondition->get_value( ).
                  lv_nullableproficiencyleve = lo_attributecondition->get_proficiencylevel( ).
                  lo_range = lo_attributecondition->get_range( ).
                  IF lo_range IS NOT INITIAL.
                    lv_nullableproficiencyleve = lo_range->get_minproficiencylevel( ).
                    lv_nullableproficiencyleve = lo_range->get_maxproficiencylevel( ).
                  ENDIF.
                  lo_matchcriteria = lo_attributecondition->get_matchcriteria( ).
                  IF lo_matchcriteria IS NOT INITIAL.
                    lo_agentscriteria = lo_matchcriteria->get_agentscriteria( ).
                    IF lo_agentscriteria IS NOT INITIAL.
                      LOOP AT lo_agentscriteria->get_agentids( ) into lo_row_5.
                        lo_row_6 = lo_row_5.
                        IF lo_row_6 IS NOT INITIAL.
                          lv_agentid = lo_row_6->get_value( ).
                        ENDIF.
                      ENDLOOP.
                    ENDIF.
                  ENDIF.
                  lv_comparisonoperator = lo_attributecondition->get_comparisonoperator( ).
                ENDIF.
                LOOP AT lo_row_8->get_andexpression( ) into lo_row_9.
                  lo_row_10 = lo_row_9.
                  IF lo_row_10 IS NOT INITIAL.
                    lo_attributecondition = lo_row_10->get_attributecondition( ).
                    IF lo_attributecondition IS NOT INITIAL.
                      lv_predefinedattributename = lo_attributecondition->get_name( ).
                      lv_proficiencyvalue = lo_attributecondition->get_value( ).
                      lv_nullableproficiencyleve = lo_attributecondition->get_proficiencylevel( ).
                      lo_range = lo_attributecondition->get_range( ).
                      IF lo_range IS NOT INITIAL.
                        lv_nullableproficiencyleve = lo_range->get_minproficiencylevel( ).
                        lv_nullableproficiencyleve = lo_range->get_maxproficiencylevel( ).
                      ENDIF.
                      lo_matchcriteria = lo_attributecondition->get_matchcriteria( ).
                      IF lo_matchcriteria IS NOT INITIAL.
                        lo_agentscriteria = lo_matchcriteria->get_agentscriteria( ).
                        IF lo_agentscriteria IS NOT INITIAL.
                          LOOP AT lo_agentscriteria->get_agentids( ) into lo_row_5.
                            lo_row_6 = lo_row_5.
                            IF lo_row_6 IS NOT INITIAL.
                              lv_agentid = lo_row_6->get_value( ).
                            ENDIF.
                          ENDLOOP.
                        ENDIF.
                      ENDIF.
                      lv_comparisonoperator = lo_attributecondition->get_comparisonoperator( ).
                    ENDIF.
                    " Skipping lo_row_9 to avoid recursion
                    " Skipping lo_row_9 to avoid recursion
                    lo_attributecondition = lo_row_10->get_notattributecondition( ).
                    IF lo_attributecondition IS NOT INITIAL.
                      lv_predefinedattributename = lo_attributecondition->get_name( ).
                      lv_proficiencyvalue = lo_attributecondition->get_value( ).
                      lv_nullableproficiencyleve = lo_attributecondition->get_proficiencylevel( ).
                      lo_range = lo_attributecondition->get_range( ).
                      IF lo_range IS NOT INITIAL.
                        lv_nullableproficiencyleve = lo_range->get_minproficiencylevel( ).
                        lv_nullableproficiencyleve = lo_range->get_maxproficiencylevel( ).
                      ENDIF.
                      lo_matchcriteria = lo_attributecondition->get_matchcriteria( ).
                      IF lo_matchcriteria IS NOT INITIAL.
                        lo_agentscriteria = lo_matchcriteria->get_agentscriteria( ).
                        IF lo_agentscriteria IS NOT INITIAL.
                          LOOP AT lo_agentscriteria->get_agentids( ) into lo_row_5.
                            lo_row_6 = lo_row_5.
                            IF lo_row_6 IS NOT INITIAL.
                              lv_agentid = lo_row_6->get_value( ).
                            ENDIF.
                          ENDLOOP.
                        ENDIF.
                      ENDIF.
                      lv_comparisonoperator = lo_attributecondition->get_comparisonoperator( ).
                    ENDIF.
                  ENDIF.
                ENDLOOP.
                " Skipping lo_row_7 to avoid recursion
                lo_attributecondition = lo_row_8->get_notattributecondition( ).
                IF lo_attributecondition IS NOT INITIAL.
                  lv_predefinedattributename = lo_attributecondition->get_name( ).
                  lv_proficiencyvalue = lo_attributecondition->get_value( ).
                  lv_nullableproficiencyleve = lo_attributecondition->get_proficiencylevel( ).
                  lo_range = lo_attributecondition->get_range( ).
                  IF lo_range IS NOT INITIAL.
                    lv_nullableproficiencyleve = lo_range->get_minproficiencylevel( ).
                    lv_nullableproficiencyleve = lo_range->get_maxproficiencylevel( ).
                  ENDIF.
                  lo_matchcriteria = lo_attributecondition->get_matchcriteria( ).
                  IF lo_matchcriteria IS NOT INITIAL.
                    lo_agentscriteria = lo_matchcriteria->get_agentscriteria( ).
                    IF lo_agentscriteria IS NOT INITIAL.
                      LOOP AT lo_agentscriteria->get_agentids( ) into lo_row_5.
                        lo_row_6 = lo_row_5.
                        IF lo_row_6 IS NOT INITIAL.
                          lv_agentid = lo_row_6->get_value( ).
                        ENDIF.
                      ENDLOOP.
                    ENDIF.
                  ENDIF.
                  lv_comparisonoperator = lo_attributecondition->get_comparisonoperator( ).
                ENDIF.
              ENDIF.
            ENDLOOP.
            lo_attributecondition = lo_expression->get_notattributecondition( ).
            IF lo_attributecondition IS NOT INITIAL.
              lv_predefinedattributename = lo_attributecondition->get_name( ).
              lv_proficiencyvalue = lo_attributecondition->get_value( ).
              lv_nullableproficiencyleve = lo_attributecondition->get_proficiencylevel( ).
              lo_range = lo_attributecondition->get_range( ).
              IF lo_range IS NOT INITIAL.
                lv_nullableproficiencyleve = lo_range->get_minproficiencylevel( ).
                lv_nullableproficiencyleve = lo_range->get_maxproficiencylevel( ).
              ENDIF.
              lo_matchcriteria = lo_attributecondition->get_matchcriteria( ).
              IF lo_matchcriteria IS NOT INITIAL.
                lo_agentscriteria = lo_matchcriteria->get_agentscriteria( ).
                IF lo_agentscriteria IS NOT INITIAL.
                  LOOP AT lo_agentscriteria->get_agentids( ) into lo_row_5.
                    lo_row_6 = lo_row_5.
                    IF lo_row_6 IS NOT INITIAL.
                      lv_agentid = lo_row_6->get_value( ).
                    ENDIF.
                  ENDLOOP.
                ENDIF.
              ENDIF.
              lv_comparisonoperator = lo_attributecondition->get_comparisonoperator( ).
            ENDIF.
          ENDIF.
          lv_routingcriteriastepstat = lo_row_4->get_status( ).
        ENDIF.
      ENDLOOP.
      lv_timestamp = lo_routingcriteria->get_activationtimestamp( ).
      lv_index = lo_routingcriteria->get_index( ).
    ENDIF.
    lo_customer = lo_contact->get_customer( ).
    IF lo_customer IS NOT INITIAL.
      lo_deviceinfo = lo_customer->get_deviceinfo( ).
      IF lo_deviceinfo IS NOT INITIAL.
        lv_platformname = lo_deviceinfo->get_platformname( ).
        lv_platformversion = lo_deviceinfo->get_platformversion( ).
        lv_operatingsystem = lo_deviceinfo->get_operatingsystem( ).
      ENDIF.
      lo_participantcapabilities = lo_customer->get_capabilities( ).
      IF lo_participantcapabilities IS NOT INITIAL.
        lv_videocapability = lo_participantcapabilities->get_video( ).
        lv_screensharecapability = lo_participantcapabilities->get_screenshare( ).
      ENDIF.
    ENDIF.
    lo_campaign = lo_contact->get_campaign( ).
    IF lo_campaign IS NOT INITIAL.
      lv_campaignid = lo_campaign->get_campaignid( ).
    ENDIF.
    lv_answeringmachinedetecti = lo_contact->get_answeringmachinedetect00( ).
    lo_customervoiceactivity = lo_contact->get_customervoiceactivity( ).
    IF lo_customervoiceactivity IS NOT INITIAL.
      lv_timestamp = lo_customervoiceactivity->get_greetingstarttimestamp( ).
      lv_timestamp = lo_customervoiceactivity->get_greetingendtimestamp( ).
    ENDIF.
    lo_qualitymetrics = lo_contact->get_qualitymetrics( ).
    IF lo_qualitymetrics IS NOT INITIAL.
      lo_agentqualitymetrics = lo_qualitymetrics->get_agent( ).
      IF lo_agentqualitymetrics IS NOT INITIAL.
        lo_audioqualitymetricsinfo = lo_agentqualitymetrics->get_audio( ).
        IF lo_audioqualitymetricsinfo IS NOT INITIAL.
          lv_audioqualityscore = lo_audioqualitymetricsinfo->get_qualityscore( ).
          LOOP AT lo_audioqualitymetricsinfo->get_potentialqualityissues( ) into lo_row_11.
            lo_row_12 = lo_row_11.
            IF lo_row_12 IS NOT INITIAL.
              lv_potentialaudioqualityis = lo_row_12->get_value( ).
            ENDIF.
          ENDLOOP.
        ENDIF.
      ENDIF.
      lo_customerqualitymetrics = lo_qualitymetrics->get_customer( ).
      IF lo_customerqualitymetrics IS NOT INITIAL.
        lo_audioqualitymetricsinfo = lo_customerqualitymetrics->get_audio( ).
        IF lo_audioqualitymetricsinfo IS NOT INITIAL.
          lv_audioqualityscore = lo_audioqualitymetricsinfo->get_qualityscore( ).
          LOOP AT lo_audioqualitymetricsinfo->get_potentialqualityissues( ) into lo_row_11.
            lo_row_12 = lo_row_11.
            IF lo_row_12 IS NOT INITIAL.
              lv_potentialaudioqualityis = lo_row_12->get_value( ).
            ENDIF.
          ENDLOOP.
        ENDIF.
      ENDIF.
    ENDIF.
    lo_chatmetrics = lo_contact->get_chatmetrics( ).
    IF lo_chatmetrics IS NOT INITIAL.
      lo_chatcontactmetrics = lo_chatmetrics->get_chatcontactmetrics( ).
      IF lo_chatcontactmetrics IS NOT INITIAL.
        lv_nullableboolean = lo_chatcontactmetrics->get_multiparty( ).
        lv_count = lo_chatcontactmetrics->get_totalmessages( ).
        lv_count = lo_chatcontactmetrics->get_totalbotmessages( ).
        lv_count = lo_chatcontactmetrics->get_totalbotmsglengthinchars( ).
        lv_durationmillis = lo_chatcontactmetrics->get_conversationclosetimei00( ).
        lv_count = lo_chatcontactmetrics->get_conversationturncount( ).
        lv_timestamp = lo_chatcontactmetrics->get_agentfirstresponsetsmp( ).
        lv_durationmillis = lo_chatcontactmetrics->get_agntfirstrsptimeinmillis( ).
      ENDIF.
      lo_participantmetrics = lo_chatmetrics->get_agentmetrics( ).
      IF lo_participantmetrics IS NOT INITIAL.
        lv_participantid = lo_participantmetrics->get_participantid( ).
        lv_participanttype = lo_participantmetrics->get_participanttype( ).
        lv_nullableboolean = lo_participantmetrics->get_conversationabandon( ).
        lv_count = lo_participantmetrics->get_messagessent( ).
        lv_count = lo_participantmetrics->get_numresponses( ).
        lv_count = lo_participantmetrics->get_messagelengthinchars( ).
        lv_durationmillis = lo_participantmetrics->get_totalrsptimeinmillis( ).
        lv_durationmillis = lo_participantmetrics->get_maxresponsetimeinmillis( ).
        lv_timestamp = lo_participantmetrics->get_lastmessagetimestamp( ).
      ENDIF.
      lo_participantmetrics = lo_chatmetrics->get_customermetrics( ).
      IF lo_participantmetrics IS NOT INITIAL.
        lv_participantid = lo_participantmetrics->get_participantid( ).
        lv_participanttype = lo_participantmetrics->get_participanttype( ).
        lv_nullableboolean = lo_participantmetrics->get_conversationabandon( ).
        lv_count = lo_participantmetrics->get_messagessent( ).
        lv_count = lo_participantmetrics->get_numresponses( ).
        lv_count = lo_participantmetrics->get_messagelengthinchars( ).
        lv_durationmillis = lo_participantmetrics->get_totalrsptimeinmillis( ).
        lv_durationmillis = lo_participantmetrics->get_maxresponsetimeinmillis( ).
        lv_timestamp = lo_participantmetrics->get_lastmessagetimestamp( ).
      ENDIF.
    ENDIF.
    lo_disconnectdetails = lo_contact->get_disconnectdetails( ).
    IF lo_disconnectdetails IS NOT INITIAL.
      lv_potentialdisconnectissu = lo_disconnectdetails->get_potentialdisconnectissue( ).
    ENDIF.
    lo_additionalemailrecipien = lo_contact->get_addlemailrecipients( ).
    IF lo_additionalemailrecipien IS NOT INITIAL.
      LOOP AT lo_additionalemailrecipien->get_tolist( ) into lo_row_13.
        lo_row_14 = lo_row_13.
        IF lo_row_14 IS NOT INITIAL.
          lv_endpointaddress = lo_row_14->get_address( ).
          lv_endpointdisplayname = lo_row_14->get_displayname( ).
        ENDIF.
      ENDLOOP.
      LOOP AT lo_additionalemailrecipien->get_cclist( ) into lo_row_13.
        lo_row_14 = lo_row_13.
        IF lo_row_14 IS NOT INITIAL.
          lv_endpointaddress = lo_row_14->get_address( ).
          lv_endpointdisplayname = lo_row_14->get_displayname( ).
        ENDIF.
      ENDLOOP.
    ENDIF.
    LOOP AT lo_contact->get_segmentattributes( ) into ls_row_15.
      lv_key_1 = ls_row_15-key.
      lo_value_1 = ls_row_15-value.
      IF lo_value_1 IS NOT INITIAL.
        lv_segmentattributevaluest = lo_value_1->get_valuestring( ).
        LOOP AT lo_value_1->get_valuemap( ) into ls_row_16.
          lv_key_1 = ls_row_16-key.
          lo_value_2 = ls_row_16-value.
          IF lo_value_2 IS NOT INITIAL.
            lv_segmentattributevaluest = lo_value_2->get_valuestring( ).
            " Skipping ls_row_16-value to avoid recursion
            lv_segmentattributevaluein = lo_value_2->get_valueinteger( ).
            LOOP AT lo_value_2->get_valuelist( ) into lo_row_17.
              lo_row_18 = lo_row_17.
              IF lo_row_18 IS NOT INITIAL.
                lv_segmentattributevaluest = lo_row_18->get_valuestring( ).
                " Skipping lo_row_17 to avoid recursion
                lv_segmentattributevaluein = lo_row_18->get_valueinteger( ).
                " Skipping lo_row_17 to avoid recursion
                lv_segmentattributevaluest = lo_row_18->get_valuearn( ).
              ENDIF.
            ENDLOOP.
            lv_segmentattributevaluest = lo_value_2->get_valuearn( ).
          ENDIF.
        ENDLOOP.
        lv_segmentattributevaluein = lo_value_1->get_valueinteger( ).
        LOOP AT lo_value_1->get_valuelist( ) into lo_row_17.
          lo_row_18 = lo_row_17.
          IF lo_row_18 IS NOT INITIAL.
            lv_segmentattributevaluest = lo_row_18->get_valuestring( ).
            LOOP AT lo_row_18->get_valuemap( ) into ls_row_16.
              lv_key_1 = ls_row_16-key.
              lo_value_2 = ls_row_16-value.
              IF lo_value_2 IS NOT INITIAL.
                lv_segmentattributevaluest = lo_value_2->get_valuestring( ).
                " Skipping ls_row_16-value to avoid recursion
                lv_segmentattributevaluein = lo_value_2->get_valueinteger( ).
                " Skipping ls_row_16-value to avoid recursion
                lv_segmentattributevaluest = lo_value_2->get_valuearn( ).
              ENDIF.
            ENDLOOP.
            lv_segmentattributevaluein = lo_row_18->get_valueinteger( ).
            " Skipping lo_row_17 to avoid recursion
            lv_segmentattributevaluest = lo_row_18->get_valuearn( ).
          ENDIF.
        ENDLOOP.
        lv_segmentattributevaluest = lo_value_1->get_valuearn( ).
      ENDIF.
    ENDLOOP.
    LOOP AT lo_contact->get_recordings( ) into lo_row_19.
      lo_row_20 = lo_row_19.
      IF lo_row_20 IS NOT INITIAL.
        lv_storagetype = lo_row_20->get_storagetype( ).
        lv_recordinglocation = lo_row_20->get_location( ).
        lv_mediastreamtype = lo_row_20->get_mediastreamtype( ).
        lv_participanttype = lo_row_20->get_participanttype( ).
        lv_fragmentnumber = lo_row_20->get_fragmentstartnumber( ).
        lv_fragmentnumber = lo_row_20->get_fragmentstopnumber( ).
        lv_timestamp = lo_row_20->get_starttimestamp( ).
        lv_timestamp = lo_row_20->get_stoptimestamp( ).
        lv_recordingstatus = lo_row_20->get_status( ).
        lv_recordingdeletionreason = lo_row_20->get_deletionreason( ).
      ENDIF.
    ENDLOOP.
    lv_string = lo_contact->get_disconnectreason( ).
    LOOP AT lo_contact->get_contactevaluations( ) into ls_row_21.
      lv_key_2 = ls_row_21-key.
      lo_value_3 = ls_row_21-value.
      IF lo_value_3 IS NOT INITIAL.
        lv_formid = lo_value_3->get_formid( ).
        lv_evaluationarn = lo_value_3->get_evaluationarn( ).
        lv_status = lo_value_3->get_status( ).
        lv_timestamp = lo_value_3->get_starttimestamp( ).
        lv_timestamp = lo_value_3->get_endtimestamp( ).
        lv_timestamp = lo_value_3->get_deletetimestamp( ).
        lv_exportlocation = lo_value_3->get_exportlocation( ).
      ENDIF.
    ENDLOOP.
    lo_tasktemplateinfov2 = lo_contact->get_tasktemplateinfo( ).
    IF lo_tasktemplateinfov2 IS NOT INITIAL.
      lv_arn = lo_tasktemplateinfov2->get_arn( ).
      lv_tasktemplatename = lo_tasktemplateinfov2->get_name( ).
    ENDIF.
    lo_contactdetails = lo_contact->get_contactdetails( ).
    IF lo_contactdetails IS NOT INITIAL.
      lv_contactdetailname = lo_contactdetails->get_name( ).
      lv_contactdetaildescriptio = lo_contactdetails->get_description( ).
    ENDIF.
    lo_outboundstrategy = lo_contact->get_outboundstrategy( ).
    IF lo_outboundstrategy IS NOT INITIAL.
      lv_outboundstrategytype = lo_outboundstrategy->get_type( ).
      lo_outboundstrategyconfig = lo_outboundstrategy->get_config( ).
      IF lo_outboundstrategyconfig IS NOT INITIAL.
        lo_agentfirst = lo_outboundstrategyconfig->get_agentfirst( ).
        IF lo_agentfirst IS NOT INITIAL.
          lo_preview = lo_agentfirst->get_preview( ).
          IF lo_preview IS NOT INITIAL.
            lo_postaccepttimeoutconfig = lo_preview->get_postaccepttimeoutconfig( ).
            IF lo_postaccepttimeoutconfig IS NOT INITIAL.
              lv_postacceptpreviewtimeou = lo_postaccepttimeoutconfig->get_durationinseconds( ).
            ENDIF.
            LOOP AT lo_preview->get_alloweduseractions( ) into lo_row_22.
              lo_row_23 = lo_row_22.
              IF lo_row_23 IS NOT INITIAL.
                lv_alloweduseraction = lo_row_23->get_value( ).
              ENDIF.
            ENDLOOP.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDIF.
    LOOP AT lo_contact->get_attributes( ) into ls_row_24.
      lv_key_3 = ls_row_24-key.
      lo_value_4 = ls_row_24-value.
      IF lo_value_4 IS NOT INITIAL.
        lv_attributevalue = lo_value_4->get_value( ).
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDIF.