Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
configuracionscripts [2021/02/15 17:25] – [Configuración de scripts] scantorconfiguracionscripts [2026/09/02 23:23] (actual) clopez
Línea 3: Línea 3:
 La funcionalidad de scripts se usa para realizar validaciones o llamar a servicios web simples de tipo GET que ejecutan algún tipo de tarea en un sistema externo a Be Aware 360. La funcionalidad de scripts se usa para realizar validaciones o llamar a servicios web simples de tipo GET que ejecutan algún tipo de tarea en un sistema externo a Be Aware 360.
  
-Estos scripts son utilizados como tipo de tareas en las [[configuracionlistachequeo#Configuración de listas de chequeo|listas de chequeo]].+Estos scripts, también permiten modificar directamente los datos del caso y del contacto relacionado. Esta funcionalidad puede utilizarse para actualizar información durante la ejecución de tareas.
  
-**Nota:** Los scripts que se usan para las listas de chequeo corresponden a métodos de solo lectura (no ejecutan acción "save"), por lo que si en el script se ejecuta alguna función que modifique el objeto Caso (update), este no se aplicará.+**Nota:** Los scripts son utilizados como tipo de tareas en las [[configuracionlistachequeo#Configuración de listas de chequeo|listas de chequeo]]. 
 + 
 + 
 +Los scripts se realizan en lenguaje JavaScript.
  
 Dentro de los scripts se pueden consultar campos de otros objetos de negocio, como son: Dentro de los scripts se pueden consultar campos de otros objetos de negocio, como son:
Línea 18: Línea 21:
   * La función **encodeURI(var)** permite utilizar espacios y otros caracteres como ''{}'' ''()'' en un mensaje sin necesidad de modificarlos por su código ASCII correspondiente. Por ejemplo, colocar %20 en lugar de espacio.   * La función **encodeURI(var)** permite utilizar espacios y otros caracteres como ''{}'' ''()'' en un mensaje sin necesidad de modificarlos por su código ASCII correspondiente. Por ejemplo, colocar %20 en lugar de espacio.
   * La función **variable.replace** reemplaza los caracteres especiales que no son soportados en una URL por los que sí son soportados. Por ejemplo, utilizarlo para reemplazar ñ por n, á por a, etc.   * La función **variable.replace** reemplaza los caracteres especiales que no son soportados en una URL por los que sí son soportados. Por ejemplo, utilizarlo para reemplazar ñ por n, á por a, etc.
 +
  
 **Ejemplo de código:** **Ejemplo de código:**
Línea 53: Línea 57:
  }  }
  return jsonResult;  return jsonResult;
 +}
 +</code>
 +
 +**Ejemplo de código Uso avanzado de API:** 
 +
 +El siguiente código hace un llamado a un servicio web de forma avanzada, pudiendo incorporar diferentes métodos, body y headers, para la obtención de un token en Be Aware 360:
 +
 +<code java>
 +function execute(caso,stage,contacto,usuario,cuenta,service){
 + var jsonResult = {}
 + var method = "POST"
 + var urlBase = "https://api.beaware360.com"
 + var urlEndpoint = "/ba360/apir/v10_5/login/auth"
 +
 + var stringHeaders = "{\"Content-Type\":\"application/json\"}"
 + var stringData = "{\"pass\":\"password\", \"user\":\"username\", \"company\":\"ba360\"}"
 +
 + var salidaStr = service.executeServiceUtil(method,stringHeaders,urlBase,urlEndpoint,stringData)
 + jsonResult.MESSAGE = salidaStr.data
 + jsonResult.CODE = salidaStr.status
 + return jsonResult
 } }
 </code> </code>
Línea 66: Línea 91:
     - Para utilizar algún campo de un objeto, por ejemplo //Caso//, se debe utilizar de la siguiente forma: ''caso.nombreCampo''. Ejemplo: ''caso.REFNUM''.     - Para utilizar algún campo de un objeto, por ejemplo //Caso//, se debe utilizar de la siguiente forma: ''caso.nombreCampo''. Ejemplo: ''caso.REFNUM''.
     - Para utilizar los custom fields de un objeto, por ejemplo //Caso//, se debe utilizar de la siguiente forma: ''caso.CF.nombreCustomField''. Ejemplo: ''caso.CF.nombre''.     - Para utilizar los custom fields de un objeto, por ejemplo //Caso//, se debe utilizar de la siguiente forma: ''caso.CF.nombreCustomField''. Ejemplo: ''caso.CF.nombre''.
