Facebook Messenger bot的日期选择卡

Dav*_*ton 9 facebook

我知道,有不同的CTA卡,Facebook的机器人可以使用所看到这里.

我真正需要的是一个datepicker卡,可以发送给用户,他们可以选择日期并发回.这可能使用Facebook机器人吗?

kar*_*g01 7

Facebook Messenger 尚未在其模板中启动日期和时间选择器。

但是您可以通过webview 和 Extensions帮助让您拥有自己。

按着这些次序。

创建按钮或通用模板并放置一个按钮

    "buttons":[
          {
            "type":"web_url",
            "url":"http://my_url_which_open_date_picker",
            "title":"Select date",
            "messenger_extensions": true,  
            "webview_height_ratio": "compact"
          }
    ]
Run Code Online (Sandbox Code Playgroud)

用您的网址替换网址。
注意:url 应该在你的域的白名单中

现在,在该网页中,您可以获取该特定用户的 userId,并且可以轻松映射他的操作以进行日期选择。

在您的页面上

<script>
(function(d, s, id){
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) {return;}
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.com/en_US/messenger.Extensions.js";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'Messenger'));
</script>    
Run Code Online (Sandbox Code Playgroud)

当 Messenger Extensions JS SDK 完成加载时,它将调用 window.extAsyncInit 并且您将在该函数中获得 userId。

<script>
    window.extAsyncInit = function() {
        // the Messenger Extensions JS SDK is done loading 
        MessengerExtensions.getUserID(function success(uids) {
            var psid = uids.psid;

        }, function error(err) {

        });
    };
</script>
Run Code Online (Sandbox Code Playgroud)

uids 是包含用户 ID 的对象
psid 页面范围的用户 ID

您可能还想在用户选择日期时关闭日历页面。这可以通过:

 <script>
      MessengerExtensions.requestCloseBrowser(function success() {

      }, function error(err) {

      });
</script>
Run Code Online (Sandbox Code Playgroud)

  • 应该注意的是,这仅适用于移动设备。桌面用户不会看到紧凑页面,而是一个外部选项卡 (2认同)