# Solicitar Funções Personalizadas As funções personalizadas de solicitação podem ser usadas em regras de negócios, gatilhos personalizados de solicitação, ciclo de vida da solicitação e ações de temporizador da solicitação. Para criar funções personalizadas de solicitação, vá para **Admin** > **Gerenciamento de Incidentes** > **Função Personalizada de Solicitação**. ## Ações Personalizadas As ações personalizadas são funções personalizadas acionáveis que permitem aos usuários manipular dados no ServiceDesk Plus e em outros aplicativos externos. As funções personalizadas são construídas com base no Deluge, a linguagem de script proprietária da Zoho. As ações personalizadas podem ser usadas em Regra de Negócios, Gatilho Personalizado, ciclo de vida da Solicitação e Ações de Temporizador da Solicitação para executar ações em solicitações, outros módulos e aplicativos externos. Use as orientações a seguir para criar, habilitar, desabilitar e excluir ações personalizadas. - Use o botão Novo para criar uma ação personalizada. - O botão Ações permite excluir, desabilitar e habilitar ações personalizadas em massa. Para modificar ações personalizadas individuais, use os ícones exibidos ao lado da ação personalizada. Observe que somente ações personalizadas ativas estarão disponíveis para uso nas configurações mencionadas acima. - Use palavras-chave para pesquisar ações personalizadas no campo fornecido. Use os filtros na parte superior para exibir as ações personalizadas usadas em recursos específicos. ## Adicionando uma Nova Ação Personalizada - Clique em **Novo** na página de visualização de lista de ações personalizadas. - Na página exibida, forneça um nome e uma descrição para sua ação personalizada. - Use a interface simples de arrastar e soltar chamada Deluge Script Editor para criar sua ação personalizada. Conforme demonstrado na captura de tela a seguir, `requestObj` e `context` serão passados como argumentos para a função personalizada: ![](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/2020_06_30_14_36_571.png) Você deve escrever a função personalizada com **requestObj** como argumento. Após executar a função personalizada, o tipo de dado **Map** será retornado no seguinte formato: ```json { "message":"Executado com sucesso", "status":"sucesso/falha" } ``` Você pode atualizar os campos da solicitação, adicionar notas e aprovações condicionais para a solicitação retornando o mapa da função personalizada. O formato usado nessas funções personalizadas é o mesmo do script e da classe em Python. Para mais detalhes, [visite esta página](https://www.manageengine.com/br/service-desk/help/adminguide/configurations/helpdesk/custom-triggers.html). Você pode atualizar os seguintes campos padrão da solicitação em requestObj: assunto, resolução, modo, grupo, item, nível, impacto, service_category, update_reason, prioridade, udf_fields, impact_details, subcategoria, status, request_type, descrição, urgência, técnico, categoria. Você também pode atualizar campos adicionais em requestObj. Os novos valores dos campos devem ser retornados pela função personalizada em um formato específico, conforme demonstrado abaixo: Vamos considerar um script de exemplo para atualizar o assunto da solicitação para "Firewall Upgrade" e a Prioridade para "High". ```javascript returnjson = { "operation": [{ "INPUT_DATA": [{ "request": { "subject": "Firewall Upgrade", "priority": {"name": "High"} } }], "OPERATIONNAME": "UPDATE", "FORMAT": "V3" }], "result": "success", "message": "Request updated!!" }; return returnjson; ``` Digamos que você queira atribuir alta prioridade às solicitações da categoria Network/Internet. Você pode automatizar essa ação usando o seguinte script em uma ação de regra de negócios/ação de gatilho personalizado/ciclo de vida da solicitação: ```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": "Request updated!!" }; } } return returnjson; ``` Dentro das funções personalizadas de solicitação, você pode chamar [funções globais](https://www.manageengine.com/br/service-desk/help/adminguide/global-function.html) que podem armazenar informações essenciais para se conectar com aplicativos externos, funcionalidades comuns e configurações. Para conferir casos de uso do Deluge, [visite esta página](https://www.manageengine.com/br/service-desk/help/adminguide/deluge-use-cases.html). ## Execução de Teste de Scripts Após escrever a função personalizada, você pode testá-la seguindo as etapas abaixo: - Clique em **Salvar e Testar**. - Escolha uma solicitação de exemplo na lista de solicitações exibida e clique em **Avançar**. - Os dados que serão passados para a função personalizada serão exibidos sob o parâmetro **requestObj**. - Clique em **Executar**. Se você fizer chamadas de API usando **invokeurl** ao testar a função personalizada, a API será invocada. Certifique-se de não invocar uma API que possa resultar em consequências indesejadas. ### Dica de Depuração Ao testar uma função personalizada, você pode depurar o código e imprimir a saída usando uma instrução chamada `info`. Por exemplo, para entender a estrutura de requestObj e context, você pode simplesmente executar o seguinte script e estudar a resposta. ```javascript info requestObj; info context; return true; ``` Para mais detalhes sobre Deluge, visite o [guia de ajuda do Deluge](https://www.zoho.com/deluge/help/).