-    - La función debe respectar el orden de los objetos: +    - La función debe respectar el orden de los objetos. La firma de la función depende de desde dónde se invoque el script
-      <code>function execute(caso, stage, contacto, usuario, cuenta, service){}</code> +            Como tarea de tipo Script en una lista de chequeo: ''function execute(caso, script, contacto, usuario, cuenta, service)''. El segundo parámetro es el registro del script, no el paso del flujo. 
-  - Clic en el botón **Guardar** ubicado en la parte superior derecha de la pantalla.+            - Asociado a un Contacto, una Cuenta, un Usuario o un Caso: ''function execute(usuario, cuenta, contacto, caso, service)''
 +            - **Importante:** los parámetros se enlazan por posición, no por nombre. Un script escrito para una de las dos formas y reutilizado en la otra no falla: recibe los objetos cambiados de lugar y opera sobre datos equivocados. Antes de reutilizar un script del catálogo en otro punto, ajuste el orden de los parámetros. 
 +            - **Nota:** los eventos de paso del flujo —''preIn'', ''postIn'', ''preOut'', ''preSave'' y ''postSave''— son funciones distintas de ''execute'' y sí reciben el paso: ''(caso, stage, contacto, usuario, cuenta, service)''
 +            - **Nota:** cuando el script se asocia a un Contacto, a una Cuenta o a un Usuario, solo llega con datos el objeto que se está creando o modificando. Los demás llegan vacíos. 
 +  -Clic en el botón **Guardar** ubicado en la parte superior derecha de la pantalla.
  
 ===== Modificar un script ===== ===== Modificar un script =====
