当前位置: 首页 > 面试题库 >

团队中的主动消息传递机器人,无需事先提及该机器人

段干恺
2023-03-14
问题内容

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

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

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


问题答案:

最简单的方法是:

  1. 为团队安装机器人
  2. 查询团队名册 -步骤3中的链接有另一种方法可以做到这一点
  3. 与用户进行对话并发送主动消息

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

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

安装必要的软件包

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);

[必要时信任ServiceUrl](https://docs.microsoft.com/en-us/azure/bot-service/bot-

builder-howto-proactive-message?view=azure-bot-
service-4.0&tabs=csharp#avoiding-401-unauthorized-errors)

阅读有关它。在发送消息之前,您需要这样做。

MicrosoftAppCredentials.trustServiceUrl(context.activity.serviceUrl);


 类似资料:
  • 这不是重复的:| 我添加了一个用于管理goup的新机器人。通过此信息: 我的机器人是管理员 我的机器人隐私被禁用 “启用”-您的机器人只会接收以“/”符号开头或通过用户名提及机器人的消息。“禁用”-您的机器人将接收人们发送到组的所有消息。当前状态是:禁用成功!新状态是:禁用 bot可以读取除其他bot消息外的所有成员!但可以在回复中看到信息。 我的tg api是:https://github.co

  • 机器人信息 包含机器人的基本信息和服务管理。在机器人列表页点击“基本信息”,跳转到机器人信息页面;或者点击“设置机器人”,在机器人详情页点击左侧的“机器人信息”,也可以进入机器人信息页面。 基本信息 基本信息包括机器人昵称和头像设置。 服务管理 服务管理客队机器人服务功能进行设置,现主要分为六大类:日常聊天、物流查询、自动对联、机器写诗、知识问答、自定义闲聊。选择服务功能的开启之后,便可点击左下角

  • 每次机器人被邀请到服务器时,我都想发送一条消息。然后它应该写这样的话:“你好,这是我的不和机器人” 到目前为止,我有这个代码,它不会产生错误,但也不会发送消息。

  • 我有两个问题与编程电报机器人的PHP。 问题:当我尝试使用电报API发送更多行的文本时。根据此代码: 我在电报机器人中的文字如下: “这是我的短信。这是新线。” 你能帮我做这个吗? 谢谢你

  • 问题内容: 机器人是AWT库的一部分,但它似乎与该库的所有其他部分大不相同。我正在创建一个Swing GUI,它将Swing与Java Native Access(JNA)和Robot混合在一起,以允许Java驱动某些MS Windows / Citrix工作程序。我的直觉是,由于机器人会将事件排队在“平台的本机输入队列”上,所以我最后要做的就是在EDT上运行它,但是另一方面,AWT和Swing库