在以前经过身份验证后呈现Facebook Messenger“发送到Messenger”插件

时间:2017-01-08 02:19:27

标签: facebook facebook-graph-api facebook-javascript-sdk facebook-messenger facebook-messenger-bot

我正在开发的应用程序在很大程度上依赖于通知用户。我希望通过让用户能够订阅直接发送到他们的Facebook Messenger的通知来利用信使的力量。当Facebook打开Facebook Messenger Platform时,这只能成为我的一个选择,但我认为这是一个很好的方式来使用Facebook的梦幻产品,并为我的用户提供奢侈品。

我非常了解平台的工作原理,并为用户选择"Send to Messenger" plugin时触发的回调创建了自己的webhook接收器。我还添加了Facebook Javascript SDK并在我的页面上呈现了该插件。

我对这个功能有几个问题:

  1. 一旦用户完成按下“Send To Messenger”按钮的流程,我就可以从触发的webhook回调中检索发送者_id并使用它来调用Send API向用户发送消息,当用户通过流程时,插件有一个复选标记。但是当我重新加载页面时,插件会重置为默认状态并且没有复选标记,我如何渲染插件以检查状态?因为我现在知道用户sender_id,所以我不需要它们再次通过流程并触发相同的回调。我有能力检查用户是否已经完成了流程,但是如何将插件呈现为正确的状态,寻找类似的东西:

     if (user.sender_id?) {
         # show the check marked "Send To Messenger" plugin state
     }
     else {
         # show the default "Send To Messenger" plugin state
         <div class="fb-send-to-messenger" 
          messenger_app_id="APP_ID" 
          page_id="PAGE_ID" 
          data-ref="PASS_THROUGH_PARAM" 
          color="blue" 
          size="standard">
         </div>    
     }
    
  2. 我可以将用户sender_id存储在我的数据库中,只要它们经过一次入口点吗? sender_id是否会发生变化?

  3. 非常感谢任何见解,谢谢!

1 个答案:

答案 0 :(得分:1)

我解决这个问题的方法是将我的用户ID从我的数据库中设置为&#39; ref&#39;或者“通过params&#39;对于Messenger OptIn。然后在我的webhook中,当我收到请求时,我将发件人ID添加到我的用户的数据库集合中。

当用户重新加载页面时,如果用户具有关联的发件人ID,我根本没有渲染信使插件。发件人ID无法更改。