Escrita inteligente

O recurso de texto inteligente ajuda um agente humano durante uma chat com um usuário final. Ele sugere frases para completar as frases iniciadas pelo agente humano. Use esse recurso para implementar uma sugestão personalizada na interface de chat do seu agente.

Um agente humano recebe uma sugestão de texto enquanto digita em uma interface de chat. Este guia mostra como implementar o recurso de criação inteligente chamando a API diretamente. Se preferir, use o Console do Agent Assist para treinar um modelo e testar a performance dele usando o simulador. Consulte o tutorial do simulador da Escrita inteligente para instruções.

Consulte a documentação de práticas recomendadas da Escrita inteligente para ver diretrizes sobre como integrar a Escrita inteligente ao seu próprio sistema e melhorar a qualidade das sugestões.

Antes de começar

Antes de ler este guia, faça o seguinte:

  1. Ative a API Dialogflow no seu projeto.

Informações de identificação pessoal e dados de crianças

Quando você envia dados para essa API, ela tenta encobrir todas as informações de identificação pessoal (PII). Se você precisar garantir que o modelo não inclua PII, limpe seus dados antes de enviá-los à API. Substitua as palavras censuradas por marcadores de posição, como `REDACTED_NUMBER` ou `REDACTED_NAME`, em vez de apenas removê-las.

Além disso, se os dados contiverem informações coletadas de crianças, remova os dados das crianças antes de enviá-los à API.

Treinar e implantar um modelo

Os modelos de Resposta inteligente do Agent Assist são treinados usando conjuntos de dados de conversas. Um conjunto de dados de conversa contém seus próprios dados de transcrição enviados. Esta seção mostra o processo de criação de um conjunto de dados de conversas, upload dos dados de conversa para ele e treinamento e implantação de um modelo. Você também pode realizar essas ações usando o console do Agent Assist se preferir não chamar a API diretamente.

Criar um conjunto de dados de conversa

Antes de começar a fazer upload das transcrições de conversas, crie um conjunto de dados de conversas para armazená-las. Chame o método create no recurso ConversationDataset para criar um conjunto de dados de conversa.

A resposta contém um ID do conjunto de dados de conversa.

Importar transcrições de conversas para o conjunto de dados de conversas

Faça upload dos dados da conversa para o conjunto de dados de conversa para que eles possam ser processados pelo Agent Assist. Verifique se uma transcrição de cada conversa está no formato JSON e armazenada em um bucket do Cloud Storage. Um conjunto de dados de conversas precisa ter pelo menos 30.000 conversas. Caso contrário, o treinamento de modelo vai falhar. Como regra geral, quanto mais conversas você tiver, melhor será a qualidade do modelo. Recomendamos o envio de pelo menos três meses de conversas para abranger o máximo possível de casos de uso. O número máximo de mensagens em um conjunto de dados de conversa é 1.000.000.

Chame o método importConversationData no recurso ConversationDataset para importar suas conversas.

Campos obrigatórios:

  • O ID do conjunto de dados de conversa que você criou antes.
  • O caminho inputConfig leva aos dados de transcrição da conversa em um bucket do Cloud Storage.

A resposta é uma operação de longa duração, que pode ser pesquisada para verificar se foi concluída.

Criar um modelo de conversa

Chame o método create no recurso ConversationModel para criar um modelo de conversa. Essa ação também cria a lista de permissões do modelo.

Campos obrigatórios:

  • Em datasets, forneça um único conjunto de dados usando o ID do conjunto de dados de conversas que você criou anteriormente.
  • Defina smartReplyModelMetadata como um objeto vazio ou preencha o campo para substituir o padrão.

A resposta é uma operação de longa duração, que pode ser pesquisada para verificar se foi concluída. Depois de concluída, o ID do modelo e o ID da lista de permissões serão incluídos nos metadados da operação.

  • ID do modelo: name
  • ID da lista de permissões: smart_reply_model_metadata.associated_allowlist_info.document

Implantar o modelo de conversa

Chame o método deploy no recurso ConversationModel para implantar o modelo de conversa.

Campo obrigatório:

  • Use conversationModels: insira o ID do modelo de conversa que você criou anteriormente.

Gerenciar uma lista de permissões

Cada modelo tem uma lista de permissões associada a ele, que é criada automaticamente quando você cria um modelo de conversa. A lista de permissões contém todas as respostas geradas com base nos seus conjuntos de dados de conversa que podem ser apresentadas a um atendente humano durante a execução. Esta seção descreve a criação e o gerenciamento de listas de permissões. Você também pode realizar essas ações usando o console do Agent Assist se preferir não chamar a API diretamente.

Exporte o conteúdo da lista de permissões para um arquivo CSV.

