【问题标题】:1-to-1 Proactive messaging using Bot Framework 4使用 Bot Framework 4 的一对一主动消息传递
【发布时间】:2018-12-06 07:02:35
【问题描述】:

我正在使用 C# (.NET Core) 和 Bot Framework v4 来开发机器人服务。我是 Bot Framework 的初学者。

问题陈述如下:

  • 我希望能够在 o365 SharePoint 上存储一些问题 订阅列表。列表的数据结构将具有 包含作为目标受众的用户的列 问题。
  • 当一个问题添加到列表中时,我希望我的机器人发送 向 Microsoft Teams 的目标用户提问。
  • 即使用户不在线加入团队,我也想发送一个 在 Teams 聊天中向用户发送通知,例如“错过 对话”。

现在,我了解,在非常初级的水平上,这里的关键是使用 Bot 进行主动消息传递。我在任何论坛文章中无法弄清楚或找到的是,我如何编写我的机器人以访问 SharePoint(可能使用轮询或事件驱动)并获取信息,然后将获取的数据发送给个人 1- 上的用户一对一团队聊天?

到目前为止我所做的是:

  • 我已经编写了我的 SharePoint 业务逻辑来获取信息。
  • 机器人在收到来自的活动时调用此业务逻辑 用户。即说,用户说“嗨”,机器人去取 来自 SharePoint 的信息并将其返回给聊天中的用户 窗口。

任何帮助将不胜感激。

干杯,

瑜伽

【问题讨论】:

  • 我认为您应该将 SharePoint 作为您问题的主题,而不是 Bot Framework。您说“您不知道如何编写我的机器人来访问 SharePoint(可能使用轮询或事件驱动)并获取信息”。您当前的问题主题可能会吸引 Bot Framework 专家,而不是那些具有 SharePoint 经验的人
  • 另外,.net 上的 Bot Framework 是常规的 .net Web 应用程序,因此您可以加载通常在 .net Web 应用程序中执行的数据
  • “你不知道如何编写我的机器人去 SharePoint”:Microsoft Graph API? docs.microsoft.com/en-us/graph/api/resources/…
  • 我已经弄清楚了从sharepoint获取数据的部分,我想实现bot主动调用获取逻辑的部分。而不是在用户活动上。

标签: c# .net-core botframework


【解决方案1】:

我的猜测是您应该能够实现目标,但在寻求帮助时请确保将其分解为更小的问题。您可能还需要两者之间的其他层来完成。

正如您所发现的,您希望在机器人端使用主动消息向用户发送消息,而无需他们先与机器人互动。如果用户以前从未与机器人进行过交互,您将不会获得任何成功(尤其是在团队中),因为机器人需要某种方式才能知道如何联系他们(以前的对话等) .请查找更多信息herehere

我无法在任何论坛文章中弄清楚或找到的是,我该怎么做 编写我的机器人以访问 SharePoint(可能使用轮询或事件 驱动)并获取信息,然后将获取的数据发送到 个人一对一团队聊天的用户?

我已经编写了我的 SharePoint 业务逻辑来获取信息。这 bot 在收到来自用户的活动时调用此业务逻辑。 即说,用户说“嗨”,机器人去获取信息 从 SharePoint 并在聊天窗口中将其返回给用户。

所以;似乎您缺少的部分是进行轮询等的中间层。 proactive sample 只是使用转向事件来“主动”向用户发送消息。你可能需要发挥创造力。有一些其他的服务/timerjob/serverless 功能可以提供帮助。

这是一篇针对 v3 的文章,但关于主动消息的总体思路很好,有助于理解如何最好地处理主动消息范式并确保良好的用户体验: https://docs.microsoft.com/en-us/azure/bot-service/dotnet/bot-builder-dotnet-proactive-messages?view=azure-bot-service-3.0#send-a-dialog-based-proactive-message

【讨论】:

  • 感谢@Dana V,我将查看您提供的源链接,并尝试使用框架 4 实现主动消息传递。对于在单个帖子中完全淹没太多问题表示歉意。下次发帖时,我会尝试分解问题陈述。
  • 将更大的问题陈述分解为更小的部分的建议实际上改进了实现并使其符合 SOLID 原则。非常感谢!
【解决方案2】:

我能够完成上述任务。对于初学者来说,我想太多了,解决方案很简单。

我编写了一个无限循环,使用简单的 Task.Delay(毫秒) 定期异步调用 SharePoint,并在找到问题时主动推送。

对于 1 对 1 消息传递,我正在使用 Bot Framework 的 Teams 扩展来存储个人频道信息,并根据上述轮询功能在有内容要发送时通过私人聊天向用户发送消息。

希望能为那些可能正在寻求实现类似目标的人扫清障碍。

干杯, 是的

【讨论】:

  • “使用简单的 Task.Delay(毫秒) 编写了一个无限循环,定期异步调用 SharePoint,并在发现问题时主动推送问题。” -- 只要这不会对您的应用程序资源产生负面影响,我很高兴它有效!
  • 对于任何人,仍在寻找一种方法来做到这一点。用于触发主动消息传递的用户 Microsoft Flows。虽然无限循环方法很好,但如果轮询配置不明智,它可能会极大地影响您的 Web 服务器资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
相关资源
最近更新 更多