Línea 93: Línea 122:
   - Clic en el botón **Eliminar** ubicado al final del registro de script que desea eliminar.   - Clic en el botón **Eliminar** ubicado al final del registro de script que desea eliminar.
   - Clic nuevamente en el botón **Eliminar** para confirmar la eliminación del registro.   - Clic nuevamente en el botón **Eliminar** para confirmar la eliminación del registro.
 +
 +===== Variables para utilizar en un script =====
 +
 +==== Uso de las variables ====
 +
 +  * Para usar las variables según los objetos, se utiliza la nomenclatura ''{objeto}.{variable}''
 +    * Por ejemplo:
 +      * **Caso:** caso.REFNUM 
 +      * **Contacto:** contacto.NOMBRE 
 +      * **Usuario:** usuario.USER 
 +      * **Cuenta:** cuenta.RAZONSOCIAL
 +  * Para utilizar los campos personalizados, se utiliza la nomenclatura ''{objeto}.CF.{nombrecampopersonalizado}''
 +    * Por ejemplo:
 +      * **Caso:** caso.CF.nombre 
 +      * **Contacto:** contacto.CF.fechainicio
 +  * Las variables de correo corresponde a un arreglo de 3 valores. Para utilizar esta variable, se utiliza de la siguiente manera:
 +    * **Primer email:** contacto.email[0] 
 +    * **Segundo email:** contacto.email[1] 
 +    * **Tercer email:** contacto.email[2]
 +  * Las variables de teléfono (fono) corresponde a un arreglo de 3 valores. Para utilizar esta variable, se utiliza de la siguiente manera:
 +    * **Primer teléfono:** contacto.fono[0] 
 +    * **Segundo teléfono:** contacto.fono[1] 
 +    * **Tercer teléfono:** contacto.fono[2]
 +
 +==== Variables aceptadas para objeto Caso ====
 +
 +Las variables corresponden a los valores del **Caso** desde donde se ejecuta el script.
 +
 +  * ID 
 +  * IDESTADO 
 +  * REFNUM 
 +  * IDESTADODESC 
 +  * IDCONTACTO 
 +  * IDCUENTA 
 +  * IDCUENTADESC 
 +  * IDCONTACTODESC 
 +  * IDPRIORIDAD 
 +  * IDPRIORIDADDESC 
 +  * IDPRIORIDADCOLOR 
 +  * IDUSUARIOASIGNADO 
 +  * IDUSUARIOASIGNADODESC 
 +  * IDTIPO 
 +  * IDTIPODESC 
 +  * IDSUBTIPO 
 +  * IDSUBTIPODESC 
 +  * IDSLA 
 +  * CF 
 +  * ORIGEN 
 +  * IDSLADESC 
 +  * IDPRODUCTO 
 +  * IDPRODUCTODESC 
 +  * IDSTAGEACTUAL 
 +  * IDSTAGEACTUALDESC 
 +  * IDWORKFLOW 
 +  * IDWORKFLOWDESC 
 +  * ASUNTO 
 +  * FECHACREACION 
 +  * IDUSUARIOCREACION 
 +  * IDUSUARIOCREACIONDESC 
 +  * FECHAMODIFICACION 
 +  * IDUSUARIOMODIFICACION 
 +  * IDUSUARIOMODIFICACIONDESC 
 +  * DESTACADO 
 +  * DUEDATE 
 +  * PRIMERPASO 
 +  * FINGRESO 
 +  * SLAVALUE 
 +  * PORCENTAJE 
 +  * FINALIZADO 
 +  * SISTEMAEXTERNO 
 +  * IDINTERACCION 
 +  * FECHAMODIFICACION 
 +  * FECHAREAPERTURA
 +
 +==== Variables aceptadas para objeto Contacto ====
 +
 +Las variables corresponden a los valores del **Contacto asociado al Caso** desde donde se ejecuta el script:
 +
 +  * NOMBRE 
 +  * APELLIDO 
 +  * IDENTIFICADOR 
 +  * CARGO 
 +  * TITULO 
 +  * DIRECCION 
 +  * IDCUENTA 
 +  * IDCUENTADESC 
 +  * IDTIPO 
 +  * IDSLA 
 +  * CF 
 +  * FECHANACIMIENTO 
 +  * PASS 
 +  * FACEBOOK 
 +  * TWITTER 
 +  * INSTAGRAM 
 +  * EMAILCP 
 +  * email 
 +  * fono 
 +  * COMPANY 
 +  * fonocp 
 +  * GRUPOSKILLS 
 +  * GRUPOCUENTAS 
 +  * GRUPOCUENTAS 
 +  * FECHACREACION 
 +  * FECHAMODIFICACION 
 +  * ORIGIN
 +
 +==== Variables aceptadas para objeto Usuario ====
 +
 +Las variables corresponden a los valores del **Usuario asignado al Caso** desde donde se ejecuta el script:
 +
 +  * NOMBRE
 +  * APELLIDO 
 +  * USER 
 +  * ISOPAIS 
 +  * CF 
 +  * PASS 
 +  * EMAIL 
 +  * IDEMPRESA 
 +  * IDEMPRESADESC 
 +  * IDROL 
 +  * IDROLDESC 
 +  * IDPERMISO 
 +  * IDPERMISODESC 
 +  * IDUSUARIO 
 +  * ACCESO 
 +  * IDGRUPO 
 +  * IDGRUPODESC 
 +  * AVATAR 
 +  * PORTADA 
 +  * CANTIDADCASOS 
 +  * MULTISESSION 
 +  * NOTIFICACIONACTIVA 
 +  * TIMEZONE 
 +  * LANGUAGE 
 +  * FECHACREACION 
 +  * FECHAMODIFICACION 
 +  * GRUPOSKILLS 
 +  * ESTADO 
 +  * LATITUD 
 +  * LONGITUD 
 +  * FECHAPOSICION
 +
 +==== Variables aceptadas para objeto Cuenta ====
 +
 +Las variables corresponden a los valores de la **Cuenta asociada al Caso** desde donde se ejecuta el script:
 +
 +  * IDENTIFICADOR 
 +  * RAZONSOCIAL 
 +  * GIRO 
 +  * DIRECCION 
 +  * TELEFONO 
 +  * CORREO 
 +  * IDSLA 
 +  * IDSLADESC 
 +  * IDREPRESENTANTE 
 +  * IDREPRESENTANTEDESC 
 +  * GRUPOCONTACTOS 
 +  * FACEBOOK 
 +  * INSTAGRAM 
 +  * PAGINAWEB 
 +  * TWITTER 
 +  * XPOS 
 +  * YPOS 
 +  * ISOPAIS 
 +  * FECHACREACION 
 +  * FECHAMODIFICACION 
 +  * CF 
 +  * GRUPOCONTACTOS
 +
 +===== Límites de ejecución =====
 +
 +El script se ejecuta en un entorno restringido:
 +
 +  - No puede acceder a clases de Java. Dispone de JavaScript y de los objetos que recibe como parámetros, entre ellos ''service'' para invocar servicios externos.
 +  - La ejecución se corta a los 60 segundos. Superado el plazo, el paso no avanza.
 +
 +**Importante:** el bloqueo de clases Java es posterior a los ejemplos publicados
 +en esta página. Un script existente que resuelva llamadas externas construyendo
 +objetos de Java en lugar de usar ''service'' deja de funcionar. Revíselos antes
 +de la próxima actualización.
 +