Scrittura intelligente

La funzionalità Scrittura intelligente assiste un agente umano durante una chat di testo con un utente finale. Suggerisce frasi per completare le frasi iniziate dall'agente umano. Puoi utilizzare questa funzionalità per implementare una funzionalità di suggerimenti personalizzati per l'interfaccia di chat del tuo agente.

Un operatore umano riceve un suggerimento di testo mentre digita in un'interfaccia di chat. Questa guida ti illustra l'implementazione della funzionalità Scrittura intelligente chiamando direttamente l'API. Se preferisci, puoi utilizzare la console di Agent Assist per addestrare un modello e testarne le prestazioni utilizzando il simulatore. Per istruzioni, consulta il tutorial sul simulatore di Scrittura intelligente.

Consulta la documentazione sulle best practice per la Scrittura intelligente per linee guida sull'integrazione della Scrittura intelligente con il tuo sistema e sul miglioramento della qualità dei suggerimenti.

Prima di iniziare

Prima di leggere questa guida, completa le seguenti operazioni:

  1. Abilita l'API Dialogflow per il tuo progetto.

Informazioni che consentono l'identificazione personale e dati dei bambini

Quando invii dati a questa API, l'API tenta di oscurare tutte le informazioni che consentono l'identificazione personale (PII). Se devi assicurarti che il modello non includa PII, devi sanitizzare i dati prima di inviarli all'API. Sostituisci le parole oscurate con segnaposto come `REDACTED_NUMBER` o `REDACTED_NAME` anziché rimuoverle semplicemente.

Inoltre, se i tuoi dati contengono informazioni raccolte da bambini, devi rimuovere i dati dei bambini prima di inviarli all'API.

Addestra ed esegui il deployment di un modello

I modelli di Risposta rapida di Agent Assist vengono addestrati utilizzando set di dati di conversazione. Un set di dati delle conversazioni contiene i dati delle trascrizioni che hai caricato. Questa sezione ti guida attraverso il processo di creazione di un set di dati di conversazione, caricamento dei dati di conversazione, addestramento e deployment di un modello. Puoi anche eseguire queste azioni utilizzando la console Agent Assist se preferisci non chiamare direttamente l'API.

Creare un set di dati conversazione

Prima di poter iniziare a caricare le trascrizioni delle conversazioni, devi prima creare un set di dati delle conversazioni in cui inserirle. Chiama il metodo create sulla risorsa ConversationDataset per creare un set di dati di conversazione.

La risposta contiene un ID set di dati di conversazione.

Importare le trascrizioni delle conversazioni nel set di dati conversazione

Carica i dati delle conversazioni di chat nel set di dati delle conversazioni in modo che possano essere elaborati da Agent Assist. Assicurati che la trascrizione di ogni conversazione sia in formato JSON e archiviata in un bucket Cloud Storage. Un set di dati di conversazione deve contenere almeno 30.000 conversazioni, altrimenti l'addestramento del modello non andrà a buon fine. Come regola generale, più conversazioni hai, migliore sarà la qualità del modello. Ti consigliamo di caricare almeno tre mesi di conversazioni per coprire il maggior numero possibile di casi d'uso. Il numero massimo di messaggi in un set di dati di conversazione è 1.000.000.

Chiama il metodo importConversationData sulla risorsa ConversationDataset per importare le conversazioni.

Campi obbligatori:

  • L'ID del set di dati delle conversazioni che hai creato in precedenza.
  • Il percorso inputConfig porta ai dati della trascrizione della conversazione in un bucket Cloud Storage.

La risposta è un'operazione a lunga esecuzione, che puoi eseguire il polling per verificare il completamento.

Creare un modello di conversazione

Chiama il metodo create sulla risorsa ConversationModel per creare un modello di conversazione. Questa azione crea anche la lista consentita del modello.

Campi obbligatori:

  • In datasets, fornisci un singolo set di dati utilizzando l'ID set di dati delle conversazioni che hai creato in precedenza.
  • Imposta smartReplyModelMetadata su un oggetto vuoto o compila il campo per ignorare il valore predefinito.

