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.
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
${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 elementoincidentId
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 subpropiedadid
. -
organizationID: transfiera un valor de tipo
int
en la subpropiedadid
. -
productID: transfiera un valor de tipo
int
en la subpropiedad secundariaid
. -
categoryID: Transfiera un valor de tipo
int
en la propiedadid
.
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 porc$
. -
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 porc$
. -
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 propiedadtype
.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.
- 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 llamaremoscustomerTicketId
. - Si desea incluir cualquier propiedad
customerInformation
en las propiedades personalizadas, defina una variable de tipoList
para que contenga estas propiedades. En este ejemplo lo llamaremoscustInfo
. - Si desea incluir cualquiera de las propiedades
customFields
en las propiedades personalizadas, defina una variable de tipoMap
para contener estas propiedades. En este ejemplo lo llamaremoscustFields
.
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.
- Si desea incluir el ID de incidente en las propiedades personalizadas, defina una variable de tipo
- 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" } ]
- Para
- 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}" }
- 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}
.