Fulfillments

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:

Para cada um destes exemplos de utilização, a consola abre um painel de edição de processamento.

Captura de ecrã do preenchimento

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 e else 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âmetro other-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:

Para testar esta funcionalidade no simulador, tem de ativar a resposta parcial.

Captura de ecrã da resposta parcial do simulador

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.

Sem resposta parcial.

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.

Com resposta parcial.

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.