La risposta è un'operazione a lunga esecuzione, che puoi eseguire il polling per verificare il completamento. Una volta completata, l'ID modello e l'ID lista consentita verranno inclusi nei metadati dell'operazione.

  • ID modello: name
  • ID lista consentita: smart_reply_model_metadata.associated_allowlist_info.document

Esegui il deployment del modello di conversazione

Chiama il metodo deploy sulla risorsa ConversationModel per eseguire il deployment del modello di conversazione.

Campo obbligatorio:

  • Utilizza conversationModels: inserisci l'ID del modello di conversazione che hai creato in precedenza.

Gestire una lista consentita

A ogni modello è associata una lista consentita, che viene creata automaticamente quando crei un modello di conversazione. La lista consentita contiene tutte le risposte generate dai tuoi set di dati delle conversazioni, che possono essere mostrate a un operatore umano in fase di runtime. Questa sezione descrive la creazione e la gestione delle liste consentite. Puoi anche eseguire queste azioni utilizzando la console Agent Assist se preferisci non chiamare direttamente l'API.

Esportare i contenuti della lista consentita in un file CSV

La creazione del modello genera automaticamente una lista consentita associata al nuovo modello. La lista consentita è una risorsa Document con un ID univoco. L'ID viene restituito in smart_reply_model_metadata.associated_allowlist_info.document quando viene creato un modello. Per esaminare e apportare modifiche ai messaggi nella lista consentita, devi esportarli in un bucket Cloud Storage.

Chiama il metodo export sulla risorsa Document per esportare il documento in un file CSV in un bucket Cloud Storage. Il campo smart_messaging_partial_update è facoltativo, ma influisce sul modo in cui potrai aggiornare questa lista consentita in futuro. Se impostato su true, il file CSV esportato includerà una colonna che contiene un ID univoco per ogni messaggio. Puoi utilizzare l'ID messaggio per aggiornare solo i messaggi specificati anziché l'intero documento. Se smart_messaging_partial_update è impostato su false o non è impostato, la colonna aggiuntiva non verrà visualizzata nel file e qualsiasi aggiornamento alla lista consentita richiederà un aggiornamento dell'intero documento.

Campo obbligatorio:

  • Il percorso gcsDestination porta al tuo bucket Cloud Storage.

La risposta è un'operazione a lunga esecuzione, che puoi eseguire il polling per verificare il completamento. Successivamente, il file CSV che hai fornito nella richiesta viene compilato con i candidati per la risposta.

Esaminare la lista consentita

La lista consentita generata contiene risposte create automaticamente da Risposta rapida in base ai dati delle conversazioni. Ora puoi rivedere e aggiornare queste risposte in base alle tue esigenze. Scarica il file CSV dal bucket Cloud Storage, modificalo in base alle tue esigenze e caricalo di nuovo nel bucket Cloud Storage. Solo le risposte nella lista consentita possono essere mostrate agli agenti umani.

Se modifichi le risposte, ti consigliamo di apportare modifiche solo per l'ortografia e la grammatica e di non cambiare il significato del messaggio. Più il testo modificato si discosta dal significato nel modello, minore è la probabilità che il messaggio venga visualizzato.

Se necessario, puoi anche creare nuovi messaggi. Analogamente ai messaggi modificati, i messaggi creati hanno meno probabilità di essere visualizzati durante l'esecuzione.

Aggiornare la lista consentita

Una volta terminato l'aggiornamento del file CSV, puoi utilizzarlo per aggiornare la risorsa Document. Puoi scegliere di aggiornare l'intera lista consentita o solo i messaggi specificati. Per aggiornare solo i messaggi specificati, devi aver impostato smart_messaging_partial_update su true quando hai esportato la lista consentita. Se l'hai già fatto, utilizza la colonna generata automaticamente nel file CSV esportato per indicare i messaggi da aggiornare.

Chiama il metodo reload sulla risorsa Document per aggiornare la lista consentita. Per aggiornare solo i messaggi specificati, imposta smart_messaging_partial_update su true in ReloadDocumentRequest. Per aggiornare l'intera lista consentita, lascia smart_messaging_partial_update non impostato o imposta false.

Campi obbligatori:

  • gcsSource è il percorso Cloud Storage del file CSV.
  • Per name, utilizza il nome della risorsa della lista consentita generato quando hai creato un modello di conversazione.

