多租户机器人,每个客户都有独特的渠道

时间:2016-05-07 04:14:37

标签: botframework

我们正在建立一个机器人,要求我们的每个客户都拥有自己的短信频道(他们的唯一电话号码)。从我们可以用bot框架的文档告诉我们的一切都没有办法做到这一点。我们希望我们的每个客户都能够通过twilio将机器人添加到他们自己的SMS号码中。这可能吗?

2 个答案:

答案 0 :(得分:4)

  

我们可以通过机器人框架的文档告诉我们没有办法做到这一点。

是的,你是对的。

  

我们希望我们的每个客户能够通过twilio将机器人添加到他们自己的SMS号码中。这可能吗?

不,实际上这是不可能的:)

很快,BotFramework由三部分组成:

  • 您的机器人逻辑,它是一个公开端点的Web API服务
  • 频道(Skype,Facebook信使,短信等)
  • 机器人连接器,您可以通过指定端点以及机器人可用于对话的一个或多个不同通道来创建机器人。

因为每个通道每个通道只能关联一次,因此每个bot都可以通过bot连接器进行多租户。

一种解决方案是通过为每个客户创建端点,通过Web API服务端创建多租户。可维护性将很困难,因为多个端点最终会使用相同数量的机器人来管理机器人管理员。每个机器人都会与您的客户编号相关联。

更新:(我没有测试过,但我确信它可以正常工作)

另一种解决方案是使用它暴露的DirectLine频道及其Rest API。如果您选择此解决方案,则意味着您需要做很多事情才能在创建直线渠道后正常工作:

  • 您必须创建一个客户端应用程序,以通过其REST API与Direct Line渠道进行通信。
  • 每个客户都可以拥有自己通过Twilio管理的号码
  • 客户使用其SMS号码发送并通过Twilio接收的每条消息都应触发对客户端应用程序服务的调用
  • 当收到短信时,您的客户端应用程序将与Direct Line频道开始新的对话。
  • 您的客户端应用程序启动的每个对话都必须通过保存状态来关注启动对话的SMS号码。每个会话和每个用户的Bot数据可以提供很多帮助。
  • 当您收到直线通道的回复时,您的客户端应用程序会读取存储在机器人数据中的SMS号码,并使用此号码回复相关客户。

希望它有所帮助。

答案 1 :(得分:0)

你绝对可以这样做。

您实施ICredentialProvider,负责通过AppId查找appPassword并验证密码是否正确。这意味着您可以拥有一个端点服务的bot AppId / Passwords数据库,并查找appid / secret并验证呼叫。

[BotAuthentication(CredentialProviderType = typeof(SimpleCredentialProvider))]

这是一个简单的示例实现 https://docs.botframework.com/en-us/csharp/builder/sdkreference/d3/dde/_credential_provider_8cs_source.html