Com o payload personalizado do Dialogflow CX, você pode melhorar a experiência do agente virtual além de conversas e interações baseadas em texto simples. Ao usar payloads personalizados no Dialogflow CX, você pode configurar seu agente virtual para renderizar respostas e citações personalizadas.
Tipos de mensagens de resposta personalizadas
Com as respostas personalizadas, é possível renderizar os seguintes tipos de mensagens:
Texto
Botões in-line
Botões presos
Imagens
Vídeos
Documentos
Visualizações complexas (combinação de um ou mais tipos de mensagens)
Com as ações personalizadas, os agentes virtuais podem fazer o seguinte:
Encaminhamentos para agentes humanos
Transferências planejadas para agentes humanos
Encerrar sessão de suporte
Payload da Contact Center AI Platform (plataforma CCAI)
Para ser usado no Dialogflow CX como o 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 do chat para payload personalizado
Usado com o SDK da plataforma de CCAI para mostrar uma UI adequada. É o mesmo com o formato de payload personalizado do Dialogflow CX, mas não tem o campo "ujet" na raiz.
Confira os exemplos a seguir para mais detalhes.
Exemplos
As seções a seguir incluem exemplos de payloads que podem ser usados no Dialogflow CX.
Texto
{
"ujet": {
"type": "text",
"messages": [
"Hello",
"How can I help you?"
]
}
}
Encaminhamento para a mesma fila
Por agente virtual:
{
"ujet": {
"type": "action",
"action": "escalation",
"escalation_reason": "by_virtual_agent"
}
}
Por usuário final:
{
"ujet": {
"type": "action",
"action": "escalation",
"escalation_reason": "by_consumer"
}
}
O valor escalation_reason é informado nos painéis.
Encaminhamento para a fila de destino
Por agente virtual:
{
"ujet": {
"type": "action",
"action": "escalation",
"escalation_reason": "by_virtual_agent",
"menu_id": 100,
"language": "ko"
}
}
Por 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.
Encerrar 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 de 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 seu payload personalizado usando o Dialogflow, consulte os recursos Respostas de payload personalizado (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 do agente virtual para um número de telefone ou endpoint SIP
É possível 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 ligação, que vai continuar. Se a conexão falhar, uma mensagem de falha na 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 uma carga útil 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
Para transferir uma chamada de um agente virtual para um endpoint SIP da maneira padrão, use uma carga útil do Dialogflow CX semelhante ao exemplo de código a seguir:
{
"ujet": {
"type": "action",
"action": "deflection",
"deflection_type" : "sip",
"sip_uri": "sip:1-999-123-4567@voip-provider.example.net"
}
}
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 da intenção e da resposta do usuário final. Em seguida, colete e faça upload de todas elas para o CRM como um comentário. Para mais informações, consulte Payload do Dialogflow para variáveis de sessão personalizadas.
Captura da resposta do usuário final
Flow
A plataforma de 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 deve 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_responseUm 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 uma conversa.
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 uma carga útil personalizada será capturada como uma variável de sessão com a chave "key".
Capturar da resposta de intent
Flow
A plataforma CCAI solicita a resposta ao Dialogflow CX.
O Dialogflow CX pode fazer uma chamada de volta para o servidor do cliente por fulfillment.
O servidor do cliente deve preencher o campo
session_variablena resposta.
O Dialogflow CX retorna a resposta com o payload personalizado, incluindo o campo
session_variablecomcapture_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 pedido.PERSONAL_ID: um identificador do usuário final.INVISIBLE_TO_AGENT: uma matriz de propriedades que você não quer que fiquem 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 Mostrar 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 Mostrar 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 deve coletar todas as variáveis de sessão internamente e fazer 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
Confira a seguir 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, as seguintes postagens de comentários são feitas no tíquete 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 corpo do texto.
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 abrir o link. | 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 específico de payload do Dialogflow CX processa cards de conteúdo quando mensagens de usuários finais são recebidas pelo servidor do bot de chat. 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 conversas 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 seguinte formato 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 em 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, você pode 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:cria 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 em cards 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