Exerciser de JSONata: https://try.jsonata.org/
Funciones de JSONata: cadena, número, objeto, matriz
Forzar tipo de cadena: $string(Account.Order[0].Product[0].ProductID): "858383"
Forzar tipo de número: $number(Account.Order[0].Product[0].SKU): 406654608
Día y hora
$now() > ISO 8601, p. ej. 2022-10-17T09:50:03.163Z
$millis() > época de UNIX en milisegundos, p. ej. 1666000139832
A Millis (UNIX x 1000), para cualquier conversión matemática y comparación:
$toMillis(date)
> p. ej. 1626335334767
Si la fecha no está en formato ISO 8601, puede usar toMillis especificando el formato de entrada, p. ej. $toMillis('2020-09-09 00:00:00 +02:00', '[Y0001]-[M01]-[D01] [H01]:[m01]:[s01] [Z]').
De Millis (UNIX x 1000), legible por humanos; pase el patrón de salida como parámetro:
$fromMillis($toMillis(date), '[M01]/[D01]/[Y0001] [h#1]:[m01][P]')
> p. ej. 07/15/2021 7:48am
Ejemplo: diferencia entre orderDate y now():
($millis() - $toMillis(orderDate))/1000/60 > a minutos
($millis() - $toMillis(orderDate))/1000/60/60/24 > a días
> p. ej., 461 días, que ahora se puede usar en operadores numéricos de bloqueo condicional: <>=
Agregar varios resultados: Tarjetas y carruseles
Tenga en cuenta las limitaciones técnicas al realizar pruebas en un widget de CRM activo.
IMPORTANTE: los módulos de tarjetas y carruseles (C&C) en el generador de diálogo buscan matrices. A menos que defina la salida de destino en JSONata como [], podría devolver un objeto en su lugar y generar un error técnico.
Cuando se envían en un mensaje de texto de agente IA, los objetos (no anidados) se representarán como [objeto Objeto], y las matrices como [objeto Objeto],[objeto Objeto].
Consulta básica para crear un nuevo objeto por entrada:
Account.Order.Product.{'Quantity': Quantity}
C&C sencillo:
Account.Order.Product[[0..8]].{
'SKU': $substring(SKU, 0, 50), 'Quantity': Quantity}
… [[0..8]] > Intervalo de resultados en el que el primer elemento es el índice 0. 10 objetos en total es el límite máximo para la mayoría de los CRM.
… $substring(SKU, 0, 50) > Cortar las letras de cadena excedentes en la que la primera letra es el índice 0.
Tarjeta alternativa opcional en caso de que el cuerpo de la respuesta esté vacío o no se encuentre:
Account.Order.Product ?
[Account.Order.Product[[0..8]].{
'SKU': $substring(SKU, 0, 50), 'Quantity': Quantity}] :
[{"SKU" : "Product Not Found"}]
Agregar varios resultados: Correo electrónico
$join(Account.Order.Product.(
"SKU: " & SKU & ", " & "Price: " & Price), '\n')
… '\n' > Representar una nueva línea para separar los resultados si su CRM admite funciones básicas de formato.