質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

1438閲覧

curlコマンドでAPIの情報を取得できない

zenki

総合スコア5

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/01/23 07:16

前提・実現したいこと

linebotにぐるなびapiで取得したデータを呼び出したい

発生している問題・エラーメッセージ

現在、LinemessagingAPIでぐるなびのapiを利用したbotを作成しています その中で、リンクでは呼び出すことができる情報をcurl -Xでlineに送りたいのですがうまく送ることができません 同様の記述でopen_weatherのapiからはハッシュとして情報をlineに送ることができるので、何か違いがわかる方がいれば教えていただけると幸いです

該当のソースコード

ruby

1event.message['text'].include?("ぐるなび") 2area = event.message['text'].delete("ぐるなび") 3gkey = ENV["GURU_KEY"] 4eurl = URI.encode("https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=#{gkey}&address=#{area}") 5an = "#{eurl}" 6response = `curl -X GET"#{an}"`

試したこと

curlコマンドのオプションを変えたりしてみたのですが、うまく送れません
コードの最終行のcurl -X GET"#{an}"のダブルクウォーテーションを無くしてもダメでした

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/01/23 07:27

curl -X GET"#{an}" ですと、式展開した結果が、"curl -X GEThttps://api.gnavi.co.jp/Rest... " のように"GET"とurl文字列がくっついちゃうと思うのですが、そこはだいじょうぶなのでしょうか。
Y.H.

2020/01/23 07:57

response に何が入っているか質問に追記ください。
zenki

2020/01/23 08:05

Y.H.さん 度々の返信本当にありがとうございます event.message['text'].include?("ぐるなび") area = event.message['text'].delete("ぐるなび") gkey = ENV["GURU_KEY"] eurl = URI.encode("https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=#{gkey}&address=#{area}") response = "#{eurl}" この記述だと、リンクの状態で問題なく調べた場所のぐるなび情報は取れている段階です ただ、この最終行にcurl -X GET を記述するとlineに何も返信がなく、ターミナルを確認するとstatus=200で正常に処理が行われているとのことです curlコマンドの使い方が誤っているのでしょうか?
Y.H.

2020/01/23 08:11

response = `curl -X GET "#{an}"` これを実行したときにresponseに入っている値を質問に記載ください。これがわからないと原因は誰にもわかりません。
zenki

2020/01/23 08:22

irb(main):012:0> response = `curl -X GET "#{eurl}"` % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 44532 0 44532 0 0 105k 0 --:--:-- --:--:-- --:--:-- 105k => "{\n \"@attributes\": {\n \"api_version\": \"v3\"\n },\n \"total_hit_count\": 509681,\n \"hit_per_page\": 10,\n \"page_offset\": 1,\n \"rest\": [\n {\n \"@attributes\": {\n \"order\": 0\n },\n \"id\": \"n244918\",\n \"update_date\": \"2020-01-23T10:40:41+09:00\",\n \"name\": \"個室居酒屋×鉄板料理 鉄神 名駅本店\",\n \"name_kana\": \"コシツイザカヤテッパンリョウリ テッシンメイエキホンテン\",\n \"latitude\": \"35.173440\",\n \"longitude\": \"136.887323\",\n \"category\": \"個室・鉄板焼居酒屋\",\n \"url\": \"https://r.gnavi.co.jp/gy7rbhu80000/?ak=trvnHhrDj3Kz7YOQLdEddkXwLArBlknhKhRqkVLdQGM%3D\",\n \"url_mobile\": \"http://mobile.gnavi.co.jp/shop/n244918/?ak=trvnHhrDj3Kz7YOQLdEddkXwLArBlknhKhRqkVLdQGM%3D\",\n \"coupon_url\": {\n \"pc\": \"https://r.gnavi.co.jp/gy7rbhu80000/coupon/\",\n \"mobile\": \"http://mobile.gnavi.co.jp/shop/n244918/coupon\"\n },\n \"image_url\": {\n \"shop_image1\": \"https://uds.gnst.jp/rest/img/gy7rbhu80000/t_0000.jpg\",\n \"shop_image2\": \"https://uds.gnst.jp/rest/img/gy7rbhu80000/t_0001.jpg\",\n \"qrcode\": \"https://c-r.gnst.jp/tool/qr/?id=n244918&q=6\"\n },\n \"address\": \"〒450-0002 愛知県名古屋市中村区名駅3-8-13 ファーストKHビル3F\",\n \"tel\": \"050-3464-3571\",\n \"tel_sub\": \"052-589-8186\",\n 見辛くて申し訳ないのですが、rails cで確認したところ上記のような結果が出てきました
guest

回答2

0

うまく送れません
ダメでした

発生している現象をちゃんと書きましょう。

-X GETの後に空白が無いです。

投稿2020/01/23 07:38

otn

総合スコア84557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

rb(main):012:0> response = curl -X GET "#{eurl}"

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 44532 0 44532 0 0 105k 0 --:--:-- --:--:-- --:--:-- 105k
=> "{\n "@attributes": {\n "api_version": "v3"\n },\n

プログレスメーターが表示されているため-s(silent)オプションを追加してください。
curl -s -X GET "https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=#{gkey}&address=#{area}"


GETの後に (スペース)が無いだけでは?

curl -X GET"#{an}"curl -X GET "#{an}"

投稿2020/01/23 07:28

