Help Center
SuporteLanguage
  • Help Center 🚀
  • Introdução
  • Cadastro
  • Definições
  • BOT BUILDER
    • Criar o Bot
      • Importar bot
      • Criando meu primeiro BOT
      • Configurações do Bot
        • Geral
        • Controle de Versão
        • Compartilhamento
        • Comportamento
    • Fluxo da Conversa
      • Importador de Q&A
      • Mensagem
        • Encerrar Atendimento
        • Tipos de formatação de Texto
        • O que é uma mensagem template ?
      • Filtro
      • Etapa Existente
      • Rest API
        • Exemplo de utilização da etapa Rest API
      • Javascript
        • Manipulação de Objetos
      • E-mail
      • Controle Humano
      • Webview
      • Encaminha a outro bot
      • Testar Bot
      • Ação de Tempo
    • NLP
      • Intenção
      • Entidade
      • Treinamento
      • Como utilizar o DialogFlow?
    • Canais
      • Microsoft Teams
      • Whatsapp
        • Como utilizar um Número de teste da Cosmobots
        • Como posso adquirir o selo de verificação para o meu WhatsApp?
        • Cadastrar templates na plataforma
        • Adicionando botões ao canal whatsapp
        • Provedores
          • Twilio
            • Como comprar e configurar um número na Twilio?
            • Inserir webhook em número Twilio
          • Dialog 360
            • Aprovar templates
      • Instagram
        • Como filtrar menções do Instagram
      • Google Assistant
      • Facebook
        • Como verificar minha empresa no Facebook Business?
        • Não consigo clicar no botão de verificar conta. O que fazer?
      • Workplace
      • Chat Widget
        • Landing
        • Publicando Widget
        • Webhook
    • Broadcast
    • Dados
      • Conversas
      • Campos
      • Objetos
      • Como acessar e exportar os Dados coletados pelo Bot?
      • Layouts
        • Cosmo Desk
        • Pesquisa
    • Dashboard
      • Performance dos Atendentes
      • Indicadores
    • Explorer
      • Códigos
      • Alterações
    • Integrações
      • Pipefy
        • Acessando campos retornados em webhook
      • RD Station
      • Analíticos
  • COSMO DESK
    • Live Chat
      • Download Livechat
      • 🔔Receber notificações em Live Chat
    • Configurações
      • 🔄Filas de Atendimento
      • 🤖Regras de atendimento
      • 🕐SLA
      • 💬Mensagem Rápidas
      • 📑Tags
      • 💨Status de Ausente
  • CONFIGURAÇÕES
    • Perfil
    • Cadastrar Usuários
    • Consumo
    • Feriados
  • API
    • V1 - Records
    • V1 - Index
    • V1 - Send Message
    • V1 - Broadcast Messages
  • Available Languages
  • Outros
    • Saber Mais
      • Utilizando Hyperlink no canal Widget
      • Formatação em negrito e itálico para canais Widget e Whatsapp
      • Erro 403
      • Pesquisa NPS
      • Gerar URL de arquivos
      • Enviar o usuário para um fluxo específico caso ele responda 2 ou mais vezes errado.
      • 🍪Ativar ou Desativar Cookies
      • 🧹Limpeza de Cache
      • 🆗Validar idade
      • 🆗Validar e-mail
      • 🆗Validar CPF
      • 🆗Dialog - Validar mensagens do tipo imagem em Filtro.
      • 🆗Validar CNPJ
      • 🆗Validar arquivos
      • Como visualizar Logs de Atendimento
      • Pular Etapa de Cadastro
    • Exemplos de Códigos JavaScript
      • Envio de Imagens/Anexos/Vídeos/Áudios
      • Adicionar TAGS pelo fluxo
      • Limpar TAGS pelo fluxo
      • Parar o bot por x tempo
      • Validar data digitada pelo usuário
      • Converter arquivos em B64
      • Validador de resposta a templates
      • Validar menção no Instagram
  • FAQ
    • Criar modelos de mensagem para sua conta do WhatsApp Business
    • Como excluir uma mensagem do WhatsApp enviada usando a API?
    • Regra 24 horas do WhatsApp
Powered by GitBook
On this page
  • Variáveis do Contexto da Conversa
  • Query de Objetos e Update de Registros
  • Criação de Registros
  • Exclusão de Registros
  • Envio de Mensagem de Texto
  • Envio de Mensagem de Cartões

Was this helpful?

  1. BOT BUILDER
  2. Fluxo da Conversa
  3. Javascript

