Microsoft Azure Bot Framework SDK 4:使用Node js从机器人向特定用户发送主动消息

时间:2018-11-22 06:12:39

标签: node.js botframework

通过在数据库中保存message.address字段,我可以使用旧版botbuilder SDK 3.13.1向特定用户发送消息。

    var connector = new builder.ChatConnector({
        appId: process.env.MicrosoftAppId,
        appPassword: process.env.MicrosoftAppPassword,
        openIdMetadata: process.env.BotOpenIdMetadata
    });
    var bot = new builder.UniversalBot(connector);
    var builder = require('botbuilder');
    var msg = new builder.Message().address(msgAddress);
    msg.text('Hello, this is a notification');
    bot.send(msg);

如何使用botbuilder SDK 4做到这一点?我知道Rest API,但想用SDK本身来实现这一点,因为SDK是机器人与用户之间更优选的通信方式。

谢谢。

1 个答案:

答案 0 :(得分:1)

BotFramework v4 SDK中的

主动消息使您能够继续与单个用户对话或向他们发送通知。

首先,您需要从TurnContext库中导入botbuilder,以便获得会话参考。

const { TurnContext } = require('botbuilder');

然后,在onTurn方法中,您可以从getConversationReference调用TurnContext方法并将结果引用保存在数据库中。

/**
 * @param {TurnContext} turnContext A TurnContext object representing an incoming message to be handled by the bot.
 */
async onTurn(turnContext) {
    ...
    const reference = TurnContext.getConversationReference(turnContext.activity);
    //TODO: Save reference to your database 
    ...
}

最后,您可以从数据库中检索引用并从适配器调用continueConversation方法以向特定用户发送消息或通知。

await this.adapter.continueConversation(reference, async (proactiveTurnContext) => {
    await proactiveTurnContext.sendActivity('Hello, this is a notification')
});

有关主动消息的更多信息,请查看documentation或此example on GitHub。希望这会有所帮助。