11
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

今夜の献立に困っている?キーワードでレシピを提案するLINE botを作ってみた

Last updated at Posted at 2022-05-28

こんにちは。
料理好きだからスーパーで仕事、コードとか見たらすぐ頭が痛くなるのにDXに関わっている部門で働くスーパーマーケット社員でーす。

質問です。以下のようなシチュエーションを出会ったことがありますでしょうか:

  • スーパーで買い物時、「これ今日特売だ!でも何を作れるでしょ・・・」
  • 冷蔵庫を開いた時、「あれ!いつからこんなものあったけ?なんとか作りましょう!が・・・」
  • ・・・

その場で 「もしLINEにキーワードを送ってレシピができたらいいなー」 と思ったことがありませんか?
自分はよくありました。なので今回は、そんなレシピを提案するLINE botを作ってみて、過程を記録したいと思います。

使用ツール

  • Line Developer アカウント
  • Make(旧: Integromat)
  • Rakuten Rapid API

完成品

image.png

事前準備

レシピAPIへリクエスト

今回使用したAPIは、Rapid APIで発見したRecipe by API-Ninjas(サイト外)です!

その他、楽天レシピ系API(サイト外)、「スパイスブログ」 などのレシピ系APIもあります
参考:API Bank グルメ・レシピ系(サイト外)
※5/29追記:スパイスブログのAPI提供は終了いたしました(2020年1月)(サイト外)

一回リクエストで10個のレシピを提供します。
image.png

レシピを返信するシナリオを作成

ここからは、一定な配列の知識が必要。
初心者はこちらへ参照⇛プログラミングの「配列」とは?変数との違いや具体的な使い方をわかりやすく解説(サイト外)

JSONモジュールで内容解析

HTTPリクエストしたDATAはJSONので、そのままユーザーへ送信するのは行けません。Parse JSONモジュールで詳細内容を解析します。
JSONモジュールの設定.png

【実行結果】
今回のAPIレクエストしたDataLong Stringです。解析できますが、Collection10個になりました。色々調べましたが、なかなか説明案が出てこない・・・ 素人が大変ですよ・・・
※5/31追記:公式の説明(Make Help Center/Tools/JSON)が参考になるかもしれない
Long Stringなので、解析したら、10個のレシピが入っています。.png

ランダムにレシピを返信

Bundleは何?なぜ毎回同じメニューしか返信してこないの?どうすれば他のBundleの内容が出てくるの?」とかなり悩みましたが、

もし配列になさせて、配列の指定された要素を取り出せばできるかもしれない

と考え、色々のところに触りました。ついに解決しました。

  • 配列へ転換
    まずはParse JSONに取得した各CollectionArray aggregatorモジュールで配列にします。
    各レシピをのタイトル、材料、作り方を組み立て、10個レシピの配列を組み合わせ.png

【実行結果】
文本→配列  転換の模様.png

  • 乱数を生成
    変数Numberを設定します。この数字は、配列の要素を指定するに使用します。
    乱数を生成.png

  • 返信内容を組み合わせ
    返信したい内容を組み合わせます。生成した乱数NumberArray[]:textの間に入れると、配列の要素を指定します(どちらのレシピを返信します)。
    配列の○個目のレシピを返信.png

エラー発生した場合も忘れず

結果が出なかった時、返信の分岐を設置します。
単語がない時、エラーメッセージを返信の分岐も忘れず!.png

image.png

完成シナリオ全体

完成シナリオ.png

結語

今回使用するAPIは、残念ですが、英語しか対応できない。
前文紹介した楽天レシピAPIなどは日本語OKですが、アプリKeyが必要、ハードルが高いので、今回はちょっと挑戦できず・・・

もう一個は、多分知的財産保護のため、簡易的に検索・使用のは、無理かなー

もし…

もうちょっと時間がある場合、色々をアップデートして試したいです!

  • 日本語単語を送信して、翻訳APIで英語に、結果も英語から日本語に翻訳したら。。。
  • 楽天レシピ系を直接利用
  • タイトルの前に関連eomjiもあれば・・・
  • 栄養素分析まで取り組めば・・・

参考記事

11
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?