JSONata Exerciser: https://try.jsonata.org/
Funções JSONata: String, Number, Object, Array
Forçar tipo string: $string(Account.Order[0].Product[0].ProductID): "858383"
Forçar tipo number: $number(Account.Order[0].Product[0].SKU): 406654608
Dia e hora
$now() > ISO 8601, ex.: 2022-10-17T09:50:03.163Z
$millis() > UNIX Epoch em milissegundo, ex.: 1666000139832
Para milissegundos (UNIX x 1000) (para quaisquer conversões e comparações matemáticas):
$toMillis(date)
> ex.: 1626335334767
Se a sua data não está no formato ISO 8601, ainda assim você pode usar toMillis especificando o formato de entrada, ex.: $toMillis('2020-09-09 00:00:00 +02:00', '[Y0001]-[M01]-[D01] [H01]:[m01]:[s01] [Z]')
De milissegundos (UNIX x 1000) (legível para humanos, passe o padrão de saída como um parâmetro:
$fromMillis($toMillis(date), '[M01]/[D01]/[Y0001] [h#1]:[m01][P]')
> ex.: 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
> ex.: 461 dias, que agora pode ser usado em operadores de número de bloco condicional: <>=
Agregação de vários resultados: cartões e carrosséis
(Lembre-se das limitações técnicas quando estiver testando em um widget de CRM ativo.)
IMPORTANTE: cartões e carrosséis no criador de diálogos procuram matrizes. A menos que você defina sua saída de destino em JSONata como [], um objeto pode ser retornado em vez disso, e ocorrerá um erro técnico.
Quando a saída é em uma mensagem de texto do agente de IA (não aninhada), objetos são renderizados como [objeto Objeto], matrizes como [objeto Objeto],[objeto Objeto].
Consulta básica para criar um novo objeto por entrada:
Account.Order.Product.{'Quantity': Quantity}
Cartões e carrosséis 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) > Corte as letras em excesso da cadeia de caracteres, considerando que a primeira letra tem índice 0
Cartão de fallback opcional caso o corpo da resposta esteja vazio ou 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' > Renderize uma nova linha para separar os resultados se o seu CRM tiver suporte para formatação básica