LineとChatGPTを連携するGASコード
// 外部APIのアクセスキーを、可読性の高い変数名に変更
const LINE_ACCESS_TOKEN = 'ここに、Lineのアクセストークンを入れます';
const OPENAI_APIKEY = "ここに、OpenAI の API シークレットキーを入れます";
// POSTリクエストが送信された時に実行される関数
function doPost(e) {
// POSTリクエストからイベント情報を取得する
const event = JSON.parse(e.postData.contents).events[0];
// LINEの返信先のトークンを取得する
const replyToken = event.replyToken;
// ユーザーからのメッセージを取得する
let userMessage = event.message.text;
const url = 'https://api.line.me/v2/bot/message/reply';
// メッセージ以外(スタンプや画像など)が送信された場合は、不明なメッセージとして処理する
if (userMessage === undefined) {
// メッセージ以外(スタンプや画像など)が送られてきた場合
userMessage = '???';
}
// OpenAIに送信する文章を生成する
const prompt = userMessage;
// OpenAIのAPIに送信するリクエストを作成する
const requestOptions = {
"method": "post",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer "+ OPENAI_APIKEY
},
"payload": JSON.stringify({
"model": "gpt-3.5-turbo",
"messages": [
{"role": "user", "content": prompt}]
})
}
// OpenAIのAPIにリクエストを送信し、結果を取得する
const response = UrlFetchApp.fetch("https://api.openai.com/v1/chat/completions", requestOptions);
// OpenAIのAPIからのレスポンスを取得する
const responseText = response.getContentText();
// レスポンスからテキストを取得する
const json = JSON.parse(responseText);
const text = json['choices'][0]['message']['content'].trim();
// LINEに返信するリクエストを作成する
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,
}]
})
});
}
この記事が気に入ったらサポートをしてみませんか?