Help us understand the problem. What is going on with this article?

【Node-RED】 Node-REDでLINEを扱う。Part1 アクセストークン定期更新

More than 1 year has passed since last update.

LINEのBot作成にはHerokuなどを使うことが多い印象ですが、ここではノンプログラミングで使えるNode-REDを使ってLINEのBotを作成します。
最終的には次回は受けたメッセージにリプライを返すまでいきます。
※各環境の準備方法については各々書いていこうと思います。

使用環境

  • Node-Red
    • IBMクラウド上で準備
    • 無料のライトプランで
    • 次の段階でWebhookの待ち受けをしたいから
  • LINE Messaging API
    • フリープランでOK

LINE Messaging API

WebAPI経由でメッセージを送ったり待ち受けたりすることができます。
以下の情報を取得できるように準備します

  • Channel ID
  • Channel Secret

Node-RED

Node-REDを構築していきます。やらなきゃいけない手順は以下な感じ。
今回は一番上のアクセストークン定期更新について書きます。

  • アクセストークンを定期的に更新
    • これをやらないと、アクセストークンの期限が一定期間で切れるため、機能停止します
    • LINEはずっと使えるロングタームトークンは廃止の方針らしいので、トークンの定期更新はこれから必須の様子。詳しい方教えてほしいです。
  • ダッシュボードから送信する文字列を取得
  • ダッシュボードのボタンを押したら処理開始
  • HTTPのPOSTメソッド実行
  • Webhookの設定をしてメッセージを受け取る
  • リプライトークンを使ってメッセージを返却する

アクセストークンの定期更新

こんな感じのフローで。
スケッチ.png

①定期実行
スケッチ2.png

ショートタームのアクセストークン期限は4週間くらいらしいので、1週間に1度実行するようにしました。

②色々代入
HTTP POSTリクエストを投げるための情報をここで代入していきます。
スケッチ3.png
スケッチ4.png

5つの処理をしているので、1ずつ紹介します。

  1. ヘッダにContent-typeを指定
    • HTTPリクエストのお約束
    • 仕様通りなので特に言及なし
  2. payloadを削除
    • インジェクトノードから乗っているpayloadは不要なので一旦削除
    • 以下の処理でリクエストボディを指定していきます
  3. 認証方法を指定
    • これも仕様どおり。チャンネルIDとシークレットで認証する場合、このようにするとのこと。
  4. Channel IDを指定
    • Messaging API から入手したIDを指定します
  5. Channel シークレットを指定
    • Messaging API から入手したシークレットを指定します

③HTTPリクエスト
スケッチ5.png
アクセストークンを発行してくれるページに対してリクエストを送ります。
②で必要な情報はセットしてあるので、URIを指定するだけです。
JSONでボディを送るのでJSONオブジェクトを指定します。

④文字列連結
スケッチ6.png
実際にアクセストークンを使うときは
"Bearer" + 半角スペース + "トークン"
という形で使用するので、その形に変換します。

⑤グローバル変数に代入
アクセストークンとして使える形で保持します。

おわり

次回はダッシュボードの入力フォームとボタンを使う部分について書いていきたいと思います。

ronkabu
転職しました。 ADASのシステム開発やってます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away