你知道JS版本的 line-bot-sdk-gas 嗎?

 

line-bot-sdk-gas 是一個基於 Google Apps Script (GAS) 的開發工具,用於整合 LINE Messaging API 和 Google Apps Script。這個工具讓你可以使用 Google Apps Script 編寫自動回覆 LINE 訊息的機器人。透過它,你能夠在 Google Apps Script 環境中管理和處理 LINE 的訊息事件。

這個 SDK 是用 JavaScript 來開發的,因為 Google Apps Script 本身就是基於 JavaScript 的雲端腳本環境。

你可以使用 line-bot-sdk-gas 來完成以下操作:

  • 回應 LINE 使用者的訊息
  • 發送訊息、圖片、影片等給 LINE 使用者
  • 處理各種事件,例如文字訊息、按鈕回應、位置訊息等

安裝後,你可以在 Google Apps Script 中撰寫像這樣的範例程式碼:

function doPost(e) {
  var lineBot = new LineBot();
  var replyToken = e.parameter.replyToken;
  var messageText = e.parameter.messageText;
  
  lineBot.replyMessage(replyToken, {
    type: 'text',
    text: 'Hello, this is a reply from GAS!'
  });
}
你可以參考 line-bot-sdk-gas 的文件來了解更多細節和範例。

 


如何接收圖片並且轉成 base64?

 

在使用 Google Apps Script 和 line-bot-sdk-gas 時,如果你想接收 LINE 使用者傳來的圖片並將其轉換為 Base64 編碼,可以參考以下步驟:

步驟 1:接收圖片訊息

首先,當 LINE 使用者傳送圖片時,你可以在事件處理器中處理這個圖片訊息。你可以使用 getContent() 方法來取得圖片的二進位資料。

步驟 2:將圖片轉換為 Base64 編碼

使用 Google Apps Script 提供的內建方法 Utilities.base64Encode() 來將二進位圖片資料轉換為 Base64 格式。

範例程式碼

這裡提供一個簡單的範例,示範如何接收 LINE 傳來的圖片,並將其轉換為 Base64 字串:

function doPost(e) {
  var json = JSON.parse(e.postData.contents);
  
  var events = json.events;
  
  events.forEach(function(event) {
    // 檢查事件是否為圖片訊息
    if (event.message.type === 'image') {
      var messageId = event.message.id;
      
      // 取得圖片內容 (二進位資料)
      var imageBlob = getLineImage(messageId);
      
      // 將圖片轉換為 Base64
      var base64Image = Utilities.base64Encode(imageBlob.getBytes());
      
      // 你可以將 Base64 字串儲存或傳回
      Logger.log(base64Image);
    }
  });
}

// 取得圖片資料的輔助函式
function getLineImage(messageId) {
  var lineBot = new LineBot(); // 初始化 line-bot-sdk-gas
  
  // 使用 getMessageContent() 取得圖片內容
  var imageResponse = lineBot.getMessageContent(messageId);
  
  if (imageResponse) {
    // 將取得的圖片內容轉換為 Blob 格式
    var imageBlob = Utilities.newBlob(imageResponse.getBytes());
    return imageBlob;
  } else {
    throw new Error('無法取得圖片');
  }
}

解釋:

  1. doPost 函數:當 LINE 傳送圖片訊息到機器人時,這個函數會被觸發。它會解析事件,並檢查訊息是否為圖片。
  2. getLineImage 函數:使用 line-bot-sdk-gasgetMessageContent() 方法取得圖片的內容,並將其轉換為 Blob
  3. Base64 編碼:使用 Utilities.base64Encode() 將 Blob 的二進位資料轉換為 Base64 格式。

後續處理:

你可以將 Base64 編碼的圖片字串儲存在 Google Sheets、Firebase,或傳送回 LINE 使用者,視應用場景需求而定。

 


Utilities.newBlob 在哪邊載入的?

 

Utilities.newBlob() 是 Google Apps Script 提供的內建工具函式,不需要額外載入或安裝。Utilities 是 Google Apps Script 的全局物件之一,內含許多常用的實用工具,包括字串編碼、哈希計算、時間處理等。

Utilities.newBlob() 用於建立一個新的 Blob 物件,Blob 是一個二進位大對象,常用來處理圖片、檔案等資料。

在你的 Google Apps Script 環境中,Utilities 是預設可用的,因此你可以直接在腳本中使用,如同下面範例:

var blob = Utilities.newBlob(byteArray, mimeType, fileName);

這裡的參數為:

  • byteArray:二進位資料,通常是一個位元組陣列(byte[])。
  • mimeType:資料的 MIME 類型,例如 image/jpegimage/png
  • fileName(選填):檔案名稱,可以不提供。

這個函式會返回一個 Blob 物件,該物件可以進一步處理,例如上傳到 Google Drive、轉換為 Base64 編碼等。