Sintaxe de expressões
Ganhe a flexibilidade de usar funções de sintaxe de código no seu bot sem precisar de habilidades avançadas de programação.
A sintaxe de expressão se refere à estrutura de instruções na linguagem de código usada para incorporar conteúdo dinâmico, variáveis ou funções internas específicas em seu chatbot. Ela pode ser ativada nas configurações de comportamento do bot. Veja essa página para instruções detalhadas.

Tenha também em mente as mudanças que quebram a compatibilidade que estão ocorrendo para bots existentes.
Ao contrário das ações de código tradicionais, que exigem conhecimento de JavaScript e podem consumir muitos recursos, a sintaxe de expressão no Chatlayer torna funcionalidades avançadas acessíveis sem a necessidade de habilidades extensas de programação.
Neste artigo, o termo 'expressão' refere-se à combinação de identificadores usando funções, operadores, constantes e valores ao programar. Portanto, não deve ser confundido com o conceito de expressões no seu modelo de NLP.
Como usar a sintaxe de expressão
A sintaxe de expressão pode ser usada dentro de Etapas de texto e Condições, usando tipos específicos tipos de dados, operadores e funções.
Use funções de sintaxe no seu bot
Para usar a sintaxe de expressão no seu chatbot:
Abra o seu bloco.
Vá para o seu campo de texto.
Digite ‘{' dentro de um campo de texto ou digite o nome de uma função interna. Alguns casos de uso são mostrados abaixo.
Etapa de texto
Use a sintaxe de expressão dentro de uma etapa de texto para exibir o resultado dentro da mensagem do seu bot.


Bloco de condição
Use a sintaxe de expressão dentro de uma Condição como uma variável.

Leia abaixo exemplos de casos de uso:
Funções
Funções, sejam internas ou personalizadas, formam a espinha dorsal da sintaxe de expressão. Elas impulsionam tarefas e operações específicas dentro do fluxo conversacional do seu chatbot.
Funções internas
Aqui está a lista de funções internas que você pode usar:
ABS
Retorna o valor absoluto de um número.
operation: (n: any) => Math.abs(n)
APPEND
Adiciona um ou mais itens ao final de uma lista.
operation: (arr: any, ...items: any[]) => arr.concat(...items)
BASE64_DECODE
Decodifica texto codificado em Base64.
operation: (text: any) => Buffer.from(text, 'base64').toString('utf8')
BASE64_ENCODE
Codifica texto usando o algoritmo de codificação Base64.
operation: (text: any) => Buffer.from(text + '', 'utf8').toString('base64')
CAPITALIZE
Coloca o primeiro caractere do texto em maiúscula e converte os caracteres restantes em minúsculas.
operation: (value: any) => lodash.capitalize(value)
CEIL
Arredonda para cima e retorna o menor inteiro maior ou igual a um número dado.
operation: (n: any) => Math.ceil(n)
DAY
Retorna o dia da data fornecida ou o dia atual se nenhuma data for fornecida (1-12).
operation: (d: any) => DateTime.fromMillis(d || DateTime.now().toMillis()).day
DOWNCASE
Coloca cada caractere do texto em minúscula.
operation: (value: any) => lodash.toLower(value)
FIRST
Retorna o primeiro elemento de uma lista.
operation: (value: any) => lodash.first(value)
FLOOR
Arredonda para baixo e retorna o maior inteiro menor ou igual a um número dado.
operation: (n: any) => Math.floor(n)
FORMAT
Retorna a data formatada de acordo com a string de formato.
operation: (d: any, format: any, locale: any) => DateTime.fromMillis(d).toFormat(format, { locale: locale || 'en' })
HOUR
Retorna a hora da data fornecida ou a hora atual se nenhuma data for fornecida (0-23).
operation: (d: any) => DateTime.fromMillis(d || DateTime.now().toMillis()).hour
INCLUDES
Retorna VERDADEIRO se o alvo (que pode ser texto, um objeto ou um array) incluir o valor; caso contrário, retorna FALSO.
operation: (haystack: any, needle: string) => lodash.includes(haystack, needle)
JSON_PARSE
Analisa um valor JSON serializado.
operation: (value: any) => JSON.parse(value)
LAST
Retorna o último elemento de uma lista.
operation: (value: any) => lodash.last(value)
MAX
Retorna o valor máximo dos argumentos fornecidos.
operation: (...args: any) => Math.max(...args)
MD5
Calcula o hash MD5 codificado em hexadecimal de um texto.
operation: (t: any) => crypto.createHash('md5').update(t + '').digest('hex')
MINUTE
Retorna o minuto da data fornecida ou o minuto atual se nenhuma data for fornecida (0-59).
operation: (d: any) => DateTime.fromMillis(d || DateTime.now().toMillis()).minute
MONTH
Retorna o mês da data fornecida ou o mês atual se nenhuma data for fornecida (1-12).
operation: (d: any) => DateTime.fromMillis(d || DateTime.now().toMillis()).month
NOW
Retorna a data e hora atuais.
operation: () => DateTime.now().toMillis()
PARSE
Analisa uma data formatada de acordo com a string de formato.
operation: (d: string, format: any, locale: any) => DateTime.fromFormat(d, format, { locale }).toMillis()
ROUND
Retorna o valor de um número arredondado para a precisão mais próxima.
operation: (n: any, precision = 0) => Math.round(n * Math.pow(10, precision)) / Math.pow(10, precision)
SPLIT
Divide o texto de entrada em uma lista usando o delimitador como separador.
operation: (text: any, delimiter: any) => (text + '').split(delimiter + '')
STRINGIFY
Serializa um valor em uma string JSON.
operation: (value: any) => stringify(value, null, 0)
TODAY
Retorna a data de hoje com a hora definida para 00:00.
operation: () => DateTime.now().startOf('day').toMillis()
TOMORROW
Retorna a data de amanhã com a hora definida para 00:00.
operation: () => DateTime.now().startOf('day').plus({ days: 1 }).toMillis()
TO_NUMBER
Converte um valor em número.
operation: (value: any) => value - 0
TO_STRING
Converte um valor em string.
operation: (value: any) => value?.toString()
UUID
Gera um identificador universalmente único (V4).
operation: () => uuid()
WEEKDAY
Obtenha o dia da semana. 1 é segunda-feira e 7 é domingo.
operation: (d: any) => DateTime.fromMillis(d || DateTime.now().toMillis()).weekday
YEAR
Retorna o ano da data fornecida ou o mês atual se nenhuma data for fornecida.
operation: (d: any) => DateTime.fromMillis(d || DateTime.now().toMillis()).year
YESTERDAY
Retorna a data de ontem com a hora definida para 00:00.
operation: () => DateTime.now().startOf('day').plus({ days: -1 }).toMillis()
Funções personalizadas
Você pode criar as suas próprias funções como quiser, usando as operadores.
Alguns exemplos de funções personalizadas:
1 + 21 + (2 * 3)MAX(1,2)a ? b : ca.b.c.d
Operadores
As operações abrangem uma variedade de ações, cálculos e manipulações de dados no código. O uso de operadores oferece respostas mais dinâmicas e com mais contexto ao seu chatbot.
1
()
Chamada de função
Da esquerda para a direita
.
Nome qualificado ou acesso a campo
[]
Indexação
2
- (unário)
Negação
Da direita para a esquerda
!
NÃO lógico
3
*
Multiplicação
Da esquerda para a direita
/
Divisão
%
Resto
4
+
Adição
- (binário)
Subtração
5
== != < > <= >=
Relações
6
&&
E lógico
7
?:
Condicional
Da direita para a esquerda
Tipos de dados
Oferecemos suporte a um subconjunto de tipos JavaScript para proporcionar flexibilidade na sua jornada de criação de bots:
número
string
booleano
mapa
lista
nulo
Casos de uso da sintaxe de expressão
Nesta seção, encontre alguns exemplos de casos de uso em que a sintaxe de expressão é usada
Obter a hora
Há várias maneiras de retornar informações sobre o tempo com funções de sintaxe de expressão.
Obter a hora atual
Imagine que você quer que o seu bot saiba ou exiba a hora atual. É fácil recuperar a hora com as funções a seguir:
FORMAT()retorna o horário de acordo com uma string.NOW()retorna a data e hora atuais com base no fuso horário UTC.
Combine essas opções para criar uma função que retorne a hora com horas e minutos:
Para saber mais sobre formatação de hora, dê uma olhada em esta tabela.

Obter um fuso horário UTC+1
Imagine um cenário em que seus usuários finais estejam localizados em um fuso horário UTC+1. Para que eles saibam se sua loja está aberta agora, o seu bot precisa determinar que horas são na Bélgica.
Você pode usar as funções:
NOW()retorna a data e hora atuais com base no fuso horário UTC.HOUR()extrai a hora do momento atual.HOUR(NOW())extrai o componente da hora do fuso horário UTC atual.+1adiciona 1.
Combine essas funções na seguinte expressão personalizada:
Esta expressão extrai a hora do fuso horário UTC atual e adiciona 1 a ela para que corresponda ao horário belga.

Minúsculas
Digamos que seu cliente tenha informado o nome em letras maiúsculas. Você quer converter todos os caracteres de entrada para minúsculas para que isso possa seguir um processo padronizado.
DOWNCASE()converte todos os caracteres de um texto fornecido para minúsculas.@usernameé o nome da variável em que o nome do seu cliente é salvo.
Combine esses elementos em uma função personalizada que coloca todas as letras do seu nome de usuário em minúsculas:

Criar uma lista
Digamos que você tenha uma mensagem que consiste em uma lista de elementos que gostaria de tratar separadamente, por exemplo, uma lista de frutas.
Sua mensagem de exemplo seria a seguinte string:
SPLIT()divide uma string em uma listaFIRST()eLAST()recuperam o primeiro e o último elementos de uma lista, respectivamente
Combine essas funções para retornar o primeiro e o último elemento da lista de frutas:

🚨 Mudanças que quebram a compatibilidade
Para garantir uma transição suave para a sintaxe de expressão, é fundamental abordar algumas mudanças que quebram a compatibilidade e que podem impactar os fluxos atuais do seu bot.
Restrição ao nome da variável
Nomes de variáveis existentes como a-b, a b, number ou usar '-' em Ir para variáveis não são mais compatíveis.
Certifique-se de ajustar os nomes das suas variáveis de acordo com a nova sintaxe de expressão.

Requisito de identificador JavaScript
Somente identificadores JavaScript válidos são suportados. Se suas variáveis não estiverem em conformidade, ajuste-as agora para evitar problemas. Consulte esta documentação para diretrizes .
Remoção do| operador
O | operador não é mais compatível. Se ele fizer parte do fluxo do seu bot, faça os ajustes necessários para alinhar à nova sintaxe.
Antes da atualização, se o fluxo do seu bot envolvesse o uso do operador |, ele poderia se parecer com isto:
Com a atualização da sintaxe de expressão, o | operador não é mais compatível. Modifique o nome da sua variável.
JSON.stringif não é mais compatível
Certifique-se de revisar suas variáveis anteriores e confirmar que nenhuma delas dependa de JSON.stringify. Use STRINGIFY ou TO_STRING em vez disso.
Atualizado
Isto foi útil?