Trasmetti informazioni cliente a chat attiva

Quando la registrazione delle conversazioni è abilitata per uno skill, passa automaticamente l'intera cronologia delle chat a Oracle B2C Service. Oltre alla cronologia delle chat, puoi anche inviare alcune informazioni specifiche sul cliente.

  • ID incidente
  • Invia chat alle informazioni sui clienti: le competenze possono passare le seguenti informazioni sui clienti chat a Oracle B2C Service.
    • Indirizzo di posta elettronica
    • Nome
    • Cognome
    • Contatto
    • Organizzazione
    • Categoria
    • Product

    Lo skill utilizza i valori del profilo per popolare e inviare automaticamente questi campi cliente chat. Non è necessario eseguire alcuna operazione per impostare i seguenti valori:

    • Indirizzo di posta elettronica
    • Nome
    • Cognome
  • Campi personalizzati incidente: è possibile passare i valori per qualsiasi campo personalizzato di Oracle B2C Service di tipo Incidente.

    Per ulteriori informazioni sui campi personalizzati, vedere Panoramica dei campi personalizzati in Uso di Oracle B2C Service.

Nota

Se si utilizza un canale di integrazione agente creato prima della versione 20.1 o se il canale si connette a un'istanza di Oracle B2C Service precedente alla versione 19A, è possibile anche passare le informazioni sull'interfaccia. Con i canali creati nella versione 20.1 e successive e connessi a Oracle B2C Service 19A e versioni successive, è possibile includere l'ID interfaccia nell'URL del canale.

Per inviare le informazioni sul cliente all'agente reale, passare una mappa nella proprietà Proprietà personalizzate del componente Integrazione agente. Ecco la struttura di primo livello della mappa:

incidentID: # type int
customerInformation: # chat customer information object
customFields: # incident custom fields object
Per fare riferimento alla mappa, utilizzare un'espressione simile alla seguente:
${mapVariableName.value}

Vedere Assemblaggio dell'oggetto proprietà personalizzate per un esempio di assemblaggio delle informazioni sul cliente per l'invio dell'agente reale.

La proprietà incidentID

È possibile passare un ID incidente all'agente reale aggiungendo una proprietà incidentID alla mappa Proprietà personalizzate.

Suggerimento

Se si desidera associare una richiesta di chat a un caso esistente, è possibile creare un componente personalizzato per recuperare incidentId inviando una richiesta REST come nell'esempio riportato di seguito. Questa richiesta REST recupera l'incidente più recente per il contatto con un indirizzo e-mail corrispondente.
https://<URL>/services/rest/connect/latest/incidents?q=primaryContact.ParentContact.Emails.EmailList.Address like 'email@gmail.com'&orderBy=createdTime:desc&limit=1

Il corpo della risposta contiene un collegamento href che contiene l'ID 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"
                }
            ]
        }
    ],

Per ulteriori informazioni sui componenti personalizzati, vedere Integrazione backend. Per ulteriori informazioni sulle API REST di Oracle B2C Service, vedere API REST per Oracle B2C Service.

Oggetto customerInformation standard

In questa sezione viene descritto l'oggetto customerInformation per le competenze che utilizzano un canale di integrazione agente creato nella versione 20.01 o successiva e che si connette a Oracle B2C Service versione 19A o successiva.

È possibile utilizzare l'oggetto customerInformation nella mappa Proprietà personalizzate per passare le seguenti informazioni sui clienti della chat:

  • incidentID: int.
  • eMailAddress: string. Massimo 80 caratteri. La competenza imposta automaticamente questo valore dalle proprietà .profile corrispondenti (descritte in Variabili ambito profilo per contesto utente) e lo passa a Oracle B2C Service.

  • firstName: string. Massimo 80 caratteri. La competenza imposta automaticamente questo valore dalle proprietà .profile corrispondenti (descritte in Variabili ambito profilo per contesto utente) e lo passa a Oracle B2C Service.

  • lastName: string. Massimo 80 caratteri. La competenza imposta automaticamente questo valore dalle proprietà .profile corrispondenti (descritte in Variabili ambito profilo per contesto utente) e lo passa a Oracle B2C Service.

  • contactID: passare un valore di tipo int nella sottoproprietà id.

  • organizationID: passare un valore di tipo int nella sottoproprietà id.

  • productID: passare un valore di tipo int nella sottoproprietà id.

  • categoryID: passare un valore di tipo int nella sottoproprietà id.

