Botframework MS BotBuilder:机器人如何在webchat启动时接收参数并启动对话

Botframework MS BotBuilder:机器人如何在webchat启动时接收参数并启动对话,botframework,Botframework,我正在使用直接线路方法与此机器人通信: var connector = new builder.ChatConnector({ appId: process.env.MICROSOFT_APP_ID || config.appId, appPassword: process.env.MICROSOFT_APP_PASSWORD || config.appPassword }); // Initialize bot var bot = universalBot(connecto

我正在使用直接线路方法与此机器人通信:

var connector = new builder.ChatConnector({
    appId: process.env.MICROSOFT_APP_ID || config.appId,
    appPassword: process.env.MICROSOFT_APP_PASSWORD || config.appPassword
});


// Initialize bot
var bot = universalBot(connector);

var server = restify.createServer();

server.listen(process.env.port || port, function () {
    console.log('%s listening to %s', server.name, server.url);
});



var botListener = connector.listen();
server.post('/api/messages', (req, resp) => {
    token = req.query.token;
    console.log(token); //prints the token to the terminal
    botListener(req, resp);
});

var msg = new builder.Message()
        .text(notification);
        //.address(address)

    bot.send(msg, function (err) {
        // Return success/failure
        res.status(err ? 500 : 200);
        res.end();
    });
为了主动发送消息,我仍然需要用户地址和对话id

是否有办法在浏览器上进行初始化时获取这些信息

var bot = {
                id: params['botid'] || 'botid',
                name: params['botname'] || 'botname',
                screen: params['screen'] || null
            };

 BotChat.App({
                directLine: {
                    //secret: params['s'],
                    token: params['t'],
                    //domain: params['domain'],
                    //webSocket: params['webSocket']
                },
                user: user, //Need to access this user object at server on the webchat start
                bot: bot
            }, document.getElementById("BotChatGoesHere"));
或者当用户在浏览器中加载html时,bot可以启动对话的任何其他方式

更新:conversationUpdate对话框用于触发和启动对话框,但如何访问conversationUpdate对话框中随附的参数(令牌)和用户对象


谢谢

如果我理解正确,你想让你的机器人在webchat加载的那一刻向用户提示类似的内容吗?我没有尝试过直连,总是使用提供的
iframe
,下面是我在bot中发送欢迎消息的步骤:

bot.on('conversationUpdate', (message) => {
    (message.membersAdded || [])
        .filter((identity) => identity.id == message.address.bot.id)
        .forEach((identity) => {
            const reply = new builder.Message()
                .address(message.address)
                .text("Hi, How can I help you today?");

            bot.send(reply);
        });
});

我相信你要找的是最棒的。有了它,您可以向bot发送值。反向通道文档位于该回购协议自述文件的底部。

您是否试图发送欢迎消息?可能与@EzequielJadib部分重复,我还需要发送一个令牌参数,请查看更新。Thx你为什么首先需要代币?听起来有点不对劲,你需要将令牌发送到bot。我需要令牌通过Web服务进行身份验证。如果不是令牌,我可以在那里得到用户对象吗?