亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

slack bot 使用 aws lambda 函數向用戶發送直接消息

slack bot 使用 aws lambda 函數向用戶發送直接消息

茅侃侃 2023-03-18 16:36:28
我正在嘗試使用slack web api向用戶發送直接消息,但我認為獲取所有可用用戶的getSlackUser 方法在我調用 slackId 時沒有及時完成;console.log(slackId) 給出了未定義的意思,它沒有用bolt完成我的 api 調用如何確保 getSlackUser 方法在繼續執行其他方法之前完成(使其阻塞)?const { WebClient } = require('@slack/web-api');const { App } = require('@slack/bolt')const rtm = new RTMClient(process.env.SLACK_OAUTH_TOKEN);const web = new WebClient(process.env.SLACK_OAUTH_TOKEN);const app = new App({  token: process.env.SLACK_OAUTH_TOKEN,  signingSecret: process.env.SLACK_SIGNING_SECRET});exports.handler = async (event) => {  const slackId = await getSlackUser('example_real_name').id;  console.log(slackId);  await sendSlackMessage(slackId, 'Bot message');}sendSlackMessage = async (channel, message) => {  await web.chat.postMessage({    channel: channel,    text: message,    as_user: true  });}getSlackUser = async(real_name) => {  const result = await app.client.users.list({    token: process.env.SLACK_OAUTH_TOKEN  });  console.log(result);  return result.members.find((user) => user.real_name == real_name);}
查看完整描述

1 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

問題是這一行的優先級:

const slackId = await getSlackUser('example_real_name').id;

由于成員訪問比 await 具有更高的優先級(之前已評估),因此它實際上與以下內容相同:

const slackId = await (getSlackUser('example_real_name').id);

getSlackUser返回一個 Promise 對象,那么它的id成員是未定義的。Await 等待未定義的,即undefined.

要解決此問題,請確保在以下操作之前評估 await .id

const slackId = (await getSlackUser('example_real_name')).id;


查看完整回答
反對 回復 2023-03-18
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號