Manipulação de Objetos

PreviousJavascriptNextE-mail

Last updated 4 years ago

Was this helpful?

Variáveis do Contexto da Conversa

Durante o fluxo da conversa, informações sobre o contexto da conversa podem ser guardadas em alguma destas etapas ou ações:

  • Mensagem de Texto ou Cartão:

    • Ao 'Salvar Resposta', a informação pode ser um campo do objeto Usuário ou algum outro objeto personalizado. Caso seja do usuário a informação será salva diretamente na base de dados, caso contrário será armazenada temporariamente como variável do contexto da conversa, podendo ser acessada através do nome do objeto seguido do nome do campo, como exemplo: endereco.cep

  • Intenções:

    • No caso de NLP, tenho algum matching de intenção, as entidades desta intenção serão armazenadas temporariamente como variáveis do contexto da conversa, podendo ser acessadas acrescentado 'context.objetcs.' a frente do nome das variáveis das intenções, como exemplo: context.objetcs.refeicao

Query de Objetos e Update de Registros

Você tem a opção aqui de fazer queries(consultas) de registros de objetos personalizados. Para que fiquem disponíveis durante a execução do código. O resultado será retornado como tipo array. Para acessar o resultado de uma query basta adicionar '__s' ao lado direito do nome do objeto, por exemplo: pedido__s

Por enquanto as opções de execução da query são:

  • Limite de registros: responsável por limitar a quantidade de registros retornados pela query.

  • Condição de Tempo: caso a quantidade de registros da query seja maior que o limite, define uma ordem de retorno dos registros: por mais recentes ou mais antigos.

Além dos campos personalizados cada registro da query terá disponível os seguintes campos do sistema:

  • id: ID do registro

  • obj_id: ID do Objeto do registro

  • parents: objeto controlador do objeto atual (ou pai do objeto atual)

    • parents.id: ID do objeto controlador

    • parents.name: Nome do objeto controlador

  • grandparents: objeto controlador do objeto controlador do objeto atual (ou avô do objeto atual)

    • grandparents.id: ID do objeto controlador

    • grandparents.name: Nome do objeto controlador

  • createdAt: horário (em milissegundos) de quando o registro foi criado.

  • updatedAt: horário (em milissegundos) de quando o registro foi atualizado.

Segue abaixo um exemplo de como tratar o retorno da query:

// Soma o total do valor dos últimos pedidos do usuário atual
var total = 0;
for (var x in pedido__s){
   // Acessa um pedido por vez
   var pedido = pedido__s[x];

   // Dentro de cada pedido, acessa o campo Valor e adiciona ao Total
   total += pedido.valor;
}

Por padrão o registro do objeto User, referente ao usuário atual, e as variáveis de Contexto da Conversa estarão sempre disponíveis. Portanto não precisa fazer query para o objeto User. Para acessar o campo do sistema ID do usuário atual, basta usar: user.id. E para acessar, por exemplo, uma variável de contexto chamada produto_atual basta usar: context.objetcs.produto_atual

Qualquer alteração de valor dos campos personalizados destes objetos será refletida na base de dados depois da execução do código.

Criação de Registros

Você pode também criar novos registros de objetos personalizados. Basta definir estes registros como tipo objeto do javascript (formato JSON). Lembrando de preencher os campos obrigatórios. E quando tiver pronto, adicioná-los ao respectivo objeto que poderá ser usado da seguinte forma: Nome do Objeto + '__c', por exemplo: item_do_pedido__c

Aqui temos um exemplo de como criar um registro:

// Declara a variável que terá as informações do novo Item do Pedido
var novo_item_pedido = {}

// Preenche os campos do novo registro
novo_item_pedido.numero = '12345';
novo_item_pedido.produto = context.objetcs.produto_id;
novo_item_pedido.quantidade = context.objetcs.produto_quantidade;
novo_item_pedido.valor = context.objetcs.produto_valor;

// Preencha o campo controlador que veio da querym neste caso o ID do Pedido
if (pedido__s[0]){
   novo_item_pedido.pedido = pedido__s[0].id;

   // Adiciona o novo registro para ser criado
   item_do_pedido__c.push(novo_item_pedido);
}

Caso você esteja criando um registro de um objeto que possui objeto Controlador (ou seja, possui um relacionamento de 1 para N), você precisa informar o ID deste registro controlador no respectivo campo. Caso contrário este registro não será criado.

