使用 Bot Framework 通过 NodeJS 发布到 Microsoft Teams 频道
Posted
技术标签:
【中文标题】使用 Bot Framework 通过 NodeJS 发布到 Microsoft Teams 频道【英文标题】:Using the Bot Framework to post to a Microsoft Teams channel with NodeJS 【发布时间】:2020-09-14 00:11:15 【问题描述】:有没有办法将主动卡片从机器人发送到团队频道?用例是服务票证的渠道。发布后,用户将能够通过一些操作与他们互动。
我正在查看 documentation here 以发送主动消息。在底部,有一个“创建频道对话”部分,并有一个小参考 startReplyChain()
。但是,GitHub 上的实际代码和示例似乎仍然引用了与成员的对话,而不是主动向频道发送内容。
似乎确实有关于传入和传出 webhook 的文档,这就是我最终可能会做的事情。我唯一真正担心的是它需要使用可操作卡片,它在任何地方都将其引用为遗产。尽管说你不能和他们一起发送自适应卡片。也许他们打算让这些连接器发送自适应卡片,但我并不清楚这是否是我应该关注的长期解决方案。
【问题讨论】:
【参考方案1】:这绝对是可能的,重要的是要注意,您甚至可以从另一个进程/应用程序发送(例如,按照来自 AWS Lamba 的计划)。您可以查看示例here。
发送消息的过程只是故事的一部分 - 您需要已经保存某些信息(例如在您的数据库中)才能知道如何联系正确的用户、群聊、或频道对话,但有几种方法可以获取该信息。最常见的是,当您将机器人添加到对话中时,从对话更新事件中获取它。你将需要对话 ID、服务 url、租户 ID 和你的机器人的应用 ID(你在 Azure 门户中为你的机器人获得的内容,以及你已经在应用配置、团队清单等中使用的内容)。您可以阅读有关主题here 和here 的更多信息。
如果您无权访问 conversationUpdate(例如,用户尚未安装您的应用),另一种选择是调用 Graph API 来安装您的应用。只能对频道(在 v1 或 beta api 上)(参见 here)或用户(参见 here)执行此操作,但仅在 beta api 上,而不是(还?)组聊天。
【讨论】:
如果我有这个权利,请告诉我。在proactiveBot.js
中,我们有this.onConversationUpdate()
方法,当将机器人添加到频道而不只是群聊时会调用该方法?然后,大概有某种方法可以判断它是一个频道,而不是一个聊天/用户。
是的,非常准确。对话更新在有效负载中有这样的部分(示例):“conversation”:“isGroup”:true,“conversationType”:“channel”,“tenantId”:“[tenant id]”,“id”:“[对话 id - 请注意,它的末尾可能有一个 ';messageid=',这可能是/可能不是你想要的]" ,你会查看 "conversationType" 以查看它是频道、群聊还是 1 -1 直接与机器人(应用)聊天。
另请注意,“proactiveBot.js”示例只是将所有内容存储在内存中 - 您可以将其放入现实世界中更具弹性的东西(数据库、blob 存储等)
太棒了。我认为我最大的困惑是“对话”这个术语,而 Bot Framework 不仅与 Teams 兼容。谢谢!
很高兴为您提供帮助。确实可能有点令人困惑,有些东西带有多个名称。不要忘记在 Azure 机器人服务中为团队“频道”设置你的机器人,以便你可以将其添加到团队中的频道:-)以上是关于使用 Bot Framework 通过 NodeJS 发布到 Microsoft Teams 频道的主要内容,如果未能解决你的问题,请参考以下文章
使用 Bot Framework V4 在 Teams 中发送主动式 1:1 消息
在使用 Bot Framework 时,如何将 Skype 音频附件与 Bing Speech API 一起使用?