Esempio di richiesta:

{
  "name":"projects/project-id/knowledgeBases/knowledge-base-id/documents/allowlist-id",
  "gcsSource" {
      "uri": "gs://revised_smart_reply_allowlist_path"
   }
}

Valutare le prestazioni di un modello addestrato

Puoi testare le prestazioni di un modello dopo averlo sottoposto a deployment e aver creato una lista consentita. Devi anche fornire un set di dati di test. Le risposte generate dal modello di Risposta rapida addestrato e dalla relativa lista consentita verranno confrontate con i messaggi effettivi dell'agente nel set di dati di test. Il set di dati di test deve essere costituito da dati di conversazione reali, ma non deve contenere nessuno dei dati del set di dati di conversazione che hai utilizzato per addestrare il modello. Ad esempio, se hai a disposizione un mese di traffico delle conversazioni, puoi utilizzare tre settimane di dati sulle conversazioni per creare un set di dati sulle conversazioni e la settimana rimanente per creare il set di dati di test. Un set di dati di test deve contenere un minimo di 1000 conversazioni, ma in generale le metriche di valutazione saranno più affidabili con un numero maggiore di conversazioni nel set di dati di test. Il formato del set di dati di test è lo stesso del formato del set di dati delle conversazioni.

Per creare una nuova valutazione del modello, chiama il metodo CreateConversationModelEvaluation su una risorsa ConversationModel. Questo metodo restituisce un'operazione a lunga esecuzione. Puoi eseguire il polling dell'operazione per verificarne lo stato, che restituirà uno dei seguenti valori: INITIALIZING, RUNNING, SUCCEEDED, CANCELLED, FAILED.

Campi obbligatori:

  • InputDataset: il set di dati di test che verrà utilizzato per testare le prestazioni del modello.
  • allowlist_document: la lista consentita associata al modello di Risposta rapida da testare.

Al termine dell'operazione di lunga durata, viene restituita una risorsa ConversationModelEvaluation. Sono incluse due metriche:

  • allowlist_coverage: la percentuale di messaggi dell'agente nel set di dati di test coperti dalla lista consentita.
  • recall: la percentuale di messaggi dell'agente nel set di dati di test che sono contenuti nella lista consentita e vengono visualizzati nei primi tre suggerimenti proposti dal modello di risposta rapida.

Configurare un profilo di conversazione

Un profilo di conversazione configura un insieme di parametri che controllano i suggerimenti forniti a un agente durante una conversazione. I seguenti passaggi creano un ConversationProfile con un HumanAgentAssistantConfig oggetto. Puoi anche eseguire queste azioni utilizzando la console Agent Assist se preferisci non chiamare direttamente l'API.

Creare un profilo di conversazione

Per creare un profilo di conversazione, chiama il metodo create sulla risorsa ConversationProfile. Fornisci l'ID knowledge base, l'ID documento, l'ID progetto e l'ID modello.

Di seguito è riportato un esempio di JSON:
{
  "displayName": "smart_compose_assist",
  "humanAgentAssistantConfig": {
    "humanAgentSuggestionConfig": {
      "featureConfigs": [
        {
          "suggestionFeature": {
            "type": "SMART_COMPOSE"
          },
          "queryConfig": {
            "documentQuerySource": {
              "documents": "projects/PROJECT_ID/knowledgeBases/KNOWLEDGE_BASE_ID/documents/DOCUMENT_ID"
            },
           "maxResults": "1"
          },
         "conversationModelConfig": {
           "model": "projects/PROJECT_ID/conversationModels/MODEL_ID"
         }
        }
      ]
    }
  }
}

La risposta contiene il nuovo ID del profilo conversazione.

Gestire le conversazioni in fase di runtime

Quando inizia un dialogo tra un utente finale e un agente umano, crei una conversazione. Per visualizzare i suggerimenti, devi anche creare un partecipante utente finale e un partecipante agente umano e aggiungerli alla conversazione. Le sezioni seguenti illustrano questa procedura.

Creare una conversazione

Per creare una conversazione, chiama il metodo create sulla risorsa Conversation.

