No turno de conversas do agente, ele precisa responder ao usuário final com uma resposta a uma pergunta, uma consulta de informações ou o encerramento da sessão. O agente também pode precisar entrar em contato com seu serviço para gerar respostas dinâmicas ou realizar ações por uma volta. O fulfillment é usado para fazer tudo isso.
Um fulfillment pode conter:
- Mensagens de resposta estática.
- Chamadas de webhook para respostas dinâmicas e/ou para realizar ações.
- Predefinições de parâmetros para definir ou substituir valores de parâmetros.
Durante a rodada de um agente, é possível (e às vezes desejável) chamar vários fulfillments, e cada um deles pode gerar uma mensagem de resposta. Os agentes de conversação (Dialogflow CX) mantêm essas respostas em uma fila de respostas. Depois que a vez do agente termina, os agentes de conversação (Dialogflow CX) enviam as respostas ordenadas ao usuário final.
Casos de uso de fulfillment
O fulfillment é usado em qualquer lugar em que uma mensagem de resposta é necessária:
- Fulfillment de entrada de página
- Rotas
- Manipuladores de eventos
- Solicitações iniciais para formulários
- Gerenciadores de prompts para formulários
Para cada um desses casos de uso, o console abrirá um painel de edição de fulfillment.
Mensagens de resposta estática (opções de diálogo)
As mensagens de resposta estática são respostas do agente que você define no momento do projeto. Você as define ao criar o fulfillment. No ambiente de execução, essas respostas são adicionadas à fila de respostas.
Há vários tipos de mensagens de resposta, que são descritos nas subseções a seguir. Ao usar o console, um painel de fulfillment tem um cartão inicial de mensagem de resposta de texto, mas é possível clicar em Adicionar opção de caixa de diálogo para adicionar mais cartões para outros tipos de mensagens de resposta.
Texto
As mensagens de resposta de texto enviam a caixa de diálogo para o usuário final. Se as chamadas de API de intent de detecção ou de integração usarem a síntese de fala, esse texto será usado para gerar conteúdo de áudio. Nesse caso, o texto fornecido pode usar a Linguagem de marcação de sintetização de voz (SSML, na sigla em inglês).
É possível definir vários cartões de resposta de texto e várias respostas de texto dentro de cada cartão. Se você definir vários cartões, eles serão concatenados para uma única resposta no ambiente de execução. Se você definir várias respostas dentro de um cartão, uma das mensagens no cartão será escolhida aleatoriamente no tempo de execução.
Essas mensagens de texto podem conter referências de parâmetro e funções do sistema in-line.
Payload personalizado
Algumas integrações são compatíveis com uma resposta de payload personalizada para lidar com respostas avançadas. Esses payloads personalizados são fornecidos em um formato JSON definido na documentação de integração. Por exemplo, consulte o formato de payload personalizado do Dialogflow CX Messenger.
É possível incluir referências de parâmetros no seu JSON de payload personalizado. Eles precisam ser tratados como valores de string JSON. Portanto, coloque-os entre aspas duplas. Exemplo:
{ "someField": "$session.params.date" }
Também é possível enviar um payload personalizado para as integrações que você desenvolve. Por não ser processado pelos agentes de conversação (Dialogflow CX), ele precisa ser processado na sua própria lógica de negócios.
Consulte também a seção Templates de payload personalizados abaixo.
Transferência de agente ao vivo
Essa resposta sinaliza ao autor da chamada da API de intent de detecção que a conversa precisa ser enviada a um agente humano. Os agentes de conversação (Dialogflow CX) só usam esse indicador para identificar conversas entregues para fins de medição, sem alterar o estado da sessão. Seu sistema ou integração pode usar esse sinal para executar as ações necessárias para entregar a conversa. Os agentes de conversação (Dialogflow CX) não impõem nenhuma estrutura a esses dados. Assim, é possível escolher qualquer estrutura que se encaixe no seu sistema.
Metadados de conversação bem-sucedida
Essa resposta sinaliza ao autor da chamada da API de intent de detecção que a conversa com os agentes de conversação (Dialogflow CX) foi bem-sucedida. Os agentes de conversação (Dialogflow CX) usam esse indicador apenas para identificar conversas que foram bem-sucedidas para fins de medição, sem alterar o estado da sessão de forma alguma. O sistema ou a integração pode usar esse sinal para realizar as ações necessárias. Os agentes de conversação (Dialogflow CX) não impõem nenhuma estrutura a esses dados. Assim, é possível escolher qualquer estrutura que se encaixe no seu sistema.
Ouvir áudio pré-gravado
Essa resposta reproduz um arquivo de áudio para integrações compatíveis com esse recurso.
Os requisitos de formato de arquivo de áudio podem variar de acordo com as integrações. Por exemplo, consulte os requisitos do gateway telefônico do Dialogflow CX.
Para integrações de telefonia de parceiros, o URL do arquivo de áudio precisa ser acessível pelo parceiro. Um URL disponível publicamente, como um arquivo público no Cloud Storage, sempre é acessível pelo parceiro. O parceiro também pode fornecer acesso restrito a arquivos de áudio. Consulte a documentação do parceiro para saber mais.
Texto de saída de áudio
Essa resposta é semelhante à resposta de texto, mas só é aplicável à síntese de fala. Se o agente processar sessões de texto e voz, use respostas de texto e texto de áudio exclusivos para criar uma experiência do usuário diferente no texto. Voz. Se o texto de saída de áudio for fornecido para uma sessão de voz, as respostas de texto simples serão ignoradas.
Se o agente processar sessões de texto e voz, e você quiser as mesmas mensagens de resposta, basta usar respostas de texto para sessões de texto e de voz.
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 será tratado como SSML. O ideal é que o designer do agente use texto ou SSML de maneira consistente.
Resposta condicional
Esse tipo de resposta é usado para respostas condicionais. Este é o formato geral:
if [condition] [response] elif [condition] [response] elif [condition] [response] else [response] endif
onde:
[condition]
é o mesmo formato usado para condições de rota.[response]
é uma resposta de texto.- Os blocos
elif
eelse
são opcionais
Exemplo:
if $session.params.user-age >= 21 Ok, you may enter. else Sorry, you cannot enter. endif
Tanto [condition]
quanto [response]
podem usar funções in-line do sistema para gerar valores dinâmicos durante as conversas.
Para saber mais, verifique as referências de funções do sistema e condições de rota. O
[condition]
é resolvido com base no estado da sessão no início do
envio. Se o [response]
depender do estado da sessão, ele será resolvido
com base no estado atualizado da sessão no final do fulfillment.
Para agentes multilíngues,
[condition]
é comum para todos os idiomas, enquanto [response]
é específico de um idioma. Quando você altera [condition]
para um idioma
no console, essa parte é atualizada em todos os idiomas do agente e,
que se torna uma nova condição, [response]
é apagado para
todos os idiomas diferente do idioma selecionado ao atualizar o [condition]
.
Chamada de transferência de telefonia
Para algumas integrações de telefonia, é possível especificar um número de telefone dos EUA para transferência de chamadas. No ambiente de execução, quando o agente virtual dos agentes de conversação (Dialogflow CX) chama um fulfillment com a transferência de chamada, a chamada é transferida para o número especificado, e o processamento do agente virtual é suspenso.
Mensagens de resposta específicas do canal
Ao definir o fulfillment, crie mensagens de resposta específicas para o canal, para criar respostas direcionadas para chat de texto, voz, SMS, integrações específicas que oferecem suporte a canais e assim por diante. Todas as mensagens de resposta que não são específicas de um canal são chamadas de mensagens de resposta padrão.
No momento da execução, os agentes de conversação (Dialogflow CX) selecionam a mensagem de resposta padrão ou uma mensagem de resposta específica do canal quando uma solicitação de intent de detecção especifica um canal. Como prática recomendada, defina mensagens de resposta padrão, mesmo que esteja usando mensagens de resposta específicas do canal. As mensagens de resposta padrão podem funcionar como um substituto quando o sistema não consegue fornecer um canal válido.
O nome do canal é um campo personalizado que pode ser definido como qualquer texto. Se você estiver usando a API de agentes de conversação (Dialogflow CX) diretamente para chamadas de execução, use os nomes de canal que quiser. Se você estiver usando uma integração existente, use os nomes de canal reconhecidos por ela.
Como definir mensagens de resposta específicas do canal no momento do projeto
Para fornecer mensagens de resposta específicas do canal para fulfillment ao usar o console:
- Clique em Adicionar canal depois de adicionar as mensagens de resposta padrão. A interface do usuário permite adicionar mensagens de resposta específicas para cada canal. Clique em Adicionar canal novamente para incluir outro canal.
Para fornecer mensagens de resposta específicas do canal para a realização ao usar a API:
- Defina o campo
Fulfillment.messages[i].channel
como o canal desejado para cada mensagem de resposta. Se esse campo não for definido, a resposta será uma mensagem de resposta padrão.
Como usar mensagens de resposta específicas do canal no momento da execução
Para receber uma mensagem de resposta específica do canal,
ele precisa ser especificado na mensagem de solicitação de detecção de intent.
Consulte o campo queryParams.channel
no método detectIntent
do tipo Sessions
.
Selecione um protocolo e uma versão para a referência de sessão:
Protocolo | V3 | V3beta1 |
---|---|---|
REST | Recurso da sessão | Recurso da sessão |
RPC (remote procedure call) | Interface da sessão | Interface da sessão |
C++ | SessionsClient | Indisponível |
C# | SessionsClient | Indisponível |
Go | SessionsClient | Indisponível |
Java | SessionsClient | SessionsClient |
Node.js | SessionsClient | SessionsClient |
PHP | Indisponível | Indisponível |
Python | SessionsClient | SessionsClient |
Ruby | Indisponível | Indisponível |
Se nenhum canal for definido em uma solicitação ou nenhum canal correspondente for encontrado no fulfillment, a mensagem de resposta padrão será retornada pelos agentes de conversação (Dialogflow CX).
Modelos de payload personalizados
Se você usa payloads personalizados com frequência, use modelos de payload personalizados. Às vezes, os payloads personalizados são grandes e complexos. Por isso, usar modelos pode facilitar o processo de criação do agente.
Você pode fornecer esses modelos nas configurações do agente, o que os torna disponíveis para seleção sempre que você cria um fulfillment para o agente.
Por exemplo, o payload JSON para botões "sim" e "não" pode ser definido como modelos de payload personalizados. Ao criar um fulfillment que exige esses botões, basta selecionar o modelo.
Quando você seleciona um modelo para um payload personalizado de fulfillment, o conteúdo do modelo é inserido no payload. Depois, você pode editar o payload conforme necessário.
Se você mudar um modelo, a mudança não será propagada automaticamente para todos os payloads de fulfillment em que ele foi referenciado.
Para criar um modelo de payload personalizado, consulte as configurações gerais do agente.
Para selecionar um modelo de payload personalizado ao criar um fulfillment, clique em Selecionar modelo ao criar um payload personalizado de fulfillment.
Chamadas de webhook
Quando um fulfillment é chamado e tem um webhook, o agente envia uma solicitação ao webhook. O webhook pode realizar as ações necessárias no seu serviço, fornecer uma mensagem de resposta dinâmica, modificar os valores dos parâmetros e alterar a página atual.
Confira a seguir as configurações de webhook para fulfillment:
Termo | Definição |
---|---|
Ativar o webhook | Isso ativa o webhook para o fulfillment. |
Webhook | Selecione o recurso do webhook. |
Tag | A tag de texto fornecida aqui será preenchida no campo WebhookRequest.fulfillmentInfo.tag da solicitação do webhook enviada ao serviço de webhook. Isso pode ser usado para controlar o comportamento do webhook de forma específica para o fulfillment. |
Retornar resposta parcial | Permite o cancelamento da reprodução de uma resposta parcial. Consulte as configurações avançadas de fala para mais detalhes. |
Predefinições de parâmetros
É possível usar um fulfillment para fornecer predefinições que definem ou modifiquem os valores de parâmetros atuais. Essas predefinições serão aplicadas antes de resolver mensagens de resposta estática ou chamar um webhook.
Você também pode usar funções do sistema para predefinir o parâmetro para um valor gerado dinamicamente.
Estes são alguns exemplos:
Como definir um parâmetro
now
para o horário atual:Parâmetro Valor now $sys.func.NOW() Incrementar um parâmetro atual
counter
em 1:Parâmetro Valor Contador $sys.func.ADD($session.params.counter, 1) Definir um parâmetro
new-cost
como 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)
Configurações avançadas de fala
Essas configurações de fala avançadas podem substituir as mesmas configurações de fala da página, configurações de fala do fluxo e configurações de fala do agente.
Fila de resposta
Durante a rodada de um agente, é possível (e às vezes desejável) chamar vários fulfillments, e cada um deles pode gerar uma mensagem de resposta. Os agentes de conversação (Dialogflow CX) mantêm essas respostas em uma fila de respostas.
Resposta parcial para a API Streaming
Por padrão, os agentes de conversação (Dialogflow CX) só enviam as respostas ordenadas ao usuário final quando a vez do agente termina. Também é possível ativar a opção Retornar resposta parcial no fulfillment para retornar respostas na fila como uma resposta parcial ao usar as APIs de streaming. Consulte Ciclo de vida de uma página para mais detalhes.
Por exemplo, se o webhook provavelmente for executado por muito tempo, adicione uma resposta estática no fulfillment e ative a resposta parcial. Isso faz com que os agentes de conversação (Dialogflow CX) limpem a fila de respostas e enviem todas as mensagens como uma resposta parcial antes de chamar o webhook.
No momento, a resposta parcial não é compatível com o seguinte, mas será compatível mais tarde:
- Entradas de áudio no simulador.
- No momento, as integrações de telefonia do parceiro podem ou não oferecer suporte a respostas parciais. Consulte a documentação do parceiro para verificar.
Para testar esse recurso no simulador, você precisa ativar a resposta parcial.
No exemplo a seguir, considere que o webhook leva cinco segundos para ser concluído e você não ativa a resposta parcial. A vez de conversar com o agente de agentes de conversação (Dialogflow CX) não é concluída até que o webhook seja concluído. Durante essa sequência de cinco segundos, as respostas são colocadas na fila enquanto aguardam o webhook e não são retornadas ao usuário final até que a conversão seja concluída. Isso leva a uma experiência negativa do usuário.
Se você ativar a resposta parcial no primeiro fulfillment, os agentes de conversação (Dialogflow CX) vão retornar a primeira mensagem rapidamente e chamar o webhook. Depois que o webhook é concluído, os agentes de conversação (Dialogflow CX) retornam a resposta final. Nesse caso, a experiência do usuário final é aprimorada porque é esperado que ele aguarde um curto período. Além disso, a chamada do webhook está sendo executada simultaneamente com a resposta enviada ao usuário final.
Linguagem de marcação de síntese de voz (SSML)
É possível usar a Linguagem de marcação de síntese de voz (SSML, na sigla em inglês) em campos de preenchimento de texto ou de áudio de saída. Isso permite personalizar sua resposta de áudio com detalhes sobre pausas e formatação de áudio para acrônimos, datas, horas, abreviações ou texto que deva ser censurado.
Para detalhes sobre a sintaxe, consulte a documentação de SSML de conversão de texto em fala.