我仍然错过了如何找出对话开始的位置,因为我想将用户写入我的数据库并需要它的GUID。
我的中间件
bot.use({
// User sends bot
receive: (event, next) => {
if (event.type == 'message' || event.type == 'conversationupdate') {
api.post.receive(event)
}
next()
},
// Bot sends user
send: (event, next) => {
if (event.type == 'message') {
api.post.send(event)
}
next()
}
})
答案 0 :(得分:2)
您可以利用conversationUpdate
事件,其中应该是对话的开始。
bot.on('conversationUpdate', (message) => {
if (message.membersAdded && message.membersAdded.length > 0) {
//store user info
console.log(message.membersAdded)
}
})
用户信息存储在message.membersAdded
答案 1 :(得分:1)
我发现的解决方案就是这样,你觉得这样可行吗?
bot.use(builder.Middleware.firstRun({ version: 1.0, dialogId: 'firstRun' }))
bot.on('conversationUpdate', (session) => {
if (session.membersAdded) {
session.membersAdded.forEach((identity) => {
if (identity.id === session.address.bot.id) {
bot.beginDialog(session.address, 'firstRun')
}
})
}
})
bot.dialog('firstRun', function (session) {
session.userData.firstRun = true
// save user in my api
session.send("Hello firstRun...")
}).triggerAction({
onFindAction: function (context, callback) {
// Only trigger if we've never seen user before
if (!context.userData.firstRun) {
// Return a score of 1.1 to ensure the first run dialog wins
callback(null, 1.1)
} else {
callback(null, 0.0)
}
}
})