Exercício do JSONata: https://try.jsonata.org/
Funções JSONata: Cadeia de caracteres, Número, Objeto, Matriz
Forçar tipo de cadeia de caracteres: $string(Account.Order[0].Product[0].ProductID): "858383"
Forçar tipo de número: $number(Account.Order[0].Product[0].SKU): 406654608
Dia e hora
$now() > ISO 8601, por exemplo, 2022-10-17T09:50:03.163Z
$millis() > UNIX Epoch em milissegundos, por exemplo, 1666000139832
Para Millis (UNIX x 1000) (para quaisquer conversões e comparações matemáticas):
$toMillis(date)
> por exemplo, 1626335334767
Se sua data não estiver no formato ISO 8601, você ainda poderá usar toMilis especificando o formato de entrada, por exemplo, $toMillis('2020-09-09 00:00:00 +02:00', '[Y0001]-[M01]-[D01] [H01]:[m01]:[s01] [Z]')
De Millis (UNIX x 1000) (legível, passar o padrão de saída como parâmetro:
$fromMillis($toMillis(date), '[M01]/[D01]/[Y0001] [h#1]:[m01][P]')
> por exemplo, 07/15/2021 7:48am
Exemplo: Diferença entre orderDate e now():
($millis() - $toMillis(orderDate))/1000/60 > para minutos
($millis() - $toMillis(orderDate))/1000/60/60/24 > para dias
> por exemplo, 461 dias, que agora pode ser usado em operadores de números do bloqueio condicional: <>=
Agregação de vários resultados: Cartões e carrosséis
(Lembre-se das limitações técnicas ao testar em um widget de CRM em uso.)
IMPORTANTE: os C&Cs no criador de diálogos procuram matrizes. A menos que você defina sua saída de destino em JSONata como [], ela pode retornar um objeto e gerar um erro técnico.
Ao serem exibidos em uma mensagem de texto do agente de IA, os objetos (não aninhados) serão renderizados como [object Object], as matrizes como [object Object],[object Object].
Consulta básica para criar um novo objeto por entrada:
Account.Order.Product.{'Quantity': Quantity}
C&C simples:
Account.Order.Product[[0..8]].{
'SKU': $substring(SKU, 0, 50), 'Quantity': Quantity}
… [[0..8]] > Intervalo de resultados com o primeiro item sendo índice 0, 10 objetos no total sendo o limite máximo para a maioria dos CRMs.
… $substring(SKU, 0, 50) > Cortar o excesso de letras da cadeia de caracteres com a primeira letra sendo o índice 0.
Cartão de fallback opcional caso o corpo da resposta esteja vazio/não seja encontrado:
Account.Order.Product ?
[Account.Order.Product[[0..8]].{
'SKU': $substring(SKU, 0, 50), 'Quantity': Quantity}] :
[{"SKU" : "Product Not Found"}]
Agregação de vários resultados: E-mail
$join(Account.Order.Product.(
"SKU: " & SKU & ", " & "Price: " & Price), '\n')
… '\n' > Renderizar uma nova linha para separar os resultados se o seu CRM for compatível com a formatação básica.