Criar um app do Google Chat para Dialogflow CX que entende e responde com linguagem natural

Esta página explica como criar um app do Google Chat que possa fazer as duas coisas: entender e responder com linguagem natural usando Dialogflow (em inglês). Este guia usa Dialogflow CX, que tem uma integração direta com o Google Chat. Você também pode usar Dialogflow ES para criar uma App Dialogflow ES do Google Chat seguindo as Google Chat: Dialogflow ES guia.

Por exemplo, considere um app do Chat que ajuda pessoas a alugar carros. Um usuário escreve "Quero alugar um carro". A O app do Chat pode responder com uma pergunta como: "Onde você gostaria de pegar o veículo?" que inicia um processo conversa com o usuário em que o app do Chat entende e responde com fala humana ao reservar o aluguel do carro.

Esse é apenas um exemplo. Os apps do Dialogflow Chat são úteis em todas tipos de interações. Se ela exige fala humana natural, ela exige um app Dialogflow Chat. A pré-criados ajudam a começar rapidamente e mostram o que o Dialogflow é capaz de fazer, como:

  • Reservar voos
  • Agendar consultas médicas
  • Pedir comida para entrega
  • Responder a perguntas sobre um catálogo de produtos de varejo, por exemplo, se os itens estão disponíveis em outras cores
  • A página pré-criada de seleção de agentes do Dialogflow.
    Figura 1. Como selecionar um agente pré-criado para um app do Dialogflow Chat.
  • Como testar o agente no Dialogflow CX.
    Figura 2. Teste o agente no Dialogflow CX para garantir que a lógica e a configuração dele funcionem conforme o esperado. O diagrama mostra um conjunto sequencial de páginas com temas relacionados a etapas específicas da conversa, como definir um local de embarque e devolução de um carro alugado, e configura a lógica que as conecta. A conversa é testada em um simulador.
  • Configurar um app do Dialogflow Chat.
    Figura 3. Como configurar um app do Chat para processar respostas usando o agente do Dialogflow CX na página de configuração da API Chat no console do Google Cloud.
  • Como testar o app Dialogflow CX Chat
    Figura 4. Conversar sobre como reservar um carro alugado com o app Dialogflow Chat no Google Chat.

Objetivos

  • Configurar o ambiente.
  • Criar e implantar um agente do Dialogflow CX.
  • Crie e implante um app do Chat com a tecnologia Agente do Dialogflow CX.
  • Teste o app do Chat.

Pré-requisitos

Arquitetura

O diagrama a seguir mostra a arquitetura App do Chat criado com o Dialogflow:

Arquitetura de um app do Chat implementado com o Dialogflow.

No diagrama anterior, um usuário interagindo com uma instância do Dialogflow O app do Chat tem o seguinte fluxo de informações:

  1. Um usuário envia uma mensagem no Chat para App do Chat, seja em mensagem direta ou em uma Espaço do Chat.
  2. Um agente virtual do Dialogflow, residente no Google Cloud, recebe e processa a mensagem para produzir uma resposta.
  3. Opcionalmente, usando um Webhook do Dialogflow; o agente do Dialogflow pode interagir com serviços externos de terceiros, como como um sistema de gerenciamento de projetos ou uma ferramenta de emissão de tíquetes.
  4. O agente do Dialogflow envia uma resposta de volta para o Serviço de app do Chat no Chat.
  5. A resposta é entregue ao espaço do Chat.

Configure o ambiente

Antes de usar as APIs do Google, você precisa ativá-las em um projeto do Google Cloud. É possível ativar uma ou mais APIs em um único projeto do Google Cloud.
  1. No console do Google Cloud, ative as APIs Google Chat e Dialogflow.

    Ativar as APIs

  2. Confirme se você está ativando as APIs projeto do Google Cloud e clique em Próxima.

  3. Confirme se você está ativando as APIs corretas e clique em Ativar.

Criar um agente do Dialogflow CX

Um Agente do Dialogflow CX é um agente virtual que lida com conversas simultâneas com os usuários finais. É um módulo de compreensão de linguagem natural que entende as nuances da linguagem humana. O Dialogflow traduz textos do usuário final durante uma conversa com dados estruturados que seus apps e serviços conseguem entender. Você projeta e cria um agente do Dialogflow para lidar com os tipos de conversas necessárias para o sistema.

