问题描述
我正在构建一个 slackbot,它会提醒我组织中的人每周执行某些管理(工时费用等)。我知道这可以很容易地通过每个人创建一个重复提醒来完成。我想要的是创建一个机器人,每周都会向人们发送预先配置的消息。我在网上广泛查看,还没有发现 slackbot 如何在没有事件或其他提示的情况下发送消息。
我目前正在具有以下后端的本地 ngrok 服务器上对此进行测试:
const { WebClient } = require('@slack/web-api');
const { createEventAdapter } = require('@slack/events-api');
const slackSigningSecret = process.env.SLACK_SIGNING_SECRET;
const slackToken = process.env.SLACK_TOKEN;
const port = process.env.SLACK_PORT || 3000;
const slackEvents = createEventAdapter(slackSigningSecret);
const slackClient = new WebClient(slackToken);
slackEvents.on('app_mention',(event) => {
console.log(`Got message from user ${event.user}: ${event.text}`);
(async () => {
try {
await slackClient.chat.postMessage({ channel: event.channel,text: `Hello <@${event.user}>! Have you completed your Time sheets for this week yet?` })
} catch (error) {
console.log(error.data)
}
})();
});
slackEvents.on('error',console.error);
slackEvents.start(port).then(() => {
console.log(`Server started on port ${port}`)
});
完成此提醒后,我打算在此基础上再接再厉(更多功能,只是需要一个开始),因此请不要推荐我的组织可以向人们发送提醒的其他方式。
解决方法
您可以尝试改用 chat.scheduleMessage
方法 (https://api.slack.com/methods/chat.scheduleMessage)。由于您不会依赖于事件,因此您可能希望存储必要的对话 ID,以便在应用需要调用该方法时它们已准备就绪。