REST

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: l'ID del tuo progetto cloud
  • LOCATION_ID: il tuo ID località
  • CONVERSATION_PROFILE_ID: l'ID che hai ricevuto durante la creazione del profilo conversazione

Metodo HTTP e URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations

Corpo JSON della richiesta:

{
  "conversationProfile": "projects/PROJECT_ID/locations/LOCATION_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID",
  "lifecycleState": "IN_PROGRESS",
  "conversationProfile": "projects/PROJECT_ID/locations/LOCATION_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
  "startTime": "2018-11-05T21:05:45.622Z"
}

Il segmento del percorso dopo conversations contiene il nuovo ID conversazione.

Python

Per eseguire l'autenticazione in Agent Assist, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

def create_conversation(project_id, conversation_profile_id):
    """Creates a conversation with given values

    Args:
        project_id:  The GCP project linked with the conversation.
        conversation_profile_id: The conversation profile id used to create
        conversation."""

    client = dialogflow.ConversationsClient()
    conversation_profile_client = dialogflow.ConversationProfilesClient()
    project_path = client.common_project_path(project_id)
    conversation_profile_path = conversation_profile_client.conversation_profile_path(
        project_id, conversation_profile_id
    )
    conversation = {"conversation_profile": conversation_profile_path}
    response = client.create_conversation(
        parent=project_path, conversation=conversation
    )

    print("Life Cycle State: {}".format(response.lifecycle_state))
    print("Conversation Profile Name: {}".format(response.conversation_profile))
    print("Name: {}".format(response.name))
    return response

Crea un partecipante utente finale

Per visualizzare i suggerimenti, devi aggiungere alla conversazione sia i partecipanti utenti finali sia quelli agenti umani. Per creare un partecipante utente finale, chiama il metodo create sulla risorsa Participant. Fornisci l'ID conversazione e END_USER per il campo role.

REST

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: l'ID del tuo progetto cloud
  • LOCATION_ID: il tuo ID località
  • CONVERSATION_ID: l'ID della conversazione

Metodo HTTP e URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants

Corpo JSON della richiesta:

{
  "role": "END_USER",
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID",
  "role": "END_USER"
}

Il segmento di percorso dopo participants contiene il nuovo ID partecipante utente finale.

Python

Per eseguire l'autenticazione in Agent Assist, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

def create_participant(project_id: str, conversation_id: str, role: str):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Creates a participant in a given conversation.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant: participant to be created."""

    client = dialogflow.ParticipantsClient()
    conversation_path = dialogflow.ConversationsClient.conversation_path(
        project_id, conversation_id
    )
    if role in ROLES:
        response = client.create_participant(
            parent=conversation_path, participant={"role": role}, timeout=600
        )
        print("Participant Created.")
        print(f"Role: {response.role}")
        print(f"Name: {response.name}")

        return response

Crea un partecipante agente umano

Per creare un partecipante agente umano, chiama il metodo create sulla risorsa Participant. Fornisci l'ID conversazione e HUMAN_AGENT per il campo role.

REST

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: l'ID del tuo progetto cloud
  • LOCATION_ID: il tuo ID località
  • CONVERSATION_ID: l'ID della conversazione

Metodo HTTP e URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants

Corpo JSON della richiesta:

{
  "role": "HUMAN_AGENT",
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID",
  "role": "HUMAN_AGENT"
}

Il segmento di percorso dopo participants contiene il nuovo ID partecipante dell'agente umano.

Python

Per eseguire l'autenticazione in Agent Assist, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

def create_participant(project_id: str, conversation_id: str, role: str):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Creates a participant in a given conversation.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant: participant to be created."""

    client = dialogflow.ParticipantsClient()
    conversation_path = dialogflow.ConversationsClient.conversation_path(
        project_id, conversation_id
    )
    if role in ROLES:
        response = client.create_participant(
            parent=conversation_path, participant={"role": role}, timeout=600
        )
        print("Participant Created.")
        print(f"Role: {response.role}")
        print(f"Name: {response.name}")

        return response

Aggiungere e analizzare un messaggio dell'agente umano

