Estoy trabajando en firebase con GCP y slack. mientras esta integración obtengo esto

Error: SyntaxError: Token C inesperado en JSON en la posición 33 en los adjuntos de reglas .

Lo he intentado mucho, pero desafortunadamente no pude encontrar la solución.

El error real está solo en el código.

¡¡Cualquiera puede ayudarme a solucionar el problema !!

const functions = require("firebase-functions");
const admin = require("firebase-admin");
const { WebClient } = require("@slack/web-api");

admin.initializeApp(functions.config().firebase);

const web = new WebClient(functions.config().gslack.api_token);
const runtimeOpts = {
  timeoutSeconds: 30,
  memory: "256MB"
};

const rules = [];
admin
  .firestore()
  .collection("gSlack")
  .where("disabled", "==", false)
  .onSnapshot(querySnapshot => {
    querySnapshot.docChanges().forEach(change => {
      const rule = {
        id: change.doc.id,
        ...change.doc.data()
      };
      if (change.type === "added") {
        rules.splice(change.newIndex, 0, rule);
      }
      if (change.type === "modified") {
        rules.splice(change.newIndex, 1, rule);
      }
      if (change.type === "removed") {
        rules.splice(change.oldIndex, 1);
      }
    });
  });

function evalTest(data, test) {
  try {
    $ = data;
    return eval(`'use strict';(${test});`);
  } catch (err) {
    console.error(err, test);
    return false;
  }
}

function evalMessageText(data, message) {
  if (message) {
    try {
      $ = data;
      return eval(`'use strict';\`${message}\`;`);
    } catch (err) {
      console.error(err, message);
      return `Error: ${err} in rule message:\n ${message}`;
    }
  }
}

function evalMessageAttachments(data, attachments) {
  if (attachments) {
    try {
      $ = data;
      return JSON.parse(
        eval(`'use strict';\`${JSON.stringify(attachments)}\`;`)
      );
    } catch (err) {
      console.error(err, attachments);
      return [
        {
          title: "GSLACK ERROR",
          text: `Error: ${err} in rule attachments`
        }
      ];
    }
  }
}

function sendSlack(data, rule) {
  return web.chat.postMessage({
    as_user: true,
    channel: rule.channel,
    text: evalMessageText(data, rule.message),
    attachments: evalMessageAttachments(data, rule.attachments)
  });
}

exports.gSlack = functions
  .runWith(runtimeOpts)
  .pubsub.topic("gslack")
  .onPublish((message, context) => {
    const data = message.json;
    return Promise.all(
      rules.map(rule => {
        if (evalTest(data, rule.test)) {
          return sendSlack(data, rule);
        }
        return Promise.resolve();
      })
    );
  });

Arriba está mi código 1. A continuación hay otro código del archivo json

{
  "name": "gslack",
  "description": "",
  "engines": {
    "node": "10"
  },
  "scripts": {
    "serve": "firebase serve --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions:gSlack",
    "logs": "firebase functions:log"
  },
  "dependencies": {
    "@slack/web-api": "^5.0.1",
    "firebase-admin": "~9.2.0",
    "firebase-functions": "^3.11.0"
  },
  "private": true
}
0
chiducaf 22 ene. 2021 a las 16:57

1 respuesta

La mejor respuesta

Aquí arriba no hay ningún error en el código. Los datos deben estar claros en la consola de base de fuego.

0
chiducaf 24 ene. 2021 a las 18:59