发现对话的开始

时间:2018-04-09 17:47:23

标签: node.js botframework

我仍然错过了如何找出对话开始的位置,因为我想将用户写入我的数据库并需要它的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()
    }
})

2 个答案:

答案 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)
        }
    }
})