Transferencia de la información del cliente a un chat en directo

Si se ha activado el registro de conversaciones para una aptitud, el historial de chat completo se transfiere automáticamente a Oracle B2C Service. Además del historial del chat, también puede enviar información específica del cliente.

  • ID de incidente
  • Información de cliente del chat: las aptitudes pueden transferir la siguiente información del cliente del chat a Oracle B2C Service.
    • Correo electrónico
    • Nombre propio
    • Apellidos
    • Contacto
    • Organización
    • categoría
    • Producto

    La aptitud utiliza los valores del perfil para completar y enviar estos campos del cliente del chat automáticamente, no es necesario realizar ninguna acción para definir estos valores:

    • Dirección de correo electrónico
    • Nombre propio
    • Apellidos
  • Campos personalizados del incidente: puede transferir los valores de cualquier campo personalizado de Oracle B2C Service de tipo Incidente.

    Para obtener más información sobre los campos personalizados, consulte Visión general de campos personalizados en Uso de Oracle B2C Service.

Nota

Si está utilizando un canal de integración agente creado antes de la versión 20.1, o el canal se conecta a una instancia de Oracle B2C Service que sea anterior a 19A, también puede transferir información de interfaz. Con los canales que se crean en la versión 20.1 y posteriores, y se conectan a Oracle B2C Service 19A y posteriores, se incluye el ID de interfaz en la URL del canal.

Para enviar la información al agente en vivo, transfiera una asignación en la propiedad Propiedades personalizadas del componente Integración de agente. Esta es la estructura de nivel superior de la asignación:

incidentID: # type int
customerInformation: # chat customer information object
customFields: # incident custom fields object
Para hacer referencia al mapa, utilice una expresión similar a:
${mapVariableName.value}

Consulte Assemble the Custom Properties Object para obtener un ejemplo de cómo ensamblar la información del cliente para enviar el agente activo.

Propiedad incidentID

Puede transferir un ID de incidente al agente en directo agregando una propiedad incidentID al mapa Propiedades personalizadas.

Consejo:

Si desea asociar una solicitud de chat a un incidente existente, puede crear un componente personalizado para recuperar el elemento incidentId enviando una solicitud de REST como la del siguiente ejemplo. Esta solicitud de REST recupera el incidente más reciente para el contacto con una dirección de correo electrónico coincidente.
https://<URL>/services/rest/connect/latest/incidents?q=primaryContact.ParentContact.Emails.EmailList.Address like 'email@gmail.com'&orderBy=createdTime:desc&limit=1

El cuerpo de la respuesta contiene un enlace href, que contiene el ID del incidente:

