Facebook 直播使用心情(Reaction)投票的 2 個開發關鍵 API

美國總統大選那段時間席捲大家 Facebook 塗鴉牆的就是「直播心情投票」了吧!

然後,然後就,大家都跟著玩了XD

操作就是:

  1. 製造對立
  2. 對立選項不能超過目前 Facebook 心情數量(6個)

目前個人看過最爛的是拿來投票「星座」,星座有十二個阿抓六個這樣投也太鳥,至於主題什麼都差不多

十二星座中的哪個最blah blah blah…

但最有創意的是這篇,突破了對立!

讓大家是參與來把玩這可愛的電風扇XD 也太溫馨了吧!

離題了 Orz

不管內容是怎麼構築,最關鍵還是使用投票的方法與技術

關鍵的兩個技術

首先當然是要先透過 Live Video API 在你的電腦上開啟直播拉!(可參考我的工具:Live Show

然後投票的部分是:

A. Facebook Graph API 中的 Object Type ID 來查對應欄位資訊

B. 也在 Facebook Graph API 分類下的 Webhooks API

區別是

  1. A 是你去跟 Facebook 要資訊,B 是 Facebook 通知你有更新

  2. A 較即時,B 大約晚個 5 秒左右

  3. A 是取得總統計值,B 是取得每一次彙總的操作值(例如:打了一個讚、取消了一個讚、修改成一個怒..等等)

  4. A 要的太頻繁或是 token 過期,就會被 Facebook 給禁止操作,B 不會

  5. A 的做法簡單,B 整個太麻煩(哈)

Facebook Graph API 中的 Object Type ID 來查對應欄位資訊

關於 A 網路上也有人分享現成的做法,使用流程:開直播,把 Post ID 改上程式,補上 access token 就可以開始了!

Post ID 要從介面上找,目前做法是發布直播後標題下方的時間欄位,複製連結可以找到最後面的一串數字就是ID了

至於 access token 可以參考之前寫的一篇 Facebook API 教學:客製化登入流程並以粉絲頁互動應用為例

但這邊的 access token 其實不像上面那篇提到的這麼複雜,他只要有閱讀權限就可以,這個檢測方法也很簡單,只要你看得到直播你就有權限,使用個人的授權碼就可以,要測試可以用我的工具:FB OAuth (可自代 app_id & app_secret 這兩個 GET 參數變成你的 App 測試,純順流程,不會紀錄,請安心)

A 方法的關鍵就是用欄位查找的方式去向 Facebook 問這些心情的統計資訊,會生成一段如下方所示的查詢連結,然後每秒問一次取得更新,在顯示在螢幕上

https://graph.facebook.com/v2.8/?id=LIVE-VIDEO-POST-ID&fields=reactions.type(LIKE).limit(0).summary(total_count).as(reactions_like),reactions.type(LOVE).limit(0).summary(total_count).as(reactions_love),reactions.type(WOW).limit(0).summary(total_count).as(reactions_wow),reactions.type(HAHA).limit(0).summary(total_count).as(reactions_haha),reactions.type(SAD).limit(0).summary(total_count).as(reactions_sad),reactions.type(ANGRY).limit(0).summary(total_count).as(reactions_angry)&access_token=YOURACCESSTOKEN

Facebook Graph API 的 Webhooks API

方法 B 就麻煩了,這塊比較紅的是 Facebook Messenger Bot 機器人,透過 Webhooks 把你的訊息通知給訊息機器人分析來回應,而這邊就是用相同概念讓 Facebook 去根據我們訂閱(Subscribe)的資訊來通知。

訂閱的項目不少,這邊是針對粉絲頁的互動來操作,會有下面操作流程:

  1. 申請一個 Facebook App,輸入名稱信箱跟用途
  2. 進控制面板後左側 新增產品 ,把 Webhooks 加入
    Facebook App 新增產品

  3. 點選 Webhooks 你將會看到一個 新訂閱內容 的按鈕在右邊欄,點下去,選擇 Page (粉絲頁)

  4. 填入你寫的 回呼網址 (callback url)、 驗證權杖 (verify token),最後是勾選 訂閱欄位 <conversations, feed>

設定 Webhooks

注意:網址要 HTTPS 協定、驗證權杖其實就是你愛打什麼就打什麼,在自己程式裡去判斷用的。

到這邊有個雷一定要寫出來,文件只有寫說訂閱 conversations 就可以取得一些貼文互動,但沒有說其實還要補上訂閱 feed ! 也是我試出來的,原因大概是要讀到互動,至少會要能讀到訊息流這樣的權限先後吧!不過也給我寫一個判斷機制是勾了 conversationsfeed 也幫我勾一下麻 Orz

到這邊還只是設定 App 接收資料的部分,接下來是綁定粉絲頁與 App 的訂閱關係

有兩種做法

  1. 簡單的是去再新增產品 Messenger 然後在右欄中的 Webhooks 中做一次上面說的 1~4 步驟,下方可以直接選要訂閱的粉絲頁,跟上方可以拿到授權碼(如果要測試機器人的話會用到)
    設定 Messenger
  2. 喜歡敲鍵盤的人可以在拿到粉絲頁授權App後的 access token ,使用下面請求方式訂閱

    curl -ik -X POST “https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=YOURACCESSTOKEN”

以上兩大訂閱操作完成後就可以在程式去捕捉到粉絲頁的動態拉! 至於實作上就沒寫在這裡了,看需求而定!

也有熱心網友提供基本款 Facebook 機器人的 PHP 原始碼可以參考看看~ 稍微改裝一下就能用來操作直播心情投票囉!

至於哪種方式直播投票好,我覺得都沒差,真要比喻就是實作B方法有些殺雞用牛刀,官方說 Webhooks的「變更彙總並批次傳送的時機為:最多每 5 秒一次」,跟手動每秒請求一次在一場持續熱烈參與的活動中效果沒有差太多,反倒是要記得顧好網路別斷線造成直播中斷,比較實在~

但訂閱 Webhooks 的做法可以幫助分析人員得到不少數據,絕對是掌握粉絲行為的最佳解了!

Facebook 外掛整合


Share: