昨日は@ytakadama0922さんの「令和になってもまだDC作業で疲弊してるの?」「してるよ」ってお話でした。はじめにみなさんは、お昼ごはんのお店をどうやって選んでいますか?私は、だいたい、同じお店に食べに行く事が多く、最近まんねり化しています。RunとSlackbotを使って今回はいい感じに解決してみたいと思います。Runはフルマネージドなサーバーレスプラットフォームで、Dockerコンテナをデプロイするだけで、簡単にHTTPリクエスト経由で呼び出し可能なアプリケーションが作成できます。一方で、Slackbotには色々機能がありますが、今回は一番簡単な、ワークスペースでの特定の発言に対して、レスポンスを返してくれる機能を使います。)から設定できる機能です。以下のように、「おすすめのランチスポットを教えて」と、Slackで発言したら、Slackbotにお店をおすすめしてもらいます。ランチスポットをおすすめするアプリケーションを作成する今回は、以下のようにSlackbotがURLだけを表示し、そのURLのコンテンツをSlackが展開してくれるような流れにしたいと思います。Slackは、metaタグなどの情報をもとにしてURL先のコンテンツの情報を展開しています。次のような形で、bodyには情報を記載せずに、metaタグにのみ、APIから取得した情報を展開します。/></head><body></body></html>今回は、ランチスポットの検索のためにぐるなびAPIのレストラン検索APIを使用して、次のようなリクエストを飛ばし、検索結果をmetaタグに展開します。弊社は三軒茶屋にあるので、エリアコードは"AREAM2166"、ランチ検索のため、オプションにlunch=1を入れています。https://https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=<APIキー>3&areacode_m=AREAM2166&lunch=1&hit_per_page=100エンドポイントが1つの簡単なflaskアプリケーションを書きます。app.run(host='0.0.0.0',port=8080)ぐるなびAPIに検索のリクエストを飛ばし、その内容をもとに、metaタグ中心のhtmlのレスポンスとして返します。RunでAPIをエンドポイントを生やす今回は、簡単なアプリケーションだったので、特に何の工夫もなく、Python用のDockerイメージを作成し、デプロイしました。Dockerfileは以下です。gcr.io/プロジェクト名/sancha-lunchこれだけで、簡単にエンドポイントを生やす事ができてしまいました。Slackbotにエンドポイントを設定するSlackのワークスペースのカスタマイズのSlackbotの項目から、以下のように設定します。ランチスポットをおすすめされたものの。いうわけで、冒頭の画像のように、Slack内で雑に「おすすめのランチスポットを教えて」と発言すると、Slackbotがなにかお店を選んで表示してくれるようになったのですが。このmetaタグの情報、Slack全体でグローバルに30分間は、キャッシュされてしまうそうです。今回の方式だと、30分おきにしか使えないですね。おわりにSlackのリンクの情報が30分キャッシュされる仕様により、botとしてはなかなか残念な出来になってしまいました。ぐるなびのAPIを何度か叩いてみると、意外と自分の知らないお店がレスポンスとして返ってきていたので、ランチスポットのまんねり化を防ぐのに使えるかもしれません。明日は@kouaresさんの記事になります。比較見積もりサイト「ズバット」を始め、人々の生活に寄り添う様々な情報サービス事業を展開しています。upLoginユーザーは見つかりませんでした。