通过在数据库中保存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是机器人与用户之间更优选的通信方式。
谢谢。
答案 0 :(得分:1)
主动消息使您能够继续与单个用户对话或向他们发送通知。
首先,您需要从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。希望这会有所帮助。