Share via


Ejecutar scripts con scriptlets en Unified Service Desk

Scriptlets son fragmentos de código JavaScript que se ejecutan cuando se usa una sintaxis especial para el parámetro de sustitución. Los parámetros de sustitución generados por el sistema contienen a veces los datos adecuados necesarios para estas capacidades, pero pueden no contener los datos en el formato deseado. Por ejemplo, en la integración de telefonía informática (CTI), los números de teléfono suelen llegar del sistema de teléfono como una cadena de dígitos del tipo "3035551212", sin ningún formato. Sin embargo, Microsoft Dataverse almacena números de teléfono como una cadena que suele incluir caracteres de formato como guiones, por ejemplo, en (303) 555-1212. Si busca la entidad usando los datos proporcionados directamente por el sistema de teléfono, es poco probable que encontrara una coincidencia. Puede solucionar esto con scriptlets en Unified Service Desk.

Cómo usar scriptlets

Defina un scriptlet en el área Scriptlets (Configuración>Scriptlets) en Dataverse. Tras definir un scriptlet, use el scriptlet en el siguiente formato como parámetro de sustitución en las consultas o parámetros de las llamadas a la acción.

[[script.<Scriptlet_Name>]]  

Cuando el sistema ve un parámetro de sustitución de ese tipo que comienza con script., busca un script con un nombre que coincida con el texto que le sigue en su lista de scriptlet. Si encuentra un scriptlet con el nombre especificado, primero reemplazará los parámetros en ese script, y después ejecutará el script como expresión JavaScript. El valor de la expresión se usará para reemplazar el valor de la sustitución anterior.

Advertencia

Si los parámetros de sustitución en el scriptlet contienen otra sustitución de scriptlet y así sucesivamente hasta que se crea un bucle, el sistema sustituirá continuamente los parámetros hasta que se desborde la pila. Como resultado, se recomienda encarecidamente no usar nunca [[script.ReplacementParameters]] en los scriptlets.

Hacer referencia a los controles hospedados globales desde los scriptlets

Los scriptlets puede hacer referencia a métodos de control hospedado global mientras se ejecutan. Todos los controles hospedadas globales (no dinámicos) se agregan como objetos que pueden ejecutar scripts en el motor de scriptlet en el inicio. Puesto que JavaScript no puede hacer referencia a los nombres con espacios, el motor de scriptlet reemplaza automáticamente los espacios en el nombre de su control hospedado global con caracteres de subrayado "_". Por consiguiente, puede usar el siguiente JavaScript válido.

Connection_Manager.ConfigurationReader.ReadAppSettings(“maxNumberOfSessions”);  

Hay un escenario caso especial para el administrador global. También se puede hacer referencia a él mediante CRMGlobalManager, independientemente de cuál sea su nombre en la configuración.

If (CRMGlobalManager.SessionCount == 0) // no se cargan sesiones del cliente. Solo se carga una sola sesión global.

Nota

Solo se puede acceder a funciones públicas mediante este método.

Supongamos una situación en la que desea mostrar información general de sesión en el componente Líneas de sesión, pero la información reside realmente en un sistema externo al que se puede obtener acceso a través de servicios web en lugar de estar disponible en el servidor de Dataverse. Puede crear un control hospedado que exponga una función pública, que llame al servicio web externo. Después configure este control hospedado como control hospedado global y colóquelo en HiddenPanel. Esta llamada de función y servicio web se puede usar ahora desde un scriptlet. A continuación puede crear el siguiente scriptlet para llamar a la nueva función.

My_Global_Application.CallExternalWebService(“[[account.accountnumber]$]”);  

Este código pasa el número de cuenta desde la cuenta a la función como primer parámetro. Si llama el scriptlet Servicio web de llamada, puede usar posteriormente la siguiente Línea de sesión para mostrar el resultado de la llamada de servicio web.

<Grid Margin="0"  
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"  
  xmlns:CCA="clr-namespace:Dynamics;assembly=Dynamics">  
<Grid.RowDefinitions>  
 <RowDefinition Height="auto" />  
</Grid.RowDefinitions>  
<Grid.ColumnDefinitions>  
 <ColumnDefinition Width="100"/>  
 <ColumnDefinition Width="*" />  
 <ColumnDefinition Width="auto" />  
</Grid.ColumnDefinitions>  
<Label Margin="3,0,5,3" Content="Web Service Data" Padding="0" Grid.Row="4" HorizontalAlignment="Right" FontFamily="Tohoma" FontSize="12" FontWeight="Bold" />  
<TextBlock Text="[[script.Call Web Service]]" Margin="0" Grid.Column="1" Grid.Row="4" Padding="3,0,0,3" FontFamily="Tohoma" FontSize="12"/>  
</Grid>  

Vea también

Parámetros de sustitución
Controles hospedados de Unified Service Desk globales y basados en sesión