編集2020/01/23 08:32
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zenki

2020/01/23 07:36

返信ありがとうございます、スペースをいれても同じでした
Y.H.

2020/01/23 07:48

ほんとに? response の中身は何が入っている?同じですか? というか、まずはコマンドライン(bash? zsh?)で実行して期待通りのレスポンスが返ってくるのを確認してからコードにした方がいいと思いますよ。 curl -X GET "https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=#{gkey}&address=#{area}"
Y.H.

2020/01/23 08:12 編集

# GET"https: .... ではcurlコマンドがエラーになる。 $ curl -X GET"https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=#{gkey}&address=#{area}" curl: no URL specified! curl: try 'curl --help' or 'curl --manual' for more information $ # GET "https: .... では https://api.gnavi.co.jp/RestSearchAPI/v3/にリクエストは送信できてレスポンスが返っている。 $ curl -X GET "https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=#{gkey}&address=#{area}" { "@attributes": { "api_version": "v3" }, "error": [ { "code": 401, "message": "keyidを指定してください" } ]
zenki

2020/01/23 08:50

response = `curl -s -X GET "#{eurl}"` => "{\n \"@attributes\": {\n \"api_version\": \"v3\"\n },\n \"total_hit_count\": 87913,\n \"hit_per_page\": 10,\n \"page_offset\": 1,\n \"rest\": [\n {\n \"@attributes\": {\n \"order\": 0\n },\n \"id\": \"gcfj900\",\n \"update_date\": \"2020-01-23T10:22:14+09:00\",\n \"name\": \"肉料理×個室居酒屋 楽宴 池袋東口店\",\n \"name_kana\": \"ニクリョウリコシツイザカヤ ラクエンイケブクロヒガシグチテン\",\n \"latitude\": \"35.728898\",\n \"longitude\": \"139.713605\",\n \"category\": \"肉と特撰鍋の個室居酒屋\",\n \"url\": \"https://r.gnavi.co.jp/gcfj900/?ak=trvnHhrDj3Kz7YOQLdEddkXwLArBlknhKhRqkVLdQGM%3D\",\n \"url_mobile\": \"http://mobile.gnavi.co.jp/shop/gcfj900/?ak=trvnHhrDj3Kz7YOQLdEddkXwLArBlknhKhRqkVLdQGM%3D\",\n \"coupon_url\": {\n \"pc\": \"https://r.gnavi.co.jp/gcfj900/coupon/\",\n \"mobile\": \"http://mobile.gnavi.co.jp/shop/gcfj900/coupon\"\n },\n \"image_url\": {\n \"shop_image1\": \"https://uds.gnst.jp/rest/img/s3bgnspj0000/t_0092.jpg\",\n \"shop_image2\": \"https://uds.gnst.jp/rest/img/s3bgnspj0000/t_0092.jpg\",\n \"qrcode\": \"https://c-r.gnst.jp/tool/qr/?id=gcfj900&q=6\"\n },\n \"address\": \"〒171-0022 東京都豊島区南池袋1-26-2 近代ビル8F-A\",\n \"tel\": \"050-3462-6123\",\n \"tel_sub\": \"03-5761-5300\",\n \"fax\": \"\",\n \"opentime\": \"月~日 16:00~24:00\n月~日 ランチ:11:30~14:00\",\n \"holiday\": \"無\",\n \"access\": {\n \"line\": \"JR\",\n \"station\": \"池袋駅\",\n \"station_exit\": \"東口\",\n \"walk\": \"1\",\n \"note\": \"\"\n },\n \"parking_lots\": \"\",\n \"pr\": {\n \"pr_short\": \"【池袋駅徒歩1分】創作肉×飲み放題付コースが2300円~♪ 【宴会】和牛や鮮魚の逸品が多数!特撰鍋も登場!! 【ネット予約】ネット予約で★人数×最大600P★貯まります!!\",\n \"pr_long\": \"◆和牛や地鶏、鮮魚の創作和食が多数。\nこの季節に嬉しい特撰鍋もご用意。\n質にこだわりぬいた肉料理や鮮度抜群の海鮮料理など幅広いメニューをお楽しみください。\n◆全席個室で2名様~最大100名様までご案内可能♪\n\n【飲み放題付きコース】\n◆【地鶏水炊き/地鶏ステーキ】食べ放題OK!!『菊コース』2.5時間飲み放題+全7品 3000円⇒2300円\n◆【水炊き/しゃぶ鍋/地鶏ステーキ】食べ放題OK!!『可惜夜-atarayo-コース』3時間飲み放題+全9品 3500円⇒2800円\n◆選べるメインの女子会◎『ローズコース』3時間飲み放題+全9品 4000円⇒3000円\n▼特典多数\n【誕生日】スペシャルパンケーキなどプレゼント♪\n【ネット予約】ネット予約で「ぐるなびP」が★人数×最大600P★貯まります!!\n→ 楽天P / AMAZON P / WAON P / JAL,ANAマイレージ等に変換可能です♪\"\n },\n \"c -sを加えたところ、上記の出力になりました
Y.H.

2020/01/23 08:53

これでOKなんじゃ? きちんとぐるなびのAPIをCALLできてレスポンスも正常に受け取れてますし。
zenki

2020/01/23 09:30

これで、lineまでデータを呼び出せました。 理解が甘い自分に対して丁寧に教えていただき、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問