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. O Dialogflow CX mantém essas respostas em uma fila de respostas. Quando a vez do agente termina, o Dialogflow CX envia as respostas ordenadas ao usuário final.
Casos de uso de fulfillment
O fulfillment permite que você forneça mensagens de resposta nos seguintes locais:
- 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 abre um painel de edição de fulfillment.

Respostas do agente (opções de diálogo)
Defina as mensagens de resposta do agente no momento do design ao criar o fulfillment. No momento da 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 card inicial de Diálogo do agente, mas é possível clicar em Adicionar resposta de diálogo para adicionar mais cards para outros tipos de mensagem de resposta.
Resposta de texto estático
As mensagens de resposta de texto estático fornecem um diálogo de texto ao usuário. Se as chamadas de API de detecção de intent ou de integração usarem síntese de voz, esse texto vai gerar conteúdo de áudio. Para essas mensagens, o texto fornecido usa a Linguagem de marcação de síntese de fala (SSML, na sigla em inglês).
É possível definir vários cards de resposta de texto e várias respostas de texto em cada card. Se você definir vários cards, eles serão concatenados para uma única resposta no ambiente de execução. Se você definir várias respostas em um card, uma das mensagens será selecionada aleatoriamente no momento da execução.
Essas mensagens de texto podem conter referências de parâmetro e funções do sistema inline.
Payload personalizado
Algumas integrações são compatíveis com uma resposta de payload personalizada para lidar com respostas avançadas. Esses payloads personalizados precisam ser fornecidos no 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âmetro no JSON do payload personalizado. Coloque-os entre aspas duplas para tratá-los como valores de string JSON. Exemplo:
{
"someField": "$session.params.date"
}
O JSON do payload personalizado precisa ser limitado a 24 níveis de profundidade.
Também é possível enviar um payload personalizado para as integrações que você desenvolve. Ele não será processado pelo Dialogflow CX, então você precisa processá-lo na sua própria lógica de negócios.
Para mais informações, consulte modelos de payload personalizados.
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. O Dialogflow CX usa esse sinal apenas para identificar conversas transferidas para fins de medição. Ele não altera o estado da sessão.
Seu sistema ou integração pode usar esse indicador para realizar as ações necessárias para transferir a conversa. Como o Dialogflow CX não impõe estrutura a esses dados, é possível escolher qualquer estrutura que se adapte ao seu sistema.
Metadados de conversação bem-sucedida
Essa resposta indica ao autor da chamada de API de detecção de intent que a conversa com o agente de CX do Dialogflow CX foi bem-sucedida. O Dialogflow CX usa esse indicador para identificar conversas que foram bem-sucedidas para fins de medição e não altera o estado da sessão de forma alguma.
Seu sistema ou integração pode usar esse indicador para realizar as ações necessárias. O Dialogflow CX não impõe nenhuma estrutura a esses dados, então você pode escolher qualquer estrutura que se adapte ao seu sistema.
Reproduzir áudio pré-gravado
Essa resposta reproduz um arquivo de áudio para integrações que oferecem suporte a esse recurso.
Os requisitos de formato do 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 pode ser acessado pelo parceiro. O parceiro também pode fornecer acesso restrito para arquivos de áudio. Consulte a documentação do parceiro para mais detalhes.
Texto de saída de áudio
Essa resposta é semelhante à resposta de texto, mas só é aplicável à síntese de voz. Se o agente puder processar sessões de texto e voz, use respostas exclusivas de texto e texto de áudio de saída para criar uma experiência de usuário diferente para texto e voz. Se o texto de áudio de saída 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 de voz e você quiser as mesmas mensagens de resposta, use respostas de texto para as duas 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 será tratado como SSML. O ideal é usar texto ou SSML de forma consistente.
Resposta condicional
Esse tipo de resposta fornece respostas condicionais:
Este é o formato geral:
if [condition] [response] elif [condition] [response] elif [condition] [response] else [response] endif
em que:
[condition]usa o mesmo formato das condições de rota.[response]é uma resposta de texto.- Os blocos
elifeelsesã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 de sistema inline para
gerar valores dinâmicos durante as conversas. Para mais informações, consulte
funções do sistema e
condições de rota. O
[condition] é resolvido com base no estado da sessão no início do
fulfillment. Se o [response] depender do estado da sessão, ele será resolvido
com base no estado atualizado da sessão ao final do fulfillment.
Para agentes multilíngues,
[condition] é comum para todos os idiomas, enquanto [response] é
específico do idioma. Quando você muda [condition] para um idioma no console,
essa parte é atualizada em todos os idiomas do agente. Como ela se torna uma nova
condição, [response] é limpo para todos os idiomas, exceto o que você
selecionou ao atualizar [condition].
Transferência de chamada de telefonia
As transferências de chamadas estão disponíveis apenas para o gateway telefônico do Dialogflow CX.
Em algumas integrações de telefonia, é possível especificar um número de telefone nos EUA para transferências de chamadas. No tempo de execução, quando o agente de CX do Dialogflow CX aciona um fulfillment com transferência de chamada, a chamada é transferida para o número especificado, e o processamento do agente é suspenso.
Resposta da ferramenta de repositório de dados
Esse tipo de resposta configura as respostas do agente retornadas das ferramentas de repositório de dados vinculadas. Se você configurou uma ferramenta de repositório de dados nesse fulfillment, um card de resposta da ferramenta de repositório de dados é preenchido automaticamente.
- Links de origem:defina o número máximo de citações que serão retornadas ao usuário após a resposta. Uma citação é um link para a fonte de informações no repositório de dados, renderizado como botões. O padrão é 1.
- Citações inline:limite o número de citações inline retornadas por frase em vez de listar links após a resposta.
- Resposta generativa de substituição:configure o agente para tentar uma resposta gerada com IA se o repositório de dados retornar um resultado vazio. Se isso falhar, o agente usará respostas estáticas.
- Respostas estáticas:insira respostas de texto estáticas no campo final para enviar ao usuário palavra por palavra.
Mensagens de resposta específicas do canal
Ao definir o fulfillment, é possível criar mensagens de resposta específicas do canal para criar respostas direcionadas para chat de texto, voz, SMS ou integrações específicas que oferecem suporte a canais. As mensagens de resposta que não são específicas de um canal são chamadas de mensagens de resposta padrão.
No ambiente de execução, o Dialogflow CX seleciona 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 você esteja usando mensagens de resposta específicas do canal. As mensagens de resposta padrão funcionam como um substituto quando o sistema não fornece um canal válido.
O nome do canal é um campo personalizado que pode ser definido como qualquer texto. Se você usar a API Dialogflow CX diretamente para chamadas de ambiente de execução, poderá usar qualquer nome de canal que quiser. Se você usar uma integração atual, use os nomes de canais reconhecidos por ela.
Como definir mensagens de resposta específicas do canal no momento do design
Para fornecer mensagens de resposta específicas do canal para fulfillment ao usar o console:
- Clique em Adicionar canal depois de adicionar mensagens de resposta padrão para adicionar mensagens de resposta específicas do canal. Clique em Adicionar canal novamente para adicionar outros canais.
Para fornecer mensagens de resposta específicas do canal para fulfillment ao usar a API:
- Defina o campo
Fulfillment.messages[i].channelcomo o canal escolhido para cada mensagem de resposta. Se esse campo não for definido, a resposta será tratada como uma mensagem de resposta padrão.
Como usar mensagens de resposta específicas do canal no ambiente de execução
Se você estiver usando uma integração que oferece suporte a canais, a implementação da integração vai realizar essas etapas.
Para receber uma mensagem de resposta específica do canal, especifique o canal
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 de sessão | Recurso de sessão |
| RPC (remote procedure call) | Interface de sessão | Interface de 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 |
O Dialogflow CX vai retornar a mensagem de resposta padrão se uma solicitação não definir um canal ou se o fulfillment não encontrar um canal correspondente.
Modelos de payload personalizados
Se você usa payloads personalizados com frequência, use modelos de payload personalizado. Os payloads personalizados às vezes são grandes e complexos, então o uso de modelos simplifica o processo de criação de agentes.
Forneça esses modelos nas configurações do agente para que eles fiquem disponíveis para seleção ao criar o fulfillment para o agente.
Por exemplo, o payload JSON para os botões "sim" e "não" pode ser definido como modelos de payload personalizados. Ao criar um fulfillment que exija esses botões, selecione o modelo.
Quando você seleciona um modelo para um payload personalizado de fulfillment, o conteúdo do modelo é inserido no payload. Em seguida, é possível editar o payload conforme necessário.
Se você alterar um modelo, as mudanças não serão propagadas 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 o fulfillment, clique em Selecionar modelo ao criar um payload personalizado de fulfillment.
Chamadas de webhook
Quando um fulfillment aciona um webhook, o agente envia uma solicitação ao seu serviço. Seu webhook pode realizar ações, fornecer mensagens de resposta dinâmicas, substituir valores de parâmetros e alterar a página atual.
Veja a seguir as configurações de webhook para fulfillment:
| X | Item |
|---|---|
| Ativar webhook | Isso ativa o webhook para o fulfillment. |
| Webhook | Selecione o recurso de webhook. |
| Tag | A tag de texto fornecida aqui será preenchida no campo WebhookRequest.fulfillmentInfo.tag da solicitação de webhook enviada ao seu serviço de webhook. Isso pode ser usado para controlar o comportamento do webhook de uma maneira específica do fulfillment. |
| Retornar resposta parcial | Permite o cancelamento da reprodução de uma resposta parcial. Para mais detalhes, consulte Configurações avançadas de fala. |
Predefinições de parâmetros
Use o fulfillment para fornecer predefinições que definem ou substituem os valores de parâmetro atuais. Essas predefinições são aplicadas antes de resolver mensagens de resposta estáticas ou chamar um webhook.
Também é possível usar funções do sistema para predefinir um parâmetro com um valor gerado dinamicamente.
Estes são alguns exemplos:
Como definir um parâmetro
nowpara o horário atual:Parâmetro Valor now $sys.func.NOW() Incrementar um parâmetro atual
counterem 1:Parâmetro Valor Contador $sys.func.ADD($session.params.counter, 1) Definir um parâmetro
new-costcomo 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 repositório de dados
Para mais informações sobre esse recurso, consulte a documentação das ferramentas de repositório de dados.
Configurações avançadas de fala
Essas configurações de fala avançadas podem substituir as configurações de fala da página, as configurações de fala do fluxo e as configurações de fala do agente.
Fila de resposta
Durante a vez de um agente, é possível chamar vários fulfillments, e cada um deles pode gerar uma mensagem de resposta. O Dialogflow CX mantém essas respostas em uma fila de respostas.
Resposta parcial para a API Streaming
Por padrão, o Dialogflow CX só envia respostas ordenadas aos usuários finais depois que a vez do agente termina. Também é possível ativar a opção Retornar resposta parcial no fulfillment para retornar respostas em fila como uma resposta parcial ao usar as APIs de streaming. Para saber mais, consulte Ciclo de vida de uma página.
Por exemplo, se o webhook provavelmente vai ser executado por muito tempo, adicione uma resposta estática no fulfillment e ative a resposta parcial. Isso faz com que o Dialogflow CX limpe a fila de respostas e envie todas as mensagens como uma resposta parcial antes de chamar o webhook.
A resposta parcial não é compatível com o seguinte:
- Entradas de áudio no simulador.
- As integrações de telefonia de parceiros podem não oferecer suporte à resposta parcial. Consulte a documentação do parceiro para verificar.
Para testar esse recurso no simulador, ative a resposta parcial.

No exemplo a seguir, considere que o webhook leva 5 segundos para ser concluído e que você não ativa a resposta parcial. A conversa do agente de CX do Dialogflow CX não termina até que o webhook seja concluído. Durante esse período de 5 segundos, as respostas são colocadas em fila enquanto aguardam o webhook e não são retornadas ao usuário final até que o período seja concluído. Isso prejudica a experiência do usuário.
Se você ativar a resposta parcial no primeiro fulfillment, o Dialogflow CX vai retornar a primeira mensagem de fulfillment rapidamente e chamar o webhook. Depois que o webhook for concluído, o Dialogflow CX vai retornar a resposta final. Esse cenário melhora a experiência do usuário final, porque ele é informado de que deve esperar um pouco. Além disso, a chamada de webhook é executada simultaneamente com uma 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 fala (SSML, na sigla em inglês) em campos de fulfillment de texto ou de áudio de saída. Isso permite personalizar a resposta de áudio fornecendo detalhes sobre pausas e formatação de áudio para acrônimos, datas, horas, abreviações ou texto que deve ser censurado.
Para detalhes sobre a sintaxe, consulte a documentação de SSML da Text-to-Speech.