こんにちは。
料理好きだからスーパーで仕事、コードとか見たらすぐ頭が痛くなるのにDXに関わっている部門で働くスーパーマーケット社員でーす。
質問です。以下のようなシチュエーションを出会ったことがありますでしょうか:
- スーパーで買い物時、「これ今日特売だ!でも何を作れるでしょ・・・」
- 冷蔵庫を開いた時、「あれ!いつからこんなものあったけ?なんとか作りましょう!が・・・」
- ・・・
その場で 「もしLINEにキーワードを送ってレシピができたらいいなー」 と思ったことがありませんか?
自分はよくありました。なので今回は、そんなレシピを提案するLINE botを作ってみて、過程を記録したいと思います。
使用ツール
- Line Developer アカウント
- Make(旧: Integromat)
- Rakuten Rapid API
完成品
事前準備
-
アカウント開設と連携の準備
-
LINE Developer アカウント作成、bot用公式アカウント開設
参考:1時間でLINE BOTを作るハンズオン (資料+レポート) in Node学園祭2017 #nodefest -
「make」アカウント作成
参考:Make(旧: Integromat)のアカウント登録 (zenn.dev)(サイト外) -
「make」と「LINE bot」連携
参考:IntegromatでLINEBot連携 (zenn.dev)(サイト外)
-
-
「make」でLINE botの返事シナリオを作成
レシピAPIへリクエスト
今回使用したAPIは、Rapid APIで発見したRecipe by API-Ninjas(サイト外)です!
その他、楽天レシピ系API(サイト外)
、「スパイスブログ」などのレシピ系APIもあります
参考:API Bank グルメ・レシピ系(サイト外)
※5/29追記:スパイスブログのAPI提供は終了いたしました(2020年1月)(サイト外)
レシピを返信するシナリオを作成
ここからは、一定な配列の知識が必要。
初心者はこちらへ参照⇛プログラミングの「配列」とは?変数との違いや具体的な使い方をわかりやすく解説(サイト外)
JSONモジュールで内容解析
HTTPリクエストしたDATAはJSON
ので、そのままユーザーへ送信するのは行けません。Parse JSON
モジュールで詳細内容を解析します。
【実行結果】
今回のAPIレクエストしたData
はLong String
です。解析できますが、Collection
10個になりました。色々調べましたが、なかなか説明案が出てこない・・・ 素人が大変ですよ・・・
※5/31追記:公式の説明(Make Help Center/Tools/JSON)が参考になるかもしれない
ランダムにレシピを返信
「Bundle
は何?なぜ毎回同じメニューしか返信してこないの?どうすれば他のBundle
の内容が出てくるの?」とかなり悩みましたが、
もし配列になさせて、配列の指定された要素を取り出せばできるかもしれない
と考え、色々のところに触りました。ついに解決しました。
エラー発生した場合も忘れず
完成シナリオ全体
結語
今回使用するAPIは、残念ですが、英語しか対応できない。
前文紹介した楽天レシピAPIなどは日本語OKですが、アプリKey
が必要、ハードルが高いので、今回はちょっと挑戦できず・・・
もう一個は、多分知的財産保護のため、簡易的に検索・使用のは、無理かなー
もし…
もうちょっと時間がある場合、色々をアップデートして試したいです!
- 日本語単語を送信して、翻訳APIで英語に、結果も英語から日本語に翻訳したら。。。
- 楽天レシピ系を直接利用
- タイトルの前に関連eomjiもあれば・・・
- 栄養素分析まで取り組めば・・・
参考記事