オウムならわかるLINE botの使い方

LINE APIでオウム返しbotを作ろうとしたときに、ちょっと躓いてしまったので、備忘録として書いておきます。
プログラム側のエラーはheroku logs
とかで参考できるので、今回は、プログラム側の話はすっ飛ばして、環境変数やLINE Developerのサイト側での設定について書いてゆきます。
材料
- LINE Developers登録
- Python 3.6以上
- Flask
- heroku
LINE APIを使ってみた
LINE DevelopersはTwitter APIとは違って、開発者審査とかがなく登録が簡単なので、「プログラミングはそれなりにやったし、なんかツールを作りたい!」というのにはうってつけです。
私も、「大学で受ける次の講義を教えてくれるbotがあればなあ」と考えて、まずはLINE APIを使ってみようと考えたことがありました。
ともあれ、私は自称Pythonistaで、PythonならWeb上に大量にツールがあるので、それらを探して使うことにしました。
下記(参考文献)にあるようなページを読み漁り、「ふむふむ、なるほど」という感じでプログラムを作っていきました。
うまくゆかないオウム返し
コードの説明は下記ページに委ねます。面倒だから。著作権的な意味で。
この他にも、たぶんもっとページを参照にしたかもしれませんが、なにせ、多すぎたし、だいたい同じようなことが書いてあるので、割愛します。
さまざまなページに載っているプログラムをコピペして実行してみても、オウム返しがうまくいきませんでした。

こんな感じになって、ぜんぜんうまく返してくれません。
はて、どうして返してくれないのか。
そもそも与えたキーは合ってる?
これ、たぶん陥った人いると思います。
LINE APIで与えるキーはPythonで言えば、YOUR_CHANNEL_ACCESS_TOKEN
とYOUR_CHANNEL_SECRET
の2つだということは、多くのページに書かれています。
しかし!
私はYOUR_CHANNEL_SECRET
の方はLINE Developers側に記載されているChannel Secret(画像の場合は8794a8****)を登録していましたが、YOUR_CHANNEL_ACCESS_TOKEN
の方には、Channel ID(画像の場合は15772****)を登録してしまっていました。

正しくはChannel IDではなく、「メッセージ送受信設定」の中にある「アクセストークン(ロングターム)」でキーを生成する必要がありました(画像の場合は9EOF0/os****)。

さて、これでheroku gitにaddしてcommitしてpushすれば、いよいよ動く。そう思っていました。
メッセージありがとうございます😆申し訳ございませんが、このアカウントから個別に返信することはできません😔次回の配信をお楽しみに✨

いや、できてないんかい!
この長い無駄な定型句、なんで出てくるの?
確かに「gara」と打ったら「gara」とは返してくれるけど……。
あえて例えるなら、私がオウムに「こんにちは!」と言うと、オウムが「ナニ? マタ、アタシニオウムガエシサセタイワケ? マッタクアンタモヒマジンネ。マア、ヤレッテイウナラヤッテヤルケド。コンニチハ!」と愚痴ってくるようなものです。
どうしてこうなったのか、Python側のコードを見ても、それっぽいところはありませんでした。
じゃあ、どうすれば……。
と考えていると、「もしかしたら、定型句は、LINE Developerのサイト側で管理しているのかもしれない」と思い立ち、見てみました。

あった
「こんなところに?」という場所に、定型句を管理しているページがありました。
自動応答メッセージの「設定はこちら」をクリックすると新タブでページが開きます。

そこから「応答設定」をいじると、無駄な返信はしなくなってくれます。

こんな感じでうまく返してくれました!
さいごに
今回は完全に私の検索力不足でした。
「検索力をもっと磨かないといけないなあ、他人にググれカスwww とか言っていられないなあ」と思いました。
参考文献
LINE APIでオウム返しbotを作るときに、私が参考にしたページです。良ければ参考にしてください。最終閲覧日は2019年5月25日。
- LINE Messaging API を使ってLINEにメッセージ送信/メッセージ返信する
- LINE Messaging APIアクセストークンの取得
- Pythonでオウム返しをするLine botを作成
- 前の記事
こんなに気色悪い! C言語のシンタックスシュガー 2019.05.24
- 次の記事
日本人の知らない「はずの」フィジー旅行記 その-1 2019.09.12