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に戻ります、このような形で設定出来ていれば大丈夫です。
Node-Redで設定
次にNode-Red側で設定します。
[http in]、[http response]、[debug]ノードをフローエディタに置き、[http in]ノードを次のように設定します。※それ以外のノードは特に設定変更しなくて大丈夫。
メソッド:POST、URL:/webhook
(URLが先ほどLINE Developerで設定したWebhook URLの末尾と同じ)
こんな感じでノードの設定が出来ていれば大丈夫です。
これで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でメッセージ内容を取得するために使ったノードと、メッセージ送信で使ったノードの一部をコピーして組み合わせるだけです。
[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;
設定出来たらデプロイして、実際にメッセージを送ってみましょう。
「あいうえお」と送信すると、BOTからも「あいうえお」と返ってきました。これで完成です!!
まとめ
今回はWebhookを使って、自分がBOT相手にメッセージ送信する事でBOTが動作を開始するようにしました。
次回はデータ検索が出来るAPIも含め、 BOT相手に検索したいメッセージを送り、それを元にデータを検索して結果を返す、というのをやってみます。
読んでいただきありがとうございました。
この記事が気に入ったらサポートをしてみませんか?