Exclusão de Registros

Também existe a opção de excluir registros de objetos personalizados. Basta fazer a query, conforme mencionado acima, pegar o id dos registros que devem ser excluídos, e adicioná-los ao respectivo objeto que poderá ser usado da seguinte forma: Nome do Objeto + '__d', por exemplo: pedido__d

Segue abaixo exemplo de como excluir um registro:

// Percorre todos os pedidos retornados pela query
for (var i in pedido__s){

   // Identifica o pedido com Status Incompleto
   if (pedido__s[i].status === 'incompleto'){

      // Adiciona o ID do registro para ser excluído
      pedido__d.push( pedido__s[i].id );
   }
}

Caso você esteja excluindo um registro de um objeto que possui abaixo dele algum objeto Controlado (ou seja, possui um relacionamento de 1 para N), todos os registros controlados por ele serão excluídos também.

Envio de Mensagem de Texto

Existe a alternativa para enviar mensagens ao usuário usando código Javascript. É importante para os casos, por exemplo, onde o envio de mensagem depende de informações disponíveis depois de realizada uma query. Segue abaixo exemplo de como enviar mensagem:

// Define uma variável com as informações necessárias para enviar a mensagem
var message_1 = {
   type: 'text',
   text: 'O total do seu pedido atual é R$ ' + context.objetcs.pedido_total,
   quick_replies: [{
      caption: 'Confirmar',
      type: 'context_variable',
      value: {pedido_confirmado: context.objetcs.pedido}
   }]
};

// Adiciona a mensagem para ser enviada
send_message.push(message_1);

Segue abaixo as informações que precisam ser fornecidas para criar uma mensagem de texto. Quando usado no código precisa estar com o tipo objeto do Javascript (formato JSON).

  • type: sempre coloque 'text'. Obrigatório.

  • text: coloque aqui o texto que deseja enviar. Obrigatório e limite de 320 caracteres.

  • quick_replies: array com informações de cada quick reply. Não obrigatório e limite de até 10 replies.

    • caption: texto que aparece visível ao usuário. Obrigatório e limite de até 20 caracteres.

    • type: pode ser 'text' representando um texto simples. Ou pode ser 'context_variable' representando um tipo objeto do Javascript contendo informações que poderão ser acessadas durante o tempo do contexto da conversa atual. Obrigatório.

    • value: depende do type acima, se for 'text', preencher aqui o texto. Se for 'context_variable' preencher aqui o objeto no formato JSON. Obrigatório.

Envio de Mensagem de Cartões

Aqui temos a opção de enviar mensagens que contenha cartões.

// Define uma variável com as informações necessárias para enviar a mensagem
var message_2 = {
   type: 'cards',
   cards: [{
      title: 'Opção 1',
      subtitle: 'Detalhes da opção',
      image_url: '
https://cosmobots.io/static/media/testing.png
',
      buttons: [{
         caption: 'Selecionar',
         type: 'context_variable',
         value: {produto_selecionado: produto__s[0].id}
      },{
         caption: 'Acessar Detalhes',
         type: 'url',
         value: '
www.teste.com
'
      }]
   }],
};

// Adiciona a mensagem para ser enviada
send_message.push(message_2);

Segue abaixo as informações que precisam ser fornecidas para criar uma mensagem de cartões. Quando usado no código precisa estar com o tipo objeto do Javascript (formato JSON).

  • type: sempre coloque 'cards'. Obrigatório.

  • cards: array com informações de cada cartão. Obrigatório.

    • title: título do cartão. Obrigatório e limite de até 80 caracteres.

    • subtitle: subtítulo do cartão. Não Obrigatório e limite de até 80 caracteres

    • image_url: url da imagem do cartão. Não Obrigatório e limite de até 120 caracteres.

    • buttons: array com informações de cada botão. Não Obrigatório e limite de até 3 botões.

      • caption: texto que aparece visível ao usuário. Obrigatório e limite de até 20 caracteres

      • type: pode ser 'url' ou 'context_variable' representando um tipo objeto do Javascript contendo informações que poderão ser acessadas durante o tempo do contexto da conversa atual. Obrigatório.

      • value: depende do type acima, se for 'url', preencher aqui a url válida. Se for 'context_variable' preencher aqui o objeto no formato JSON. Obrigatório.

Existe um tempo limite de execução de 15 segundos do código javascript. Portanto se passar desse limite a execução do código será interrompida e será retornado um erro que pode ser consultado no histórico da conversa.