A criação de modelos gera automaticamente uma lista de permissões associada ao novo modelo. A lista de permissão é um recurso de documento com um ID exclusivo. O ID é retornado em smart_reply_model_metadata.associated_allowlist_info.document quando um modelo é criado. Para analisar e fazer mudanças nas mensagens da lista de permissões, exporte-a para um bucket do Cloud Storage.

Chame o método export no recurso Document para exportar o documento para um arquivo CSV em um bucket do Cloud Storage. O campo smart_messaging_partial_update é opcional, mas afeta a forma como você poderá atualizar essa lista de permissões no futuro. Se definido como true, o arquivo CSV exportado vai incluir uma coluna com um ID exclusivo para cada mensagem. Você pode usar o ID da mensagem para atualizar apenas mensagens específicas em vez do documento inteiro. Se smart_messaging_partial_update estiver definido como false ou não estiver definido, a coluna extra não vai aparecer no arquivo, e todas as atualizações na lista de permissão vão exigir uma atualização em todo o documento.

Campo obrigatório:

  • O caminho gcsDestination vai para o bucket do Cloud Storage.

A resposta é uma operação de longa duração, que pode ser pesquisada para verificar se foi concluída. Depois disso, o arquivo CSV que você forneceu na solicitação será preenchido com candidatos a respostas.

Revisar a lista de permissões

A lista de permissões gerada contém respostas que foram criadas automaticamente pela Resposta Inteligente com base nos seus dados de conversa. Agora você pode revisar e atualizar essas respostas conforme necessário. Faça o download do arquivo CSV do bucket do Cloud Storage, edite-o para atender às suas necessidades e faça upload do arquivo de volta para o bucket do Cloud Storage. Somente respostas na lista de permissões podem ser mostradas aos agentes humanos.

Se você editar alguma resposta, recomendamos que faça isso apenas para corrigir ortografia e gramática, sem mudar o significado da mensagem. Quanto mais o texto editado se desviar do significado no modelo, menor será a probabilidade de a mensagem aparecer.

Você também pode criar novas mensagens, se necessário. Assim como as mensagens editadas, as mensagens criadas têm menos probabilidade de aparecer durante a execução.

Atualizar a lista de permissões

Depois de atualizar o arquivo CSV, use-o para atualizar o recurso Document. É possível atualizar toda a lista de permissões ou apenas mensagens específicas. Para atualizar apenas mensagens específicas, você precisa ter definido smart_messaging_partial_update como true ao exportar a lista de permissão. Se você já fez isso, use a coluna gerada automaticamente no arquivo CSV exportado para indicar as mensagens que precisam ser atualizadas.

Chame o método reload no recurso Document para atualizar a lista de permissões. Para atualizar apenas mensagens específicas, defina smart_messaging_partial_update como true no ReloadDocumentRequest. Para atualizar toda a lista de permissões, deixe smart_messaging_partial_update sem definição ou defina como false.

Campos obrigatórios:

  • gcsSource é o caminho do Cloud Storage para o arquivo CSV.
  • Para name, use o nome do recurso da lista de permissões gerado quando você criou um modelo de conversa.

Exemplo de solicitação:

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

Avaliar o desempenho de um modelo treinado

É possível testar o desempenho de um modelo depois de implantá-lo e criar uma lista de permissões para ele. Também é necessário fornecer um conjunto de dados de teste. As respostas geradas pelo modelo treinado da Resposta inteligente e a lista de permissões associada serão comparadas com as mensagens reais do agente no conjunto de dados de teste. O conjunto de dados de teste precisa ser composto de dados de conversas reais, mas não pode conter nenhum dos dados do conjunto de dados de conversas usado para treinar o modelo. Por exemplo, com um mês de tráfego de conversas, você pode usar três semanas de dados para criar um conjunto de dados de conversas e a semana restante para criar o conjunto de dados de teste. Um conjunto de dados de teste precisa ter no mínimo 1.000 conversas, mas, como regra geral, as métricas de avaliação serão mais confiáveis com mais conversas no conjunto de dados de teste. O formato do conjunto de dados de teste é o mesmo do formato do conjunto de dados de conversa.

Para criar uma avaliação de modelo, chame o método CreateConversationModelEvaluation em um recurso ConversationModel. Esse método retorna uma operação de longa duração. Você pode pesquisar a operação para verificar o estado dela, que vai retornar um dos seguintes valores: INITIALIZING, RUNNING, SUCCEEDED, CANCELLED, FAILED.

Campos obrigatórios:

  • InputDataset: o conjunto de dados de teste que será usado para testar a performance do modelo.
  • allowlist_document: a lista de permissões associada ao modelo de Resposta inteligente a ser testado.

