Microsoft Teams:向用户发布直接消息以响应频道中的消息

Posted

技术标签:

【中文标题】Microsoft Teams:向用户发布直接消息以响应频道中的消息【英文标题】:Microsoft Teams: Posting direct message to user in response to message in channel 【发布时间】:2020-09-05 06:45:37 【问题描述】:

Teams 机器人新手,我正在尝试使用 python botframework 的示例,

我需要什么?

使用团队消息传递扩展,为消息添加了一个操作菜单,单击它会显示一个输入对话框 - 完成。 用户在频道中选择一条消息,并使用上述操作菜单,一旦用户在对话框中输入一个值,要求向他发送直接(私人)消息 - 这没有完成时间>

我尝试了什么

尝试使用来自样本的主动消息,

主动消息可以通过 BotFrameworkAdapter 中的以下任一方法完成

create_conversation continue_conversation

但是这两种方法都需要一个对话引用,但在我的例子中,我不会有一个对话引用,因为用户第一次交互只会在频道的操作菜单中。 我所拥有的是 turncontext 中的 from_property(包含用户的所有详细信息),但没有在框架中找到 write api 以使用此值向用户发送直接消息。

【问题讨论】:

【参考方案1】:

您的 Teams 应用程序需要包含消息扩展和 Bot 本身(在 Bots 部分中注册)。因此,当他们安装应用程序时,为了获取消息扩展,您的 Bot 将同时安装。好的做法是无论如何发送"welcome" message,您可以通过挂钩到“OnMembersAddedAsync”事件来执行此操作 - 查看更多here。在这种情况下,您可以立即访问主动消息所需的所有内容(ServiceUrl、ConversationID、TenantID...)

【讨论】:

1.是的,我在 app studio 中创建了机器人,它包含机器人和消息扩展 2。但同样,这里的消息是使用 turn_context.sendactivity 发送的,在我的情况下不能使用,因为它只是将其发送到频道线程而不是直接消息给用户 turncontext.sendactivity 肯定行不通-它使用当前上下文,即团队+频道-我以为您是 create_conversation 或 continue_conversation?看看这一点,它可能会为您尝试做的事情提供一些有趣的背景(从另一个对话中向一个对话发送消息) - 它提供了一些关于如何发送/接收消息的背景:hilton.giesenow.com/how-bot-calls-actually-work 这是我从您的文章和其他答案中了解到的,机器人框架要求用户在机器人能够向用户发送消息之前向机器人发送消息,以防止垃圾邮件机器人。你可以在用户加入对话时向他们发送欢迎消息,但在 Teams 频道中,用户仍然必须先向机器人发送消息,然后机器人才能发送欢迎消息。所以没有办法,我可以在用户第一次交互之前向他发送消息。 所以,到目前为止,我试图提出的主要观点是,您需要确保发送到-正确的对话-。简单地回复传入的活动不会这样做。关于 - 获取 - 对话详细信息,最简单的方法就是在用户安装应用程序时获取它们,正如您所说。如果这是不可能的,或者还没有发生,那么您可以按需为用户“自动安装”应用程序。它需要调用 Graph API,目前仅在 Beta 端点上可用。 (空间不足)它位于 docs.microsoft.com/en-us/graph/api/… ,还请注意您需要用户 ID,但您会从原始消息中获得。

以上是关于Microsoft Teams:向用户发布直接消息以响应频道中的消息的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Microsoft Teams 应用中代表用户发布消息?

微软向用户发送了奇怪的 Microsoft Teams FCM 通知

Microsoft Teams:如何向活动源添加通知?

逻辑应用发布到 Microsoft Teams 数据未显示在字段中

[Microsoft Teams]使用连接器接收Azure Devops的通知

关注 | Slack向欧盟投诉微软:Microsoft Teams涉嫌不正当竞争