Implementare informazioni sulla conversazione
Per produrre dati di conversazione come eventi esperienza XDM e assicurarti che questi eventi di esperienza di conversazione finiscano in Adobe Experience Platform come set di dati, puoi dotare l’applicazione o il servizio dell’agente di strumenti per utilizzare Informazioni sulla conversazione.
Questo articolo documenta i passaggi di implementazione richiesti.
- Per raccogliere i dati è necessario disporre di un ambiente Experience Platform (organizzazione e sandbox).
- L’organizzazione Adobe deve essere abilitata per i gruppi di campi agente e di conversazione.
Schema e set di dati
Configura i set di dati per gli eventi di conversazione principali: prompt, risposta, feedback. I set di dati di prompt, risposta e feedback devono estendere lo schema di base dell’evento esperienza XDM con il gruppo di campi Evento di conversazione e possono facoltativamente includere il gruppo di campi Informazioni agenti e altri gruppi di campi aggiuntivi.
Puoi definire set di dati separati per prompt, risposte e feedback oppure combinare dati in set di dati. Ad esempio, utilizza un set di dati per prompt e risposte e un altro set di dati per il feedback. In alternativa, utilizzare un set di dati separato per ogni tipo di evento di conversazione come illustrato in Funzionamento.
Per illustrare, utilizza:
-
Implementazione del set di dati discreto. Set di dati separati per eventi di prompt, risposta e feedback. Segui questo approccio di implementazione se:
- Desideri mantenere uno stato inferiore nell’implementazione client.
- Inviare dati di richiesta indipendentemente da una risposta ritardata o inesistente.
-
Implementazione set di dati combinato. Ad esempio, un set di dati combinato di eventi di richiesta e risposta e un set di dati separato di eventi di feedback. Segui questo approccio di implementazione se:
- Vuoi ridurre le chiamate perché l’implementazione supporta i giri completi.
- Non preoccuparti della latenza durante l’attesa delle risposte per l’arrivo.
Il layout del set di dati e la consegna di eventi di conversazione in questi set di dati sono problemi separati. Invia ogni evento di conversazione non appena i dati sono disponibili per garantire la stabilità degli identificatori di conversazione e degli identificatori di svolta. Gli identificatori stabili facilitano la corretta correlazione da parte del servizio Conversation Blender tra set di dati.
Gruppo di campi Evento di conversazione
Il gruppo di campi Evento di conversazione è obbligatorio e utilizza l’oggetto conversation.
L’oggetto di conversazione acquisisce i dati per:
Conversazione
Un conversationID univoco identifica una conversazione. Ad esempio: conversationID = "conv-001". conversationID consente di raggruppare tutti gli eventi di turni correlati nella stessa esperienza di conversazione.
Lo schema supporta anche conversationName. Nome leggibile che descrive il contesto generale della conversazione, ad esempio: France Geography Q&A. Il nome della conversazione viene generato automaticamente, ma puoi aggiornarlo. Il nome della conversazione viene popolato anche in signals[].name. Adobe compila conversationName con lo stesso valore del segnale signals[].name = “title”. È possibile impostare conversation.conversationName su qualsiasi set di dati popolato e sovrascrivere il valore fornito da Adobe.
Turno
Un turno è un ciclo di interazione all’interno di una conversazione.
turnID Un turnID univoco identifica un turno. Ad esempio:
conversationID = "conv-001"turnID = "turn-001"
Gli stessi conversationID e turnID vengono utilizzati per correlare i prompt, la risposta e il feedback associati a tale turno. Tale correlazione funziona tra record consegnati separatamente o finiti in set di dati diversi. Un elemento turnId deve essere univoco all’interno della stessa conversazione, ma può essere riutilizzato in tutte le conversazioni. Ad esempio, è possibile avere turn-001 come turnID nelle conversazioni con conversationID conv-001 e conv-002.
Prompt
Un prompt è l’input inviato all’agente. Nella maggior parte degli scenari dei clienti, questo input è la domanda, la richiesta, l’istruzione o il messaggio dell’utente.
Il prompt utilizza la seguente rappresentazione: conversation.prompt
I campi di richiesta importanti includono:
prompt.sourceprompt.raw[]prompt.raw[].textprompt.raw[].purposeUn prompt può contenere più segmenti non elaborati. Ad esempio, un utente immette del testo e include un URL.
-
Prompt"What is the capital of France""https://example.com/france"
Risposta
Una risposta è il contenuto restituito dall’agente o da un’altra parte rispondente.
conversation.response Un responseID univoco rappresenta la risposta.
I campi di risposta importanti includono:
response.sourceresponse.raw[]response.raw[].textresponse.raw[].purposeI tipi di origine documentati includono:
botcannedconciergeend-userFeedback
Il feedback è l’esplicita valutazione o reazione dell’utente all’interazione.
La struttura del feedback include: conversation.feedback.
Esempi:
feedback.raw[].text: "Great help"feedback.rating.score:1feedback.rating.classification:"Thumbs Up"feedback.rating.reasons[]: ["Accurate", "Quick response"]
L’intervallo di punteggio di valutazione documentato è compreso tra -1.0 e 1.0.
Un evento di feedback può essere rappresentato come evento di solo feedback utilizzando: eventType = "conversation.feedback".
Quando il feedback si applica a un particolare turno, conserva i conversationID e turnID appropriati in modo che il frullatore di conversazione possa associare il feedback all’interazione rilevante.
Segnale
Un segnale è un’osservazione analitica strutturata sul contenuto di una conversazione. Il servizio Estrazione segnale fornisce segnali predefiniti. Non è richiesta alcuna azione per fornire i segnali, ma puoi aggiungere segnali come parte dell’integrazione.
Un segnale ha i seguenti campi.
scopenametypevalues[]stringValuenumberValuebooleanValueconfidencequalifiers[]metadata[]Il servizio di estrazione del segnale popola l’oggetto signals per il set di dati dei segnali.
Il contenitore signals[].attributes.{subjects,intents,tones,sentiment} precedente è obsoleto.
Tipo di Source
È necessario impostare un valore per source per ogni oggetto prompt, response o feedback in un evento. Qualsiasi valore è accettabile. Utilizza valori che ti aiutano a capire da dove provengono i dati. Ad esempio:
end-useragentbotcanned-promptconciergeTipo di scopo (testo non elaborato)
È necessario impostare un valore per l’attributo purpose su qualsiasi elemento dell’oggetto raw in un oggetto prompt, response o feedback. Qualsiasi valore stringa è accettabile. Questo campo viene utilizzato per differenziare ciò che è memorizzato nel testo non elaborato. Di seguito sono riportati i valori utili, mentre altri valori sono ugualmente validi:
free-form-textscreenshotattachmentlinkurlimage-linkcitationmediaConversazione
Per informazioni complete su un oggetto di conversazione, vedere di seguito.
| table 0-row-4 1-row-4 2-row-4 3-row-4 4-row-4 5-row-4 6-row-4 7-row-4 8-row-4 9-row-4 10-row-4 11-row-4 12-row-4 13-row-4 14-row-4 15-row-4 16-row-4 17-row-4 18-row-4 19-row-4 20-row-4 21-row-4 22-row-4 23-row-4 24-row-4 25-row-4 26-row-4 27-row-4 28-row-4 29-row-4 30-row-4 31-row-4 32-row-4 33-row-4 34-row-4 35-row-4 36-row-4 37-row-4 38-row-4 39-row-4 40-row-4 | |||
|---|---|---|---|
| Percorso campo (notazione punti) | Tipo | Esempio di valore | Note |
conversationID |
stringa | "conv-001" |
Raggruppa più giri. |
conversationName |
stringa | "France Geography Q&A" |
Nuovo. Nome assegnato a una conversazione che rappresenta il contesto generale. |
turnID |
stringa | "turn-001" |
ID univoco per questo turno. |
prompt.source |
stringa | "end-user" |
Source di prompt, altre opzioni possono includere un valore memorizzato nella cache, un valore non memorizzato in cache, ecc. |
prompt.raw[] |
array | Vedi l’oggetto non elaborato di seguito | Dati non elaborati dei prompt. |
prompt.raw[].text |
stringa | "What is the capital of France?" |
Contenuto effettivo del testo. |
prompt.raw[].purpose |
stringa | "User Input" |
Scopo del segmento di testo. |
response.source |
stringa | "bot" |
Source di risposta. |
response.raw[] |
array | Vedi l’oggetto non elaborato di seguito | Dati di risposta non elaborati. |
response.raw[].text |
stringa | "The capital of France is Paris." |
Contenuto testo risposta. |
response.raw[].purpose |
stringa | "main" |
Scopo del segmento di risposta; altre opzioni possono includere collegamenti, immagini e così via. |
feedback.source |
stringa | "end-user" |
Source di feedback. |
feedback.raw[] |
array | Vedi l’oggetto non elaborato di seguito | Dati di feedback non elaborati . |
feedback.raw[].text |
stringa | "Great help" |
Testo del feedback. |
feedback.raw[].purpose |
stringa | "free-form text" |
Scopo del segmento di feedback; altre opzioni possono includere schermate, file multimediali, ecc. |
feedback.rating.score |
numero | 1 |
Punteggio di valutazione numerico da -1.0 a 1.0. |
feedback.rating.classification |
stringa | "Thumbs Up" |
Classificazione della valutazione. |
feedback.rating.reasons[] |
array | ["Accurate", "Quick response"] |
Matrice di motivi di valutazione. |
signals[] |
array | Vedi l’oggetto segnale di seguito | Segnali derivati in base a questo evento e alla conversazione corrente. Ogni voce è un singolo segnale denominato con il proprio ambito. |
signals[].scope |
stringa | "turn" |
Ambito degli input da cui deriva questo insieme di segnali (passaggio, conversazione corrente, ultimi N passaggi, feedback). |
signals[].attributes |
oggetto | Vedi gli attributi di seguito | Obsoleto. Contenitore per attributi di segnale. Ogni attributo è un oggetto contenente un valore o più valori. Ciò per soddisfare la necessità prevista di supportare la popolazione di informazioni ML/agente utilizzate per generare il segnale. |
signals[].attributes.subjects |
oggetto | Vedi gli argomenti di seguito | Obsoleto. Contenitore Soggetti. |
signals[].attributes.subjects.values[] |
array | Vedi i valori oggetto di seguito | Obsoleto. Matrice di valori oggetto. |
signals[].attributes.subjects.values[].phrase |
stringa | "product pricing" |
Obsoleto. Frase o parola chiave estratta dall’input con ambito. |
signals[].attributes.subjects.values[].qualifiers[] |
array | ["important", "urgent"] |
Obsoleto. Elenco dei qualificatori per la frase |
signals[].attributes.intents |
oggetto | Vedi gli intenti di seguito | Obsoleto. Contenitore Intenti. |
signals[].attributes.intents.values[] |
array | ["make a purchase", "learn more"] |
Obsoleto. Intenti derivati dall’input con ambito. |
signals[].attributes.tones |
oggetto | Visualizza i toni sotto | Obsoleto. Contenitore di toni. |
signals[].attributes.tones.values[] |
array | ["thrilled", "contemplative"] |
Obsoleto. Toni derivati dall’input con ambito. |
signals[].attributes.sentiment |
oggetto | Vedi il sentiment di seguito | Obsoleto. Contenitore sentiment. |
signals[].attributes.sentiment.value |
numero | 0.71 |
Obsoleto. Punteggio da -1 (negativo) a 1 (positivo) che indica il sentiment. |
signals[].name |
stringa | "sentiment" |
Nuovo (sostituisce il contenitore attributes obsoleto). Identificatore di questo segnale, ad esempio “soggetti”, “intenti”, “toni”, “sentiment” o qualsiasi nome definito dal produttore. I produttori possono aggiungere nuovi tipi di segnale senza modificare lo schema. |
signals[].type |
stringa | "number" |
Nuovo. Tipo di dati dei valori di questo segnale (string, number o boolean). Indica ai consumatori il campo del valore digitato viene popolato su ogni voce di values[]. |
signals[].values[] |
array | Vedi l’oggetto valori seguente | Uno o più valori per questo segnale. |
signals[].values[].stringValue |
stringa | "curious" |
Compilato quando type è una stringa. Un valore categorico come un intento, un tono o una frase estratta/ |
signals[].values[].numberValue |
numero | 0.71 |
Compilato quando type è un numero. Ad esempio un punteggio sentiment da -1 a 1 o un’intensità/ |
signals[].values[].booleanValue |
booleano | true |
Compilato quando type è booleano. Un flag true / false |
signals[].values[].confidence |
numero | 0.9 |
Nuovo. Affidabilità assegnata dal produttore a questo valore, da 0 a 1. |
signals[].values[].qualifiers[] |
array | ["important", "urgent"] |
Descrittori aggiuntivi per questo valore, simili alle parole chiave ma più significativi/ |
signals[].values[].metadata[] |
array | Vedi i parametri di seguito | Nuovo. Metadati definiti dal produttore per questo valore come coppie chiave/valore, ad esempio contesto sull’agente ML/agente che ha generato il segnale/ |
Gruppo di campi Informazioni agente
Il gruppo di campi Informazioni sull’agente è facoltativo e utilizza l’oggetto agenticExperience. Valuta l’utilizzo di questo gruppo di campi per tenere traccia delle informazioni sugli agenti.
| table 0-row-4 1-row-4 2-row-4 3-row-4 4-row-4 5-row-4 6-row-4 7-row-4 8-row-4 9-row-4 10-row-4 11-row-4 12-row-4 13-row-4 14-row-4 15-row-4 16-row-4 17-row-4 18-row-4 19-row-4 20-row-4 21-row-4 22-row-4 23-row-4 24-row-4 25-row-4 26-row-4 27-row-4 28-row-4 29-row-4 30-row-4 31-row-4 32-row-4 33-row-4 34-row-4 35-row-4 | |||
|---|---|---|---|
| Percorso campo (notazione punti) | Tipo | Esempio di valore | Note |
conciergeID |
stringa | "concierge-abc123" |
Nuovo. Identificatore univoco per il concierge |
name |
stringa | "Brand Concierge" |
Nome del concierge che combina un set di agenti |
version |
stringa | "1.0.0" |
Versione del concierge che combina un set di agenti |
environment |
stringa | "prod" |
Ambiente da cui ha avuto origine questo evento (dev, stage, prod) |
mode |
stringa | "release" |
Modalità in cui si trova l’agente (test, anteprima, rilascio) |
agents[] |
array | Vedi oggetto agente di seguito | Array di agenti utilizzati |
agents[].agentID |
stringa | "agent-001" |
Nuovo. Identificatore univoco dell’agente, a cui fa riferimento skills[].agentID di seguito |
agents[].name |
stringa | "Chatbot Assistant" |
Nome agente |
agents[].version |
stringa | "2.1.3" |
Versione agente |
agents[].score |
numero | 0.92 |
Punteggio di affidabilità dell’agente nei valori restituiti |
agents[].skills[] |
array | Vedi l’oggetto abilità di seguito | Obsoleto. Utilizza invece l’array skills[] di primo livello sottostante, a cui appartiene l’elenco ordinato completo delle chiamate di abilità e collega ciascuna al proprio agente tramite agentID |
agents[].skills[].name |
stringa | "Intent Recognition" |
Nome abilità (array obsoleto) |
agents[].skills[].version |
stringa | "1.0.0" |
Versione abilità (array obsoleto) |
agents[].skills[].score |
numero | 0.95 |
Punteggio affidabilità abilità (0-1) (array obsoleto) |
agents[].skills[].parameters[] |
array | Vedi i parametri di seguito | Parametri inviati all’abilità (coppie chiave-valore) (array obsoleto) |
agents[].skills[].parameters[].key |
stringa | "language" |
Chiave parametro |
agents[].skills[].parameters[].value |
stringa | "en-US" |
Valore parametro |
skills[] |
array | Vedi oggetto di chiamata abilità di seguito | Nuovo, sperimentale. Elenco completo e ordinato delle chiamate di abilità per questa esperienza, tra tutti gli agenti. Sostituisce l’array per-agent agents[].skills[] obsoleto |
skills[].skillID |
stringa | "skill-intent-recognition" |
Identificatore della definizione dell’abilità denominata |
skills[].skillInvocationID |
stringa | "inv-9f2a-001" |
Identificatore univoco per questa singola chiamata di abilità, coerente anche con le riconsegne. Chiave di deduplicazione durante l’unione degli array di competenze a valle |
skills[].name |
stringa | "Intent Recognition" |
Nome dell’abilità denominata |
skills[].version |
stringa | "1.0.0" |
Versione dell’abilità denominata |
skills[].agentID |
stringa | "agent-001" |
Identificatore dell’agente che ha richiamato questa abilità, correlato a agents[].agentID. Raggruppare i consumatori chiave per ordinare le abilità all’interno di un agente, in quanto i subagenti vengono eseguiti in parallelo |
skills[].invocationSource |
stringa | "main" |
Indica se viene richiamato dal loop agente principale (main) o da un subagente (subagent) |
skills[].score |
numero | 0.95 |
Punteggio risultante dalla corrispondenza con l’abilità |
skills[].failed |
booleano | false |
Flag che indica che l’esecuzione dell’abilità non è riuscita |
skills[].errorReason |
stringa | "timeout" |
Motivo dell’abilità non riuscita quando failed è true |
skills[].sequenceNumber |
numero intero | 1 |
Indice che aumenta in modo monotonico di questa chiamata di abilità all’interno di una singola esecuzione dell’agente. Questo indice non è a livello globale, poiché i subagenti vengono eseguiti in parallelo. I consumatori ordinano per agentID, quindi sequenceNumber e infine timestamp come tiebreaker. Facoltativo |
skills[].timestamp |
stringa (data-ora) | "2026-09-11T00:03:15Z" |
Ora in cui è stata richiamata l’abilità, ISO 8601 UTC. Chiave di ordinamento utilizzata dopo sequenceNumber. I produttori devono sempre compilare questo campo |
skills[].skillSource |
stringa | "inline" |
Modalità di recapito della definizione dell’abilità al runtime: inline (caricato in linea nel contesto) o deferred (caricato su richiesta) |
skills[].executionContext |
stringa | "inline" |
Dove viene eseguita l’abilità relativa all’agente chiamante: inline o forked (viene eseguito in un contesto di agente secondario con fork) |
skills[].reasoning.narration |
stringa | "Recognized an intent to verify a geography fact" |
Spiegazione in linguaggio naturale del motivo per cui questa abilità è stata chiamata |
skills[].parameters[] |
array | Vedi i parametri di seguito | Parametri trasmessi all’abilità |
skills[].parameters[].key |
stringa | "language" |
Chiave parametro |
skills[].parameters[].value |
stringa | "en-US" |
Valore parametro |
Per implementare gli eventi che propagano il gruppo di campi Informazioni agente con i dati, è necessario assicurarsi che:
-
Configurazione agente
- Ogni agente ha una combinazione univoca di agentID, nome e versione.
- I punteggi dell’agente sono normalizzati tra
0.0e1.0. - Utilizza
agentIDper fare riferimento agli agenti tramite chiamata abilità.
-
Chiamata abilità
- Genera una sola voce per chiamata di abilità, per tutti gli agenti, invece di nidificare le abilità sotto ogni agente.
- Compilare skillInvocationID in modo che la fusione a valle possa rimuovere gli eventi recapitati duplicati.
- Ordinare correttamente i consumatori. Raggruppa per
agentID, quindi ordina persequenceNumber, tornando atimestamp. L’ordinamento è necessario perché i subagent possono essere eseguiti in parallelo - Utilizzare
invocationSourceeexecutionContextper distinguere le abilità primario e subagente e l’esecuzione in linea rispetto a quella con fork. - Evitare di utilizzare l’array
agents[].skills[]obsoleto. Se l’array è già stato utilizzato in passato, considerarlo come oggetto di sola lettura.
-
Parametri abilità
- I parametri utilizzano il tipo di dati chiave-valore XDM di Adobe e utilizzano tipi di parametri comuni per le impostazioni del linguaggio, le soglie e le configurazioni del modello. Ad esempio,
"key":"language", "value":"en-US".
- I parametri utilizzano il tipo di dati chiave-valore XDM di Adobe e utilizzano tipi di parametri comuni per le impostazioni del linguaggio, le soglie e le configurazioni del modello. Ad esempio,
| code language-json |
|---|
|
Gruppi di campi aggiuntivi
Puoi aggiungere gruppi di campi facoltativi allo schema utilizzato per i set di dati di prompt, risposta e feedback. Ad esempio:
- Dettagli Web gruppo di campi. Per acquisire dettagli sulla pagina web, la conversazione è stata incorporata in.
- Gruppo di campi Dettagli Commerce. Acquisire i dettagli del prodotto consigliato indicato come parte della conversazione.
Il cliente è responsabile della produzione degli eventi di conversazione sorgente. Adobe esegue l’estrazione del segnale e la fusione dei dati. Il cliente non ha bisogno di implementare i servizi di estrazione del segnale o di miscelazione.
Tipo di evento
È necessario impostare uno dei seguenti valori per eventType (stringa) per ogni evento di conversazione:
conversation.turnconversation.recommendationconversation.feedbackEsempio
Di seguito è riportato un esempio di utilizzo del gruppo di campi Evento di conversazione in vari scenari.
| tabs | |||
|---|---|---|---|
| Esempio di evento turn |
|
||
| Esempio di evento di risposta |
|
||
| Esempio di evento Feedback |
|
||
| Esempio di evento consigli di prodotto |
|
Raccolta dati
Utilizza la seguente strategia di raccolta dati per Informazioni su conversazioni.
Tipi di evento
L’applicazione o il servizio agente invia un evento il prima possibile. Assicurati che l’app o il servizio non attenda una risposta prima di inviare il messaggio con le informazioni disponibili al momento dell’evento.
Questa raccomandazione implica che:
- Gli oggetti Prompt, Response e Feedback vengono compilati in modo indipendente e non devono far parte di un singolo evento.
- Sono previsti più eventi con lo stesso
conversationIDeturnIDtra set di dati.
Correlazione degli eventi
L’applicazione o il servizio agente deve conservare identificatori stabili in tutti gli eventi correlati.
conversation.conversationIDconversation.turnID_idtimestampeventType-
Lo stesso
conversationIDdeve essere utilizzato per tutti gli eventi appartenenti alla stessa conversazione. -
Lo stesso
turnIDdeve essere utilizzato per il prompt, la risposta e qualsiasi feedback associato allo stesso turno. Possono esistere più eventi con lo stessoturnIDnei set di dati di prompt, risposta e feedback.
L’applicazione o il servizio agente genera ID che rimangono stabili durante i nuovi tentativi o la riconsegna. Questo consente all’elaborazione a valle di associare correttamente gli eventi ed evitare duplicati non intenzionali.
Estrazione del segnale
L’estrazione del segnale avviene dopo la raccolta dei dati. L’applicazione o il servizio agente può compilare segnali aggiuntivi.
Nome segnale
Impostare un valore per signals[].name. Qualsiasi valore stringa è accettabile; tuttavia, Adobe compila i seguenti nomi durante il processo di estrazione del segnale. Evitare di utilizzare questi valori per name per i segnali inviati, poiché questi valori verranno sovrascritti.
intentssentimenttonestopicskeywordstitle
Ambito segnale
Qualsiasi valore stringa è accettabile; tuttavia, Adobe compila i seguenti ambiti durante il processo di estrazione del segnale. Evitare di utilizzare questi valori per scope per i segnali inviati, poiché questi valori verranno sovrascritti.
turnfeedback
| code language-json |
|---|
|
Fusione dei dati
Il servizio di fusione delle conversazioni unisce gli eventi dai set di dati di prompt, risposta, feedback e eventi di segnale in un set di dati di eventi di conversazione misti dedicato. Tale set di dati viene utilizzato in Customer Journey Analytics come parte di una connessione. I componenti all’interno di tale set di dati vengono aggiunti alle visualizzazioni dati specificate per una configurazione di Informazioni sulla conversazione.