Transmettre des informations sur le client à un clavardage en direct
Lorsque la journalisation de la conversation est activée pour une compétence, celle-ci transmet automatiquement l'historique de clavardage à Oracle B2C Service. En plus de cet historique, vous pouvez également envoyer des informations spécifiques sur le client.
- ID incident
- Informations sur le client de chat : Les compétences peuvent transmettre les informations suivantes sur le client de chat à Oracle B2C Service.
- Adresse de courriel
- Prénom
- Nom
- Contact
- Organisation
- Catégorie
- Produit
La compétence utilise les valeurs de profil pour alimenter et envoyer automatiquement ces champs de client de clavardage. Vous n'avez donc rien à faire pour définir ces valeurs :
- Adresse de courriel
- Prénom
- Nom
- Champs personnalisés d'incident : Vous pouvez transmettre des valeurs pour tous les champs personnalisés Oracle B2C Service de type incident.
Pour en savoir plus sur les champs personnalisés, voir Aperçu des champs personnalisés sous Utilisation d'Oracle B2C Service.
Si vous utilisez un canal Intégration d'agent créé avant la version 20.1, ou si votre canal se connecte à une instance d'Oracle B2C Service antérieure à 19A, vous pouvez également transmettre des informations sur l'interface. Avec les canaux créés dans les versions 20.1 et supérieures, qui se connectent à Oracle B2C Service 19A et ultérieures, vous pouvez inclure l'ID interface dans l'URL du canal.
Pour envoyer des informations sur le client à l'agent humain, vous transmettez des informations sur un mappage dans la propriété Propriétés personnalisées du composant Intégration d'agent. Voici la structure générale du mappage :
incidentID: # type int
customerInformation: # chat customer information object
customFields: # incident custom fields object
${mapVariableName.value}
Voir Assembler l'objet Propriétés personnalisées pour obtenir un exemple d'assemblage des informations sur le client pour envoyer l'agent humain.
Propriété incidentID
Vous pouvez transmettre un ID d'incident à l'agent humain en ajoutant une propriété incidentID
au mappage Propriétés personnalisées.
Conseil :
Si vous souhaitez associer une demande de clavardage à un incident existant, vous pouvez créer un composant personnalisé pour extraire la propriétéincidentId
en envoyant une demande REST comme dans l'exemple qui suit. Cette demande REST extrait l'incident le plus récent pour le contact dont l'adresse de courriel correspond.https://<URL>/services/rest/connect/latest/incidents?q=primaryContact.ParentContact.Emails.EmailList.Address like 'email@gmail.com'&orderBy=createdTime:desc&limit=1
Le corps de la réponse contient un lien href
, qui contient l'ID incident :
{
"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"
}
]
}
],
Pour en savoir plus sur les composants personnalisés, voir Intégration à un système dorsal. Pour en savoir plus sur les API REST d'Oracle B2C Service, voir REST API pour Oracle B2C Service.
Objet customerInformation standard
Cette section présente l'objet customerInformation
pour les compétences qui utilisent un canal Intégration d'agent créé dans la version 20.01 ou ultérieure, qui se connecte à Oracle B2C Service version 19A ou ultérieure.
Vous pouvez utiliser l'objet customerInformation
dans le mappage Propriétés personnalisées pour transmettre les informations suivantes sur le client de clavardage :
- incidentID:
int
. -
eMailAddress:
string
. 80 caractères au maximum. Votre compétence définit automatiquement cette valeur à partir des propriétés.profile
correspondantes ( décrites dans Variables de portée de profil pour le contexte d'utilisateur) et la transmet à Oracle B2C Service. -
firstName:
string
. 80 caractères au maximum. Votre compétence définit automatiquement cette valeur à partir des propriétés.profile
correspondantes ( décrites dans Variables de portée de profil pour le contexte d'utilisateur) et la transmet à Oracle B2C Service. -
lastName:
string
. 80 caractères au maximum. Votre compétence définit automatiquement cette valeur à partir des propriétés.profile
correspondantes ( décrites dans Variables de portée de profil pour le contexte d'utilisateur) et la transmet à Oracle B2C Service. -
contactID : Transmettez une valeur de type
int
dans la sous-propriétéid
. -
organizationID : Transmettez une valeur de type
int
dans la sous-propriétéid
. -
productID : Transmettez une valeur de type
int
dans la sous-propriétéid
. -
categoryID : Transmettez une valeur de type
int
dans la sous-propriétéid
.
Conseil :
Vous pouvez utiliser l'API REST d'Oracle B2C Service pour voir les valeurs valides dans les champs d'informations sur le client. Par exemple, cette demande GET liste les catégories :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>'
Objet customerInformation existant
Cette section présente l'objet customerInformation
pour les compétences qui utilisent un canal Intégration d'agent créé avant la version 20.01 ou un canal qui se connecte à une instance d'Oracle B2C Service antérieure à la version 19A.
Vous utilisez l'objet customerInformation
dans le mappage Propriétés personnalisées pour transmettre des informations sur le client de clavardage, telles que l'ID interface, l'ID contact ou l'ID catégorie. L'objet customerInformation
peut contenir les champs définis dans la section Chat Customer Information
du WSDL d'Oracle B2C Service à http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=server
.
Pour les objets, remplacez l'initiale du nom par une minuscule, et mettez le nom des champs simples tout en minuscules.
Si vous ne transmettez pas l'objet interfaceID
, la compétence utilise une valeur par défaut id:{id: 1}
. Notez que si l'interface n'est pas activée pour le clavardage, l'établissement de la liaison de lancement échouera. Vous pouvez utiliser l'assistant de configuration d'Oracle B2C Service, auquel vous accédez à partir de Mes services, pour vérifier si une interface est activée pour le clavardage.
Bien que vous puissiez définir les champs EMailAddress
, FirstName
et LastName
qui sont décrits dans la section Chat Customer Information du WSDL, votre compétence définit automatiquement ces valeurs à partir des propriétés .profile
correspondantes (décrites dans Variables de portée de profil pour le contexte utilisateur).
Conseil :
Vous pouvez utiliser l'API REST d'Oracle B2C Service pour voir les valeurs valides dans les champs d'informations sur le client. Par exemple, cette demande GET liste les ID et les noms d'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>'
Cette demande GET liste les catégories :
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>'
Comme mentionné ci-dessus, la structure de mappage customerInformation
doit être conforme à la structure Chat Customer Information
affichée dans le WSDL à l'adresse suivante :
http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=server
Voici un extrait du 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>
Certains objets sont de type rnccm:ID
, qui est défini dans l'extrait suivant. Notez que l'objet contient un champ id
de type long.
<xs:element name="ID" type="ID"/>
<xs:complexType name="ID">
<xs:attribute name="id" type="xs:long" use="optional"/>
</xs:complexType>
InterfaceID
est de type rnccm:NamedID
. Remarquez que cet objet peut contenir un ID (long), un nom (chaîne) ou les deux.
<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>
La casse du WSDL est différente de celle du mappage Propriétés personnalisées. Dans le mappage, la première lettre d'un nom d'objet est en minuscule (cas Pascal). Par exemple, ProductID
dans le WSDL sera productID
pour l'objet de mappage. Les noms de champ simple sont en minuscules (Name
devient name
, par exemple).
Objet customFields standard
Cette section présente l'objet customFields
pour les compétences qui utilisent un canal Intégration d'agent créé dans la version 20.01 ou ultérieure, qui se connecte à Oracle B2C Service version 19A ou ultérieure.
Vous utilisez l'objet customFields
dans le mappage Propriétés personnalisées pour transmettre des valeurs pour tout champ personnalisé Oracle B2C Service de type incident.
L'objet customFields
est un tableau de mappages qui contient les propriétés suivantes.
-
Champs simples :
-
name:
Nom de colonne du champ (minuscules) précédé dec$
. -
type:
Les valeurs autorisées sont BOOLEAN, DATE, DATETIME, INTEGER, LONG, STRING et DECIMAL. -
value:
Valeur du champ.
-
-
Champ Menu :
-
name:
Nom de colonne du champ (minuscules) précédé dec$
. -
value:
Vous pouvez régler la valeur à l'ID du champ ou au texte de l'élément de menu. Notez que cet objet n'a pas de propriététype
.Conseil :
Pour trouver l'ID d'un élément de menu, ouvrez la page de détails du champ personnalisé dans la console de service de bureau d'Oracle B2C Service. Positionnez le pointeur de la souris sur un élément de menu et attendez quelques secondes. L'infobulle s'affiche et indique l'ID de cet élément.
-
Voici un exemple de valeur pour l'objet :
[
{
"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"
}
]
Conseil :
Vous pouvez envoyer la demande GET suivante, qui utilise l'interrogation d'objet RightNow (ROQL) pour obtenir une liste des noms de colonne :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>'
Pour obtenir les valeurs valides d'un champ personnalisé, envoyez une demande GET qui utilise l'interrogation d'objet RightNow (ROQL) comme suit :
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>'
Objet customFields existant
Cette section présente l'objet customFields
pour les compétences qui utilisent un canal Intégration d'agent créé avant la version 20.01 ou un canal qui se connecte à une instance d'Oracle B2C Service antérieure à 19A.
Vous utilisez l'objet customFields
dans le mappage Propriétés personnalisées pour transmettre des valeurs pour tout champ personnalisé Oracle B2C Service de type incident.
L'objet customFields
est un tableau de mappages contenant des propriétés name
, dataType
et dataValue
. La valeur de la propriété name
est le nom de colonne du champ en minuscules, précédé de c$
.
Voici un exemple de valeur pour l'objet :
[
{
"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"
}
}
]
Conseil :
Vous pouvez envoyer la demande GET suivante, qui utilise l'interrogation d'objet RightNow (ROQL) pour obtenir une liste des noms de colonne :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>'
Pour obtenir les valeurs valides d'un champ personnalisé, envoyez une demande GET qui utilise l'interrogation d'objet RightNow (ROQL) comme suit :
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 définition GenericField
du WSDL d'Oracle B2C Service à l'adresse http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=server
décrit la structure dataType
et 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"/>
Comme pour les champs customerInformation
, la même casse s'applique à l'équivalent du mappage de propriétés personnalisées (DataValue
du WSDL est dataValue
dans le mappage, par exemple).
Assembler l'objet de propriétés personnalisées
Vous pouvez utiliser de nombreuses approches pour créer l'objet Propriétés personnalisées. Les étapes suivantes montrent comment le faire en créant une variable distincte pour chaque groupe de propriétés, puis en les consolidant dans une carte.
- Déclarez des variables pour les parties à inclure dans l'objet Propriétés personnalisées :
- Si vous voulez inclure l'ID incident dans les propriétés personnalisées, définissez une variable de type
Integer
pour l'ID incident. Dans cet exemple, nous l'appelleronscustomerTicketId
. - Si vous voulez inclure des propriétés
customerInformation
dans les propriétés personnalisées, définissez une variable de typeList
pour contenir ces propriétés. Dans cet exemple, nous l'appelleronscustInfo
. - Si vous voulez inclure l'une des propriétés
customFields
dans les propriétés personnalisées, définissez une variable de typeMap
pour contenir ces propriétés. Dans cet exemple, nous l'appelleronscustFields
.
Vous déclarez des variables de flux en sélectionnant le flux indiqué dans la page Concepteur de flux, en cliquant sur l'onglet Configuration et en cliquant sur Ajouter une variable.
- Si vous voulez inclure l'ID incident dans les propriétés personnalisées, définissez une variable de type
- Dans les composants Set Variable, affectez des valeurs aux variables que vous avez créées.
- Pour
customerTicketId
, utilisez une valeur ou une expression qui se résout en entier. - Pour
custInfo
, fournissez la valeur en tant que mappage JSON qui ressemble à ceci :{ "contactID" : { "id" : "${contactId}" }, "organizationID" : { "id" : "${organizationId}" }, "productID" : { "id" : "${productId}" }, "categoryID" : { "id" : "${categoryId}" } }
- Pour
custFields
, fournissez la valeur en tant que tableau JSON d'objets ressemblant à ceci :[ { "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" } ]
- Pour
- Utilisez un composant Set Variable pour consolider les variables de l'étape précédente en une seule variable de mappage.
Par exemple, vous pouvez nommer la variable
liveChatInfo
et lui donner la valeur suivante :{ "incidentId" : "${customerTicketId}", "customerInformation" : "${custInfo.value}", "customFields" : "${custFields.value}" }
- Dans le composant Lancement de l'agent du flux, réglez la valeur de la propriété Propriétés personnalisées à la valeur de la variable de mappage consolidée, par exemple :
${liveChatInfo.value}
.