Ogni volta che uno dei partecipanti digita un messaggio nella conversazione, devi inviarlo all'API per l'elaborazione. Agent Assist basa i suoi suggerimenti sull'analisi dei messaggi degli agenti umani e degli utenti finali. Per aggiungere e analizzare un messaggio dell'agente umano per la conversazione, chiama il metodo analyzeContent sulla risorsa Participant. Fornisci l'ID conversazione e l'ID partecipante dell'agente umano.

REST

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: il tuo ID progetto GCP
  • CONVERSATION_ID: l'ID della conversazione
  • PARTICIPANT_ID: il tuo ID partecipante agente umano

Metodo HTTP e URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent

Corpo JSON della richiesta:

{
  "textInput": {
    "text": "How may I help you?",
    "languageCode": "en-US"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "message": {
    "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "How may I help you?",
    "languageCode": "en-US",
    "participant": "PARTICIPANT_ID",
    "participantRole": "HUMAN_AGENT",
    "createTime": "2020-02-13T00:01:30.683Z"
  },
  "humanAgentSuggestionResults": [
    {
      "suggestSmartRepliesResponse": {
      "smartReplyAnswers": [
          {
            "reply": "I am here to help you.",
            "confidence": 0.5,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_1"
          },
          {
            "reply": "Sorry for the wait, we have a high volume of chats right now.",
            "confidence": 0.3,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_2"
          },
          {
            "reply": "Thank you for contacting us!",
            "confidence": 0.1,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_3"
          }
        ]
      }
    }
  ]
}

Python

Per eseguire l'autenticazione in Agent Assist, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

def analyze_content_text(
    project_id: str, conversation_id: str, participant_id: str, text: str
):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Analyze text message content from a participant.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant_id: Id of the participant.
        text: the text message that participant typed."""

    client = dialogflow.ParticipantsClient()
    participant_path = client.participant_path(
        project_id, conversation_id, participant_id
    )
    text_input = {"text": text, "language_code": "en-US"}
    response = client.analyze_content(
        participant=participant_path, text_input=text_input
    )
    print("AnalyzeContent Response:")
    print(f"Reply Text: {response.reply_text}")

    for suggestion_result in response.human_agent_suggestion_results:
        if suggestion_result.error is not None:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    for suggestion_result in response.end_user_suggestion_results:
        if suggestion_result.error:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    return response

Aggiungere e analizzare un messaggio dell'utente finale

Per aggiungere e analizzare un messaggio dell'utente finale per la conversazione, chiama il metodo analyzeContent sulla risorsa Participant. Fornisci l'ID conversazione e l'ID partecipante utente finale.

La risposta contiene un ID messaggio. I suggerimenti vengono acquisiti nel passaggio successivo.

REST

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: il tuo ID progetto GCP
  • CONVERSATION_ID: l'ID della conversazione
  • PARTICIPANT_ID: l'ID partecipante utente finale

Metodo HTTP e URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent

Corpo JSON della richiesta:

{
  "textInput": {
    "text": "I want to reserve a room.",
    "languageCode": "en-US"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "message": {
    "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "I want to reserve a room.",
    "languageCode": "en-US",
    "participant": "PARTICIPANT_ID",
    "participantRole": "END_USER",
    "createTime": "2020-02-13T00:07:35.925Z"
  },
  "humanAgentSuggestionResults": [
    {
      "suggestSmartRepliesResponse": {
      "smartReplyAnswers": [
          {
            "reply": "Where would you like to reserve a room?",
            "confidence": 0.5,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_1"
          },
          {
            "reply": "What type of rooms would you like to reserve?",
            "confidence": 0.3,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_2"
          },
          {
            "reply": "How long do you want to stay?",
            "confidence": 0.1,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_3"
          }
        ]
      }
    }
  ]
}

Python

Per eseguire l'autenticazione in Agent Assist, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

def analyze_content_text(
    project_id: str, conversation_id: str, participant_id: str, text: str
):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Analyze text message content from a participant.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant_id: Id of the participant.
        text: the text message that participant typed."""

    client = dialogflow.ParticipantsClient()
    participant_path = client.participant_path(
        project_id, conversation_id, participant_id
    )
    text_input = {"text": text, "language_code": "en-US"}
    response = client.analyze_content(
        participant=participant_path, text_input=text_input
    )
    print("AnalyzeContent Response:")
    print(f"Reply Text: {response.reply_text}")

    for suggestion_result in response.human_agent_suggestion_results:
        if suggestion_result.error is not None:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    for suggestion_result in response.end_user_suggestion_results:
        if suggestion_result.error:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    return response

(Facoltativo) Ricevere un suggerimento

Puoi disattivare i suggerimenti in qualsiasi momento. Se vuoi, puoi specificare un ID messaggio per ricevere suggerimenti basati su quel messaggio. Se questo campo non è impostato, i suggerimenti si basano per impostazione predefinita sull'ultimo messaggio di uno dei partecipanti. Per ottenere suggerimenti, chiama il metodo suggestSmartReplies sulla risorsa Suggestion. Fornisci l'ID conversazione, l'ID partecipante dell'agente umano e un ID messaggio di uno dei partecipanti (facoltativo).

La risposta contiene i suggerimenti di Risposta rapida per l'agente umano.

REST

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: il tuo ID progetto GCP
  • CONVERSATION_ID: l'ID della conversazione
  • PARTICIPANT_ID: l'ID partecipante utente finale

Metodo HTTP e URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent

Corpo JSON della richiesta:

{
  "textInput": {
    "text": "I want to reserve a room.",
    "languageCode": "en-US"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "message": {
    "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "I want to reserve a room.",
    "languageCode": "en-US",
    "participant": "PARTICIPANT_ID",
    "participantRole": "END_USER",
    "createTime": "2020-02-13T00:07:35.925Z"
  },
  "humanAgentSuggestionResults": [
    {
      "suggestSmartRepliesResponse": {
      "smartReplyAnswers": [
          {
            "reply": "Where would you like to reserve a room?",
            "confidence": 0.5,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_1"
          },
          {
            "reply": "What type of rooms would you like to reserve?",
            "confidence": 0.3,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_2"
          },
          {
            "reply": "How long do you want to stay?",
            "confidence": 0.1,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_3"
          }
        ]
      }
    }
  ]
}

Python

Per eseguire l'autenticazione in Agent Assist, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

def analyze_content_text(
    project_id: str, conversation_id: str, participant_id: str, text: str
):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Analyze text message content from a participant.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant_id: Id of the participant.
        text: the text message that participant typed."""

    client = dialogflow.ParticipantsClient()
    participant_path = client.participant_path(
        project_id, conversation_id, participant_id
    )
    text_input = {"text": text, "language_code": "en-US"}
    response = client.analyze_content(
        participant=participant_path, text_input=text_input
    )
    print("AnalyzeContent Response:")
    print(f"Reply Text: {response.reply_text}")

    for suggestion_result in response.human_agent_suggestion_results:
        if suggestion_result.error is not None:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    for suggestion_result in response.end_user_suggestion_results:
        if suggestion_result.error:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    return response

Completare la conversazione

Per completare la conversazione, chiama il metodo complete sulla risorsa conversations. Fornisci l'ID conversazione.

REST

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: il tuo ID progetto GCP
  • CONVERSATION_ID: l'ID ricevuto durante la creazione della conversazione

Metodo HTTP e URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID:complete

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID",
  "lifecycleState": "COMPLETED",
  "conversationProfile": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
  "startTime": "2018-11-05T21:05:45.622Z",
  "endTime": "2018-11-06T03:50:26.930Z"
}

Python

Per eseguire l'autenticazione in Agent Assist, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

def complete_conversation(project_id, conversation_id):
    """Completes the specified conversation. Finished conversations are purged from the database after 30 days.

    Args:
        project_id: The GCP project linked with the conversation.
        conversation_id: Id of the conversation."""

    client = dialogflow.ConversationsClient()
    conversation_path = client.conversation_path(project_id, conversation_id)
    conversation = client.complete_conversation(name=conversation_path)
    print("Completed Conversation.")
    print("Life Cycle State: {}".format(conversation.lifecycle_state))
    print("Conversation Profile Name: {}".format(conversation.conversation_profile))
    print("Name: {}".format(conversation.name))
    return conversation