Para uma interação conversacional de um agente, o agente tem de responder ao utilizador final com uma resposta a uma pergunta, uma consulta de informações ou o encerramento da sessão. O seu agente também pode ter de contactar o seu serviço para gerar respostas dinâmicas ou tomar medidas para uma interação. A realização é usada para realizar tudo isto.
Um preenchimento pode conter qualquer um dos seguintes elementos:
- Mensagens de resposta estáticas.
- Chamadas de webhook para respostas dinâmicas e/ou para tomar medidas.
- Predefinições de parâmetros para definir ou substituir valores de parâmetros.
Durante a vez de um agente, é possível (e, por vezes, desejável) chamar várias realizações, cada uma das quais pode gerar uma mensagem de resposta. Os agentes conversacionais (Dialogflow CX) mantêm estas respostas numa fila de respostas. Quando a vez do agente termina, os agentes conversacionais (Dialogflow CX) enviam as respostas ordenadas ao utilizador final.
Exemplos de utilização de processamento
O preenchimento é usado em todos os locais onde é necessária uma mensagem de resposta:
- Preenchimento de entradas de páginas
- Trajetos
- Controladores de eventos
- Comandos iniciais para formulários
- Controladores de repetição para formulários
Para cada um destes exemplos de utilização, a consola abre um painel de edição de processamento.
Respostas do agente (opções de diálogo)
As mensagens de resposta do agente são respostas do agente que define no momento da conceção. Define-os quando cria o processamento. Em tempo de execução, estas respostas são adicionadas à fila de respostas.
Existem vários tipos de mensagens de resposta, que são descritos nas subsecções seguintes. Quando usa a consola, um painel de processamento tem um cartão inicial de diálogo do agente, mas pode clicar em + Adicionar resposta de diálogo para adicionar mais cartões para outros tipos de mensagens de resposta.
Resposta de texto estático
As mensagens de resposta de texto estático enviam um diálogo de texto ao utilizador final. Se as suas chamadas à API detect intent ou chamadas de integração usarem a síntese de voz, este texto vai ser usado para gerar conteúdo de áudio. Neste caso, o texto fornecido pode usar opcionalmente a linguagem de marcação de síntese de voz (SSML).
Pode definir vários cartões de resposta de texto e várias respostas de texto em cada cartão. Se definir vários cartões, estes são concatenados para uma única resposta no tempo de execução. Se definir várias respostas num cartão, uma das mensagens no cartão é escolhida aleatoriamente no tempo de execução.
Estas mensagens de texto podem conter referências de parâmetros e funções do sistema incorporadas.
Payload personalizado
Algumas integrações suportam uma resposta de payload personalizada para processar respostas avançadas. Estes payloads personalizados têm de ser fornecidos no formato JSON definido na documentação da integração. Por exemplo, consulte o formato de payload personalizado do Dialogflow CX Messenger.
Pode incluir referências de parâmetros no seu JSON de payload personalizado. Devem ser tratados como valores de string JSON, por isso, certifique-se de que os coloca entre aspas. Por exemplo:
{ "someField": "$session.params.date" }
Também pode enviar um payload personalizado para integrações que desenvolve. Não é processado por agentes conversacionais (Dialogflow CX), pelo que tem de o processar na sua própria lógica empresarial.
Consulte também a secção seguinte sobre modelos de payload personalizados.
Transição para agente em direto
Esta resposta indica ao autor da chamada da API Detect Intent que a conversa deve ser transferida para um agente humano. Os agentes conversacionais (Dialogflow CX) usam este sinal apenas para identificar conversas que são transferidas para fins de medição e não alteram o estado da sessão de forma alguma. O seu sistema ou integração pode usar este sinal para tomar as medidas necessárias para transferir a conversa. Os agentes conversacionais (Dialogflow CX) não impõem qualquer estrutura a estes dados, pelo que pode escolher qualquer estrutura adequada ao seu sistema.
Metadados de sucesso da conversa
Esta resposta indica ao autor da chamada da API Detect Intent que a conversa com o agente de agentes de conversação (Dialogflow CX) foi bem-sucedida. Os agentes conversacionais (Dialogflow CX) usam este sinal apenas para identificar conversas que tiveram êxito para fins de medição e não alteram o estado da sessão de forma alguma. O seu sistema ou integração pode usar este sinal para tomar as medidas necessárias. Os agentes conversacionais (Dialogflow CX) não impõem qualquer estrutura a estes dados, pelo que pode escolher qualquer estrutura adequada ao seu sistema.
Ouvir áudio pré-gravado
Esta resposta reproduz um ficheiro de áudio para integrações que suportam esta funcionalidade.
Os requisitos de formato de ficheiro de áudio podem ser diferentes para diferentes integrações. Por exemplo, consulte os requisitos para o Dialogflow CX Phone Gateway.
Para as integrações de telefonia de parceiros, o URL do ficheiro de áudio tem de ser acessível pelo parceiro. Um URL disponível publicamente, como um ficheiro público no Cloud Storage, é sempre acessível pelo parceiro. O parceiro também pode fornecer acesso restrito a ficheiros de áudio. Consulte a documentação do parceiro para ver detalhes.
Texto de áudio de saída
Esta resposta é semelhante à resposta de texto, mas só é aplicável à síntese de voz. Se o seu agente puder processar sessões de texto e voz, pode usar respostas de texto e texto de áudio de saída únicas para criar uma experiência do utilizador diferente para texto e voz. Se for fornecido texto de áudio de saída para uma sessão de voz, as respostas de texto simples são ignoradas.
Se o seu agente processar sessões de texto e voz e quiser as mesmas mensagens de resposta, basta usar respostas de texto para ambas as sessões.
O texto de áudio de saída é concatenado de forma semelhante às respostas de texto. Se as respostas de texto de áudio de saída forem uma mistura de texto e SSML, o resultado concatenado é tratado como SSML. Idealmente, o criador do agente deve usar texto ou SSML de forma consistente.
Resposta condicional
Este tipo de resposta é usado para respostas condicionais. O formato geral é:
if [condition] [response] elif [condition] [response] elif [condition] [response] else [response] endif
where:
[condition]
tem o mesmo formato que é usado para as condições de trajeto[response]
é uma resposta de texto- Os blocos
elif
eelse
são opcionais
Por exemplo:
if $session.params.user-age >= 21 Ok, you may enter. else Sorry, you cannot enter. endif
Ambos os tipos de funções [condition]
e [response]
podem usar funções do sistema incorporadas para gerar valores dinâmicos durante as conversas.
Para mais informações, consulte as referências das
funções do sistema e das
condições de encaminhamento. O
[condition]
é resolvido com base no estado da sessão no início do
cumprimento. Se o [response]
depender do estado da sessão, é resolvido com base no estado da sessão atualizado no final do preenchimento.
Para agentes multilingues,
[condition]
é comum a todos os idiomas, enquanto [response]
é específico de um idioma. Quando altera [condition]
para um idioma na consola, esta parte é atualizada em todos os idiomas do agente e, uma vez que se torna uma nova condição, [response]
é limpo para todos os idiomas, exceto o idioma que selecionou quando atualizou [condition]
.
Chamada de transferência de telefonia
Para algumas integrações de telefonia, pode especificar um número de telefone dos EUA para a transferência de chamadas. Em tempo de execução, quando o agente virtual dos agentes de conversação (Dialogflow CX) chama um processamento de pedidos com transferência de chamadas, a chamada é transferida para o número especificado e o processamento do agente virtual é suspenso.
Resposta da ferramenta de armazenamento de dados
Este tipo de resposta configura as respostas do agente devolvidas pelas ferramentas de armazenamento de dados associadas. Se configurou uma ferramenta de armazenamento de dados neste preenchimento, é preenchido automaticamente um cartão de resposta da ferramenta de armazenamento de dados.
- Links de origem: permite-lhe definir o número máximo de citações que vão ser devolvidas ao utilizador após a resposta. Uma citação é um link para a origem das informações na base de dados, apresentado como botões. A predefinição é 1.
- Citações em linha: em vez de links apresentados após a resposta, este campo permite-lhe limitar o número de citações em linha devolvidas por frase.
- Alternativa generativa: se selecionar esta caixa, o agente tenta dar uma resposta gerada pela IA se o arquivo de dados devolver um resultado vazio. Se falhar, passa para as respostas estáticas.
- Respostas estáticas: pode introduzir respostas de texto estático no campo final. Estas são enviadas ao utilizador palavra por palavra.
Mensagens de resposta específicas do canal
Ao definir o processamento de pedidos, pode criar mensagens de resposta específicas do canal, para poder criar respostas segmentadas para chat de texto, voz, SMS, integrações específicas que suportam canais, etc. As mensagens de resposta que não são específicas de um canal são denominadas mensagens de resposta predefinidas.
Em tempo de execução, os agentes conversacionais (Dialogflow CX) selecionam a mensagem de resposta predefinida ou uma mensagem de resposta específica do canal quando um pedido de intenção de deteção especifica um canal. Como prática recomendada, deve definir mensagens de resposta predefinidas, mesmo que esteja a usar mensagens de resposta específicas do canal. As mensagens de resposta predefinidas podem funcionar como alternativa quando o seu sistema não consegue fornecer um canal válido.
Um nome do canal é um campo personalizado que pode definir para qualquer texto. Se estiver a usar a API Conversational Agents (Dialogflow CX) diretamente para chamadas de tempo de execução, pode usar os nomes de canais que quiser. Se estiver a usar uma integração existente, tem de usar os nomes dos canais que a integração reconhece.
Definir mensagens de resposta específicas do canal no momento da conceção
Para fornecer mensagens de resposta específicas do canal para o processamento quando usar a consola:
- Clique em Adicionar canal depois de adicionar mensagens de resposta predefinidas. A interface do utilizador permite-lhe adicionar mensagens de resposta específicas do canal. Clique novamente em Adicionar canal para adicionar um canal diferente.
Para fornecer mensagens de resposta específicas do canal para o processamento quando usar a API:
- Defina o campo
Fulfillment.messages[i].channel
para o canal pretendido para cada mensagem de resposta. Se este campo não estiver definido, a resposta é uma mensagem de resposta predefinida.
Utilizar mensagens de resposta específicas do canal no tempo de execução
Para receber uma mensagem de resposta específica do canal,
o canal tem de ser especificado na mensagem de pedido de deteção de intenção.
Consulte o campo queryParams.channel
no método detectIntent
do tipo Sessions
.
Selecione um protocolo e uma versão para a referência da sessão:
Protocolo | V3 | V3beta1 |
---|---|---|
REST | Recurso de sessão | Recurso de sessão |
RPC | Interface de sessão | Interface de sessão |
C++ | SessionsClient | Não disponível |
C# | SessionsClient | Não disponível |
Go | SessionsClient | Não disponível |
Java | SessionsClient | SessionsClient |
Node.js | SessionsClient | SessionsClient |
PHP | Não disponível | Não disponível |
Python | SessionsClient | SessionsClient |
Ruby | Não disponível | Não disponível |
Se não for definido nenhum canal num pedido, ou não for encontrado nenhum canal correspondente no preenchimento, a mensagem de resposta predefinida é devolvida pelos agentes conversacionais (Dialogflow CX).
Modelos de payload personalizados
Se usar conteúdos úteis personalizados com frequência, deve usar modelos de conteúdos úteis personalizados. Por vezes, as cargas úteis personalizadas são grandes e complexas. Por isso, a utilização de modelos pode ajudar a facilitar o processo de criação de agentes.
Pode fornecer estes modelos nas definições do agente, o que os torna disponíveis para seleção sempre que criar o preenchimento para o seu agente.
Por exemplo, o payload JSON para os botões "sim" e "não" pode ser definido como modelos de payload personalizados. Quando criar o preenchimento que requer estes botões, só tem de selecionar o modelo quando criar o preenchimento.
Quando seleciona um modelo para um payload personalizado de processamento, o conteúdo do modelo é inserido no payload. Em seguida, pode editar a carga útil conforme necessário.
Se alterar um modelo, a alteração não é propagada automaticamente a todas as cargas úteis de processamento de pedidos onde foi feita referência ao modelo.
Para criar um modelo de payload personalizado, consulte as definições gerais do agente.
Para selecionar um modelo de payload personalizado ao criar o preenchimento, clique em Selecionar modelo quando criar um payload personalizado de preenchimento.
Chamadas de webhook
Quando é chamado um preenchimento, e o preenchimento tem um webhook, o agente envia um pedido para o seu webhook. O webhook pode realizar todas as ações necessárias no seu serviço, fornecer uma mensagem de resposta dinâmica, substituir valores de parâmetros e alterar a página atual.
A secção seguinte descreve as definições de webhook para o preenchimento:
Vigência | Definição |
---|---|
Ative o webhook | Isto ativa o webhook para o processamento. |
Webhook | Selecione o recurso de webhook. |
Etiqueta | A etiqueta de texto que fornecer aqui é preenchida no campo WebhookRequest.fulfillmentInfo.tag do pedido de webhook enviado para o seu serviço de webhook. Isto pode ser usado para controlar o comportamento do webhook de uma forma específica do processamento. |
Devolve uma resposta parcial | Permite o cancelamento de uma reprodução de resposta parcial. Consulte as definições avançadas de voz para ver detalhes. |
Predefinições de parâmetros
Pode usar um preenchimento para fornecer predefinições que definem ou substituem os valores dos parâmetros atuais. Estas predefinições são aplicadas antes de resolver mensagens de resposta estáticas ou chamar um webhook.
Também pode usar funções do sistema para predefinir o parâmetro para um valor gerado dinamicamente.
Alguns dos exemplos incluem:
Definir um parâmetro
now
para a hora atual:Parâmetro Valor agora $sys.func.NOW() Incrementar um parâmetro existente
counter
em 1:Parâmetro Valor contrapropor $sys.func.ADD($session.params.counter, 1) Definir um parâmetro
new-cost
para o valor do parâmetroother-cost
, mantendo o valor completo do objeto composto:Parâmetro Valor new-cost $sys.func.IDENTITY($session.params.other-cost)
Ferramentas de armazenamento de dados
Consulte a documentação sobre as ferramentas de armazenamento de dados para mais informações sobre esta funcionalidade.
Definições de voz avançadas
Estas definições de voz avançadas podem substituir opcionalmente as mesmas definições de voz da página, definições de voz do fluxo> e definições de voz do agente.
Fila de respostas
Durante a vez de um agente, é possível (e, por vezes, desejável) chamar várias realizações, cada uma das quais pode gerar uma mensagem de resposta. Os agentes conversacionais (Dialogflow CX) mantêm estas respostas numa fila de respostas.
Resposta parcial para a API Streaming
Por predefinição, os agentes conversacionais (Dialogflow CX) só enviam as respostas ordenadas ao utilizador final quando a vez do agente termina. Também pode ativar a opção Devolver resposta parcial no preenchimento para devolver respostas atualmente em fila como uma resposta parcial quando usar as APIs de streaming. Consulte o artigo Ciclo de vida de uma página para ver mais detalhes.
Por exemplo, se o webhook for executado durante muito tempo, pode adicionar uma resposta estática no preenchimento e ativar a resposta parcial. Isto faz com que os agentes conversacionais (Dialogflow CX) limpem a fila de respostas e enviem todas as mensagens como uma resposta parcial antes de chamar o webhook.
Atualmente, a resposta parcial não é suportada para o seguinte, mas será suportada mais tarde:
- Entradas de áudio no simulador.
- As integrações de telefonia de parceiros podem ou não suportar a resposta parcial neste momento. Consulte a documentação do parceiro para verificar.
Para testar esta funcionalidade no simulador, tem de ativar a resposta parcial.
No exemplo seguinte, considere que o seu webhook demora 5 segundos a ser concluído e que não ativa a resposta parcial. A interação conversacional do agente de agentes conversacionais (Dialogflow CX) não termina até que o webhook seja concluído. Durante este turno de 5 segundos, as respostas são colocadas em fila enquanto aguardam o webhook e não são devolvidas ao utilizador final até o turno estar concluído. Isto leva a uma má experiência do utilizador.
Se ativar a resposta parcial no primeiro processamento, os agentes conversacionais (Dialogflow CX) devolvem rapidamente a mensagem do primeiro processamento e chamam o webhook. Após a conclusão do webhook, os agentes conversacionais (Dialogflow CX) devolvem a resposta final. A experiência do utilizador final é melhorada neste cenário, porque é informado de que deve esperar um pouco. Além disso, a chamada do webhook está a ser executada em simultâneo com o envio de uma resposta ao utilizador final.
Linguagem de marcação de síntese de voz (SSML)
Pode usar a linguagem de marcação de síntese de voz (SSML) em campos de texto ou de preenchimento de texto de áudio de saída. Isto permite-lhe personalizar a sua resposta de áudio fornecendo detalhes sobre pausas e formatação de áudio para acrónimos, datas, horas, abreviaturas ou texto que deve ser censurado.
Para ver detalhes da sintaxe, consulte a documentação SSML de conversão de texto em voz.