O payload personalizado do Dialogflow CX permite melhorar a experiência do agente virtual além do chat e das interações baseadas em texto simples. Ao usar payloads personalizados no Dialogflow CX, você pode configurar o agente virtual para renderizar respostas e citações personalizadas.
Tipos de mensagens de resposta personalizadas
As respostas personalizadas permitem renderizar os seguintes tipos de mensagens:
Texto
Botões in-line
Botões fixos
Imagens
Vídeos
Documentos
Visualizações complexas (combinação de um ou mais tipos de mensagens)
As ações personalizadas permitem que os agentes virtuais realizem as seguintes ações:
Escalonamentos para agentes humanos
Transferências planejadas para agentes humanos
Encerrar a sessão de suporte
Payload da Contact Center AI Platform (CCAI Platform)
Para ser usado no Dialogflow CX como payload personalizado. O exemplo a seguir demonstra o formato das respostas no webSDK usando o Dialogflow CX.
{ "ujet": { "type": "text|inline_button|sticky_button|image|video|document|complex|action", "action": "escalation|end", "title": "message displayed on the top of the message", "escalation_reason": "by_consumer|by_virtual_agent", "session_variable": { "capture_target": "payload|end_user_response", "capture_key": "key", "payload": { } }, "messages": [ "Hello", "How can I help you?" ], "buttons": [ { "title": "Button 1", "action": "quick_reply" }, { "title": "Button 2", "action": "quick_reply" } ], "images": [ { "url": "https://image.url", "text": "an alternate text for an image for when failed to load an image" }, { "url": "https://image.url", "text": "an alternate text for an image" } ], "videos": [ { "url": "https://video.url", "text": "an alternate text for a video for when failed to load a video" }, { "url": "https://video.url", "text": "an alternate text for a video" } ], "documents": [ { "url": "https://document.url", "text": "an alternate text for a document for when failed to load a document" }, { "url": "https://document.url", "text": "an alternate text for a document" } ], "components": [ { "type": "text", "messages": [ "We need the information for helping you.", "Could you please choose the following options?" ] }, { "type": "inline_button", "buttons": [ { "title": "Button 1", "action": "quick_reply" }, { "title": "Button 2", "action": "quick_reply" } ] }, { "type": "image", "images": [ { "url": "https://image.url", "text": "an alternate text for an image for when failed to load an image" }, { "url": "https://image.url", "text": "an alternate text for an image" } ] } ] } }
Formato de mensagem de chat para payload personalizado
Usado com o SDK da plataforma CCAI para mostrar uma UI adequada. É o mesmo formato de payload personalizado do Dialogflow CX, mas não tem o campo "ujet" na raiz.
Consulte os exemplos a seguir para mais detalhes.
Exemplos
As seções a seguir incluem payloads de exemplo que podem ser usados no Dialogflow CX.
Texto
{
"ujet": {
"type": "text",
"messages": [
"Hello",
"How can I help you?"
]
}
}
Escalonamento para a mesma fila
Pelo agente virtual:
{
"ujet": {
"type": "action",
"action": "escalation",
"escalation_reason": "by_virtual_agent"
}
}
Pelo usuário final:
{
"ujet": {
"type": "action",
"action": "escalation",
"escalation_reason": "by_consumer"
}
}
O valor escalation_reason é informado nos painéis.
Escalonamento para a fila segmentada
Pelo agente virtual:
{
"ujet": {
"type": "action",
"action": "escalation",
"escalation_reason": "by_virtual_agent",
"menu_id": 100,
"language": "ko"
}
}
Pelo usuário final:
{
"ujet": {
"type": "action",
"action": "escalation",
"escalation_reason": "by_consumer",
"menu_id": 100,
"language": "ko"
}
}
O valor escalation_reason é informado nos painéis.
Finalizar conversa
{
"ujet": {
"type": "action",
"action": "end"
}
}
Botão in-line
{
"ujet": {
"type": "inline_button",
"title": "Select a menu",
"buttons": [
{
"title": "Lorem Ipsum",
"action": "quick_reply"
},
{
"title": "Lorem Ipsum Dolor Sit Amet",
"action": "escalation"
}
]
}
}
Exemplo

Botão fixo
{
"ujet": {
"type": "sticky_button",
"title": "Select a menu",
"buttons": [
{
"title": "Lorem Ipsum",
"action": "quick_reply"
},
{
"title": "Lorem Ipsum Dolor Sit Amet",
"action": "escalation"
}
]
}
}
Exemplo

