HubotでHotpepperグルメサーチAPIを使ってお店を紹介してくれるやつを作った
勉強のため、HubotでAPIを叩けるようにした。
twitterとかやりたかったけど、トークンがややこしかったのでHotpepperグルメサーチAPIを使ってお店をランダムでおすすめしてくれるものを作りました。
APIキーの取得
まずはAPIキーを取得します。
ホットペッパーAPIリファレンスページに行って、左メニューの「新規登録」からメールアドレスを入力 → 「送信」で、メールが届くのでメールの内容に従って登録を完了させる。
登録が完了したらWebサイトのAPIキー発行ボタンを押すとAPIキーが書かれたメールで送られてくるので、それを控えておく。
ちなみに登録を取り消したい時はメールアドレスを入力して送信するだけで、簡単にできる。
スクリプトを書いていく
APIキーを取得したらそれを使ってスクリプトを書いていきます。なお、Hubotのセットアップは他のサイトを参考にしてください。
いきなり完成形
まずは完成形をお見せします。
# Description:
# 説明を書く
#
module.exports = (robot) ->
robot.hear /ご飯行こう/i, (msg) ->
request = msg.http("http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key={自分のAPIキー}&large_area=Z011&format=json")
.get()
request (err, res, body) ->
json = JSON.parse body
num = Math.floor( Math.random() * 11 );
shopName = json["results"]["shop"][num]["name"]
shopUrl = json["results"]["shop"][num]["urls"]["pc"]
msg.send "#{shopName} \n #{shopUrl}"
説明
module.exports = (robot) ->
robot.hear /ご飯行こう/i, (msg) ->
「ご飯行こう」というフレーズに反応して処理を実行します。
request = msg.http("http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key={自分のAPIキー}&large_area=Z011&format=json")
.get()
http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key={自分のAPIキー}&large_area=Z011&format=json
ここでAPIを叩いてます。ここでは練習で&large_area=Z011
として東京のお店を返すようにしています。
&format=json
とすることで結果がJSONで返ってきます。
request (err, res, body) ->
json = JSON.parse body
num = Math.floor( Math.random() * 11 );
json = JSON.parse body
帰ってきたJSONをjsonという変数にいれます。
num = Math.floor( Math.random() * 100 );
お店をランダムで取得したいので、変数numに乱数を入れておきます。
shopName = json["results"]["shop"][num]["name"]
shopUrl = json["results"]["shop"][num]["urls"]["pc"]
お店の名前とURLを変数shopName、
shopUrlにいれます。["shop"][num]とすることで返ってきたお店の中からランダムで一店舗抽出します。
jsonの構造はこのページで確認するとわかりやすいと思います。
msg.send "#{shopName} \n #{shopUrl}"
あとはそれをコメントで返すようにしてやればOK。
こんな感じで返ってきます。
mybot> ご飯行こう
mybot> はなの舞 新宿東南口店 http://www.hotpepper.jp/strJ000712881/
うん。いいね。
ちょっと改良
このままだと東京のお店しか返さないので、指定した場所のお店を返すようにします。
robot.hear /ご飯行こう/i, (msg) ->
↓
robot.hear /ご飯行こう (.+)/i, (msg) ->
query = encodeURIComponent msg.match[1]
「ご飯行こう ◯◯」の「◯◯」の部分を正規表現で抜き出します。
query = encodeURIComponent msg.match[1]
としてマッチした文字列をエンコードします。
msg.http("http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key={自分のAPIキー}&large_area=Z011&format=json")
↓
msg.http("http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key={自分のAPIキー}&address=#{query}&format=json")
&address=#{query}
でさきほど抜き出した文字列をセットします。
mybot> ご飯行こう 那覇
mybot> 鉄板×BAR×炭焼 Stand スタンド
http://www.hotpepper.jp/strJ000804975/?vos=nhppalsa000016
いい感じ。
あとは、Slackと連携してやれば面白いと思います。
もうちょっと応用して食べたい料理(ラーメンとか)も指定できるようにしたいです。
Author And Source
この問題について(HubotでHotpepperグルメサーチAPIを使ってお店を紹介してくれるやつを作った), 我々は、より多くの情報をここで見つけました https://qiita.com/kmurae/items/87fb6d5b9b95d2511edc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .