Este guia fornece práticas recomendadas gerais para a conceção de todos os tipos de agentes.
Também deve consultar o guia de design de agentes de voz especificamente para criar agentes de voz e o guia de práticas recomendadas para usar o serviço de agentes conversacionais (Dialogflow CX).
Conselhos gerais
Crie agentes iterativamente
Se o seu agente for grande ou complexo, comece por criar uma caixa de diálogo que apenas responda aos pedidos de nível superior. Assim que a estrutura básica estiver estabelecida, itere nos caminhos de conversa para garantir que abrange todos os caminhos possíveis que um utilizador final pode seguir.
À medida que o seu agente evolui, considere usar a funcionalidade casos de teste para o desenvolvimento orientado por testes.
Agentes pré-criados
Os agentes de conversação (Dialogflow CX) oferecem modelos de agentes para ajudar a começar. Os agentes pré-criados abrangem exemplos de utilização comuns, como serviços financeiros, telecomunicações e viagens. Estes agentes incluem intenções e entidades para abranger as consultas de utilizadores mais comuns. Adicione rotas e preenchimento específicos da sua empresa e crie rapidamente um agente funcional.
Integrações e associação dos seus serviços
Existem várias formas de fazer a integração com agentes de conversação (Dialogflow CX). Esta secção fornece práticas recomendadas para escolher como fazer a integração.
Integrações
As integrações dos agentes conversacionais (Dialogflow CX) oferecem uma interface do utilizador pronta a usar para o seu agente. Se usar uma integração, não precisa de chamar diretamente a API Conversational Agents (Dialogflow CX), uma vez que as integrações processam esta ação por si. Estas integrações podem fornecer um agente de texto que pode incorporar no seu Website, estabelecer ligação com outras plataformas de mensagens ou fornecer uma interface de telefonia.
API Conversational Agents (Dialogflow CX)
Se nenhuma das integrações prontas a usar for adequada, ou quiser personalizar a interface para o seu sistema, pode usar a API Conversational Agents (Dialogflow CX) diretamente. Com esta abordagem, tem de implementar a interface do utilizador para o seu agente ou usar uma interface do utilizador existente.
Webhooks
A menos que o seu agente possa ser completamente definido com dados estáticos, tem de usar webhooks para ligar o seu serviço e fornecer um agente que possa processar cenários dinâmicos. Isto aplica-se quer esteja a usar integrações ou a API Conversational Agents (Dialogflow CX).
Recursos para agentes
Os recursos do agente de agentes conversacionais (Dialogflow CX) podem ser usados de várias formas para alcançar um resultado desejado. Esta secção oferece sugestões para escolher os recursos certos para os cenários certos.
Fluxos e páginas
Os fluxos e as páginas dão estrutura ao seu agente. Pode considerar as páginas como nós numa máquina de estados e os fluxos como grupos de páginas relacionadas. Controla as transições entre nós com gestores de estado, que são chamados quando uma intenção é correspondida, uma condição é cumprida ou um evento é invocado.
Um agente simples pode funcionar bem com um único fluxo, mas os agentes complexos são quase sempre mais bem concebidos com vários fluxos. Cada fluxo deve representar um tópico de alto nível para o seu agente, em que cada página associada ao fluxo ajuda a processar o tópico. Além disso, cada fluxo pode ter algumas das suas próprias definições e pode ser detido por um subconjunto de membros da equipa, o que ajuda a dividir o trabalho ao criar agentes grandes.
Quando cria um agente grande e complexo, tem de ter em conta os limites de"fluxos por agente" e "páginas por fluxo". Estes limites ajudam a manter o desempenho do seu agente.
Se o design do seu agente tiver demasiados fluxos por agente, combine tópicos relacionados num único fluxo. Por exemplo, pode combinar os seguintes tópicos num único fluxo "Obter saldo":
- Obtenha o saldo da conta corrente
- Obtenha o saldo de poupanças
- Obtenha o saldo da hipoteca
- Obtenha o saldo de crédito
Se o design do seu agente tiver demasiadas páginas por fluxo, combine as páginas relacionadas e use muitas rotas por página.
Se ainda tiver dificuldades com os limites de fluxo e de páginas, pode dever-se ao facto de ter demasiada lógica empresarial incorporada no próprio agente. Considere mover esta lógica para webhooks.
A lista seguinte indica o nível de detalhe do controlo de conversas dos recursos de agentes por ordem crescente de detalhe:
- Agentes (um agente processa todas as conversas)
- Fluxos (um fluxo processa um ou mais tópicos de conversa relacionados)
- Páginas (uma página processa um ou mais turnos de conversa relacionados)
- Rotas (uma rota processa uma intenção do utilizador ou uma verificação de condição)
Parâmetros de intenção versus parâmetros de formulário
A principal forma como o seu sistema recebe dados estruturados do utilizador final é através de parâmetros. Pode usar parâmetros para intenções (parâmetros de intenção) ou páginas (parâmetros de formulário).
O objetivo principal de algumas páginas é recolher informações específicas do utilizador final. Por exemplo, uma página pode ser concebida para recolher as informações de contacto do utilizador final. Neste caso, deve sempre usar parâmetros de formulário para recolher estas informações.
Em alguns casos, é recomendável captar informações do utilizador final durante a transição de uma página para outra. Por exemplo, se o utilizador final pedir um produto específico no início da conversa, quer captar o produto desejado durante a transição para a página de encomenda adequada. Neste caso, use parâmetros de intenção como parte dos trajetos de intenção.
Também existem situações em que é ideal usar parâmetros de intenção e parâmetros de formulário. Por exemplo, se o utilizador final pedir uma camisola pequena no início da conversa, quer captar o parâmetro de tamanho desejado (pequeno) durante a transição para a página de encomenda de camisolas. A página de encomenda da camisola pode pedir informações adicionais, como a cor pretendida. A página de encomenda de camisolas deve ter parâmetros de formulário para o tamanho e a cor. Neste exemplo, o parâmetro de tamanho já foi fornecido e é propagado, pelo que o agente só pede a cor. No entanto, outras conversas podem seguir um caminho diferente, em que o utilizador final não forneceu o tamanho pretendido quando a página de encomenda de camisas ficou ativa. Ao definir este parâmetro de ambas as formas, o seu agente é mais flexível na forma como extrai as informações.
Rotas e grupos de rotas
Se quiser fazer a transição para outra página, colocar em fila uma mensagem de resposta, ou chamar um webhook quando é encontrada uma intenção ou é cumprida uma condição, use rotas.
Se usar o mesmo conjunto de rotas em várias páginas, use grupos de rotas. Isto evita a duplicação desnecessária no design do seu agente.
Reutilização de intenções
Se estiver a definir várias intenções com expressões de preparação semelhantes, considere reutilizar as intenções em várias páginas. Idealmente, deve definir algumas intenções de propósito geral que são usadas em muitas páginas e algumas intenções específicas que só são usadas numa única página. Isto evita a duplicação desnecessária no design do seu agente.
Por exemplo, as intenções de confirmação são normalmente melhor definidas como intenções reutilizáveis.
Uma intenção de confirmation.yes
pode ter expressões de preparação como:
- sim
- sim
- sim
- ok
- sim, faz isso
- podes crer
- absolutamente
- sim por favor
Uma intenção de confirmation.no
pode ter expressões de preparação como:
- não
- nah
- não
- nem pensar
- não é para mim
- claro que não
- não
Estas intenções de confirmação reutilizáveis podem ser usadas em muitos cenários para o seu agente.
Em alguns casos,
também deve considerar criar intenções de confirmação especializadas.
Por exemplo, quando confirmar uma encomenda, pode querer ter um objetivo especializado com expressões de treino como:order.confirmation.yes
- a encomenda parece-me bem
- Aceito esta encomenda
Além disso, um objetivo order.confirmation.no
especializado
com expressões de treino como:
- Não quero esta encomenda
- Não aceito esta encomenda
Quando a página de confirmação de encomenda está ativa, as rotas de intenção para todas estas quatro intenções devem estar no âmbito. Isto garante que qualquer confirmação genérica ou específica do utilizador final é processada adequadamente.
Intenção negativa predefinida
Deve preencher a intenção negativa predefinida com expressões que os utilizadores finais possam dizer, mas que não devem corresponder a nenhuma intenção no seu agente.
Fulfillment
Existem muitas opções para usar o cumprimento para responder ao utilizador final. Durante uma interação da conversa, o agente pode anexar várias mensagens à fila de respostas, e a fila concatenada é enviada ao utilizador final no final da interação da conversa. Esta secção descreve cada opção para criar as mensagens individuais.
- Preenchimento de entrada na página:
este preenchimento é chamado quando a página se torna inicialmente ativa.
É útil quando quer uma mensagem que descreva a finalidade da página e só deve ser dita uma vez enquanto a página estiver ativa.
Por exemplo:
- O que quer saber sobre a sua conta à ordem?
- Que tipo de produto quer comprar?
- Preciso de recolher algumas informações sobre a camisola que quer encomendar.
- Rotas:
este processamento é chamado quando é chamada uma rota de intenção ou uma rota de condição
com processamento.
Isto é útil quando quer uma mensagem que responda ao utilizador final sobre a correspondência de intenções, a condição satisfeita (que pode ser uma condição de conclusão do preenchimento de formulários) ou a transição.
Por exemplo:
- Sim, o seu plano internacional inclui o Japão. (correspondência de intenção)
- Tem a certeza de que quer comprar 300 camisas? (condição de comparação cumprida)
- OK. A sua reunião é amanhã às 07:00. (conclusão do preenchimento de formulários)
- OK, vamos falar sobre os porcos-formigueiros agora. (transição)
- Controladores de eventos:
este processamento é chamado quando um evento é invocado.
É útil quando quer uma mensagem que responda ao evento.
Por exemplo:
- O valor das ações que está a considerar comprar aumentou 10%. (evento personalizado)
- Pode reformular? (evento sem correspondência)
- Comandos iniciais para formulários:
Este preenchimento é chamado quando o agente preenche formulários.
Estas mensagens devem fazer uma pergunta específica ao utilizador final.
Cada parâmetro de formulário tem o seu próprio preenchimento de comando inicial.
Por exemplo:
- Que tamanho de camisola quer?
- Que cor de camisa quer?
- Controladores de repetição de pedidos para formulários:
este preenchimento é chamado quando o agente está a preencher formulários
e não compreende a seleção do utilizador final para o parâmetro atual.
Este preenchimento só é necessário se quiser que uma mensagem de repetição seja diferente da mensagem de comando inicial.
Se não existirem controladores de reprompt,
o agente usa apenas o comando inicial como a mensagem de reprompt.
Por exemplo:
- Não compreendo. Pode indicar uma cor válida para a camisola?
Atribuição de nomes
Esta secção fornece sugestões para dar nomes aos recursos de agentes.
Nomenclatura de intenções
Se o seu agente tiver muitas intenções, deve considerar um esquema de nomenclatura que ajude a mantê-las organizadas. É comum segmentar os nomes de intenções com pontuação, em que a especificidade aumenta da esquerda para a direita. Além disso, um nome de intenção deve refletir a intenção do utilizador final para uma interação de conversa.
Existem muitos bons esquemas de nomenclatura, mas aqui está um exemplo:
- phone-service.order.cancel
- phone-service.order.create
- phone-service.order.change
- tv-service.order.cancel
- tv-service.order.create
- tv-service.order.change
- account.balance.get
- account.balance.pay
- account.address.get
- account.address.update
Transições
As transições definidas nos controladores de estado permitem controlar a conversa alterando a página ativa. Esta secção oferece sugestões para organizar as transições de agentes.
Transições sem custo financeiro
Ao definir uma rota que aciona uma transição, tenha em atenção que pode existir uma rota complementar ou inversa.
Por exemplo:
- Se tiver um caminho de intenção para confirmation.yes, considere definir outro caminho para confirmation.no.
- Se definir uma rota de condição com um operador booleano
=
, considere definir outra rota que use!=
.
Processamento da entrada do utilizador final
Esta secção fornece diretrizes para intenções e expressões de preparação, para que o seu agente possa processar e processar de forma ideal a entrada do utilizador final.
Defina, pelo menos, 20 expressões de preparação
Deve ter, pelo menos, 20 expressões de preparação para cada intenção. Caso contrário, o modelo de PNL pode não ter informações suficientes para corresponder adequadamente à sua intenção. Esta é uma diretriz mínima. Idealmente, deve definir mais, especialmente para intenções principais de grandes agentes, onde cerca de 50 é desejável.
Tenha em atenção o preconceito de intenção
Quando uma ou mais intenções têm significativamente mais expressões de preparação do que outras intenções, isto faz com que o modelo de PNL seja tendencioso a favor das intenções maiores devido a dados desequilibrados. Esta parcialidade de intenção pode ocorrer quando a quantidade de expressões de preparação difere por uma ordem de magnitude ou mais.
Em alguns casos, este é o comportamento desejado, porque pode definir algumas intenções que devem ser correspondidas com mais frequência do que outras, porque correspondem a entradas do utilizador final observadas com mais frequência no tráfego em direto.
Noutros casos, este comportamento pode ser indesejável, porque não quer um viés a favor destas intenções maiores. Se for este o caso, reduza o número de expressões de treino para estas intenções maiores para que tenham a mesma ordem de magnitude que outras intenções. Por exemplo:
Expressões de preparação da intenção A | Frases de preparação de intenção B | Compensação para intenção B |
---|---|---|
20 | 50 | Não |
20 | 200 | Limite |
20 | 2000 | Sim |
Utilização de entidades e quantidade de expressões de treino
Para todos os tipos de entidades usados numa intenção:
- Anotar todos os exemplos dos tipos de entidades.
- Para cada um dos tipos de entidades, forneça, pelo menos, cinco expressões de preparação que contenham exemplos anotados.
- Forneça, pelo menos, três vezes mais expressões de preparação do que tipos de entidades. Por exemplo, se usar 10 tipos de entidades diferentes para anotações numa intenção, deve ter, pelo menos, 30 expressões de preparação.
As expressões de treino devem ser naturais
As expressões de treino devem ser conversacionais e naturais; devem corresponder ao que as pessoas dizem realmente. Sempre que possível, use as entradas do utilizador final que ocorreram na produção como dados de preparação, prestando especial atenção às mais comuns.
Variedade de expressões de preparação necessárias
Inclua variações de perguntas, comandos, verbos e sinónimos para substantivos comuns para garantir que as suas expressões abrangem um vasto espetro de possíveis pedidos.
É melhor incluir algumas expressões mais curtas, como "pagar a minha fatura", bem como expressões e frases mais longas, como "Acabei de receber algo por correio que diz que tenho de pagar o saldo do meu extrato". Não existe uma proporção recomendada de frases curtas para longas, mas deve basear-se nas entradas reais dos utilizadores finais enviadas para o seu agente em produção.
Definir expressões de treino com variações no comprimento, na formulação e na estrutura das frases é importante para garantir um bom treino do seu agente. Não é necessário adicionar variedade por adicionar, mas é necessário fornecer variedade suficiente para que o modelo de PNL possa detetar com êxito a intenção do utilizador final a partir de uma vasta gama de entradas do utilizador final. Se não tiver variedade suficiente, existe o perigo de sobreajuste. Por outras palavras, existe o perigo de o modelo ficar demasiado ligado aos exemplos específicos que fornece e não generalizar o suficiente para outros exemplos.
Variedade de letras maiúsculas
A sensibilidade a maiúsculas e minúsculas varia consoante o modelo de PNL que o seu agente está a usar.
CLN padrão
O modelo de PNL padrão não é sensível a maiúsculas e minúsculas. Em casos raros, pode ter de adicionar expressões de preparação que variam apenas na utilização de maiúsculas/minúsculas. Isto aplica-se normalmente a situações em que espera que os utilizadores finais forneçam entradas de texto em maiúsculas.
As abordagens alternativas podem ser:
- Diminuir o limiar de classificação da aprendizagem automática
- Converter as entradas do utilizador final em minúsculas antes de as enviar para agentes conversacionais (Dialogflow CX).
CLN avançada
Ao contrário do modelo de PNL padrão, o modelo de PNL avançado é sensível a maiúsculas e minúsculas. Recomendamos que teste e adicione os dados de preparação relevantes com letras maiúsculas para aumentar as taxas de correspondência de intenções.
Variedade desnecessária de expressões de preparação
Evite variações triviais nas expressões de preparação, pois fornecem informações duplicadas ao modelo de PNL. Por exemplo, não inclua variantes que difiram apenas por:
- Uso de maiúsculas: se estiver a usar o modelo de PNL padrão, evite frases duplicadas, como "Quero comprar um bilhete" e "quero comprar um bilhete", exceto em casos raros. No entanto, o modelo de PNL avançado é sensível a maiúsculas e minúsculas e requer mais frases de preparação para aumentar as correspondências de intenções. Consulte a secção de variedade de capitalização para ver detalhes.
- Palavras de preenchimento: Por exemplo, "OK, encomenda um bilhete" e "encomenda um bilhete".
- Pontuação: Por exemplo, "podes ajudar?" e "podes ajudar?!"
Consistência das anotações
A parte da expressão de treino selecionada para uma anotação deve incluir todo o texto necessário para corresponder a uma entidade e não mais do que isso. Além disso, certifique-se de que as partes semelhantes das expressões de preparação estão anotadas para toda a intenção.
Por exemplo,
a tabela seguinte mostra formas boas e más
de anotar com a entidade do sistema @sys.date
:
Boa | Má |
---|---|
Partida a 7 de setembro | Partida a 7 de setembro |
Partida a 4 de julho | A sair a 4 de julho |
Use anotações semanticamente significativas para entidades do sistema
O significado semântico de uma parte da expressão de preparação selecionada para uma anotação pode ser afetado pelo resto do texto numa expressão de preparação. Por exemplo:
Expressão de preparação anotada | Significado semântico do texto anotado |
---|---|
Tenho 7 anos | A idade de uma pessoa |
O contrato é válido durante 7 anos | Uma duração |
Os modelos de aprendizagem automática dos agentes conversacionais (Dialogflow CX) consideram o significado semântico quando fazem a correspondência de entidades do sistema. O significado semântico da parte da expressão de preparação tem de corresponder ao significado semântico pretendido da entidade do sistema.
Por exemplo, não use a entidade do sistema @sys.duration
para a anotação do primeiro exemplo "7 anos" acima.
O significado semântico de "7 anos" não corresponde a uma duração simples.
Em alternativa, deve selecionar "7" para a anotação e usar a entidade do sistema @sys.number
.
Defina intenções para processar respostas de preenchimento de formulários não conformes
Considere definir intenções para processar respostas de preenchimento de formulários não conformes. Por exemplo, o seu agente pode perguntar "Quais são as datas da sua viagem?", seguido da resposta do utilizador final "Ainda não sei". Esta resposta não satisfaz o comando do parâmetro do formulário, mas se o seu agente tiver uma rota de intenção no âmbito que possa corresponder a esta resposta, o seu agente pode lidar bem com a situação.
Evite @sys.any
Evite usar o tipo de entidade do sistema @sys.any
.
Só deve ser usado se tiver esgotado completamente todas as opções, incluindo a criação de entidades personalizadas.
Este tipo de entidade é muito abrangente e pode causar um comportamento indesejado.
Se usar este tipo de entidade, evite anotar várias partes de uma única expressão de preparação com este tipo de entidade, uma vez que isto cria uma ambiguidade e o comportamento do agente fica indefinido.
É menos perigoso usar @sys.any
com parâmetros de formulário, porque o agente espera informações específicas quando pede parâmetros de formulário.
As anotações devem incluir uma variedade de valores de entidades
Quando definir expressões de preparação anotadas, deve usar uma variedade de exemplos de valores de entidades nas expressões. Não deve usar sempre o mesmo exemplo de entidade para as anotações. O exemplo seguinte mostra boas e más anotações para um tipo de entidade de produto:
Boa | Má |
---|---|
Quero comprar uma camisola | Quero comprar uma camisola |
Encomende um novo chapéu | Encomende uma nova camisola |
Adiciona um relógio ao meu carrinho | Adiciona uma camisa ao meu carrinho |
As entidades personalizadas devem incluir variedade
As entidades personalizadas devem abranger uma vasta gama de exemplos. O modelo de PNL oferece variedade para formas gramaticais, mas tem de incluir todos os itens possíveis.
Evite entidades que correspondam de forma agressiva
Não defina entidades que correspondam a praticamente tudo. Isto degrada o desempenho e a qualidade da aprendizagem automática. Quase tudo em cada expressão de preparação é avaliado como uma possível correspondência.
Os mapas e as listas de entidades devem focar-se em valores distintos
Os tipos de entidades de mapa e lista devem ter um âmbito limitado que capture valores distintos de um tipo de informação. Mantenha as suas entidades focadas, curtas e simples.
Se os valores das suas entidades forem complicados, pode dever-se ao facto de as expressões de preparação de intenções serem mais adequadas à sua situação. Por exemplo, considere a entrada do utilizador final, como:
- "Como posso fazer uma chamada internacional com o plano A?"
- "A usar roaming de dados internacional com o plano B."
Não crie tipos de entidades para as ações e os planos, como o seguinte:
Tipo de entidade de ações | Tipo de entidade de planos |
---|---|
"Como posso fazer uma chamada internacional" | "Plano A" |
"A usar roaming de dados internacional" | "Plano B" |
Em alternativa, deve usar expressões de treino e correspondência de intenções para captar as ações e as entidades para captar os planos.
Use entidades regexp para capturar identificadores que não sejam palavras
Quando captar a entrada do utilizador final que envolve identificadores que não são palavras, deve usar entidades regexp. Por exemplo, para capturar IDs de produtos como "AA-256" ou "AC-436", use uma entidade regexp como "[A-Z]{2}-\d{3}".
Evite aninhar entidades compostas
Não use mais do que um nível de aninhamento em entidades compostas. Cada nível de aninhamento degrada significativamente a qualidade.
Evite intenções semelhantes
Cada intenção deve captar a intenção do utilizador final. Se definir intenções diferentes com expressões de preparação semelhantes, a correspondência pode não ser fiável, porque o modelo de PNL não consegue determinar com confiança suficiente a intenção com a qual estabelecer correspondência.
Se duas expressões de preparação representarem a mesma intenção, devem pertencer à mesma intenção. Por exemplo, "alterar data de vencimento atual" e "mais tempo para pagar" devem pertencer à mesma intenção, porque ambos estão a pedir uma alteração da data de vencimento. No entanto, "Posso fazer uma chamada internacional com o plano A?" e "Posso usar roaming de dados internacional com o plano A?" podem pertencer a intenções diferentes, porque o utilizador final quer algo diferente em cada caso.
Evite tipos de entidades semelhantes
Deve evitar definir vários tipos de entidades que tenham entradas de entidades semelhantes, porque isto pode levar a ambiguidades para o modelo de PNL.
Use eventos de não correspondência em produção para melhorar as suas intenções
Quando executa o seu agente em produção, é inevitável que algumas entradas do utilizador final resultem em eventos sem correspondências. Pode usar estas oportunidades para melhorar o seu agente de uma das seguintes formas:
- Adicione a entrada do utilizador final como uma expressão de preparação à intenção pretendida. No entanto, esta nem sempre é a melhor opção. Se o fizer muitas vezes para a intenção, pode levar a um desvio de intenção.
- Limpe as expressões de treino para a intenção desejada, de modo que todas reflitam com precisão a intenção. Em alguns casos, as intenções com expressões de treino divergentes podem impedir a correspondência com a intenção.
- Se as intenções que não devem ser correspondidas para a entrada do utilizador final tiverem frases de preparação que possam corresponder à entrada do utilizador final, elimine estas frases de preparação.
Evite carateres especiais
Os carateres especiais nas expressões de preparação ({
, _
, #
, [
, etc.) são ignorados.
Uma exceção a isto são os emoticons, que funcionam conforme esperado.
Evite palavras desnecessárias
As palavras desnecessárias são palavras que pode ignorar e continuar a compreender o texto. Por exemplo:
- por favor
- podes
- hmmm
- que tal
Não é necessário, mas não é prejudicial usar palavras de preenchimento em frases de preparação, porque são ignoradas pelo modelo de PNL. No entanto, não deve definir expressões de treino que variem apenas em palavras de preenchimento.
Nunca defina entidades compostas por palavras desnecessárias.
Experimente as definições de ML
As definições de ML podem ser usadas para ajustar a forma como a entrada do utilizador final é processada. Na maioria dos casos, as predefinições funcionam bem. No entanto, pode querer ajustar as definições para melhorar o desempenho do agente.
Responder ao utilizador final
Esta secção fornece diretrizes para usar o preenchimento para responder ao utilizador final.
Dê as boas-vindas ao utilizador final
Um agente recém-criado tem uma rota de intenção criada automaticamente para a intenção de boas-vindas. Deve editar este trajeto para incluir uma mensagem de processamento que dê as boas-vindas ao utilizador final. Esta mensagem deve descrever o agente e dar ao utilizador final uma ideia das suas capacidades.
Confirme as informações do utilizador final
Normalmente, é melhor repetir as informações fornecidas pelo utilizador final nas respostas. Isto permite que o utilizador final saiba que o agente está a compreender o seu pedido.
Quando uma intenção é correspondida e ocorre uma transição, informe o utilizador final de que a conversa está a progredir com base no respetivo pedido. Por exemplo:
Diálogo | Descrição |
---|---|
Utilizador final: tenho dúvidas sobre a minha conta à ordem. Agente: OK. O que quer saber sobre a sua conta à ordem? |
A entrada do utilizador final resultou numa correspondência de intenção e foi seguido um caminho que incluiu uma mensagem de processamento e uma transição para uma página que processa a verificação de perguntas sobre a conta. Tenha em atenção que o agente confirma que o utilizador final quer saber informações sobre a respetiva conta à ordem. |
Quando o preenchimento do formulário estiver concluído, repita os dados fornecidos pelo utilizador final. Por exemplo:
Diálogo | Descrição |
---|---|
Utilizador final: amanhã Agente: OK. O seu corte de cabelo está agendado para amanhã às 19:00. Posso ajudar em mais alguma coisa? |
O utilizador final forneceu o parâmetro de formulário de data, que foi o último parâmetro de formulário na página ativa. O agente confirmou a hora e a data de um corte de cabelo agendado. |
Oriente a conversa
O agente deve orientar sempre a conversa com o utilizador final. Isto é facilmente conseguido terminando cada resposta com uma pergunta como:
- Posso ajudar em mais alguma coisa?
- O que quer saber sobre beagles?
- Quer cancelar ou enviar essa encomenda?
- Em que posso ser útil?
- Está a viajar sozinho ou com alguém?
Ao definir estas perguntas, tenha cuidado para evitar fazer várias perguntas, como:
- Ainda está aqui? A que serviço se refere?
- Ainda quer esta encomenda? Quer adicionar algo?
O utilizador final pode responder apenas a uma das perguntas e o seu agente pode não processar essa situação corretamente.
Processar erros e entradas inesperadas do utilizador final
Esta secção fornece sugestões sobre como processar erros e informações inesperadas do utilizador final.
Crie controladores de eventos para eventos incorporados
Deve criar controladores de eventos para os eventos incorporados conforme aplicável. O processamento destes eventos é semelhante à deteção de exceções na programação de software. Consoante a situação, pode querer processar os eventos com processadores de eventos específicos de parâmetros, processadores de eventos específicos de páginas ou processadores de eventos específicos de fluxos.
Processe erros de webhook
Quando o serviço de webhook falha, é importante que o seu agente consiga processar a falha de forma adequada. Consegue isto definindo controladores de eventos para os eventos incorporados específicos do webhook. Segue-se uma abordagem recomendada para processar erros de webhook:
- Não forneça um destino de transição do processador de estado que aciona a chamada do webhook, caso contrário, o processador de eventos de erro do webhook não é invocado. Em alternativa, defina o destino da transição na resposta do webhook do serviço de webhook.
Escolha uma página onde um contador de erros possa ser inicializado como zero. Esta página deve estar ativa antes da página que aciona uma chamada de webhook. O preenchimento da entrada para esta página deve inicializar o contador de erros para
0
através de um predefinição de parâmetro de preenchimento. Por exemplo:Parâmetro Valor webhook-error-count
0
Crie uma página de erro de webhook que processe eventos de erro de webhook:
O preenchimento da entrada deve acusar a falha ao utilizador final e deve incrementar um parâmetro de sessão do contador de erros através de uma predefinição de parâmetros de preenchimento. Por exemplo:
Parâmetro Valor webhook-error-count
$sys.func.ADD($session.params.webhook-error-count, 1)
Defina uma rota de condição que tenha uma condição em que a contagem de erros seja inferior ao máximo permitido. (por exemplo,
$session.params.webhook-error-count <= 3
). Esta rota deve ter um preenchimento que notifique o utilizador final de que o agente vai tentar novamente. Esta rota deve ter um destino de transição definido como PREVIOUS_PAGE, ou para qualquer página que possa fazer outra tentativa de chamar o webhook.Defina um caminho de condição que tenha uma condição em que a contagem de erros seja superior ao máximo permitido (por exemplo,
$session.params.webhook-error-count > 3
). Este caminho deve ter um preenchimento que notifique o utilizador final de que o agente já não vai tentar novamente. Este trajeto deve ter um destino de transição definido para uma página que não aciona novas tentativas de webhook.
O controlador de eventos do webhook deve ter um destino de transição que transite para a página de erro do webhook.
Ferramentas
Esta secção fornece aconselhamento sobre a utilização de ferramentas para melhorar o design do agente.
Use a ferramenta de validação
Deve usar sempre a ferramenta de validação para verificar o seu agente. Esta ferramenta encontra alguns dos problemas descritos neste guia.
Use a funcionalidade de exemplos de testes
Deve sempre definir casos de teste para o seu agente. Estes exemplos de testes podem ajudar a evitar regressões enquanto o seu agente evolui para processar mais cenários.