Visualização da imagem
{
"ujet": {
"type": "image",
"title": "Please see the following images",
"images": [
{
"url": "https://image1.url",
"text": "an alternate text for an image for when failed to load an image"
},
{
"url": "https://image2.url",
"text": "an alternate text for an image"
}
]
}
}
Exibição de vídeo
{
"ujet": {
"type": "video",
"title": "Please see the following videos",
"videos": [
{
"url": "https://video1.url",
"text": "an alternate text for a video for when failed to load a video"
},
{
"url": "https://video2.url",
"text": "an alternate text for a video"
}
]
}
}
Visualização do documento
{
"ujet": {
"type": "document",
"title": "Please see the following document",
"documents": [
{
"url": "https://document1.url",
"text": "an alternate text for a document for when failed to load a document"
},
{
"url": "https://document2.url",
"text": "an alternate text for a document"
}
]
}
}
Visualização complexa
{
"ujet": {
"type": "complex",
"type": "Welcome to CCAI Platform world!",
"components": [
{
"type": "text",
"messages": [
"We need the information for helping you.",
"Could you please choose the following options?"
]
},
{
"type": "inline_button",
"buttons": [
{
"title": "Button 1",
"action": "quick_reply"
},
{
"title": "Button 2",
"action": "quick_reply"
}
]
},
{
"type": "image",
"images": [
{
"url": "https://image1.url",
"text": "an alternate text for an image for when failed to load an image"
},
{
"url": "https://image2.url",
"text": "an alternate text for an image"
}
]
}
]
}
}
Como configurar um payload personalizado no Dialogflow
Para mais informações sobre como configurar o payload personalizado usando Dialogflow, consulte os recursos Respostas de payload personalizadas (Dialogflow ES) ou Payload personalizado (Dialogflow CX).
Para mais informações, consulte Variáveis de sessão personalizadas para processamento de payload personalizado.
Transferência de agente virtual para um número de telefone ou endpoint SIP
Você pode usar payloads personalizados do Dialogflow CX para transferir chamadas de um agente virtual de voz para o número de telefone ou endpoint SIP especificado. Se a conexão for estabelecida, o agente virtual será removido da chamada, e ela vai continuar. Se a conexão falhar, uma mensagem de falha de transferência será reproduzida, e a chamada vai continuar com o agente virtual.
As transferências de agentes virtuais funcionam para chamadas internas e externas. As transferências de agentes virtuais são registradas como Planned Transfers nos relatórios.
Transferir uma chamada para um número de telefone
Para transferir uma chamada de um agente virtual para um número de telefone, use um payload do Dialogflow CX semelhante ao exemplo de código a seguir:
{
"ujet": {
"type": "action",
"action": "deflection",
"deflection_type" : "phone",
"phone_number": "+16509424879"
}
}
Transferir uma chamada para um endpoint SIP
Você pode transferir uma chamada de um agente virtual para um endpoint SIP com um tempo limite de chamada opcional.
Tempo limite de chamada
Para configurar um tempo limite de chamada, adicione o campo sip_ring_timeout. Isso dá às chamadas para extensões internas ou destinos de comunicações unificadas (UC) tempo suficiente para serem atendidas antes da desconexão. Isso funciona apenas para usuários do Twilio.
O Twilio adiciona aproximadamente cinco segundos ao tempo limite de chamada configurado.
Exemplo
Para transferir uma chamada de um agente virtual para um endpoint SIP, use um payload do Dialogflow semelhante ao exemplo de código a seguir:
{
"ujet": {
"type": "action",
"action": "deflection",
"deflection_type" : "sip",
"sip_uri": "SIP_ENDPOINT",
"sip_ring_timeout": SIP_RINGING_TIMEOUT
}
}
Substitua:
SIP_ENDPOINT: o endpoint SIP para transferir a chamada. Ele deve ser semelhante asip:1-999-123-4567@voip-provider.example.net.SIP_RINGING_TIMEOUT: opcional: o número de segundos que a chamada toca antes de expirar. Valores válidos: de10a600, inclusive. Se você definir um valor fora desse intervalo, o sistema vai usar o tempo limite de chamada padrão de 30 segundos. Padrão: 30 segundos.
Transferir uma chamada para um endpoint SIP usando o método SIP REFER
Para transferir uma chamada de um agente virtual para um endpoint SIP usando o método SIP REFER, use um payload do Dialogflow CX semelhante ao exemplo de código a seguir. Com o método SIP REFER, é possível transmitir informações úteis usando as propriedades do cabeçalho.
{
"ujet": {
"type": "action",
"action": "deflection",
"deflection_type" : "sip"
"sip_uri": "sip:1-999-123-4567@voip-provider.example.net"
"sip_refer": true
"sip_parameters": {
"x-header": "value",
"x-header": "value"
}
}
}
Variáveis de sessão personalizadas para processamento de payload personalizado
Use variáveis de sessão personalizadas para capturar valores da resposta de intent e da resposta do usuário final. Em seguida, colete todos eles e faça o upload para o CRM como um comentário. Para mais informações, consulte Payload do Dialogflow para variáveis de sessão personalizadas.
Capturar da resposta do usuário final
Fluxo
A plataforma CCAI solicita a resposta ao Dialogflow CX.
O Dialogflow CX pode fazer um callback para o servidor do cliente por fulfillment.
O servidor do cliente precisa preencher o campo session_variable na resposta.
O Dialogflow CX retorna a resposta com o payload personalizado, incluindo o campo
session_variablecom capture_target =end_user_response.Um usuário final envia uma mensagem.
A plataforma CCAI mantém a mensagem do usuário final enviada na etapa anterior.
A plataforma CCAI vai postar todas as variáveis de sessão capturadas na sessão de chat no CRM como um comentário quando um agente virtual sair de um chat.
Formato de payload personalizado
{
"ujet": {
"session_variable": {
"capture_target": "end_user_response",
"capture_key": "key"
}
}
}
A próxima mensagem do usuário final imediatamente após um agente virtual enviar um payload personalizado será capturada como uma variável de sessão com a chave "key".
Capturar da resposta de intent
Fluxo
A plataforma CCAI solicita a resposta ao Dialogflow CX.
O Dialogflow CX pode fazer um callback para o servidor do cliente por fulfillment.
O servidor do cliente precisa preencher o campo
session_variablena resposta.
O Dialogflow CX retorna a resposta com o payload personalizado incluindo
session_variablecampo comcapture_target = "payload".O servidor da plataforma CCAI mantém o objeto
payloadna etapa 2.
A plataforma CCAI vai postar todas as variáveis de sessão capturadas na sessão de chat no CRM como um comentário quando um agente virtual sair de um chat.
Formato de payload personalizado
{
"ujet": {
"session_variable": {
"capture_target": "payload",
"capture_type": [
"comment",
"agent"
],
"payload": {
"status": "STATUS",
"order_id": "ORDER_ID",
"personal_id": "PERSONAL_ID"
},
"invisible_to_agent": ["INVISIBLE_TO_AGENT"],
"display_order_in_adapter": ["DISPLAY_ORDER_IN_ADAPTER"]
}
}
}
Substitua:
STATUS: o status do pedidoORDER_ID: o ID do pedidoPERSONAL_ID: um identificador do usuário final.INVISIBLE_TO_AGENT: uma matriz de propriedades que você não quer que sejam visíveis no adaptador do agente. Por exemplo, um valor de"personal_id"aqui impediria que a propriedadepersonal_idfosse exibida no adaptador do agente. Para mais informações, consulte Exibir variáveis de sessão do agente virtual.DISPLAY_ORDER_IN_ADAPTER: uma matriz de propriedades para especificar a ordem em que as variáveis de sessão devem aparecer no adaptador do agente e nos registros do CRM. Para mais informações, consulte Exibir variáveis de sessão do agente virtual.
Upload de variáveis de sessão personalizadas no CRM
Para cada variável de sessão, o servidor precisa coletar todas as variáveis de sessão internamente e fazer o upload delas no CRM quando um agente virtual sair.
Exemplo de mensagem do CRM
###########################
Chat ID: 1
Menu ID: 1
Chatbot Platform: Platform Name
Chatbot Workflow: Workflow Name
Virtual Agent: Virtual Agent Name
###########################
Intent: Intent Captured from End User Response
Captured At: 2020-06-25 14:54:19
Captured Variables
request: Cancel Order
###########################
Intent: Intent Captured from Payload
Captured At: 2020-06-25 14:58:23
Captured Variables
status: Cancelled
order_id: #12345
###########################
Exemplo de cenário
A seguir, apresentamos um exemplo de conversa que mostra as diferentes etapas e as mensagens trocadas entre o agente virtual e o usuário final.
Etapa 1
Mensagem de chat do agente virtual
How can I help you?
(Button) Show my orders
(Button) Cancel an order
Resposta de intent (payload personalizado)
{
"ujet": {
"type": "inline_button",
"title": "How can I help you?",
"buttons": [
{
"title": "Show my orders",
"action": "quick_reply"
},
{
"title": "Cancel an order",
"action": "quick_reply"
}
]
}
}
Variável de sessão capturada
Nenhum
Etapa 2
Mensagem de chat do usuário final
Click "Cancel an order" button.
Variável de sessão capturada
Nenhum
Etapa 3
Mensagem de chat do agente virtual
Can you provide the order id please
Resposta de intent (payload personalizado)
{
"ujet": {
"type": "text"
"messages": [
"Can you provide the order id please"
],
"session_variable": {
"capture_target": "end_user_response",
"capture_key": "order_id";
}
}
}
Variável de sessão capturada
Nenhum
Etapa 4
Mensagem de chat do usuário final
Order id is #12345
Variável de sessão capturada
order_id: "Order ID is #12345"
Etapa 5
Mensagem de chat do agente virtual
Order #12345 is cancelled.
Do you need anything else?
Resposta de intent (payload personalizado)
{
"ujet": {
"type": "text",
"messages": [
"Order #12345 is canceled.",
"Do you need anything else?"
],
"session_variable": {
"capture_target": "payload",
"capture_type": [
"agent",
"comment",
"event"
],
"payload": {
"order_id": "#12345",
"order_status": "cancelled"
}
}
}
}
Variável de sessão capturada
order_id: "#12345",
order_status: canceled
Etapa 6
Mensagem de chat do usuário final
I would like to speak with a human agent.
Etapa 7
Mensagem de chat do agente virtual
Virtual Agent is left from the conversation.
{
"ujet": {
"type": "escalation",
"escalation_reason": "by_consumer"
}
}
Upload de variáveis de sessão personalizadas no CRM
No cenário anterior, o seguinte comentário é postado no ticket do CRM:
---------------------------------
Chat ID: 1
Menu ID: 1
Chatbot Platform: Platform Name
Chatbot Workflow: Workflow Name
Virtual Agent: Virtual Agent Name
--------------------------------
Intent: Intent Captured from End User Response
Captured At: 2020-06-25 14:54:19
Captured Variables
order_id: Order id is #12345.
--------------------------------
Intent: Intent Captured from Payload
Captured At: 2020-06-25 14:58:23
Captured Variables
order_id: #12345
order_status: canceled
--------------------------------
Configurar cards de conteúdo
Os cards de conteúdo mostram conteúdo conciso e visualmente atraente em um formato de card, criando interações mais simples para o usuário final consumir as informações apresentadas. É possível criar cards de conteúdo usando o Dialogflow CX e personalizá-los com títulos, subtítulos e texto do corpo.
O exemplo a seguir usa cards de conteúdo para mostrar opções de restaurantes ao usuário final:

