bot.beginDialog到特定的用户和频道

我希望我的机器人能够在未来的某个时候与其他用户开始新的对话。 而不是像Bot连接器Node.js文档中的传入POST消息启动的,我试图从对话本身开始。

对于Node:使用require('botconnector')ConnectorClient()或Bot连接器REST API,推荐使用哪种方法还不太清楚。

然而,基于run-async和LUIS的例子,我注意到beginDialog实际上允许你指定目标地址: bot.beginDialog(address, '/run-async/runner', { name: name }); 或者cortanaBot.beginDialog({ from: alarm.from, to: alarm.to }, '/notify', alarm);

我认为这是相当直接和清晰的方法,但是,僵尸简单地停止响应,当我包含这样的参数(它的工作原理,如果我只是使用session.beginDialog('/myalarm', { alarm: "some alarm" }); )。 我错过了什么吗?

 require('dotenv').config(); var restify = require('restify'); var builder = require('botbuilder'); // Get secrets from server environment var botConnectorOptions = { appId: process.env.BOTFRAMEWORK_APPID, appSecret: process.env.BOTFRAMEWORK_APPSECRET }; // Create bot var bot = new builder.BotConnectorBot(botConnectorOptions); function addressConverter(message) { return { to: message.from, from: message.to//, // conversationId: message.conversationId, // channelConversationId: message.channelConversationId, // channelMessageId: message.channelMessageId }; } bot.add('/myalarm', function(session) { session.send('My Automatic Message'); session.endDialog(); }); bot.add('/', function(session) { session.send('Hi'); // Delay sending the reply for 5 seconds setTimeout(function() { session.send({ text: '5s Time out!' }) var address = addressConverter(session.message); console.log("Message Address:") console.log(address) session.beginDialog(address, '/myalarm', { alarm: "some alarm" }); }, 5000); session.send({ text: 'I will automatically message you in 5 seconds.' }) }); // Setup Restify Server var server = restify.createServer(); //server.pre(restify.pre.pause()); // Handle Bot Framework messages server.post('/api/messages', bot.verifyBotFramework(), bot.listen()); // Serve a static web page server.get(/.*/, restify.serveStatic({ 'directory': '.', 'default': 'index.html' })); server.listen(process.env.port || 3978, function() { console.log('%s listening to %s', server.name, server.url); }) 

;