{
    "items": [
        {
            "id": 26302,
            "lookupName": "200116-000003",
            "createdTime": "2020-01-16T13:08:25.000Z",
            "updatedTime": "2020-01-16T20:25:21.000Z",
            "links": [
                {
                    "rel": "canonical",
                    "href": "https://<URL>/services/rest/connect/v1.4/incidents/26302"
                }
            ]
        }
    ],

Para obtener más información sobre los componentes personalizados, consulte Integración de backend. Para obtener información sobre las API de REST de Oracle B2C Service, consulte API de REST para Oracle B2C Service.

Objeto customerInformation estándar

En esta sección se trata el objeto customerInformation para aptitudes que utilizan un canal de integración de agente creado en la versión 20.01 o posterior y que se conecta a Oracle B2C Service versión 19A o posterior.

Puede utilizar el objeto customerInformation en la asignación Propiedades personalizadas para transferir la siguiente información de cliente de chat:

  • incidentID: int.
  • eMailAddress: string. 80 caracteres máximo. Su aptitud define automáticamente este valor de las propiedades .profile correspondientes (que se describen en Variables de ámbito de perfil para el contexto de usuario) y lo transfiere a Oracle B2C Service.

  • firstName: string. 80 caracteres máximo. Su aptitud define automáticamente este valor de las propiedades .profile correspondientes (que se describen en Variables de ámbito de perfil para el contexto de usuario) y lo transfiere a Oracle B2C Service.

  • lastName: string. 80 caracteres máximo. Su aptitud define automáticamente este valor de las propiedades .profile correspondientes (que se describen en Variables de ámbito de perfil para el contexto de usuario) y lo transfiere a Oracle B2C Service.

  • contactID: transfiera un valor de tipo int en la subpropiedad id.

  • organizationID: transfiera un valor de tipo int en la subpropiedad id.

  • productID: transfiera un valor de tipo int en la subpropiedad secundaria id.

  • categoryID: Transfiera un valor de tipo int en la propiedad id.

Consejo:

Puede utilizar la API de REST de Oracle B2C Service para ver los valores válidos para los campos de información del cliente. Por ejemplo, esta solicitud GET muestra las categorías:
curl --request GET \
--url https://<sitename.domain>/services/rest/connect/latest/serviceCategories \
--header 'authorization: Basic <base64-encoded-username+:+password>' \
--header 'osvc-crest-application-context: <some-comment>'

Objeto customerInformation heredado

En esta sección se habla del objeto customerInformation para las aptitudes que utiliza un canal de integración de agente creado antes de la versión 20.01 o un canal que se conecta a una instancia de Oracle B2C Service anterior a la versión 19A.

Utilice el objeto customerInformation de la asignación Propiedades personalizadas para transferir la información del cliente de chat, como el ID de interfaz, el ID de contacto o el ID de categoría. El objeto customerInformation puede contener los campos definidos en la sección Chat Customer Information del WSDL de Oracle B2C Service en http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=server.

Para los objetos, ponga en minúsculas el carácter inicial del nombre, así como los nombres de los campos simples en su totalidad.

Si no transfiere el objeto interfaceID, la aptitud utiliza el valor por defecto id:{id: 1}. Tenga en cuenta que, si la interfaz no tiene activado el chat, el establecimiento de comunicación de inicio fallará. Puede utilizar el asistente de configuración de Oracle B2C Service, al que se accede desde Mis servicios, para verificar si una interfaz tiene el chat activado.

Aunque puede definir los campos EMailAddress, FirstName y LastName descritos en la sección Información de cliente de chat de WSDL, la aptitud define automáticamente estos valores a partir de las propiedades .profile correspondientes (descritas en Variables de ámbito de perfil para contexto de usuario).

Consejo:

Puede utilizar la API de REST de Oracle B2C Service para ver los valores válidos para los campos de información del cliente. Por ejemplo, esta solicitud GET muestra los nombres y los ID de interfaz:
curl --request GET \
--url https://<sitename.domain>/services/rest/connect/latest/siteInterfaces \
--header 'authorization: Basic <base64-encoded-username+:+password>' \
--header 'osvc-crest-application-context: <some-comment>'

Esta solicitud GET muestra las categorías:

curl --request GET \
--url https://<sitename.domain>/services/rest/connect/latest/serviceCategories \
--header 'authorization: Basic <base64-encoded-username+:+password>' \
--header 'osvc-crest-application-context: <some-comment>'

Como se ha mencionado antes, la estructura de la asignación customerInformation debe respetar la estructura de Información del cliente de chat que se muestra en el WSDL en la dirección siguiente:

http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=server

Este es un extracto del WSDL:

<!--  ============================== -->
<!--    Chat Customer Information    -->
<!--  ============================== -->

<xs:complexType name="ChatCustomerInformation">
    <xs:sequence>
        <xs:element name="EMailAddress" minOccurs="0" maxOccurs="1">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:maxLength value="80"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:element>

        <xs:element name="FirstName" minOccurs="0" maxOccurs="1">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:maxLength value="80"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:element>

        <xs:element name="LastName" minOccurs="0" maxOccurs="1">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:maxLength value="80"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:element>

        <xs:element name="InterfaceID" type="rnccm:NamedID" minOccurs="1" maxOccurs="1"/>
        <xs:element name="ContactID" type="rnccm:ID" minOccurs="0" maxOccurs="1" />
        <xs:element name="OrganizationID" type="rnccm:ID" minOccurs="0" maxOccurs="1" />
        <xs:element name="Question" type="xs:string" minOccurs="0" maxOccurs="1"/>
        <xs:element name="ProductID" type="rnccm:ID" minOccurs="0" maxOccurs="1"/>
        <xs:element name="CategoryID" type="rnccm:ID" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
</xs:complexType> 

Algunos objetos son de tipo rnccm:ID, que se define en el extracto siguiente. Tenga en cuenta que el objeto contiene un campo id de tipo largo.

<xs:element name="ID" type="ID"/>
<xs:complexType name="ID">
    <xs:attribute name="id" type="xs:long" use="optional"/>
</xs:complexType> 

InterfaceID es de tipo rnccm:NamedID. Tenga en cuenta que este objeto puede contener un ID (largo), un nombre (cadena) o ambos.

<xs:element name="NamedID" type="NamedID"/>
<xs:complexType name="NamedID">
    <xs:sequence>
        <xs:element name="ID" type="ID" minOccurs="0" maxOccurs="1"/>
        <xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
</xs:complexType>

Las mayúsculas y minúsculas difieren entre el WSDL y la asignación Propiedades personalizadas. En la asignación, la primera letra para el nombre de un objeto está en minúsculas (Pascal Case). Por ejemplo, ProductID en el WSDL sería productID para el objeto de asignación. Los nombres de campos simples se escriben en minúscula en su totalidad (por ejemplo, Name se convierte en name).

Objeto customFields estándar

En esta sección se habla del objeto customFields para habilidades que utilizan un canal de integración de agente creado en la versión 20.01 o posterior y que se conecta a Oracle B2C Service versión 19A o posterior.

Utilice el objeto customFields de la asignación Propiedades personalizadas para transferir valores de cualquier campo personalizado de Oracle B2C Service de tipo Incidente.

El objeto customFields es una matriz de asignaciones que contienen las siguientes propiedades.

  • Campos simples:

    • name: nombre de columna del campo (en minúsculas) precedido por c$.

    • type: los valores permitidos son BOOLEAN, DATE, DATETIME, INTEGER, LONG, STRING y DECIMAL.

    • value: valor del campo.

  • Campo Menú:

    • name: nombre de columna del campo (en minúsculas) precedido por c$.

    • value: puede definir el valor en el ID del campo o en el texto de la opción de menú. Tenga en cuenta que este objeto no tiene una propiedad type.

      Consejo:

      Para buscar el ID de una opción de menú, abra la página de detalles del campo personalizado desde la consola de servicio del escritorio de Oracle B2C Service. Pase el cursor por encima de una opción de menú y espere varios segundos. La ayuda de burbuja aparecerá y mostrará el identificador de esa opción.

A continuación, se muestra un valor de ejemplo para el objeto:

[		
  {
    "name" : "c$text_field",        
    "type" : "STRING",
    "value" : "SILVER"
  },
  {
    "name" : "c$text_area",
    "type" : "STRING",
    "value" : "My package arrived but there were no contents in the box. Just bubble wrap."
  },
  {
    "name" : "c$integer",          
    "type" : "INTEGER",
    "value" : 21
  },
  {
    "name" : "c$yes_no", 
    "type" : "BOOLEAN",
    "value": 1
  },
  {
    "name" : "c$date_field",   
    "type" : "DATE",
    "value" : "2020-02-04T00:00:00+00:00" 
  },
  {
    "name" : "c$date_time",        
    "type" : "DATETIME",
    "value" : "2020-02-04T21:24:18+00:00" 
  },
  {
    "name" : "c$menu",            
    "value" : "12"
  }
]

Consejo:

Puede enviar la siguiente solicitud GET, que utiliza RightNow Object Query (ROQL), para obtener una lista de los nombres de columna:
curl --request GET \
--url https://<site.domain>/services/rest/connect/latest/queryResults/?query=select%20CustomFields.c.*%20from%20Incidents \
--header 'authorization: Basic <base64-encoded-username+:+password>' \
--header 'osvc-crest-application-context: <some-comment>'

Para obtener los valores válidos para un campo personalizado, envíe una solicitud GET que utilice RightNow Object Query (ROQL), como esta:

curl --request GET \
--url https://<site.domain>/services/rest/connect/latest/queryResults/?query=select%20CustomFields.c.skillType%20from%20Incidents%20where%20CustomFields.c.skillType%20IS%20NOT%20NULL \
--header 'authorization: Basic <base64-encoded-username+:+password>' \
--header 'osvc-crest-application-context: <some-comment>'

Objeto customFields heredado

En esta sección se habla del objeto customFields para aptitudes que utiliza un canal de integración de agente creado antes de la versión 20.01 o un canal que se conecta a una instancia de Oracle B2C Service anterior a la versión 19A.

Utilice el objeto customFields de la asignación Propiedades personalizadas para transferir valores de cualquier campo personalizado de Oracle B2C Service de tipo Incidente.

El objeto customFields es una matriz de asignaciones que contienen las propiedades name, dataType y dataValue. El valor de la propiedad name es el nombre de columna en minúscula del campo precedido por c$.

A continuación, se muestra un valor de ejemplo para el objeto:

[		
  {
    "name" : "c$da_text_field",        
    "dataType" : "STRING",
    "dataValue" : {
      "stringValue": "SILVER"
    }
  },
  {
    "name" : "c$da_text_area",
    "dataType" : "STRING",
    "dataValue" : {
      "stringValue": "This is a very long string that is more than 32 characters."
    }
  },
  {
    "name" : "c$da_integer",          
    "dataType" : "INTEGER",
    "dataValue" : {
      "integerValue" :21
    }
  },
  {
    "name" : "c$da_menu", 
    "dataType" : "NAMED_ID",
    "dataValue" : {
      "namedIDValue": {
        "name" : "Item 1"
      }
    }
  },
  {
    "name" : "c$da_is_from_skill",          
    "dataType" : "BOOLEAN",
    "dataValue" : {
      "booleanValue" : true
    }
  },
  {
    "name" : "c$da_date",   
    "dataType" : "DATE",
    "dataValue" : {
      "dateValue" : "2019-10-26"
    }
  },
  {
    "name" : "c$da_datetime",        
    "dataType" : "DATETIME",
    "dataValue" : {
      "dateTimeValue" : "2019-10-26T21:32:52"  
    }
  }
]

Consejo:

Puede enviar la siguiente solicitud GET, que utiliza RightNow Object Query (ROQL), para obtener una lista de los nombres de columna:
curl --request GET \
--url https://<site.domain>/services/rest/connect/latest/queryResults/?query=select%20CustomFields.c.*%20from%20Incidents \
--header 'authorization: Basic <base64-encoded-username+:+password>' \
--header 'osvc-crest-application-context: <some-comment>'

Para obtener los valores válidos para un campo personalizado, envíe una solicitud GET que utilice RightNow Object Query (ROQL), como esta:

curl --request GET \
--url https://<site.domain>/services/rest/connect/latest/queryResults/?query=select%20CustomFields.c.skillType%20from%20Incidents%20where%20CustomFields.c.skillType%20IS%20NOT%20NULL \
--header 'authorization: Basic <base64-encoded-username+:+password>' \
--header 'osvc-crest-application-context: <some-comment>'

La definición GenericField en el WSDL de Oracle B2C Service en http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=server describe la estructura de dataType y dataValue:

<xs:element name="GenericField" type="GenericField"/>
  <xs:complexType name="GenericField">
    <xs:sequence>
      <xs:element name="DataValue" type="DataValue" minOccurs="1" maxOccurs="1" nillable="true"/>
    </xs:sequence>
  <xs:attribute name="dataType" type="DataTypeEnum" use="optional"/>
  <xs:attribute name="name" type="xs:string" use="required"/>

Al igual que los campos customerInformation, el mismo uso de mayúsculas/minúsculas se aplica a los equivalentes de la asignación de Propiedades personalizadas (por ejemplo, DataValue en el WSDL es dataValue en la asignación).

Ensamblaje del objeto de propiedades personalizadas

Hay muchos enfoques que puede utilizar para crear el objeto Propiedades personalizadas. Los siguientes pasos muestran cómo hacerlo creando una variable independiente para cada grupo de propiedades y, a continuación, consolidándolas en un mapa.

  1. Declare variables para las partes que desea incluir en el objeto Propiedades personalizadas:
    • Si desea incluir el ID de incidente en las propiedades personalizadas, defina una variable de tipo Integer para el ID de incidente. En este ejemplo lo llamaremos customerTicketId.
    • Si desea incluir cualquier propiedad customerInformation en las propiedades personalizadas, defina una variable de tipo List para que contenga estas propiedades. En este ejemplo lo llamaremos custInfo.
    • Si desea incluir cualquiera de las propiedades customFields en las propiedades personalizadas, defina una variable de tipo Map para contener estas propiedades. En este ejemplo lo llamaremos custFields.

    Para declarar variables de flujo, seleccione el flujo especificado en la página Diseñador de flujos, haga clic en el separador Configuración y haga clic en Agregar variable.

  2. En los componentes Set Variable, asigne valores a las variables que ha creado.
    • Para customerTicketId, utilice un valor o una expresión que se resuelva en un entero.
    • Para custInfo, proporcione el valor como mapa JSON que tenga un aspecto similar al siguiente:
      {
        "contactID" : {
          "id" : "${contactId}"
      	},  
        "organizationID" : {
          "id" : "${organizationId}"
      	},
        "productID" : {
          "id" : "${productId}"
      	},
        "categoryID" : {
          "id" : "${categoryId}"
      	}
      }
    • Para custFields, proporcione el valor como una matriz de objetos JSON que tenga un aspecto similar al siguiente:
      [		
        {
          "name" : "c$text_field",        
          "type" : "STRING",
          "value" : "SILVER"
        },
        {
          "name" : "c$text_area",
          "type" : "STRING",
          "value" : "My package arrived but there were no contents in the box. Just bubble wrap."
        },
        {
          "name" : "c$integer",          
          "type" : "INTEGER",
          "value" : 21
        },
        {
          "name" : "c$yes_no", 
          "type" : "BOOLEAN",
          "value": 1
        },
        {
          "name" : "c$date_field",   
          "type" : "DATE",
          "value" : "2020-02-04T00:00:00+00:00" 
        },
        {
          "name" : "c$date_time",        
          "type" : "DATETIME",
          "value" : "2020-02-04T21:24:18+00:00" 
        },
        {
          "name" : "c$date_time", 
          "type" : "DATETIME",	  
          "value" : "2020-02-04T21:24:18+00:00" 
        },
        {
          "name" : "c$menu",            
          "value" : "12"
        }
      ]
  3. Utilice un componente Definir Variable para consolidar las variables del paso anterior en una variable de asignación.

    Por ejemplo, puede asignar un nombre a la variable liveChatInfo y proporcionarle el siguiente valor:

    {
      "incidentId" : "${customerTicketId}",
      "customerInformation" : "${custInfo.value}",
      "customFields" : "${custFields.value}"
    }
  4. En el componente de inicio del agente del flujo, defina el valor de la propiedad Propiedades personalizadas en el valor de la variable de asignación consolidada, por ejemplo: ${liveChatInfo.value}.