我使用直线法与此机器人进行通信:
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时,机器人可以启动对话的任何其他方式。
更新:conversationUpdate对话框用于触发和启动对话框,但如何在conversationUpdate对话框中访问发送的参数(令牌)和用户对象?
由于
答案 0 :(得分:2)
如果我理解正确,您希望机器人在网络聊天加载的那一刻提示用户Hi, what can I help you with today?
,对吗?我没有尝试过直线,总是使用提供的iframe
,而我在机器人中执行的操作是发送欢迎信息:
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);
});
});
答案 1 :(得分:0)
我相信你要找的是backchannel。有了这个,您可以将值发送到您的机器人。 backchannel文档位于该repo的自述文件的底部。