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/02 19:45] 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, 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 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 a 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 12: 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: 
-  - Clic en el botón **Guardar** ubicado en la parte superior derecha de la pantalla.+            - 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. 
 +            - 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 26: 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: 
 +      - <code>function execute(caso, stage, contacto, usuario, cuenta, 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 39: 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.
 +