先日、「ChatGPT API×LINE botでチャットボットを作成する方法」という記事を投稿したところ、多くの方に閲覧いただき、実際に作ったという声もいただきました。大変嬉しいです!
そのいっぽうで、「手順通りに設定したのに動かない!」というコメントもいくつかいただきました。そこで、LINE botが動かないときに確認すべきことを今回の記事では紹介したいと思います。
LINE Developers側の確認
LINE Developers側に設定不備がないか確認します。
Webhook設定の確認
トップ>[管理アカウント名]>[チャネル名]>Messaging API設定>Webhook設定
Webhook URLにGASの最新デプロイが入っているか
Webhook URLというのは、LINEとGASでやりとりをするために設定するURLのことです。ここにGASのURLを設定すると、そのURLにLINEからメッセージ内容が送られます。このとき、デプロイが最新のバージョンになっていないと、中身が作りかけになっていたり、まだ処理を追加していなかったりして意図した動きをしない可能性があります。
動作確認をする際には、Webhook URLにGASの最新のデプロイを設定するようにしてください。
Webhookが有効化されているか
Webhookを使うには、有効化する必要があります。デフォルトでは無効になっているので、必ず有効にしてください。
また、Webhook URL更新時に「検証」ボタンと間違えてWebhookの利用をオフにしないよう注意してください(実際に私はやってしまい、いきなり動かなくなった・・!と焦りました)
チャネルアクセストークンの確認
トップ>[管理アカウント名]>[チャネル名]>Messaging API設定>チャネルアクセストークン
発行した「チャネルアクセストークン(長期)」が、GASのスクリプトに正しく貼り付けられているか確認します。1文字でも間違っていたら動きませんので、赤枠のコピーボタンを押してコピーし、貼り付けるようにしてください。
GAS側の確認
Google Apps Script(GAS)側に設定不備がないか確認します。
なお、以降で扱うスクリプトは過去記事(ChatGPT API×LINE botでチャットボットを作成する方法)に記載のサンプルコードとなります。ここで、手動で設定する箇所は以下の2点のみです。
const GPT_TOKEN = 'XXXXXXXXXXXXXXXXXX'; //ChatGPTのAPIキーを入れてください
const LINE_TOKEN = 'XXXXXXXXXXXXXXXXXX'; // LINEのAPIキーを入れてください
ご自身の環境のトークンを設定する際には、
const GPT_TOKEN = '123456789012345678901234567890';
const LINE_TOKEN = '123456789012345678901234567890';
上記のように、シングルクォーテーション( ‘ )の中身のみを変更してください。
原因の切り分け方
ここまでは、設定不備をしがちな箇所について一通り解説しました。本項では、原因を特定するための手順を紹介します。
スクリプトの処理を一つずつ動かしていく
動かない原因を特定するために、スクリプトの処理のうち、「まずはLINEの応答ができることを確認する」「次にChatGPTの通信ができることを確認する」といったように、順を追って確認していくと良いです。
例えばサンプルコードであれば、以下のChatGPT API呼び出しをコメントアウトして、
// HTTPリクエストでChatGPTのAPIを呼び出す
// const res = JSON.parse(UrlFetchApp.fetch(GPT_ENDPOINT, options).getContentText());
LINEへの応答メッセージには「test」と固定値を入れます。
// ChatGPTから返却されたメッセージを応答メッセージとしてLINEに返す
lineReply(json, 'test');
これで、LINEに応答があればChatGPTの設定に原因があると分かりますし、LINEの応答がなければLINE側の設定に原因があると分かります。
ChatGPT APIの使用状況で正しく動いているか確認する
ChatGPT APIの呼び出しがうまくいっているかどうかは、OpenAIの管理画面から確認できます。
使用履歴が更新されていれば、ChatGPT APIの利用はうまくいっていることが分かります。
シーン別トラブルシューティング
本項では、よくあるエラーや不具合について、シーン別に解説します。
既読はつくが、応答が得られない
少し紛らわしいのですが、GASとの連携がうまくいっていなくてもLINEの既読はつきます。なので、既読がついたからといって、GASにメッセージが送信できたかどうかは分かりません。
このような場合は、GASのスクリプトに不備がある可能性があります。いったん、オウム返しをするLINE botを動かしてみて、応答が返ってくるかを確認してみてください。以下記事の「応答メッセージの作成方法」という項目にサンプルコードを記載してあります。
最初動いていたのに、いきなり動かなくなった
この場合、いくつか原因が考えられますが
- サンプルコードを利用した際に、自己流で変更を加えた・必要な部分を消してしまった
- プロジェクト内の別のスクリプトにエラーが出ている
などが考えられます。2番目の例は、「コード.gs」に処理を書いていて、「無題.gs」のほうでは別の処理を書いている場合です。無題.gsのほうに何かしらのエラーがあっても、文法的なエラー以外は通ってしまうので意外と見つけにくいです。
ファイルが増えてくると起こりやすい事象です。
ここまで読んでも解決しない場合
ここまで読んでも解決しない場合には、ログを確認することをおすすめします。doPost関数内の処理は、コンソールにログが出力されませんが、以下の設定をするとログを確認できるようになります。
最初の設定が少し面倒ではありますが、一度設定すれば以下のようにdoPost関数内のエラーや、Console.logの内容が出力されるようになります。
まとめ
今回は、LINE botが動かない場合の解決方法について解説しました。何度LINEを送ってみてもうまく動かないとがっかりですよね。私自身、過去記事を作成するにあたり色々試したのですが、1-2時間くらい全然動かなくて悩んでしまいました。
今となっては、色々と設定を忘れていたりスクリプトに不備があったりと、冷静に考えたら解決できるような内容ではありますが、作っている最中は分からないものですね・・・。
今後も、躓きそうな部分だったり、よくあるエラーの対処法だったりを解説できたらと思っています。
コメント