2016年8月13日 星期六

用Google Script撰寫Facebook粉絲團自動回話機器人

繼上次整理有關PHP的Websocket之後
這次則是要來玩臉書的粉絲團

幾天前找到了一篇相關的教學文
利用Google Script撰寫控管訊息來回的程式
連自己的網路空間都不需要
就可以免費建立一個操控性極高的臉書聊天機器人!!!!!



感謝這篇文章
以下的內容幾乎都是根據這篇文章所玩出來的

首先先說明一下整個架構
原本粉絲團的管理員透過臉書的網站或APP來與粉絲傳遞訊息

粉絲 ←→ 臉書網站或APP ←→ 粉絲團管理員

而臉書機器人則是取代粉絲團管理員
自動跟粉絲們進行簡單的互動

粉絲 ←→ 臉書網站或APP ←→ 訊息機器人 ←→ 機器人控制程式

在這之中Google Script扮演的是控制程式的部分
可以24小時不間斷地聆聽粉絲的訊息並給出回應

粉絲 ←→ 臉書網站或APP ←→ 訊息機器人 ←→ Google Script

所以接下來就要一步一步說明如何建立一個臉書訊息機器人
以及機器人背後的Google Script控制程式

1. 建立臉書訊息機器人

建立訊息機器人之前
需要先準備好一個臉書粉絲團
這一步就...跳過不介紹了
之後需要建立一個臉書應用程式
臉書應用程式可以到這個網頁中建立申請
建立應用程式

點選右上角的建立應用程式
隨便選擇一個應用程式類型
然後按下右上角的"Skip and Create App ID"
App ID建立畫面

這邊的內容隨意輸入即可
反正大多之後都還可以改.....
完成後會進入這個App的主控畫面
點選左邊的新增產品
會再右邊的產品列表中找到Messenger
這就是我們要找的東西了
That's what we want!!

ㄧ些基本的使用說明等就先確認或跳過
進到Messenger的主控畫面後
中間有一個下拉選單可以選擇自己所管理的粉絲團
在選單中選擇想要套用機器人的粉絲團
然後記下右邊"粉絲專頁存取權杖"的內容
把出現在紅框中的內容記下來,且不要被其他人知道!

聊天機器人的建立到這邊告一個段落先暫停
之後我們要用Google Script來建立一個管理機器人的控管程式
再回來跟機器人串接

2. Google Script控管程式

首先,先到Google雲端硬碟的網站
照下圖這樣建立一個新的Google Script
建立新的Google Script

接著在空白的語法區域貼上以下的程式碼:

var PAGE_ACCESS_TOKEN = '這邊貼上剛剛紀錄的粉專權杖';

function doGet(e) {
  var validRequest = e.parameter['hub.verify_token'] === PAGE_ACCESS_TOKEN;

  var res = validRequest ? e.parameter['hub.challenge'] : 'Invalid Request';

  return ContentService.createTextOutput(res).setMimeType(ContentService.MimeType.TEXT);
}

function doPost(e) {
  var params = JSON.parse(e.postData.contents);
  var messagingEvents = params.entry[0].messaging;

  messagingEvents.forEach(function(event) {
    if (event.message && event.message.text) {
      if (event.message.text == '你好')
      sendHttpPost(event.sender.id, '你好,我是粉專機器人!');
    }
  });

  return ContentService.createTextOutput("OK").setMimeType(ContentService.MimeType.TEXT);
}

function sendHttpPost(sender, text) {
  UrlFetchApp.fetch('https://graph.facebook.com/v2.6/me/messages?access_token=' + PAGE_ACCESS_TOKEN, {
    method : 'POST',
    contentType : 'application/json',
    payload : JSON.stringify({
      recipient: {
        id: sender
      },
      message: {
        text: text || '沒有訊息'
      }
    })
  });
}


function test() {
  
}

記得把程式碼最上面標記的地方
貼上剛剛在建立聊天機器人時
拿到的粉專權杖
然後存檔、取名
並在上面的下拉選單選擇test這個函式
再點下執行按鈕執行一次(如下圖)
先選test,再點執行

執行時會要求一些基本權限
開通權限後如果沒有什麼錯誤訊息出現
那就是建立成功了!
為了讓臉書的聊天機器人能夠與這隻程式溝痛
我們需要將程式發布出來
點選上方的"發布"→"部署為網路應用程式"
並依照下圖中的設定後點選部署

部署設定

點選部署後,會獲得這個程式的網址
請把他記下來,我們會帶著這個網址
回去設定讓臉書聊天機器人來跟程式連線
程式發布後的網址,記下來!

3. 連接聊天機器人與控制程式

回到臉書的聊天機器人控制畫面
在Webhooks的區塊點選右邊的Setup Webhooks
然後分別貼上剛剛的程式網址
以及之前取得的粉專權杖
並在下方訂閱欄位中勾選messages
驗證畫面

填好後點右下角的驗證並儲存
如果沒有跳出錯誤表示就驗證成功
最後只要在下方選擇自己的粉專並訂閱
就算大功告成囉!

4. 測試

回到臉書,對粉專送出聊天訊息"你好"
應該就會自動收到機器人回應"你好,我是粉專機器人!"囉
機器人順利回話啦!


備註區

1. 先不要急著跟朋友炫耀請朋友來測試!!
    由於臉書政策的關係
    機器人建立完成也只是App的開發者(你)以及測試者們可以使用
    要把功能公開需要提出申請並通過臉書的審查
    否則其他人敲到當機都不會收到任何自動回覆的訊息
    相關的審查申請可以參照聊天機器人主控頁中
    App Review for Messenger的部分(這次暫不敘述)

2. 現在這個機器人相當陽春
    只會根據"你好"這個關鍵字進行相同的回應
    實際上Google Script可以很方便的串接Google Spreadsheet等服務
    做到更有趣的回應功能
    不過這邊就站不敘述交給大家自己玩了(其實是寫累了XDDD)

沒有留言 :

張貼留言