Um agente do Dialogflow é como um agente humano de call center. Você treina os dois para lidar com cenários esperados de conversas, e o treinamento não precisa ser explícito demais.

Veja como criar o agente do Dialogflow CX:

  1. Abra o console do Dialogflow CX. Clique em Cardápio > Dialogflow CX.

    Acesse o console do Dialogflow CX

  2. Escolha um projeto do Google Cloud. Para encontrar seu projeto, pode ser necessário clique em Todas e depois pesquise o nome.

  3. Agora você tem a opção de escolher um agente pré-criado ou criar o seu próprio. Se você preferir conhecer o agente personalização em detalhes mais tarde, escolha uma das pré-criados, que também são úteis para saber o que os agentes podem fazer.

    Para escolher um agente pré-criado, siga estas etapas:

    1. Clique em Usar agentes pré-criados.
    2. Selecione um agente pré-criado. Para este guia, selecione Viagem: aluguel de carros.

      Os agentes são classificados como iniciantes, intermediário ou avançado, com base em quantos atributos o agente usa e da sofisticação da lógica de conversa. Escolher um de nível intermediário ou avançado podem exigir APIs específicas personalizações e configurações, incluindo a ativação de recursos e APIs em console do Google Cloud.

    3. Clique em Importar como agente.

    Para criar seu próprio agente, siga estas etapas:

    1. Clique em Criar agente.
    2. Selecione Gerar automaticamente para criar um agente do repositório de dados ou selecione Criar seus próprios agentes para criar outros tipos de agentes.

    Para acessar um tutorial detalhado do processo de criação do agente, consulte Crie um agente do Dialogflow CX.

  4. Defina as configurações básicas do agente:

    1. Em Nome de exibição, digite um nome de exibição.
    2. Selecione um local. Se você quiser mudar configurações de localização Clique em Editar.
    3. Selecione o fuso horário.
    4. Selecione o idioma padrão do agente. Não é possível alterar o idioma padrão de um agente após a criação.
  5. Clique em Criar. o Dialogflow CX começa a criar o agente e depois exibe o fluxo inicial padrão do agente.

  6. Se quiser, personalize o agente. Para um tutorial detalhado, o agente processo de personalização, consulte Crie um agente do Dialogflow CX.

  7. Como prática recomendada, teste o agente:

    1. Clique em Testar agente.
    2. Selecione Agente de teste no ambiente.
    3. Em "Ambiente", selecione Rascunho.
    4. No fluxo, selecione Fluxo inicial padrão.
    5. Em "Página", selecione Página inicial.
    6. Na barra de escrita Talk to agent, digite Hello e pressione Enter. O agente responde se apresentando.
    7. Conclua o teste usando o exemplo de conversa de teste.
  8. O agente do Dialogflow CX foi criado. Volte para o console do Dialogflow CX. Clique em Menu . > Dialogflow CX.

    Acesse o console do Dialogflow CX

  9. Em Agentes, clique em > Copiar nome. Salve esse nome, como que você usa ao configurar o app do Chat.

Criar um app do Chat e conectá-lo ao agente do Dialogflow

Depois de criar um agente do Dialogflow CX, siga estas etapas para transformá-lo em um App do Chat:

  1. No console do Google Cloud, acesse a API Google Chat. Pesquise "API Google Chat" e Clique em API Google Chat e em Gerenciar.

    Acessar a API Chat

  2. Clique em Configuração e configure o app do Chat:

    1. Em Nome do app, digite Dialogflow App.
    2. No URL do avatar, digite https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png
    3. Em Descrição, digite Responds to real human conversation.
    4. Em Funcionalidade, selecione Receber mensagens individuais e Participar de espaços e conversas em grupo
    5. Em Configurações de conexão, selecione Dialogflow.
    6. Em Configurações do Dialogflow, selecione Dialogflow CX.
    7. Em Agent or Environment resource name, cole o agente do Dialogflow CX que você copiou no fim Crie um agente do Dialogflow CX.
    8. Disponibilizar este app do Chat para pessoas e grupos específicos no seu domínio e digite o endereço de e-mail.
    9. Em Registros, selecione Registrar erros no Logging.
  3. Clique em Salvar.

O app do Chat está pronto para receber e responder mensagens no Chat.

Teste o app do Chat

Envie uma mensagem para testar o app Dialogflow CX Chat Google Chat

  1. Abra o Google Chat usando a conta do Google Workspace que você fornecido quando você se adicionou como trusted tester.

    Acessar o Google Chat

  2. Clique em Nova conversa.
  3. No campo Adicionar uma ou mais pessoas, digite o nome da sua App Chat.
  4. Selecione seu app do Chat nos resultados. Um direto a mensagem será aberta.

  5. Na nova mensagem direta com o app, digite Hello e pressione enter.

    O app Dialogflow Chat responde apresentando por conta própria.

  6. Conclua o teste exemplo de conversa de teste.

Exemplo de conversa de teste

Para testar o app Dialogflow CX Chat no Use o console do Dialogflow CX ou o Google Chat para conversar sobre isso a seguir. A explicação ajuda você a entender como o agente do Dialogflow CX interpreta linguagem natural do usuário e produz sua própria resposta de linguagem natural cada etapa da conversa. Este exemplo de conversa é baseado agente pré-criado chamada Viagens: aluguel de carros.

Dialog Explicação
Usuário final: Olá,
Agente: Olá! Sou o agente virtual de aluguel de carros. Eu consigo ajudar você a fazer uma reserva de aluguel de carro novo. Como posso ajudar? você hoje?
  1. A rota de intent de boas-vindas padrão no Fluxo inicial padrão é chamada.
  2. O fulfillment para esse gerenciador de estado ("Hi! Eu sou...") foi adicionado à fila de respostas.
  3. O agente envia a fila de resposta para o usuário final.
Usuário final:quero alugar um carro.
Agente:onde você quer pegar o veículo?
  1. Rota de intent car_rental.reservation_create na Página inicial é correspondente.
  2. A sessão é transferida para a página Local de retirada.
  3. O formulário da página Local de retirada não está completo, então o agente usa o parâmetro pickup_location para solicitar ao usuário ("Onde você gostaria de retirar..."), que é adicionado à fila de respostas.
  4. O agente envia a fila de resposta para o usuário final.
Usuário final: Las Vegas
Agente: Ok, sua retirada será em Las Vegas.
Agente:seu local de entrega é diferente do local de retirada?
  1. A entrada do usuário final preenche o campo pickup_location solicitado pelo agente na turno da conversa.
  2. A intent car_rental.return_different_location rota no Fluxo inicial padrão seja correspondida.
  3. Trajeto de preenchimento do formulário na página Local de retirada é avaliado e chamado. Ele tem um atendimento do pedido ("Ok, retirada..."), que é adicionado à fila de respostas com suas referências de parâmetro resolvidas para valores reais fornecidos pelo usuário final.
  4. A sessão é transferida para a página Confirmar local.
  5. A página Confirmar local tem um fulfillment de entrada ("Seu local de entrega é diferente..."), que é adicionado à fila de respostas.
  6. O agente envia a fila de resposta para o usuário final.
Usuário final:sim. Vou deixar o carro em Los Angeles.
Agente: Ok, o desembarque será em Los Angeles.
Agente: Em que data e hora você quer retirar o veículo?
  1. A intent car_rental.return_different_location rota no Fluxo inicial padrão seja correspondida.
  2. A sessão é transferida para a página Drop Off Location.
  3. A entrada do usuário final preenche o campo drop_off_location solicitado pelo agente na turno da conversa.
  4. Rota de preenchimento do formulário na página Drop Off Location é avaliado e chamado. Ele tem um cumprimento ("Ok, seu desembarque..."), que é adicionado à fila de respostas.
  5. A sessão é transferida para a página Rental Duration.
  6. A página Rental Duration tem valores de formulário incompletos, por isso solicita ao usuário o parâmetro pickup_date_time. ("Que data e hora você gostaria de retirar..."), que é adicionado à fila de respostas.
  7. O agente envia a fila de resposta para o usuário final.
Usuário final:quero pegar o carro no dia 5 de março ao meio-dia.
Agente: Em que data e hora você quer entregar o veículo?
  1. A entrada do usuário final preenche o campo pickup_date_time solicitado pelo agente na turno da conversa.
  2. A página Rental Duration tem outro valor de formulário ausente, Por isso, ele solicita ao usuário o parâmetro drop_off_date_time. ("Que data e hora você gostaria de desembarcar..."), que é adicionado à fila de respostas.
  3. O agente envia a fila de resposta para o usuário final.
Usuário final:15 de março ao meio-dia.
Agente: Para confirmar:

Você vai buscar o veículo em Las Vegas 2024-03-05 12:00:00 e deixar em Los Angeles 15-03-2024 12:00:00

O que você acha?
  1. A entrada do usuário final preenche o campo drop_off_date_time solicitado pelo agente na turno da conversa.
  2. A sessão é transferida para a página Confirmar duração da locação.
  3. A página Confirmar duração da locação tem um cumprimento de entrada ("Para confirmar..."), que é adicionado à fila de respostas.
  4. O agente envia a fila de respostas ao usuário final.
Usuário final: sim, obrigado.
Agente: Ótimo! Agora, vamos escolher um veículo.
Agente: Você quer uma opção econômica ou de luxo veículo?
  1. A intent small_talk.confirmation.yes. trajeto na página Confirm Rental Duration é correspondente.
  2. O agente confirma a escolha do usuário com uma mensagem ("Ótimo! Agora, vamos escolher..."), que é adicionado à fila de respostas.
  3. A sessão é transferida para a página Desambiguação do veículo.
  4. O formulário da página Desambiguação de veículos não está completo, então agente usa o parâmetro vehicle_type para pedir ao usuário ("Você gostaria de uma economia ou um luxo..."), que é adicionado à fila de respostas.
  5. O agente envia a fila de resposta para o usuário final.
Usuário final:economia, por favor.
Agente: Você quer o carro ou o caminhão Cymbal?
  1. A intent $session.params.vehicle_type="economy_vehicle" é feita a correspondência.
  2. A sessão é transferida para a página Opções econômicas.
  3. A página Opções de economia tem um fulfillment de entrada ("Você gostaria de..."), que é adicionado à fila de respostas.
  4. O agente envia a fila de resposta para o usuário final.
Usuário final:Cymbal Truck.
Agente: O caminhão Cymbal custa US $50,33 por dia. Ele acomoda quatro pessoas e vem com rádio AM/FM. Quer prosseguir para o pagamento?
Usuário final:sim.
  1. A intent $session.params.vehicle_type="Cymbal Truck" é correspondente e o parâmetro vehicle_model é preenchido.
  2. A sessão é transferida para a página Confirm Cymbal Truck.
  3. A página Confirmar caminhão da Cymbal tem um fulfillment de entrada ("O caminhão Cymbal custa US $50,33 por dia..."), que é adicionado à fila de respostas.
  4. O agente envia a fila de resposta para o usuário final.
  5. A resposta do usuário corresponde a small_talk.confirmation.yes. trajeto.
Agente: Qual tipo de cartão você vai usar?
Usuário final:Altostrat
Agente: Insira o número do cartão.
Usuário final:1234 1234 1234 1234
Agente: Qual é o nome no cartão?
Usuário final: Charlie
Agente: Qual é o endereço de faturamento?
Usuário final: 1800 Amphibious Blvd. Mountain View, CA
Agente: Qual é o CEP de faturamento?
Usuário final: 94045
Agente:você vai escolher o carro Cymbal em Las Vegas, 2024-03-05 12:00:00 e deixando para lá, 2024-03-15 12:00:00. O total desta viagem será US$ 175,38.
Agente: Agradecemos o aluguel. Tenha um ótimo dia!
  1. A sessão é transferida para a página Pagamento.
  2. O agente solicita que o formulário Payment não esteja completo. o usuário para card_type, card_number, billing_name, billing_name, e billing_zip_code ("Que tipo de card vai..."), que são adicionados sequencialmente à fila de resposta e enviados como o usuário responde. As respostas do usuário definem cada valor de parâmetro.
  3. A sessão é transferida para a página Confirmação de locação.
  4. A página Confirmação de locação tem um fulfillment de entrada ("Ok, sua retirada será..."), que é adicionado à fila de respostas.
  5. O agente envia a fila de resposta para o usuário final.
  6. A sessão é transferida para a página Encerrar sessão.

Enviar mensagens de cartão do Dialogflow

O Dialogflow pode responder com text ou card. Para responder com um cartão especifique-a como uma payload personalizado no fulfillment.

O JSON a seguir mostra como enviar uma mensagem de card como um payload personalizado no processamento do pedido:

json

