Transmission d'informations client à une discussion en direct
Lorsque la journalisation des conversations est activée pour une brique, elle transmet automatiquement l'intégralité de l'historique de la discussion à Oracle B2C Service. En plus de l'historique de la discussion, vous pouvez également envoyer des informations spécifiques sur le client.
- ID d'incident
- Informations sur le client de la discussion : les briques peuvent transmettre les informations suivantes sur le client de la discussion à Oracle B2C Service.
- Adresse électronique
- Prénom
- Nom
- Contact
- Organisation
- catégorie
- Produit
La brique utilise les valeurs de profil pour remplir et envoyer automatiquement ces champs relatifs au client de la discussion. Vous n'avez rien à faire pour définir les valeurs suivantes :
- Adresse électronique
- Prénom
- Nom
- Champs personnalisés d'incident : vous pouvez transmettre des valeurs pour tout champ personnalisé Oracle B2C Service de type Incident.
Pour en savoir plus sur les champs personnalisés, reportez-vous à Présentation des champs personnalisés dans Utilisation d'Oracle B2C Service.
Si vous utilisez un canal d'intégration d'agent qui a été créé avant la version 20.1, ou que votre canal se connecte à une instance Oracle B2C Service antérieure à la version 19A, vous pouvez également transmettre les informations d'interface. Avec les canaux créés dans les versions 20.1 et ultérieures, qui se connectent à Oracle B2C Service version 19A et versions ultérieures, incluez l'ID d'interface dans l'URL du canal.
Pour envoyer des informations sur le client à l'agent physique, transmettez une correspondance dans la propriété Propriétés personnalisées du composant d'intégration d'agent. Voici la structure de niveau supérieur de la correspondance :
incidentID: # type int
customerInformation: # chat customer information object
customFields: # incident custom fields object
${mapVariableName.value}
Reportez-vous à Assembler l'objet Propriétés personnalisées pour obtenir un exemple d'assemblage des informations client avec l'agent physique d'envoi.
Propriété incidentID
Vous pouvez transmettre un ID d'incident à l'agent physique en ajoutant une propriété incidentID
à la correspondance Propriétés personnalisées.
Conseil :
Si vous voulez associer une demande de discussion à un incident existant, vous pouvez créer un composant personnalisé pour extraireincidentId
en envoyant une demande REST semblable à celle de l'exemple suivant. Cette demande REST extrait l'incident le plus récent pour le contact avec une adresse électronique correspondante.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 d'incident suivant :
{
"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, reportez-vous à Intégration back-end. Pour en savoir plus sur les API REST Oracle B2C Service, reportez-vous à API REST pour Oracle B2C Service.
Objet customerInformation standard
Cette section présente l'objet customerInformation
pour les briques utilisant un canal d'intégration d'agent qui a été créé dans la version 20.01 ou une version ultérieure et qui se connecte à Oracle B2C Service version 19A ou ultérieure.
Vous pouvez utiliser l'objet customerInformation
dans la correspondance Propriétés personnalisées pour transmettre les informations client de discussion suivantes :
- incidentID:
int
. -
eMailAddress:
string
. Au maximum 80 caractères. Votre brique définit automatiquement cette valeur à partir des propriétés.profile
correspondantes ( décrites dans Variables de portée de profil pour le contexte utilisateur) et la transmet à Oracle B2C Service. -
firstName:
string
. Au maximum 80 caractères. Votre brique définit automatiquement cette valeur à partir des propriétés.profile
correspondantes ( décrites dans Variables de portée de profil pour le contexte utilisateur) et la transmet à Oracle B2C Service. -
lastName:
string
. Au maximum 80 caractères. Votre brique définit automatiquement cette valeur à partir des propriétés.profile
correspondantes ( décrites dans Variables de portée de profil pour le contexte utilisateur) et la transmet à Oracle B2C Service. -
contactID : transmet une valeur de type
int
dans la sous-propriétéid
. -
organizationID : transmet une valeur de type
int
dans la sous-propriétéid
. -
productID : transmet une valeur de type
int
dans la sous-propriétéid
. -
categoryID : transmet une valeur de type
int
dans la sous-propriétéid
.
Conseil :
Vous pouvez utiliser l'API REST Oracle B2C Service pour consulter les valeurs valides des champs relatifs aux informations sur le client. Par exemple, la demande GET suivante répertorie 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 hérité
Cette section présente l'objet customerInformation
pour les briques utilisant un canal d'intégration d'agent qui a été créé avant la version 20.01 ou un canal qui se connecte à une instance Oracle B2C Service antérieure à la version 19A.
L'objet customerInformation
est utilisé dans la correspondance Propriétés personnalisées pour transmettre des informations sur le client de la discussion, telles que l'ID d'interface, l'ID de contact ou l'ID de catégorie. L'objet customerInformation
peut contenir les champs définis dans la section Chat Customer Information
du WSDL Oracle B2C Service à l'adresse http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=server
.
Pour les objets, remplacez le premier caractère du nom par une minuscule, puis mettez les noms de tous les champs simples en minuscules.
Si vous ne transmettez pas l'objet interfaceID
, la brique utilise la valeur par défaut id:{id: 1}
. Si la discussion n'est pas activée pour l'interface, l'établissement de la liaison de lancement échoue. Vous pouvez utiliser l'assistant de configuration d'Oracle B2C Service accessible à partir de Mes services pour vérifier si une interface autorise les discussions.
Bien que vous puissiez définir les champs EMailAddress
, FirstName
et LastName
décrits dans la section Informations sur le client de la discussion du WSDL, votre brique 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 Oracle B2C Service pour consulter les valeurs valides des champs relatifs aux informations sur le client. Par exemple, la demande GET suivante répertorie 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>'
La demande GET suivante répertorie 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é précédemment, la structure de mise en correspondance customerInformation
doit être conforme à la structure Chat Customer Information
indiqué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
. Ce type est défini dans l'extrait suivant. 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
. 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>
Les majuscules et les minuscules diffèrent entre le WSDL et la correspondance Propriétés personnalisées. Dans la correspondance, la première lettre d'un nom d'objet est en minuscules (casse Pascal). Par exemple, ProductID
dans le WSDL donnerait productID
dans l'objet de correspondance. Les noms des champs simples sont entièrement en minuscules (par exemple, Name
devient name
).
Objet customFields standard
Cette section présente l'objet customFields
pour les briques utilisant un canal d'intégration d'agent qui a été créé dans la version 20.01 ou une version ultérieure et qui se connecte à Oracle B2C Service version 19A ou ultérieure.
Vous pouvez utiliser l'objet customFields
dans la correspondance Propriétés personnalisées pour transmettre les valeurs de tout champ personnalisé Oracle B2C Service de type Incident.
L'objet customFields
est un tableau de correspondances contenant les propriétés suivantes.
-
Champs simples :
-
name :
nom de la colonne du champ (en minuscules), précédé dec$
. -
type :
les valeurs autorisées sont BOOLEAN, DATE, DATETIME, INTEGER, LONG, STRING et DECIMAL. -
value :
valeur du champ.
-
-
Champ de menu :
-
name :
nom de la colonne du champ (en minuscules), précédé dec$
. -
value:
vous pouvez définir la valeur sur l'ID ou le texte de l'élément de menu. Cet objet n'a pas de propriététype
.Conseil :
Pour rechercher l'ID d'une option de menu, ouvrez la page de détails du champ personnalisé à partir de la console de service de bureau Oracle B2C Service. Positionnez le curseur sur une option de menu et patientez quelques secondes. L'info-bulle apparaît et affiche l'ID de cette option.
-
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 le langage ROQL, pour obtenir la 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 le langage ROQL semblable à ce qui 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 hérité
Cette section présente l'objet customFields
pour les briques utilisant un canal d'intégration d'agent qui a été créé avant la version 20.01 ou un canal qui se connecte à une instance Oracle B2C Service antérieure à la version 19A.
Vous pouvez utiliser l'objet customFields
dans la correspondance Propriétés personnalisées pour transmettre les valeurs de tout champ personnalisé Oracle B2C Service de type Incident.
L'objet customFields
est un tableau de correspondances contenant les propriétés name
, dataType
et dataValue
. La valeur de la propriété name
est le nom de colonne en minuscule du champ 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 le langage ROQL, pour obtenir la 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 le langage ROQL semblable à ce qui 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 Oracle B2C Service à l'adresse http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=server
décrit la structure de dataType
et de 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"/>
A l'instar des champs customerInformation
, la même casse s'applique aux correspondances équivalentes de propriétés personnalisées (par exemple, DataValue
dans le WSDL est dataValue
dans la correspondance).
Assembler l'objet 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 les variables des pièces à inclure dans l'objet Propriétés personnalisées :
- Si vous voulez inclure l'ID d'incident dans les propriétés personnalisées, définissez une variable de type
Integer
pour l'ID d'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
.
Pour déclarer des variables de flux, sélectionnez le flux donné sur la page Concepteur de flux, cliquez sur l'onglet Configuration, puis sur Ajouter une variable.
- Si vous voulez inclure l'ID d'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
, indiquez la valeur en tant que correspondance JSON qui ressemble à ce qui suit :{ "contactID" : { "id" : "${contactId}" }, "organizationID" : { "id" : "${organizationId}" }, "productID" : { "id" : "${productId}" }, "categoryID" : { "id" : "${categoryId}" } }
- Pour
custFields
, indiquez la valeur sous la forme d'un tableau JSON d'objets qui ressemble à ce qui suit :[ { "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 mapping.
Par exemple, vous pouvez nommer la variable
liveChatInfo
et lui attribuer la valeur suivante :{ "incidentId" : "${customerTicketId}", "customerInformation" : "${custInfo.value}", "customFields" : "${custFields.value}" }
- Dans le composant Lancement d'agent du flux, définissez la valeur de la propriété Propriétés personnalisées sur la valeur de la variable de correspondance consolidée, par exemple :
${liveChatInfo.value}
.