Pythonはじめにここ最近新しいチームに参加し、仕事がバタバタしていて更新が滞ってしまっていました。以前のチームとはかなり毛色や作業内容が異なるので、今回は新しいチームでの勉強も兼ねて記事を書いてみます。APIを使って簡単なBotを作成してみます。APIをつなぐことが目的ですので、話しかけたときの返答は「オウム返し」をするだけにします。今回使用する環境をざっと箇条書きでまとめます。3.4.3FlaskPythonやFlaskなどはある程度わかる前提で記事を書いていきます。API経由で話しかけられたメッセージをサーバーに送信する機能があります(Webhook)。APIに返答を返していきます。Centerに登録します。Trialに登録してアカウントを用意します。Managerというページのアカウント設定>Bot設定からWebhook送信を「利用する」に変更します。APIの仕様に従って指定したURLに飛ばされるようになります。developersという別のページに飛ばされます。URL」という箇所に、これから用意するサーバーのURLを指定します。Serviceを用意します。Appという名前で表示されていました。Studioのテンプレートを使ってしまいます。Projectを選択します。Studioを入れていないと、このテンプレートは出てこないかもしれません。テンプレートがロードされるのを確認したら、F5を押して実行してみます。すると、すぐにローカルにサーバーが立ち上がりflaskが実行されます。今回はAPIでUIなどはいらないので、views.pyをこんな感じにシンプルにして動作確認。Serviceを指定します。ServiceのURLにアクセスすると、正しくJSONが返ってきていることが確認できます。APIからのWebhookを受け取るFlaskのサーバーにLINEへのメッセージを受け取るエンドポイントを用意します。objectの配列がPOSTで送られてきます。このリクエストを受け取とるためのエンドポイントを以下のように追加しました。{}受け取ったJSONのデータをreply_to_lineという後ほど定義する関数に渡し、LINEサーバーには200を返す、それだけの処理です。本当はX-Line-Signatureの内容とチャンネルシークレットの値を使ってリクエストの署名検証を行わないといけないのですが、今回はその処理はすっ飛ばしてしまいます。reply_to_lineの中身は、今回は軽い処理ですが将来的にはある程度時間のかかる処理になる可能性もあるので非同期処理を行いたいところです。CeleryというモジュールがFlaskとともに使われることがあるようなのですが、今回少し触っただけではうまくいきませんでした。APIに返す最後はLINEに返信するメッセージを作成します。ドキュメント通りのJSONを作成して、指定されたエンドポイントにPOSTしてあげるだけです。headers=headers)話しかけてみましょうこの通り、期待通りに動いてくれました。APIとやり取りができました。実際のサービスとしてリリースしたり、ある程度の量のトラフィックをさばかないといけないような状況だとこんな適当なコードではだめだとは思いますが、とりあえず試してみたい方はこんな感じで自分のPythonコードとLINEアカウントをつないで、いろいろ試してみるのも良いのではないかと思います。一応、最後にコードも置いておきます。このフォルダにある3つのスクリプトファイルを見ると、大体の動きがわかってもらえるかと思います。アーカイブおすすめの本はてなブログをはじめよう!kanohkさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。