2

我希望我的机器人在未来某个时候与其他用户发起新的对话。我不是像Bot Connector Node.js文档中那样由传入的 POST 消息发起,而是尝试从对话本身发起。

目前还不清楚哪一种是 Node 的推荐方法:使用 require('botconnector')ConnectorClient()或 Bot Connector REST API。

但是,基于run-asyncLUIS示例,我注意到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);
})

;

4

0 回答 0