Suggerimento

È possibile utilizzare l'API REST di Oracle B2C Service per visualizzare i valori validi per i campi di informazioni sui clienti. Ad esempio, questa richiesta GET elenca le categorie:
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>'

Oggetto customerInformation precedente

In questa sezione viene descritto l'oggetto customerInformation per le competenze che utilizzano un canale di integrazione agente creato prima della release 20.01 o un canale che si connette a un'istanza di Oracle B2C Service precedente alla release 19A.

L'oggetto customerInformation viene utilizzato nella mappa Proprietà personalizzate per passare le informazioni sui clienti della chat, ad esempio ID interfaccia, ID contatto o ID categoria. L'oggetto customerInformation può contenere i campi definiti nella sezione Chat Customer Information nel WSDL di Oracle B2C Service all'indirizzo http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=server.

Per gli oggetti, modificare il carattere iniziale nel nome in lettere minuscole e i nomi dei campi semplici in lettere minuscole.

Se non si passa l'oggetto interfaceID, la competenza utilizza il valore predefinito id:{id: 1}. Tenere presente che se l'interfaccia non è abilitata per la chat, l'handshake di avvio non riuscirà. È possibile utilizzare l'Assistente alla configurazione di Oracle B2C Service, a cui si accede da My Services, per verificare se un'interfaccia è abilitata per la chat.

Sebbene sia possibile definire i campi EMailAddress, FirstName e LastName descritti nella sezione Informazioni cliente chat di WSDL, la competenza imposta automaticamente questi valori dalle proprietà .profile corrispondenti (descritte in Variabili ambito profilo per contesto utente).

Suggerimento

È possibile utilizzare l'API REST di Oracle B2C Service per visualizzare i valori validi per i campi di informazioni sui clienti. Ad esempio, questa richiesta GET elenca gli ID e i nomi dell'interfaccia:
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>'

Questa richiesta GET elenca le categorie:

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>'

Come accennato in precedenza, la struttura della mappa customerInformation deve essere conforme alla struttura Chat Customer Information mostrata nel WSDL al seguente indirizzo:

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

Ecco un estratto dal 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> 

Alcuni oggetti sono di tipo rnccm:ID, definito nell'estratto successivo. Si noti che l'oggetto contiene un campo id di tipo long.

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

InterfaceID è di tipo rnccm:NamedID. Si noti che questo oggetto può contenere un ID (lungo), un Nome (stringa) o entrambi.

<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>

Il contenitore è diverso tra il WSDL e la mappa Proprietà personalizzate. Nella mappa, la prima lettera per un nome oggetto è minuscola (caso Pascal). Ad esempio, ProductID nel WSDL sarebbe productID per l'oggetto mappa. I nomi dei campi semplici sono tutti minuscoli (ad esempio, Name diventa name).

Oggetto customFields standard

In questa sezione viene descritto l'oggetto customFields per le competenze che utilizzano un canale di integrazione agente creato nella versione 20.01 o successiva e che si connette a Oracle B2C Service versione 19A o successiva.

L'oggetto customFields viene utilizzato nella mappa Proprietà personalizzate per passare i valori per qualsiasi campo personalizzato di Oracle B2C Service di tipo Incidente.

L'oggetto customFields è un array di mappe che contengono le proprietà riportate di seguito.

  • Campi semplici:

    • name: Il nome della colonna del campo (in minuscolo) preceduto da c$.

    • type: I valori consentiti sono BOOLEAN, DATE, DATETIME, INTEGER, LONG, STRING e DECIMAL.

    • value: Il valore del campo.

  • Campo menu:

    • name: Il nome della colonna del campo (in minuscolo) preceduto da c$.

    • value: È possibile impostare il valore su ID campo o testo della voce di menu. Si noti che questo oggetto non dispone di una proprietà type.

      Suggerimento

      Per trovare l'ID per una voce di menu, aprire la pagina dei dettagli del campo personalizzato dalla console del servizio desktop di Oracle B2C Service. Passare il puntatore del mouse su una voce di menu e attendere alcuni secondi. La descrizione comandi verrà visualizzata e mostrerà l'ID per l'elemento.

