Node-RedとLINE BOTを使って色々やってみよう③【オウム返し】

こんにちは。

前回はNode-RedとMessaging APIを使って、テキストやスタンプ、位置情報等のメッセージを送信しました。

今回はBOTに対してテキストメッセージを送った場合、そのメッセージ内容を取得し、それをそのままオウム返しでBOTがメッセージを送信してくるというのをやってみます。


メッセージ内容取得の準備(Webhookの設定)

オウム返しをするためには、まずBOTに対して送ったメッセージの内容をNode-Red側で取得する必要があります。

そのためにはまず、LINE DevelopersでWebhookというものを設定して、BOTに何かイベントが発生(今回はBOTあてにメッセージを送信)した時、Node-Red側にもその情報がリアルタイムで提供されるようにします。


LINE Denvelopersで設定

LINE Developersを開き、作成したBOTの詳細画面を開きます。(前々回使った、友達追加するためのQRコードとか載ってる画面)

そのあと、[Messaging API設定]>>[Webhook設定]の項目にある[編集]の順にクリックします。そしてWebhook URLの入力欄に、Node-Red側の情報を記入していきます。

まずNode-Redを開き、デプロイボタンの隣にある「i」と書かれたグレーの丸いボタンをクリックします。するとURLが出てくるので、それをコピーします。

コピー出来たらLINE Developersの画面に戻り、Webhook URLの入力欄にコピーしたURLを貼り付けます。そして貼り付けたURLの末尾に「webhook」と入力します。

【Webhookの利用】をオンにし、【応答メッセージ】の項目の【編集】をクリックします。

応答設定の画面に遷移したら、以下のように設定します。設定出来たら応答設定の画面は閉じて大丈夫です。

【基本設定】応答モード:Bot、あいさつメッセージ:オン

【詳細設定】応答メッセージ:オフ、Webhook:オン

LINE Developersに戻ります、このような形で設定出来ていれば大丈夫です。

画像1


Node-Redで設定

次にNode-Red側で設定します。

[http in]、[http response]、[debug]ノードをフローエディタに置き、[http in]ノードを次のように設定します。※それ以外のノードは特に設定変更しなくて大丈夫。

メソッド:POST、URL:/webhook 

(URLが先ほどLINE Developerで設定したWebhook URLの末尾と同じ)

こんな感じでノードの設定が出来ていれば大丈夫です。

画像2

これでWebhookの設定はすべて完了です。きちんとWebhookが設定出来ているか見ていきましょう。

LINE DevelopersのWebhook設定の画面に戻り、検証ボタンを押してください。【成功】と表示されれば問題なく設定出来ています。

Node-Redのデバックを見たときに、{ events: array[2] }と表示されていると思います。Webhookを通じてLINE BOTとNode-Redがきちんと連携されている証拠です。


オウム返しでメッセージ送信

まず、BOT相手に自分がメッセージを送ります。LINEでBOTとのトーク画面を開き、任意のテキストメッセージを送ります。

すると、Node-Redのデバッグにeventsなどと書かれたobjectが表示されるので、[text]と書かれた項目を探します。Webhookが問題なく設定されていれば、そこに先ほど自分が送ったメッセージの内容が表示されます。

メッセージの内容は取得できたので、次はオウム返しをするためにノードを設定して繋いでいきます。

先ほどWebhookでメッセージ内容を取得するために使ったノードと、メッセージ送信で使ったノードの一部をコピーして組み合わせるだけです。

画像3

[function]ノードの中身を以下のように一部変更して設定します。

msg.message=msg.payload.events[0].message.text //自分がBOTに送ったメッセージ内容
msg.url=`https://api.line.me/v2/bot/message/push`;
msg.method=`POST`;
msg.headers={
  "Authorization":"Bearer {{チャネルアクセストークン}}",
  "Content-Type":"application/json"
};

msg.payload={ 
	"to":`{{自分のユーザID}}`, 
	"messages":[
		{
          "type":"text",
          "text":`${msg.message}`//BOTに送ったメッセージをそのまま使う
      }
	]
};
return msg;

設定出来たらデプロイして、実際にメッセージを送ってみましょう。

画像4

「あいうえお」と送信すると、BOTからも「あいうえお」と返ってきました。これで完成です!!


まとめ

今回はWebhookを使って、自分がBOT相手にメッセージ送信する事でBOTが動作を開始するようにしました。

次回はデータ検索が出来るAPIも含め、 BOT相手に検索したいメッセージを送り、それを元にデータを検索して結果を返す、というのをやってみます。

読んでいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?