Um recurso ConversationModelEvaluation é retornado quando a operação de longa duração é concluída. Duas métricas estão incluídas:

  • allowlist_coverage: a porcentagem de mensagens do agente no conjunto de dados de teste que são cobertas pela lista de permissões.
  • recall: a porcentagem de mensagens do agente no conjunto de dados de teste que estão contidas na lista de permissão e aparecem nas três principais sugestões apresentadas pelo modelo de Resposta inteligente.

Configurar um perfil de conversa

Um perfil de conversa configura um conjunto de parâmetros que controlam as sugestões feitas a um agente durante uma conversa. As etapas a seguir criam um ConversationProfile com um objeto HumanAgentAssistantConfig. Você também pode realizar essas ações usando o console do Agent Assist se preferir não chamar a API diretamente.

Criar um perfil de conversa

Para criar um perfil de conversa, chame o método create no recurso ConversationProfile. Forneça o ID da base de conhecimento, do documento, o ID do projeto e o ID do modelo.

Confira um exemplo de 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"
         }
        }
      ]
    }
  }
}

A resposta contém o novo ID do perfil de conversa.

Processar conversas no ambiente de execução

Quando um diálogo começa entre um usuário final e um agente humano, você cria uma conversa. Para ver sugestões, você também precisa criar um participante usuário final e um participante agente humano e adicioná-los à conversa. As seções a seguir explicam esse processo.

Criar uma conversa

Para criar uma conversa, chame o método create no recurso Conversation.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto do Cloud
  • LOCATION_ID: o ID do local
  • CONVERSATION_PROFILE_ID: o ID que você recebeu ao criar o perfil de conversa

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

O segmento de caminho após conversations contém o novo ID da conversa.

Python

Para autenticar no Agent Assist, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

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

Criar um participante do usuário final

Para ver sugestões, adicione os participantes do usuário final e do agente humano à conversa. Para criar um participante usuário final, chame o método create no recurso Participant. Forneça o ID da conversa e END_USER para o campo role.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto do Cloud
  • LOCATION_ID: o ID do local
  • CONVERSATION_ID: o ID da conversa

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "role": "END_USER",
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

O segmento de caminho após participants contém o novo ID do participante do usuário final.

Python

Para autenticar no Agent Assist, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

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

Criar um participante agente humano

Para criar um participante humano, chame o método create no recurso Participant. Forneça o ID da conversa e HUMAN_AGENT para o campo role.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto do Cloud
  • LOCATION_ID: o ID do local
  • CONVERSATION_ID: o ID da conversa

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "role": "HUMAN_AGENT",
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

O segmento de caminho após participants contém o ID do novo participante humano.

Python

Para autenticar no Agent Assist, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

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

Adicionar e analisar uma mensagem do atendente humano

Sempre que um dos participantes digita uma mensagem na conversa, é necessário enviar essa mensagem à API para processamento. O Agent Assist baseia as sugestões na análise das mensagens do agente humano e do usuário final. Para adicionar e analisar uma mensagem de um atendente humano na conversa, chame o método analyzeContent no recurso Participant. Forneça o ID da conversa e o ID do participante do agente humano.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: ID do projeto do GCP
  • CONVERSATION_ID: o ID da conversa
  • PARTICIPANT_ID: seu ID de participante do agente humano

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Para autenticar no Agent Assist, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

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

Adicionar e analisar uma mensagem do usuário final

Para adicionar e analisar uma mensagem do usuário final na conversa, chame o método analyzeContent no recurso Participant. Forneça o ID da conversa e o ID do participante do usuário final.

A resposta contém um ID de mensagem. As sugestões serão adquiridas na próxima etapa.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: ID do projeto do GCP
  • CONVERSATION_ID: o ID da conversa
  • PARTICIPANT_ID: o ID do participante do usuário final

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Para autenticar no Agent Assist, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

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

Receber uma sugestão (opcional)

Você pode desativar as sugestões quando quiser. Se quiser, especifique um ID de mensagem para receber sugestões com base nela. Se esse campo não for definido, as sugestões serão baseadas na mensagem mais recente de qualquer um dos participantes por padrão. Para receber sugestões, chame o método suggestSmartReplies no recurso Suggestion. Forneça o ID da conversa, o ID do participante agente humano e o ID de uma mensagem de qualquer um dos participantes (opcional).

A resposta contém sugestões da Resposta inteligente para o atendente humano.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: ID do projeto do GCP
  • CONVERSATION_ID: o ID da conversa
  • PARTICIPANT_ID: o ID do participante do usuário final

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Para autenticar no Agent Assist, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

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

Concluir a conversa

Para concluir a conversa, chame o método complete no recurso conversations. Informe o ID da conversa.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: ID do projeto do GCP
  • CONVERSATION_ID: o ID que você recebeu ao criar a conversa

Método HTTP e URL:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Para autenticar no Agent Assist, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

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