gpt4 book ai didi

node.js - Teams 中的主动消息传递机器人,无需事先提及该机器人

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:25 26 4
gpt4 key购买 nike

我正在使用 Microsoft 机器人框架来创建机器人并将其集成到团队中。该机器人的部分要求包括每天主动向用户发送一次消息。据我了解,我只能向在机器人之后添加到 team/groupChat 的用户发送消息,或者直接向机器人发送消息。我的问题是 - 我可以以某种方式绕过这个限制吗?我的一位 friend 向我推荐了 graphAPI 的一项新功能,作为新测试版本的一部分 - https://learn.microsoft.com/en-us/graph/api/user-add-teamsappinstallation?view=graph-rest-beta&tabs=http .

对我来说,它似乎与解决方案无关,因为我没有在响应中收到任何数据,所以如果我没有对话引用对象,我仍然无法向用户发送消息。

目前,我的解决方案是在添加 channel 时简单地广播一条消息,要求用户通过发送消息来“注册”。大家还有其他建议吗?

最佳答案

最简单的方法是:

  1. 为团队安装机器人
  2. Query the Team Roster -- 步骤 3 中的链接有另一种方法可以在底部执行此操作
  3. Create a conversation with the user and send a proactive message

这些链接中有很多代码,最好直接访问它们,而不是将其复制/粘贴到此处。

第 3 步末尾还提到 trustServiceUrl ,如果您在尝试发送主动消息时遇到权限/身份验证问题,您可能会发现它很方便。

<小时/>

编辑 Node :

安装必要的软件包

npm i -S npm install botbuilder-teams@4.0.0-beta1 botframework-connector

注意:@<version>很重要!

准备适配器

index.js

const teams = require('botbuilder-teams');

adapter.use(new teams.TeamsMiddleware());

获取名单

// Get Team Roster
const credentials = new MicrosoftAppCredentials(process.env.MicrosoftAppId, process.env.MicrosoftAppPassword);
const connector = new ConnectorClient(credentials, { baseUri: context.activity.serviceUrl });
const roster = await connector.conversations.getConversationMembers(context.activity.conversation.id);

发送主动消息

const { TeamsContext } = require('botbuilder-teams');

// Send Proactive Message
const teamsCtx = TeamsContext.from(context);
const parameters = {
members: [
roster[0] // Replace with appropriate user
],
channelData: {
tenant: {
id: teamsCtx.tenant.id
}
}
};
const conversationResource = await connector.conversations.createConversation(parameters);
const message = MessageFactory.text('This is a proactive message');
await connector.conversations.sendToConversation(conversationResource.id, message);

Trust the ServiceUrl, as Necessary

阅读相关内容。您希望在发送消息之前执行此操作。

MicrosoftAppCredentials.trustServiceUrl(context.activity.serviceUrl);

关于node.js - Teams 中的主动消息传递机器人,无需事先提及该机器人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57496329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com