(Проект Slack API Bolt) Использование объекта Context для передачи свойства из одного метода в другой - PullRequest
0 голосов
/ 05 апреля 2020

Я создаю приложение Slack, используя JavaScript Framework Bolt. Концепция приложения заключается в том, чтобы просто прослушивать определенные c ключевые слова сообщений в каналах и затем пересылать эти сообщения пользователям приложения.

То, что я пытаюсь достичь, это включить постоянную ссылку в перенаправленное сообщение. Я пытаюсь использовать метод chat.getPermalink, чтобы получить URL, а затем включить его в мой метод chat.postMessage. Я пытаюсь использовать «контекст» Болта, чтобы передать свойство в chat.getPermalink в chat.postMessage. Я прошу помощи здесь, потому что я не могу заставить работать контекст ...

   const app = new App({
 token: process.env.SLACK_BOT_TOKEN,
 signingSecret: process.env.SLACK_SIGNING_SECRET
 });
 let token = process.env.SLACK_BOT_TOKEN,
web = new WebClient(token);


  let jira_text = "jira"; 
  let rdu_qa = '@rdu_qa';

   //Get permalink
    async function PermaLinks({payload, context, next}) {
   let perm = app.client.chat.getPermalink({
   token: context.botToken,
   channel: "C0109KMQCFQ",
   message_ts: payload.ts

   });

context.permalink = perm.permalink;

await next();

 } 


app.event('message', PermaLinks, async ({  payload, message, context}) => {

let userzArray = ["D010Q34TQL9", "UVBBD8989"];
//if channel is general and incldues the text 'Jira' or 'rdu_qa'
if (payload.channel === "C0109KMQCFQ") {
if (payload.text.includes(jira_text) || payload.text.includes(rdu_qa)) { 

  try {

  // Call the chat.postMessage to each of the users     
 let oneUser = await  userzArray.forEach(userId => { app.client.chat.postMessage({         
      token: context.botToken,
      bot_id: "USLACKBOT",
     channel: userId,       
     blocks: [
   {
    type: "section",
    text: {
      text: payload.text,
      type: "mrkdwn"
    },
    fields: [
      {
        type: "mrkdwn",
    text: `posted by <@${message.user}>`
      },

      {
        type:"mrkdwn",
        text: "in General channel" //channel.name//getChannelNameGeneral
      },
      {
        type:"mrkdwn",
        text: context.permalink // Permalink should be right here
      }


  ]
},
    {
        "type": "divider"
    }, 
     ] // End of block of Jira notification stuff  


    });    
    });


   // console.log(result);
  } catch (error) {
    console.error(error); 
  }  


  } // If text sent to General channel includes keyword 'Jira' or 'rdu_qa'
 } //end of if message was posted in General channel    
...