【问题标题】:How to get bot id and user id via REST APIs for a bot connected to Microsoft Teams channel如何通过 REST API 为连接到 Microsoft Teams 频道的机器人获取机器人 ID 和用户 ID
【发布时间】:2020-03-02 12:27:55
【问题描述】:

我们使用Microsoft bot 框架,并且需要通过 REST API 从外部应用程序(在不同的环境中运行,例如本地)向连接到 Microsoft Teams 通道的机器人发送消息。以下 REST API 有助于创建对话

{
    "bot": {
        "name": "someBot",
        "id": "xxx-some-bot-id"
    },
    "members": [
        {
            "name": "some user",
            "id": "xxx-some-user-id"
        }
    ],
  "channelData": {
    "tenant": {
      "id": "xxx-some-teanant-id"
    }
  },
}

此 API 返回的 id 可用于稍后通过/v3/conversations/{id} 发送消息

这里有几个问题:

  1. 是否有任何 REST API 可用于获取成员 ID(用户 ID)和 上述有效载荷中使用的机器人 ID?换句话说,外部应用程序如何读取这两个内部ID以供使用而 进行 API 调用?在 Bot API 中找不到合适的 API 文档页面:Bot Framework REST API

  2. 有没有办法让租户 通过 REST API 的 id 以及上述情况? (我知道可以从 Teams 应用程序 URL 读取它

谢谢

【问题讨论】:

  • 我不确定是否有与您想要实现的目标完全相同的东西,但您是否尝试过docs.microsoft.com/en-us/microsoftteams/platform/bots/how-to/…?这将获取成员列表及其基本配置文件(用户 ID/名称/对象 ID)
  • 谢谢。是否有从 UI 或通过其他方法识别团队 ID 的标准方法?抱歉问了这么基本的问题。我可以从 MS Team URL 或通过检查网络流量找到团队 ID。但是没有看到正确的方法来获得它

标签: botframework chatbot microsoft-teams


【解决方案1】:

基本上不,您无法从 Teams 外部检索 ID(出于隐私/垃圾邮件预防的原因)。您的机器人将通过以下几种方式接收它们:

  • 在个人环境中安装时,您的机器人将收到包含必要信息的 membersAdded 类型的消息。

  • 如果您的机器人安装在该人所属的团队中,您可以检索该团队的名册,其中也包含必要的信息。

见:https://docs.microsoft.com/en-us/microsoftteams/platform/bots/how-to/conversations/send-proactive-messages

【讨论】:

  • 几个后续问题:
  • 1.我们看到机器人框架 REST api 以“smba.trafficmanager.net/amer/xxx”开头。看起来 Base URI 绑定到数据中心/区域。我们知道这可以从传入的有效负载中读取。如果客户端想要发起对话并且没有传入有效负载怎么办。在这种情况下,客户端如何以通用方式派生 API 的 Base URI 部分?我们可以将区域(例如 amer)作为一些标头参数传递,将 API 保留为“smba.trafficmanager.net/apis/xxx”吗?
  • 2.在测试时,注意到以下 API:POST /v3/conversations/{conversationId}/activities 即使在接收者姓名和来自姓名的有效负载中没有 id 也能正常工作。请参阅下面的有效负载,即使没有收件人用户 ID 和来自 ID,它也可以工作。依赖这种行为可以吗?或者这种行为将来会改变吗? { "recipient": { "name": "recipient" }, "from": { "name": "somename" }, "text": "Hello", "type": "message", "conversation": { "conversationType": "personal" } }
  • 对于 1,我们建议从您的机器人收到的任何传入请求中缓存服务 URL(按上下文缓存)。此值几乎总是稳定的,但可能会意外更改。添加单个全局 URL 将在未来积压。对于 #2,该行为预计不会改变 - Id 用于寻址,而不是 JSON 有效负载。
猜你喜欢
  • 2021-04-10
  • 1970-01-01
  • 2017-06-17
  • 1970-01-01
  • 2020-07-26
  • 1970-01-01
  • 2020-09-06
  • 2018-09-24
  • 1970-01-01
相关资源
最近更新 更多