我需要让一个机器人使用Javascript每十分钟发送一条消息。我正在使用Microsoft Bot Framework,这是输入代码:
const restify = require('restify');
const botbuilder = require('botbuilder');
var adapter = new botbuilder.BotFrameworkAdapter({
appId: process.env.MicrosoftAppId,
appPassword: process.env.MicrosoftAppPassword
});
let server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function () {
console.log(`\n${server.name} listening to ${server.url}`);
console.log(`\nGet Bot Framework Emulator: https://aka.ms/botframework-emulator`);
});
server.post('/api/messages', (req, res) => {
adapter.processActivity(req, res, async (turnContext) => {
if (turnContext.activity.type === 'message') {
const text = turnContext.activity.text;
await turnContext.sendActivity(`You just said: ${ text }`);
}
});
});
基本上,对与机器人聊天的人所说的任何内容都会以“您刚刚说过:x”作为响应。
我需要的机器人是在Skype中分组并每十分钟发送一条消息。
但是,在我的示例中,服务器等待对/ api / messages的POST,然后它使用适配器来处理该请求并从turnContext触发“ sendActivity”方法,该方法来自processActivity方法。
如何仅以固定的间隔发送消息,而忽略所有消息/提及。
答案 0 :(得分:2)
您要执行的操作称为主动消息传递。您可以查看this document和the sample it references,以更好地了解如何执行此操作。
如果您希望通过计时器触发主动消息,则可以在机器人的线程上运行计时器,尽管通常建议在外部运行计时器。
要为您的漫游器禁用消息传递,只需在channel configuration中选择该选项。不过,我不确定如果禁用消息传递功能将如何检索会话ID。
如果您仍然希望机器人接收消息,但又不想回复,只需编辑您的机器人代码中响应条件myfoo2
的部分即可。
请记住,Skype机器人功能可能会越来越受限制。您应该在Skype频道配置中看到一条官方消息,内容为:
从2019年10月31日起,Skype频道将不再接受新的Bot注册。当前的Skype机器人将继续不间断运行。