質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

ChatGPT

ChatGPTは、OpenAI社の提供するインタラクティブなテキストコミュニケーションを行うことができるAIサービスまたは、そのアルゴリズムのモデル名です。

Q&A

解決済

1回答

1063閲覧

ChatGPT APIでLine botを作りたいけど返信が来ない(既読はつく)

daimam55

総合スコア11

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

ChatGPT

ChatGPTは、OpenAI社の提供するインタラクティブなテキストコミュニケーションを行うことができるAIサービスまたは、そのアルゴリズムのモデル名です。

0グッド

1クリップ

投稿2023/05/29 14:03

ChatGPT APIを使って、自分のオリジナルキャラの返信がくるLine botを作りたいです

今までやったこと

  • Line Developerを登録してMessaging APIを作成、LINEのトークンを取得
  • ChatGPT APIのAPIキーを取得
  • Google Apps Scriptで、ChatGPTとLINEを連携するコートを入力(ChatGPTとLINEのAPIキーを設定)
  • Line Messaging APIにGoogle Apps ScriptのWeb hookを設定
  • Messaging APIのLineアカウントにメッセージを送ってもの既読はつくけど返信はありません。

ChatGPT APIはまだクレジット情報など登録しおらず、使用状況もまだ使用期間内でした。
Messaging APIの自動返信を有効にするとLineの自動メッセージが返ってきます。
ChatGPT APIとLINEが連携できてなくて動いていない?

発生している問題・エラーメッセージ

Google Apps Scriptを実行すると以下のようなメッセージが出ます。

TypeError: Cannot read properties of undefined (reading 'postData') doPost @ コード.gs:13

該当のソースコード

こちらの記事のソースコードを参考にしています
ChatGPT API×LINE botでチャットボットを作成する方法【Google Apps Script】
https://prtn-life.com/blog/chatgpt-api-linebot

const GPT_TOKEN = 'XXXXXXXXX'; //ChatGPTのAPIキーを入れてください const LINE_TOKEN = 'XXXXXXXXX'; // LINEのAPIキーを入れてください const LINE_ENDPOINT = "https://api.line.me/v2/bot/message/reply"; const GPT_ENDPOINT = 'https://api.openai.com/v1/chat/completions'; const MODEL_NAME = 'gpt-3.5-turbo'; const MODEL_TEMP = 0.5; const MAX_TOKENS = 256; // LINEからPOSTリクエストが渡されてきたときに実行される処理 function doPost(e) { // LINEからPOSTされるJSON形式のデータをGASで扱える形式(JSオブジェクト)に変換 const json = JSON.parse(e.postData.contents); // LINE側へ応答するためのトークンを作成(LINEからのリクエストに入っているので、それを取得する) const reply_token = json.events[0].replyToken; if (typeof reply_token === 'undefined') { return; } // LINEから送られてきたメッセージを取得 const user_message = json.events[0].message.text; // 改行で区切って配列にする const user_msgarray = user_message.split(/\r\n|\n/); // LINEのメッセージをChatGPTに投げるメッセージにセットする const messages = [{ "role": "user", "content": user_msgarray[0] }] const headers = { 'Authorization': 'Bearer ' + GPT_TOKEN, 'Content-type': 'application/json', }; // リクエストオプション const options = { 'method': 'POST', 'headers': headers, 'payload': JSON.stringify({ 'model': MODEL_NAME, // 使用するGPTモデル 'max_tokens': MAX_TOKENS, // レスポンストークンの最大値(最大4,096) 'temperature': MODEL_TEMP, // 応答の多様性(0-1)※数値が大きいほどランダムな応答になる 'messages': messages }) }; // HTTPリクエストでChatGPTのAPIを呼び出す const res = JSON.parse(UrlFetchApp.fetch(GPT_ENDPOINT, options).getContentText()); // ChatGPTから返却されたメッセージを応答メッセージとしてLINEに返す lineReply(json, res.choices[0].message.content.trimStart()); } // LINEへの応答 function lineReply(json, replyText) { // 応答用のメッセージを作成 const message = { "replyToken": json.events[0].replyToken, "messages": [{ "type": "text", // メッセージのタイプ(画像、テキストなど) "text": replyText }] // メッセージの内容 }; // LINE側へデータを返す際に必要となる情報 options = { "method": "post", "headers": { "Content-Type": "application/json; charset=UTF-8", // JSON形式を指定、LINEの文字コードはUTF-8 "Authorization": "Bearer " + LINE_TOKEN // 認証タイプはBearer(トークン利用)、アクセストークン }, "payload": JSON.stringify(message) // 応答文のメッセージをJSON形式に変換する }; // LINEへ応答メッセージを返す UrlFetchApp.fetch(LINE_ENDPOINT, options); }

試したこと

// ChatGPTから返却されたメッセージを応答メッセージとしてLINEに返す
lineReply(json, res.choices[0].message.content.trimStart());

lineReply(json, 'test');

にしたけど、test と返ってきませんでした。
初心者のため、どこを直したり、確認すればいいかまだよくわかっていません。
どうか教授よろしくお願いします。

イメージ説明

補足情報

参考記事
ChatGPT API×LINE botでチャットボットを作成する方法【Google Apps Script】
https://prtn-life.com/blog/chatgpt-api-linebot

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YellowGreen

2023/05/31 10:09

該当のソースコードをそのままコピペしてLINEとChatGPTのトークンを私のものに書き換えてから デプロイを更新してLINEで投稿したところChatGPTからの回答が返ってきますよ。
daimam55

2023/06/05 08:28

ありがとうございます! 更新したら、回答が返ってくるようになりました。 とても助かりました!
YellowGreen

2023/06/05 08:32

お役に立てて良かったです。 解決したのであれば、自己解決の回答でこの質問を解決済にされてはいかがでしょうか。
guest

回答1

0

自己解決

自己解決
デトロイのソースコードを更新したら、Line botでChatGPT APIから回答が返ってくるようになりました。
コメントありがとうございます!

投稿2023/06/05 08:40

daimam55

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問