Di seguito è riportato un valore di esempio per l'oggetto.

[		
  {
    "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"
  }
]

Suggerimento

È possibile inviare la seguente richiesta GET, che utilizza RightNow Object Query (ROQL), per ottenere un elenco dei nomi di colonna:
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>'

Per ottenere i valori validi per un campo personalizzato, inviare una richiesta GET che utilizzi RightNow Object Query (ROQL) come riportato di seguito.

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>'

Oggetto customFields precedente

In questa sezione viene descritto l'oggetto customFields per le competenze che utilizzano un canale di integrazione agente creato prima della release 20.01 o un canale che si connette a un'istanza di Oracle B2C Service precedente alla release 19A.

L'oggetto customFields viene utilizzato nella mappa Proprietà personalizzate per passare i valori per qualsiasi campo personalizzato di Oracle B2C Service di tipo Incidente.

L'oggetto customFields è un array di mappe che contengono le proprietà name, dataType e dataValue. Il valore della proprietà name è il nome della colonna minuscola del campo preceduto da c$.

Di seguito è riportato un valore di esempio per l'oggetto.

[		
  {
    "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"  
    }
  }
]

Suggerimento

È possibile inviare la seguente richiesta GET, che utilizza RightNow Object Query (ROQL), per ottenere un elenco dei nomi di colonna:
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>'

Per ottenere i valori validi per un campo personalizzato, inviare una richiesta GET che utilizzi RightNow Object Query (ROQL) come riportato di seguito.

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 definizione GenericField nel WSDL di Oracle B2C Service all'indirizzo http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=server descrive la struttura 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"/>

Analogamente ai campi customerInformation, lo stesso involucro si applica alle controparti mappa Proprietà personalizzate (ad esempio, il carattere DataValue del WSDL è dataValue nella mappa).

Assembla oggetto proprietà personalizzate

Esistono molti approcci che è possibile utilizzare per creare l'oggetto Proprietà personalizzate. I passaggi seguenti mostrano come farlo creando una variabile separata per ogni gruppo di proprietà e quindi consolidandole in una mappa.

  1. Dichiarare le variabili per le parti che si desidera includere nell'oggetto Proprietà personalizzate:
    • Se si desidera includere l'ID incidente nelle proprietà personalizzate, definire una variabile di tipo Integer per l'ID incidente. In questo esempio lo chiameremo customerTicketId.
    • Se si desidera includere qualsiasi proprietà customerInformation nelle proprietà personalizzate, definire una variabile di tipo List per contenere queste proprietà. In questo esempio lo chiameremo custInfo.
    • Se si desidera includere una qualsiasi delle proprietà customFields nelle proprietà personalizzate, definire una variabile di tipo Map per contenere queste proprietà. In questo esempio lo chiameremo custFields.

    Per dichiarare le variabili di flusso, selezionare il flusso specificato nella pagina Progettazione flusso, fare clic sulla scheda Configurazione e fare clic su Aggiungi variabile.

  2. Nei componenti Imposta variabile, assegnare valori alle variabili create.
    • Per customerTicketId, utilizzare un valore o un'espressione che viene risolta in un numero intero.
    • Per custInfo, fornire il valore come mappa JSON simile al seguente:
      {
        "contactID" : {
          "id" : "${contactId}"
      	},  
        "organizationID" : {
          "id" : "${organizationId}"
      	},
        "productID" : {
          "id" : "${productId}"
      	},
        "categoryID" : {
          "id" : "${categoryId}"
      	}
      }
    • Per custFields, fornire il valore come array JSON di oggetti simili al seguente:
      [		
        {
          "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. Utilizzare un componente Imposta variabile per consolidare le variabili del passo precedente in una variabile mappa.

    Ad esempio, è possibile assegnare alla variabile il nome liveChatInfo e il seguente valore:

    {
      "incidentId" : "${customerTicketId}",
      "customerInformation" : "${custInfo.value}",
      "customFields" : "${custFields.value}"
    }
  4. Nel componente Avvio agente del flusso, impostare il valore della proprietà Proprietà personalizzate sul valore della variabile mappa consolidata, ad esempio ${liveChatInfo.value}.