Transmitir Informações do Cliente a um Chat ao Vivo
Quando o log de conversas está ativado para uma habilidade, ele transmite todo o histórico de chat para o Oracle B2C Service automaticamente. Além do histórico de bate-papo, você também pode enviar algumas informações específicas do cliente.
- ID do incidente
- Informações do Cliente de Chat: As habilidades podem transmitir as seguintes informações do cliente de chat para o Oracle B2C Service.
- Endereço de e-mail
- Nome
- sobrenome
- Contato
- Organização
- Categoria
- Produto
A habilidade usa valores de perfis para preencher e enviar esses campos do cliente de bate-papo automaticamente; você não precisa fazer nada para definir estes valores:
- Endereço de e-mail
- Nome
- sobrenome
- Campos Personalizados de Incidentes: Você pode informar valores para qualquer campo personalizado do Oracle B2C Service do tipo de Incidente.
Para saber mais sobre campos personalizados, consulte Visão Geral de Campos Personalizados em Usando o Oracle B2C Service.
Se você estiver usando um canal de integração do agente criado antes da versão 20.1, ou se o seu canal estabelecer conexão com uma instância do Oracle B2C Service anterior a 19A, também será possível transmitir informações da interface. Com canais que são criados na versão 20.1 e mais recente e se conectam ao Oracle B2C Service 19A e mais recente, você inclui o ID da interface no URL do canal.
Para enviar informações do cliente para o agente ao vivo, você informa um mapa na propriedade Propriedades Personalizadas do componente Agent Integration. Veja a estrutura de nível superior do mapa:
incidentID: # type int
customerInformation: # chat customer information object
customFields: # incident custom fields object
${mapVariableName.value}
Consulte Montagem do Objeto de Propriedades Personalizadas para obter um exemplo de montagem das informações do cliente para enviar o agente ao vivo.
A Propriedade incidentID
Você pode informar um ID de Incidente para o agente ao vivo adicionando uma propriedade incidentID
ao mapa Propriedades Personalizadas.
Dica:
Se você quiser associar uma solicitação de chat a um incidente existente, poderá criar um componente personalizado para recuperar oincidentId
enviando uma solicitação REST como o exemplo a seguir. Esta solicitação REST recupera o incidente mais recente do contato com um endereço de e-mail correspondente.https://<URL>/services/rest/connect/latest/incidents?q=primaryContact.ParentContact.Emails.EmailList.Address like 'email@gmail.com'&orderBy=createdTime:desc&limit=1
O corpo da resposta contém um link href
, com o ID do 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 saber mais sobre componentes personalizados, consulte Integração de Backend. Para saber mais sobre as APIs REST do Oracle B2C Service, consulte API REST para Oracle B2C Service.
O Objeto customerInformation Padrão
Esta seção discute o objeto customerInformation
para habilidades que usam um canal de integração do agente que foi criado na versão 20.01 ou mais recente e que estabelece conexão com o Oracle B2C Service versão 19A ou mais recente.
Você pode usar o objeto customerInformation
no mapa Propriedades Personalizadas para passar pelas seguintes informações do cliente de chat:
- incidentID:
int
. -
eMailAddress:
string
. Máximo de 80 caracteres. Sua habilidade define automaticamente esse valor com base nas propriedades.profile
correspondentes (descritas em Variáveis de Escopo de Perfil para Contexto do Usuário) e informa-o ao Oracle B2C Service. -
firstName:
string
. Máximo de 80 caracteres. Sua habilidade define automaticamente esse valor com base nas propriedades.profile
correspondentes (descritas em Variáveis de Escopo de Perfil para Contexto do Usuário) e informa-o ao Oracle B2C Service. -
lastName:
string
. Máximo de 80 caracteres. Sua habilidade define automaticamente esse valor com base nas propriedades.profile
correspondentes (descritas em Variáveis de Escopo de Perfil para Contexto do Usuário) e informa-o ao Oracle B2C Service. -
contactID: Informe um valor do tipo
int
na subpropriedadeid
. -
organizationID: Informe um valor do tipo
int
na subpropriedadeid
. -
productID: Informe um valor do tipo
int
na subpropriedadeid
. -
categoryID: Informe um valor do tipo
int
na subpropriedadeid
.
Dica:
Você pode usar a API REST do Oracle B2C Service para exibir os valores válidos dos campos de informações do cliente. Por exemplo, esta solicitação GET lista as categorias: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>'
O Objeto customerInformation Legado
Esta seção discute o objeto customerInformation
para habilidades que usam um canal de integração do agente que foi criado antes da versão 20.01 ou um canal que estabelece conexão com uma instância do Oracle B2C Service anterior à versão 19A.
Use o objeto customerInformation
no mapa Propriedades Personalizadas para transmitir informações do cliente de chat, como ID da Interface, ID do Contato ou ID da Categoria. O objeto customerInformation
pode conter os campos definidos na seção Chat Customer Information
do Oracle B2C Service WSDL em http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=server
.
Para objetos, altere o caractere inicial do nome para letra minúscula e altere os nomes de campos simples para todas as letras minúsculas.
Se você não informar o objeto interfaceID
, a habilidade usará um padrão id:{id: 1}
. Observe que, se a interface não estiver ativada para bate-papo, o handshake de iniciação falhará. Você pode usar o Assistente de Configuração do Oracle B2C Service, que você acessa em Meus Serviços, para verificar se uma interface está ativada para chat.
Embora você possa definir os campos EMailAddress
, FirstName
e LastName
que são descritos na seção Informações do Cliente de Chat do WSDL, sua habilidade definirá automaticamente esses valores com base nas propriedades .profile
correspondentes (descritas em Variáveis de Perfil-Escopo para Contexto do Usuário).
Dica:
Você pode usar a API REST do Oracle B2C Service para exibir os valores válidos dos campos de informações do cliente. Por exemplo, esta solicitação GET lista os IDs e os nomes de interface: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 solicitação GET lista as categorias:
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>'
Conforme mencionado anteriormente, a estrutura de mapa customerInformation
deve estar em conformidade com a estrutura Chat Customer Information
que é mostrada no WSDL no seguinte endereço:
http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=server
Veja um trecho do 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>
Alguns objetos são do tipo rnccm:ID
, que é definido no próximo trecho. Observe que o objeto contém um campo id
do tipo grande.
<xs:element name="ID" type="ID"/>
<xs:complexType name="ID">
<xs:attribute name="id" type="xs:long" use="optional"/>
</xs:complexType>
InterfaceID
é do tipo rnccm:NamedID
. Observe que esse objeto pode conter um ID (grande), um Nome (string) ou 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>
A capitalização difere entre o WSDL e o mapa Propriedades Personalizadas. No mapa, a primeira letra de um nome de objeto é minúscula (caixa Pascal). Por exemplo, ProductID
no WSDL seria productID
para o objeto de mapa. Os nomes de campo simples são todos minúsculos (Name
se torna name
, por exemplo).
O Objeto customFields Padrão
Esta seção discute o objeto customFields
para habilidades que usam um canal de integração do agente que foi criado na versão 20.01 ou mais recente e que estabelece conexão com o Oracle B2C Service versão 19A ou mais recente.
Use o objeto customFields
no mapa Propriedades Personalizadas para transmitir valores para qualquer campo personalizado do Oracle B2C Service do tipo Incidente.
O objeto customFields
é um array de mapas que contêm as propriedades a seguir.
-
Campos simples:
-
name:
O nome da coluna do campo (minúscula) precedido dec$
. -
type:
Os valores permitidos são BOOLEAN, DATE, DATETIME, INTEGER, LONG, STRING e DECIMAL. -
value:
O valor do campo.
-
-
Campo de menu:
-
name:
O nome da coluna do campo (minúscula) precedido dec$
. -
value:
Você pode definir o valor como o ID do campo ou o texto do item de menu. Observe que este objeto não tem uma propriedadetype
.Dica:
Para localizar o ID de um item de menu, abra a página de detalhes do campo personalizado na Console de Serviço da área de trabalho do Oracle B2C Service. Passe o mouse sobre um item de menu e aguarde alguns segundos. A dica de ferramenta aparecerá e mostrará o ID desse item.
-
Veja a seguir um exemplo de valor para o 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"
}
]
Dica:
Você pode enviar a seguinte solicitação GET, que usa o ROQL (RightNow Object Query), para obter uma lista dos nomes das colunas: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 obter os valores válidos de um campo personalizado, envie uma solicitação GET que use o ROQL da seguinte forma:
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>'
O Objeto customFields Legado
Esta seção discute o objeto customFields
para habilidades que usam um canal de integração do agente que foi criado antes da versão 20.01 ou um canal que estabelece conexão com uma instância do Oracle B2C Service anterior a 19A.
Use o objeto customFields
no mapa Propriedades Personalizadas para transmitir valores para qualquer campo personalizado do Oracle B2C Service do tipo Incidente.
O objeto customFields
é um array de mapas que contêm as propriedades name
, dataType
e dataValue
. O valor da propriedade name
é o nome da coluna em minúsculas do campo precedido de c$
.
Veja a seguir um exemplo de valor para o 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"
}
}
]
Dica:
Você pode enviar a seguinte solicitação GET, que usa o ROQL (RightNow Object Query), para obter uma lista dos nomes das colunas: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 obter os valores válidos de um campo personalizado, envie uma solicitação GET que use o ROQL da seguinte forma:
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>'
A definição GenericField
no Oracle B2C Service WSDL em http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=server
descreve a estrutura dataType
e 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"/>
Assim como nos campos customerInformation
, a mesma distinção entre maiúsculas e minúsculas se aplica aos equivalentes do mapa Propriedades Personalizadas (o DataValue
do WSDL é dataValue
no mapa, por exemplo).
Montar o Objeto de Propriedades Personalizadas
Há muitas abordagens que você pode usar para criar o objeto Propriedades Personalizadas. As etapas a seguir mostram como fazer isso criando uma variável separada para cada grupo de propriedades e, em seguida, consolidando-as em um mapa.
- Declare variáveis para as partes que você deseja incluir no objeto Propriedades Personalizadas:
- Se você quiser incluir o ID do incidente nas propriedades personalizadas, defina uma variável do tipo
Integer
para o ID do incidente. Neste exemplo, chamaremos isso decustomerTicketId
. - Se você quiser incluir qualquer propriedade
customerInformation
nas propriedades personalizadas, defina uma variável do tipoList
para manter essas propriedades. Neste exemplo, chamaremos isso decustInfo
. - Se você quiser incluir qualquer uma das propriedades
customFields
nas propriedades personalizadas, defina uma variável do tipoMap
para manter essas propriedades. Neste exemplo, chamaremos isso decustFields
.
Você declara variáveis de fluxo selecionando o fluxo fornecido na página Designer de Fluxo, clicando na guia Configuração e clicando em Adicionar Variável.
- Se você quiser incluir o ID do incidente nas propriedades personalizadas, defina uma variável do tipo
- Nos componentes Definir Variável, atribua valores às variáveis que você criou.
- Para
customerTicketId
, use um valor ou expressão que resulte em um número inteiro. - Para
custInfo
, forneça o valor como mapa JSON semelhante a este:{ "contactID" : { "id" : "${contactId}" }, "organizationID" : { "id" : "${organizationId}" }, "productID" : { "id" : "${productId}" }, "categoryID" : { "id" : "${categoryId}" } }
- Para
custFields
, forneça o valor como um array JSON de objetos que se parece com isso:[ { "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
- Use um componente Definir Variável para consolidar as variáveis da etapa anterior em uma variável de mapa.
Por exemplo, você poderia nomear a variável
liveChatInfo
e atribuir a ela o seguinte valor:{ "incidentId" : "${customerTicketId}", "customerInformation" : "${custInfo.value}", "customFields" : "${custFields.value}" }
- No componente Iniciação do Agente do fluxo, defina o valor da propriedade Propriedades Personalizadas como o valor da variável de mapa consolidada, por exemplo:
${liveChatInfo.value}
.