我目前有一个工作的NodeJs后端(用Sailsjs构建),它为我正在构建的移动应用程序提供rest服务。
现在我想扩展到Facebook,这样我就可以让我的用户选择与机器人进行交流,而不是使用这个应用程序。
例如,如果用户想查找他的下一个约会,他可以打开应用程序并查找它,或者打开Messenger询问“我的下一个约会是什么时候?”为了实现这一目标,我必须将Messenger用户识别为我的数据库中的现有用户。为此,我目前正在使用Facebook 帐户连接。我设法使帐户链接工作,并将用户PSID保存到我的数据库。对于机器人,我目前正在使用Motion.ai (考虑使用其他服务)。所有的消息都传递给我的运动机器人网络钩子和我的后端网络钩子。对于一个应用程序使用两个web挂钩是不对的,是吗?
我的移动应用程序的其他服务都在使用网络令牌来识别打电话的用户,但是我的Messenger bot用户没有网络令牌,我如何解决这个问题,并且仍然有一个安全的平台?也许我可以给用户发送令牌或PSID以及Motion.ai令牌的选项?Motion.ai令牌对于所有用户都是一样的,但是仍然在一定程度上保护了后端,因为它只接受来自Motion.ai服务器的重定向。
我真的很感激你能提供的任何帮助
,好的,我找到了一个让它工作的方法,。因为我正在建造一个荷兰机器人,所以Motion.ai并不适合我。我转向Api.ai主要是因为他们对荷兰语的支持,也是因为他们有先进的语言处理能力。我发现我不能为我的机器人和我的移动应用重新使用我的控制器。为了解决这个问题,我将所有的逻辑转移到一个服务(更好的设计)上,我可以调用我的bot控制器和rest服务控制器。
为了使一切都以安全的方式工作,我做了以下工作:
1: Api.ai不支持Facebook的帐户链接回调,所以我使用我的服务器作为我的Facebook应用程序的web钩子。
2: --我使用Sails来确认Facebook令牌,检查我的数据库中的UserId (如果它不匹配,向用户发送account_linking请求),并处理account_linking回调。为了确保Api.ai webhook的安全,我使用了另一个使用基本auth的策略。
2.1,如果用户还没有链接,链接过程将发送一个登录表单,这样他就可以用我的应用程序中使用的电子邮件和密码登录。
2.2:如果用户电子邮件和密码匹配,我会发送一个重定向链接到fb以确认登录。我还添加了一个包含usersid的令牌(来自我的数据库)。
2.3: Fb现在将通知用户他已经成功登录并发送一个带有他们从我那里收到的令牌的account_linking回调。由于用户id在令牌中,我现在可以在我的数据库中查找用户,并用我从Facebook收到的id更新他的FacebookID。现在,用户已正式登录。
3:一旦策略确定,我就使用控制器将Facebook消息重定向到Api.ai。
4:最终将向我的服务器发送一个响应,该服务器将处理该响应并将消息重定向到fb用户。
发布于 2016-11-05 14:16:13
假设您可以为您切换到另一个服务,如您所说,切换到api.ai。
因为它提供了一个Facebook Messenger集成,而且它似乎是机器人市场的领头羊。
还有wit.ai,但我还没有对它进行测试。
希望这有所帮助:)
https://stackoverflow.com/questions/40438131
复制相似问题