Manipulação de Objetos
Last updated
Last updated
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
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:
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.
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:
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.
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:
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.
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:
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.
Aqui temos a opção de enviar mensagens que contenha cartões.
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.