Node-RedとLINE BOTを使って色々やってみよう④【住所検索BOT】
こんにちは。
前回Webhookを使って、BOTに対して送ったメッセージ内容を取得→オウム返しというのをやりました。
今回はそれを応用して、住所検索APIと組み合わせて住所検索BOTみたいなものを作ってみましょう。
完成イメージとしてはこんな感じです
「1000001」とBOT相手にメッセージを送ると、それに該当する住所がBOTから送られてくる。
それではやっていきましょう。
LINEBOTと住所検索APIを組み合わせてみる
今回住所検索に使用するAPIはこちらです。もちろん無料で使えます。
ここにAPIを使った住所の検索方法は記載してあるので、それに従ってNode-Redを設定していきます。
今回は、前回使ったオウム返しのフローに、住所を検索するフローを追加する事で出来ます。各ノードは画像のように繋ぎます。
フローの大まかな内容については、以下の通りです。
1.Webhookで自分が送った郵便番号を取得する
2.送られてきた郵便番号を元に住所検索APIで検索
3.検索結果を自分宛にメッセージ送信
2つの[function]ノードの中身はこのようにしました。
・住所検索
msg.code=msg.payload.events[0].message.text //BOTに対して送った郵便番号をmsg.codeとして定義
msg.method="GET"
msg.url=`http://zipcloud.ibsnet.co.jp/api/search?zipcode=${msg.code}` //リクエストURLにmsg.codeを入れる
return msg;
・結果をメッセージ送信
//検索結果が表示されている部分をそれぞれ変数定義する
msg.add1=msg.payload.results[0].address1
msg.add2=msg.payload.results[0].address2
msg.add3=msg.payload.results[0].address3
msg.kana1=msg.payload.results[0].kana1
msg.kana2=msg.payload.results[0].kana2
msg.kana3=msg.payload.results[0].kana3
msg.method=`POST`
msg.url="https://api.line.me/v2/bot/message/push"
msg.headers={
"Content-Type":"application/json",
"Authorization":"Bearer {{チャネルアクセストークン}}"
}
msg.payload={
"to":`{{自分のユーザID}}`,
"messages":[//定義した変数をメッセージ内容にする
{
"type": "text",
"text": `郵便番号:${msg.code}\n住所:${msg.add1}${msg.add2}${msg.add3}\nカナ:${msg.kana1}${msg.kana2}${msg.kana3}`
}
]
}
return msg;
この通りにノードの中身を設定すれば、きちんと動くはずです。
実際に動かしてみよう
それでは実際に動かしてみましょう!!
BOTに対して「1000002」と送ると…
こんな感じで該当する住所が返ってきました!!
送る郵便番号を「1000003」にすると、
このように「1000003」に該当する住所が返ってきます。
他にも色々な郵便番号で試してみてください。ちゃんと検索結果が返ってくるはずです。
まとめ
今回は、これまで行ってきた機能を色々応用して、住所検索BOTを作りました。他にもデータ検索が可能なAPIは色々用意されているので、今回の記事を参考に他のものを作ってみても面白そうですね。
4回に渡ってNode-RedとLINE BOTについて書いてきましたが、無料でこんなにも色々なサービスが提供されているなんて凄いですね。それが1番の驚きでした。
今回は主にAPI関連についてでしたが、Node-Redは他にもたくさん便利な機能がありそうなので、機会があれば他にも色々触ってみようと思います。
今回も読んでいただきありがとうございました。