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

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

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

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

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

2363閲覧

Line botが特定の返信しかしてくれない

yubon

総合スコア13

LINE Messaging API

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

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2018/10/06 05:28

編集2018/10/15 10:13

line botで位置情報を送信すると近くのマクドナルドの店舗を表示してくれるプログラムを作成し、登録したのですがline botが「残念ですが、近くにマクドナルドはありませんでした。」としか返信してくれません。Line developersのWebhoodに表示されていた「Webhookが無効なHTTPステータスコードを返しました(期待されるステータスコードは200です)」は解決しました。もし原因が分かる方がいれば教えて頂けないでしょうか。下記にそのプログラムのコードを書いております。それとぐるなびのアクセスキーとは会員IDのことでしょうか。

もし失礼な質問になっていたらすみません。その場合はおっしゃってください。

php

1<?php 2 3$accessToken = 'LINEのアクセストークン(管理画面より取得)'; 4 5// 受信したメッセージ情報 6$raw = file_get_contents('php://input'); 7$receive = json_decode($raw, true); 8 9$event = $receive['events'][0]; 10$replyToken = $event['replyToken']; 11$messageType = $event['message']['type']; 12 13// 送られてきたのが位置情報以外だったら応答しない 14if($messageType != "location") exit; 15 16$lat = $event['message']['latitude']; 17$lon = $event['message']['longitude']; 18 19// 送られてきた位置情報を元にぐるなびのAPIにアクセスしてマクドナルドの店舗情報を取得する 20$uri = 'https://api.gnavi.co.jp/RestSearchAPI/20150630/'; 21$accKey = 'ぐるなびのアクセスキー(アカウント発行後メールにて送られてきます)'; 22 23$url = $uri . '?format=json&name=マクドナルド&range=5&keyid=' . $accKey . '&latitude=' . $lat . '&longitude=' . $lon; 24 25$json = file_get_contents($url); 26$obj = json_decode($json); 27 28// 店舗情報を取得 29$count = 0; 30$columns = array(); 31foreach ($obj->rest as $restaurant) { 32 $columns[] = array( 33 'thumbnailImageUrl' => $restaurant->image_url->shop_image1, 34'text' => $restaurant->name, 35 'actions' => array(array( 36 'type' => 'uri', 37 'label' => '詳細を見る', 38 'uri' => $restaurant->url 39 )) 40 ); 41 if (++$count > 5) { // 最大5店舗の情報を返す 42 break; 43 } 44} 45 46// LINEで返信する内容 47$headers = array('Content-Type: application/json', 48 'Authorization: Bearer ' . $accessToken); 49 50if ($columns) { 51 $template = array('type' => 'carousel', 52 'columns' => $columns); 53 54 $message = array('type' => 'template', 55 'altText' => 'マクドナルドの店舗情報', 56 'template' => $template); 57} else { 58 $message = array('type' => 'text', 59 'text' => '残念ですが、近くにマクドナルドはありませんでした。'); 60} 61 62$body = json_encode(array('replyToken' => $replyToken, 63 'messages' => array($message))); 64$options = array(CURLOPT_URL => 'https://api.line.me/v2/bot/message/reply', 65 CURLOPT_CUSTOMREQUEST => 'POST', 66 CURLOPT_RETURNTRANSFER => true, 67 CURLOPT_HTTPHEADER => $headers, 68CURLOPT_POSTFIELDS => $body); 69 70$curl = curl_init(); 71curl_setopt_array($curl, $options); 72curl_exec($curl); 73curl_close($curl);

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

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

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

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

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

guest

回答2

0

Line developersのWebhoodには「Webhookが無効なHTTPステータスコードを返しました(期待されるステータスコードは200です)」と表示されます。

これが解決されないと、ボットからの返信はこないです。

コードを確認したところ、ぐるなびAPIも関わっており原因を特定しにくいので
まずはその部分はなくして、シンプルに「送った内容をそのまま返信するボット」を実装して動くの確認してから、ぐるなびAPIを組み込んでいくのをおすすめします。

投稿2018/10/08 02:09

shoya.shiraki

総合スコア430

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

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

0

Line developersのWebhoodには「Webhookが無効なHTTPステータスコードを返しました(期待されるステータスコードは200です)」と表示されます。これが原因なのでしょうか。

だと思いますけどね。
そこに何か問題があればbotが返信することは無理かと思います。

投稿2018/10/06 07:23

yaeyama

総合スコア57

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

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

yubon

2018/10/06 08:02

やはりそうですよね。資料を見ながらやっているのですが 「AWS Cloud9のターミナルでvim index.phpと入力」の部分を間違えてしまっているのかもしれないです。もし分かるのでしたら教えて頂けないでしょうか。
yaeyama

2018/10/06 08:29

その資料については知りませんが、まずそのwebhookについてとりあえず 1.ちゃんと存在しているか 2.curlなどで叩き、何が返ってくるか を調べてみてはいかがでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問