Propriedades do card de conteúdo
| Nome da propriedade | Descrição | Obrigatório | Tipo |
|---|---|---|---|
title |
O título do card. | Sim | String |
subtitle |
O subtítulo do card. | Não | String |
body |
A descrição do card de conteúdo. | Sim | String |
link |
Um link de página da Web ou um link direto. O SDK vai usar os recursos do SO para abri-lo. | Não | String |
event_params |
Um dicionário que contém informações extras sobre o evento de clique. O SDK vai usar isso. | Não | Dicionário |
Payload do Dialogflow CX: adicionar validação e aceitar o tipo de card de conteúdo
Um tipo de payload específico do Dialogflow CX processa cards de conteúdo quando as mensagens dos usuários finais são recebidas pelo servidor do chatbot. Confira a seguir um exemplo de payload do Dialogflow CX:
{
"ujet": {
"type": "content_card",
"cards": [
{
"title": "Title",
"subtitle": "Subtitle",
"body": "Body",
"link": "app://page",
"event_params": {} # for deep-link click event
}
]
}
}
Informações sobre cards de conteúdo no histórico de chat do CRM
As informações do título do card são registradas para acompanhar em quais cards o usuário final clicou. Essas informações são registradas no histórico de chat do CRM.
No exemplo a seguir, o histórico de mensagens de chat no CRM mostra a interação do card de conteúdo.
[Chat message history]
ID: 305 | 2023-07-06 PDT
--------------------------------------------------
[01:13:32 VA] Welcome message
[01:14:35 Mobile U.] Content Cards:
- Title 1
- Title 2
Registrar eventos de clique no título do card de conteúdo
Para registrar quando um usuário final clica no título de um card de conteúdo, use o formato a seguir para capturar o evento:
{end_user_name} clicked on the '{title}' card.
Note Title: Content Card click
Note Comment: 'John Doe' clicked on the 'See our new website' card.
Criar um evento de clique no card de conteúdo usando a API End User Event
Quando um usuário final clica no título de um card de conteúdo, é possível registrar esse evento enviando uma solicitação POST para o URL especificado junto com o título do card clicado.
Endpoint da API:POST /api/v2/chat/:id/end_user_event
Uso:criar um evento de clique no card de conteúdo.
URL:/api/v2/chats/:id/end_user_event
Método:POST
Parâmetros :
| Campo | Tipo | Descrição |
|---|---|---|
event |
objeto | |
event.name |
string | Para eventos de clique no card de conteúdo, use content_card_clicked. |
event.payload |
objeto | |
event.payload.title |
string | Insira o título do card clicado. |
(Opcional) end_user_name |
string | Insira o nome do usuário final. Se deixado em branco, o nome será recuperado do CRM. |
Exemplo de solicitação:
{
"event": {
"name": "content_card_clicked",
"payload": {
"title": "New our website"
}
},
"end_user_name": "consumer 1" ## optional
}
Resposta: Status: 202 Accepted