{
  'cardsV2': [{
    'cardId': 'createCardMessage',
    'card': {
      'header': {
        'title': 'A card message!',
        'subtitle': 'Sent from Dialogflow',
        'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png',
        'imageType': 'CIRCLE'
      },
      'sections': [
        {
          'widgets': [
            {
              'buttonList': {
                'buttons': [
                  {
                    'text': 'Read the docs!',
                    'onClick': {
                      'openLink': {
                        'url': 'https://developers.google.com/workspace/chat'
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  }]
}

Limites e considerações

  • Eventos de interação do chat têm suporte limitado e algumas considerações:
    • O seguinte tipos de eventos de interação têm suporte:
      • MESSAGE
      • ADDED_TO_SPACE
      • CARD_CLICKED
    • Para eventos MESSAGE ou ADDED_TO_SPACE, a entrada da consulta enviada ao O agente do Dialogflow corresponde ao valor do campo argumentText no a mensagem do Chat. Se a mensagem incluir um comando de barra, o valor o campo text é usado.
    • Para eventos CARD_CLICKED, a entrada da consulta enviada ao agente do Dialogflow é formatado como CARD_CLICKED.functionName, em que functionName corresponde ao valor do campo function da Objeto Action anexado ao elemento interativo do card (como um botão).
    • O payload completo do JSON de cada evento de interação do Chat é enviada ao Dialogflow como payload personalizado no parâmetro de consulta; podem ser acessados Webhook do Dialogflow consultando o valor do campo WebhookRequest.payload.
  • Considerações para responder a comandos de barra e como receber dados de cards ou caixas de diálogo:
    • Quando os apps do Dialogflow Chat recebem uma mensagem com uma barra a entrada da consulta vai conter apenas o valor do campo text. O campo text começa com o nome do comando de barra (por exemplo, /command), que pode ser usado para configurar a intent do agente do Dialogflow para detectar um comando de barra.
    • Se o agente do Dialogflow precisar processar a Payload JSON do evento de interação do chat: ele pode fazer isso usando Webhook do Dialogflow para inspecionar o payload personalizado no parâmetro de consulta.
    • Para exibir uma caixa de diálogo do agente do Dialogflow, responda com um único payload JSON personalizado que inclui uma mensagem contendo um DIALOG. resposta à ação.
    • Para processar dados inseridos em cartões, o agente do Dialogflow pode detectar intents que começam com o texto CARD_CLICKED e respondem com uma que contém um único payload JSON personalizado action.
  • Visualizações de links não são compatíveis.
  • Se o agente do Dialogflow responder com apenas uma mensagem, ela será enviada é enviada ao Google Chat de maneira síncrona. Se o agente do Dialogflow responder com várias mensagens, todas serão enviadas para o Chat de forma assíncrona, chamando o create método no recurso spaces.messages na API Chat uma vez para cada mensagem.
  • Ao usar a integração do Dialogflow CX com o Chat, o agente do Dialogflow e o app do Chat precisam estar configurados no mesmo projeto do Google Cloud. Se você precisar configurar o Dialogflow e Chat em diferentes projetos do Cloud, será possível configurar um servidor intermediário para facilitar a conexão. Para saber como, ver isso Exemplo de integração do Chat para o Dialogflow CX no GitHub.

Resolver problemas

Quando um app ou card retornar um erro, o A interface do chat mostra a mensagem "Algo deu errado". ou "Não foi possível processar sua solicitação". Às vezes, a interface do Chat não exibe nenhuma mensagem de erro, mas o app do Chat ou produz um resultado inesperado; por exemplo, uma mensagem de cartão pode não aparecer.

Embora uma mensagem de erro possa não aparecer na interface do Chat, mensagens de erro descritivas e dados de registro estão disponíveis para ajudar você a corrigir os erros quando a geração de registros de erros nos apps do Chat está ativada. Para receber ajuda com a visualização, depurar e corrigir erros, consulte Resolver problemas e corrigir erros do Google Chat.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelo recursos usados neste tutorial, recomendamos que você exclua os do Google Cloud.

  1. No console do Google Cloud, acesse a página Gerenciar recursos. Clique em Cardápio > IAM e Administrador > Gerenciar recursos.

    Acessar o Resource Manager

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo o projeto.
  • O Dialogflow CX usa uma máquina de estado abordagem de design de agentes do Dialogflow, oferecendo informações claras e explícitas controle sobre uma conversa, uma melhor experiência do usuário final e um desenvolvimento de software. Ao criar um Dialogflow Chat, recomendamos o uso do Dialogflow CX.
  • Dialogflow ES (em inglês) é outra maneira de usar o Dialogflow com um app do Chat.