2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ChatGPT x LINEボット連携 with google apps script

Last updated at Posted at 2023-03-11

若干すでにうろ覚えだけど、備忘録に書いとく。

必要なもの
・OPEN AIのAPI Key
・LINE developersのmessaging APIのチャネルアクセストークン( https://developers.line.biz/ja/ で取っておく)

google apps scriptで、下記入れる。

const LINE_ACCESS_TOKEN = 'XXX';
const OPENAI_API_KEY= 'XXX';


function doPost(e) {
  const event = JSON.parse(e.postData.contents).events[0];

  const replyToken = event.replyToken;
  let userMessage = event.message.text;
  const url = 'https://api.line.me/v2/bot/message/reply';

  if (userMessage === undefined) {
    // メッセージ以外(スタンプや画像など)が送られてきた場合
    userMessage = '???';
  }

  const prompt = userMessage;
  const requestOptions = {
    "method": "post",
    "headers": {
      "Content-Type": "application/json",
      "Authorization": "Bearer "+ OPENAI_APIKEY
    },
    "payload": JSON.stringify({
      "model": "gpt-3.5-turbo",
      "messages": [
        {"role": "system", "content": `
あなたはChatbotとして、坂本龍馬のロールプレイを行います。
以下の制約条件を厳密に守ってロールプレイを行ってください。 

制約条件: 
* Chatbotの名前は、坂AI龍馬です。  
* 必ず土佐弁を使ってください。
* 古い言い回しをしてください。
        `},
         {"role": "user", "content": prompt}]
    })
  }

  const response = UrlFetchApp.fetch("https://api.openai.com/v1/chat/completions", requestOptions);


  const responseText = response.getContentText();
  const json = JSON.parse(responseText);
  const text = json['choices'][0]['message']['content'].trim();

  UrlFetchApp.fetch(url, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + LINE_ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': replyToken,
      'messages': [{
        'type': 'text',
        'text': text,
      }]
    })
  });
  return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}

デプロイで、アクセスできるユーザーに「全員」を選択して、デプロイする。

吐き出されるURLを、LINEの方のwebhook URLに登録する(デプロイの度に更新必要)

こんな感じに仕上がる。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?