Comandos de Slack Slash para crear solicitudes en Targetprocess

Advertencia: La aplicación Slack debe configurarse para añadir comandos de barra.
  1. Vaya a la página Reglas de automatización y cree una nueva regla de automatización.
  2. Selecciona «Webhook entrante» como desencadenante de la regla.
Selecciona «Webhook entrante» como desencadenante de la regla
  1. Seleccione «Otro» y pulse «Crear nuevo webhook entrante»:
Crear nuevo gancho web entrante
  1. Copia generada, la WebhookUrl, necesitaremos más adelante.
  2. En la página Slack App Build, selecciona Slash Commands en el menú de la izquierda:
Selecciona «Slash Commands» en el menú de la izquierda
  1. Pulsa «Crear nuevo comando» y rellena el formulario como se muestra en la siguiente captura de pantalla:
Crear nuevo comando

En el campo URL Solicitud, copie WebhookUrl desde su regla de automatización (paso 4). La sugerencia de uso muestra cómo debe verse el comando. En nuestro caso, utilizamos el siguiente formato: /add [Nombre] [ ProjectID ] Los corchetes y el orden de los parámetros son obligatorios, ya que los utilizamos para reconocer los parámetros.

  1. Vuelve a tu regla de automatización, selecciona «Ejecutar JavaScript función» en la sección «Entonces» y copia el siguiente JavaScript código:
Ejecutar JavaScript función
// ___PROTECTED_1___ function lets the script get access to various services and APIs.
// For example ___PROTECTED_2___ service lets the script make queries to Targetprocess API v2.
const api = context.getService("targetprocess/api/v2");
const utils = require("utils");
const http = require("http");
//CHANGE AUTHENTICATION METHOD BELOW
const headers = {Authorization: "YOUR TOKEN OR BASIC AUTH"};

const text = args.Body.text;

const regExp = /\[(.*?)\]/g;
const matches = [...text.match(regExp)];
console.log(matches);
const name = matches[0].substring(1, matches[0].length - 1);
const projectid = matches[1].substring(1, matches[1].length - 1);

const request = await http.postAsync(args.AccountBaseUrl + "api/v1/Requests?format=json", {
  headers: headers,
  body: {
    "Project": { "id": projectid },
    "Name": name
  }
})
  .then(responce => JSON.parse(responce))
  .then(responce => {
    if (!responce) {
      return http.postAsync(args.Body.response_url,
        {
          body: {
            text: ___PROTECTED_3___
          }
        }
      )
    }
    else return http.postAsync(args.Body.response_url,
      {
        body: {
          text: ___PROTECTED_4___
        }
      }
    )

  })
  .catch(error => {
    console.log(error);
    return http.postAsync(args.Body.response_url,
      {
        body: {
          text: ___PROTECTED_5___
        }
      }
    )
  })
  1. Ahora, si ejecutas /add [test] [12345], crearemos una solicitud con el nombre «test» en el proyecto con el id 12345.
Advertencia: Los parámetros pueden añadirse, eliminarse o codificarse de forma fija. Pero sería necesario modificar el código.

En Slack obtendríamos las siguientes respuestas:

Respuestas del proceso objetivo