Que ganas tenía de escribir sobre Unified Service Desk (USD) y hoy por fin puedo comentaros un tema que he estado buscando y que no acaba de estar correcto en diversos sitios (entre ellos Microsoft) o no se entendía bien en diferentes webs.
Desde que conocí USD me tiene enamorado. Se trata de un escritorio unificado sobre el que realizar aplicaciones conjuntas con CRM y otras aplicaciones externas. Además es muy flexible y permite crear nuevos componentes o eventos.
El problema que he encontrado es a la hora de realizar la llamada a un
Scriptlet.
Un Scriptlet es un fragmento de código (habitualmente JavaScript) que se puede invocar y te devuelve un resultado que puedes utilizar mediante la sustitución de parámetros en una llamada a la acción en USD, por ejemplo.
En primer lugar, debemos ir dentro de CRM a
Configuración -> Unified Service Desk y aquí buscar el elemento
Scriptlets.
Aquí podremos crear un nuevo Scriptlet.
Rellenamos el campo Nombre que tendrá el Scriptlet (muy importante después recordarlo) y en el campo Texto del script colocaremos nuestro script de JavaScript.
Comenzaremos el script como si de una función de JavaScript se tratara y finalizaremos la función con la cláusula
return. Dentro podemos utilizar los parámetros de sustitución de USD, lo que nos da una gran ventaja para tener los datos del contexto y poder tratarlos.
Después cerraremos el bloque de la función y realizaremos una llamada a la función escrita.
Os lo presento con un ejemplo:
En este caso quiero utilizar tres parámetros que me llegan por CTI en un solo parámetro para utilizarlo en una búsqueda.
En mi caso el parámetro que quiero devolver será la variable
paramtosearch y en la última línea de la función realizo el
return de la variable.
Posteriormente realizo una llamada a la función con la línea
SCM_CTIParamMultisearch();.
Esto ejecutará la función y el Scriptlet me guardará el resultado como parámetro de sustitución de USD.
Para poder utilizar ese parámetro de sustitución en una llamada a la acción, en una comparación o en cualquier lugar donde pueda usar variables de sustitución de USD, debo utilizar el nombre que le dimos al Scriptlet (no el de la función).
En mi ejemplo será el siguiente:
[[$Scriptlet.SCM CTI CallType parameter for multisearch]]
Y si voy al debugger, puedo ver que se ha creado un nuevo parámetro llamado
$Scriptlet que como clave el nombre del
Scriptlet (SCM CTI CallType parameter for multisearch) y como valor el resultado de la función ejecutada.
¡Así de fácil y así de difícil!
Solo un apunte más. En el nombre del Scriptlet se pueden incluir espacios. USD lo reconoce sin problemas.