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 [2020/12/15 19:52] – [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 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: 
 + 
 +  * **Caso:** Todas las variables de Caso. 
 +  * **Contacto:** Todas las variables de Contacto. Corresponde al Contacto relacionado al Caso. 
 +  * **Cuenta:** Todas las variables de Cuenta. Corresponde la Cuenta relacionada al Caso. 
 +  * **Usuario:** Todas las variables de Usuario. Corresponde al Usuario asignado al Caso. 
 + 
 +**Nota:** Al realizar llamados a la URL de tipo GET es importante usar dos funciones para reemplazar los espacios y los caracteres especiales, dado que Be Aware no los soporta: 
 + 
 +  * 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. 
 + 
 + 
 +**Ejemplo de código:** 
 + 
 +El siguiente código hace un llamado a un servicio web que envía un mensaje de SMS: 
 + 
 +<code java> 
 +function execute(caso,stage,contacto,usuario,cuenta,service){ 
 + var jsonResult = {}; 
 + var telefono = contacto.fono[0]; 
 + if(telefono == null){ 
 + jsonResult.CODE = 200; 
 + }else{ 
 + if(telefono.substring(0,1) == "+")
 + telefono = telefono.substring(1,telefono.length); 
 +
 + var sms = "Estimado(a) "+contacto.NOMBRE+", hemos registrado tu caso con el número "+caso.REFNUM; 
 + var sms = sms.replace(/á/gi,"a")
 + var sms = sms.replace(/é/gi,"e"); 
 + var sms = sms.replace(/í/gi,"i"); 
 + var sms = sms.replace(/ó/gi,"o"); 
 + var sms = sms.replace(/ú/gi,"u"); 
 + var sms = sms.replace(/ñ/gi,"n"); 
 + var uri = "https://urlget.com/envio-sms?subscriber="+telefono+"&mensaje="+sms; 
 + var urlService = encodeURI(uri); 
 + var salidaStr = service.executeService(urlService,null); 
 + var salidaJSON = salidaStr; 
 + if(salidaJSON == "OK_REQUEST"){ 
 + jsonResult.MESSAGE = 'MENSAJE SMS ENVIADO CON ÉXITO'+salidaJSON; 
 + jsonResult.CODE = 200; 
 + }else{ 
 + jsonResult.MESSAGE = 'ERROR DE ENVÍO SMS. REVISE EL NÚMERO DE CELULAR '+telefono+' '+salidaJSON; 
 + jsonResult.CODE = 500; 
 +
 +
 + 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>
 ===== Crear un script ===== ===== Crear un script =====
  
Línea 15: Línea 89:
   - Ingrese el nombre con el que se identificará el script en el campo **Nombre**.   - Ingrese el nombre con el que se identificará el script en el campo **Nombre**.
   - Ingrese el código del script en lenguaje //JavaScript// en el campo **Script**.   - Ingrese el código del script en lenguaje //JavaScript// en el campo **Script**.
-    - Actualmente se pueden utilizar los campos del objeto //Caso//. +    - 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 del objeto //Caso//, se debe utilizar de la siguiente forma: ''caso.nombreCampo''Por 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 del objeto //Caso//, se debe utilizar de la siguiente forma: ''caso.CF.nombreCustomField''Por ejemplo: ''caso.CF.nombre''+    - 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
-    - La función debe ser+            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. 
-      <code>function execute(caso,stage,contacto,usuario,service){}</code> +            - Asociado a un Contacto, una Cuenta, un Usuario o un Caso: ''function execute(usuario, cuenta, contacto, caso, service)''
-  - Clic en el botón **Guardar** ubicado en la parte superior derecha de la pantalla.+            - **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 31: Línea 108:
   - Modifique el nombre con el que se identificará el script en el campo **Nombre**.   - Modifique el nombre con el que se identificará el script en el campo **Nombre**.
   - Modifique el código del script en lenguaje javascript en el campo **Script**.   - Modifique el código del script en lenguaje javascript en el campo **Script**.
-    - Actualmente se pueden utilizar los campos del objeto //Caso//. +    - 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 del objeto //Caso//, se debe utilizar de la siguiente forma: ''caso.nombreCampo''Por 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 del objeto //Caso//, se debe utilizar de la siguiente forma: ''caso.CF.nombreCustomField''Por ejemplo: ''caso.CF.nombre''+    - La función debe respectar el orden de los objetos
-    - La función debe ser+      - <code>function execute(caso, stage, contacto, usuario, cuenta, service){}</code>
-      - <code>function execute(caso,stage,contacto,usuario,service){}</code>+
   - Clic en el botón **Guardar** ubicado en la parte superior derecha de la pantalla.   - Clic en el botón **Guardar** ubicado en la parte superior derecha de la pantalla.
  
Línea 46: 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.
 +