var channelToken = ""; //Token Line
var apiKey = ""; //Key Gemini

function replyMsg(replyToken, mess, channelToken) {
  var url = 'https://[Log in to view URL]';
  var opt = {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + channelToken,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': replyToken,
      'messages': mess
    })
  };
  UrlFetchApp.fetch(url, opt);
}

function doPost(e) {
        var value = JSON.parse(e.postData.contents);
        var events = value.events;
        var event = events[0];
        var type = event.type;
        var replyToken = event.replyToken;
        switch (type) {
          case 'follow':
            replyMsg(replyToken, mess, channelToken);
            break;
          case 'message':
            var messageType = event.message.type;
            if(messageType == "text"){
              gemini_pro(event);
            }
            else if(messageType == "image"){
              gemini_provision(event);
            }
            else{
            var mess = [{"type":"text","text":"Hello world"}];
            replyMsg(replyToken, mess, channelToken);
            }
            break;
          default:
            break;
        }
}

function gemini_pro(event) {
var userMessage = event.message.text;
var replyToken = event.replyToken;
var apiUrl = "https://[Log in to view URL]" + apiKey;
var requestBody = {
    "contents": [
      {
        "role": "user",
        "parts": [
          {
            "text": userMessage
          }
        ]
      }
    ],
    "generationConfig": {
      "temperature": 0.9,
      "topK": 1,
      "topP": 1,
      "maxOutputTokens": 2048,
      "stopSequences": []
    }
  };
  
   var options = {
    "method": "post",
    "contentType": "application/json",
    "payload": JSON.stringify(requestBody)
  };

 // เลือกเฉพาะข้อมูลที่คุณต้องการ
  var response = UrlFetchApp.fetch(apiUrl, options);
  var responseData = JSON.parse(response.getContentText());
  var textResult = responseData.candidates[0].content.parts[0].text;
  var mess = [{"type":"text","text": textResult.toString()}];
  replyMsg(replyToken, mess, channelToken);

}


function gemini_provision(event) {
  var messageId = event.message.id;
  var replyToken = event.replyToken;
  var url = "https://[Log in to view URL]"+messageId+"/content";
  var headers = {
    "headers":{"Authorization": "Bearer "+channelToken}
  };
  var getcontent = UrlFetchApp.fetch(url, headers);
  var imageBlob = getcontent.getBlob();
  var encodedImage = Utilities.base64Encode(imageBlob.getBytes());
  var apiUrl = 'https://[Log in to view URL]' + apiKey;
  var payload = {
    "contents": [
      {
        "parts": [
          {
            "text": "ช่วยบรรยายภาพนี้ให้หน่อย"
          },
          {
            "inlineData": {
              "mimeType": "image/jpeg",
              "data": encodedImage
            }
          }
        ]
      }
    ],
    "generationConfig": {
      "temperature": 0.4,
      "topK": 32,
      "topP": 1,
      "maxOutputTokens": 4096,
      "stopSequences": []
    },
    "safetySettings": [
      {
        "category": "HARM_CATEGORY_HARASSMENT",
        "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      },
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      },
      {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      }
    ]
  };

  var options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload)
  };

  var response = UrlFetchApp.fetch(apiUrl, options);
  var responseData = JSON.parse(response.getContentText());
  var textResult = responseData.candidates[0].content.parts[0].text;
  var mess = [{"type":"text","text": textResult.toString()}];
  replyMsg(replyToken, mess, channelToken);
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: