# Solicitar funciones personalizadas Las funciones personalizadas de solicitudes se pueden usar en reglas de negocio, disparadores personalizados de solicitudes, ciclo de vida de solicitudes y acciones del temporizador de solicitudes. Para crear funciones personalizadas de solicitudes, vaya a **Admin** > **Gestión de incidentes** > **Función personalizada de solicitud**. ## Acciones personalizadas Las acciones personalizadas son funciones personalizadas ejecutables que permiten a los usuarios manipular datos en ServiceDesk Plus y otras aplicaciones externas. Las funciones personalizadas están basadas en Deluge, el lenguaje de scripting propietario de Zoho. Las acciones personalizadas se pueden usar en Regla de negocio, Disparador personalizado, ciclo de vida de solicitudes y Acciones del temporizador de solicitudes para realizar acciones en solicitudes, otros módulos y aplicaciones externas. Use las siguientes indicaciones para crear, habilitar, deshabilitar y eliminar acciones personalizadas. - Use el botón Nuevo para crear una acción personalizada. - El botón Acciones le permite eliminar, deshabilitar y habilitar acciones personalizadas de forma masiva. Para modificar acciones personalizadas individuales, use los íconos que se muestran junto a la acción personalizada. Tenga en cuenta que solo las acciones personalizadas activas estarán disponibles para su uso en las configuraciones mencionadas anteriormente. - Use palabras clave para buscar acciones personalizadas en el campo proporcionado. Use los filtros en la parte superior para mostrar las acciones personalizadas utilizadas en funciones específicas. ## Agregar una nueva acción personalizada - Haga clic en **Nuevo** en la página de vista de lista de acciones personalizadas. - En la página que se muestra, proporcione un nombre y una descripción para su acción personalizada. - Use la sencilla interfaz de arrastrar y soltar llamada Editor de scripts de Deluge para crear su acción personalizada. Como se muestra en la siguiente captura de pantalla, `requestObj` y `context` se pasarán como argumentos para la función personalizada: ![](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/2020_06_30_14_36_571.png) Debe escribir la función personalizada con **requestObj** como argumento. Después de ejecutar la función personalizada, se devolverá el tipo de datos **Map** en el siguiente formato: ```json { "message":"Ejecutado correctamente", "status":"success/failure" } ``` Puede actualizar los campos de la solicitud, agregar notas y agregar aprobaciones condicionales para la solicitud devolviendo el mapa desde la función personalizada. El formato utilizado en estas funciones personalizadas es el mismo que el del script y la clase de Python. Para más detalles, visite esta página: [https://www.manageengine.com/latam/service-desk/help/adminguide/configurations/helpdesk/custom-triggers.html](https://www.manageengine.com/latam/service-desk/help/adminguide/configurations/helpdesk/custom-triggers.html). Puede actualizar los siguientes campos predeterminados de la solicitud en `requestObj`: subject, resolution, mode, group, item, level, impact, service_category, update_reason, priority, udf_fields, impact_details, subcategory, status, request_type, description, urgency, technician, category. También puede actualizar campos adicionales en `requestObj`. Los nuevos valores de campo deben devolverse desde la función personalizada en un formato específico, como se muestra a continuación: Consideremos un script de ejemplo para actualizar el asunto de la solicitud a "Firewall Upgrade" y la prioridad a "High". ```javascript returnjson = { "operation": [{ "INPUT_DATA": [{ "request": { "subject": "Firewall Upgrade", "priority": {"name": "High"} } }], "OPERATIONNAME": "UPDATE", "FORMAT": "V3" }], "result": "success", "message": "¡Solicitud actualizada!" }; return returnjson; ``` Supongamos que desea asignar alta prioridad a las solicitudes de la categoría Red/Internet. Puede automatizar esta acción utilizando el siguiente script en una acción de regla de negocio/acción de disparador personalizado/ciclo de vida de solicitud: ```javascript returnjson = Map(); ``` ```javascript if(requestObj.containsKey("category")) { if(requestObj.get("category").get("name") == "Internet" || requestObj.get("category").get("name") == "Network") { returnjson = { "operation": [{ "INPUT_DATA": [{ "request": { "priority": {"name": "High"} } }], "OPERATIONNAME": "UPDATE", "FORMAT": "V3" }], "result": "success", "message": "¡Solicitud actualizada!" }; } } return returnjson; ``` Dentro de las funciones personalizadas de solicitudes, puede llamar a funciones globales que pueden almacenar información esencial para conectarse con aplicaciones externas, funcionalidades comunes y configuraciones: [https://www.manageengine.com/latam/service-desk/help/adminguide/global-function.html](https://www.manageengine.com/latam/service-desk/help/adminguide/global-function.html) Para consultar casos de uso de Deluge, visite esta página: [https://www.manageengine.com/latam/service-desk/help/adminguide/deluge-use-cases.html](https://www.manageengine.com/latam/service-desk/help/adminguide/deluge-use-cases.html) ## Ejecución de prueba de scripts Después de escribir la función personalizada, puede probarla siguiendo los pasos que se indican a continuación: - Haga clic en **Guardar y probar**. - Elija una solicitud de muestra de la lista de solicitudes mostrada y haga clic en **Siguiente**. - Los datos que se pasarán a la función personalizada se mostrarán bajo el parámetro **requestObj**. - Haga clic en **Ejecutar**. Si realiza llamadas API usando **invokeurl** mientras prueba la función personalizada, la API será invocada. Asegúrese de no invocar una API que pueda generar consecuencias no deseadas. ### Consejo de depuración Cuando prueba una función personalizada, puede depurar el código e imprimir la salida usando una instrucción llamada `info`. Por ejemplo, para comprender la estructura de `requestObj` y `context`, simplemente puede ejecutar el siguiente script y estudiar la respuesta. ```javascript info requestObj; info context; return true; ``` Para más detalles sobre Deluge, visite la guía de ayuda de Deluge: [https://www.zoho.com/deluge/help/](https://www.zoho.com/deluge/help/)