Bot Framework Node.js 发送给特定用户的临时消息

2024-05-19

我已经盯着这个问题好几个小时了,找不到解决方案,即使根据所有建议,它应该很容易 -https://learn.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-proactive-messages https://learn.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-proactive-messages.

我创建了一个简单的代码,它将“注册”用户并将其数据保存在 Azure 上的 cosmosDatabse 中。效果很好。

//ON "register" SAVE USER DATA AND SAY REGISTERED MESSAGE 
bot.dialog('adhocDialog', function(session, args) {

    var savedAddress = session.message.address;
    session.userData.savedAddress = savedAddress;
    //REGISTERED MESSAGE
    session.endDialog("*Congratulations! You are now registered in our network! (goldmedal)*");
})
.triggerAction({
    matches: /^register$/i
})
  • 但是,如果满足某个条件,我如何访问该特定用户并向他发送消息?(实际上是在 HTTP 请求上)

我相当确定我们必须在某处写入对话 ID 或用户 ID。问题是在哪里?

function startProactiveDialog(address) {
    bot.beginDialog(address, "A notification!");
}
  • 我认为这应该是多么简单。但是你在哪里指定用户呢?

您已将用户的地址保存到数据库中session.userData.savedAddress。当事件触发时,对数据库执行查询,检查满足两个条件的用户。

  1. 他们已注册监听该事件
  2. 他们的地址已保存在数据库内。

就您而言,您可以将属性保存到session.userData对象,列出它们正在侦听的事件的属性。如果您只需要向用户发送消息,那么您可以简单地使用bot.loadSession(savedAddress) https://docs.botframework.com/en-us/node/builder/chat-reference/classes/_botbuilder_d_.universalbot.html#loadsession来 ping 用户。


Edit:

因此,您不应专门通过用户 ID 进行查找,而应向 CosmosDB 发送一个查询,查找具有与事件对应的“监听”布尔类型标志的条目。

您一开始并不担心用户 ID,您只是使用一个查询来检索所有条目,该查询(广义上来说)如下所示:SELECT * FROM BotState WHERE data LIKE 'listenForEvent=1.

所以要设置你的session.userData为了使上述理论查询起作用,您需要将问题中的代码片段修改为如下所示:

bot.dialog('adhocDialog', function(session, args) {
    var savedAddress = session.message.address;
    session.userData.savedAddress = savedAddress;
    session.userData.listenForEvent = 1 // Our property we're going to look for.

    session.endDialog("*Congratulations! You are now registered in our network! (goldmedal)*");
})
.triggerAction({
    matches: /^register$/i
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bot Framework Node.js 发送给特定用户的临时消息 的相关文章

随机推荐