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

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

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

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

Q&A

1回答

2126閲覧

line chat botが返答を返さない 「Webhookが無効なHTTPステータスコードを返しました」が原因でしょうか

yubon

総合スコア13

LINE Messaging API

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

0グッド

0クリップ

投稿2018/10/05 13:31

編集2022/01/12 10:55

line chat botを作成したのですが本来位置情報を送信したら返答してくれるはずが返答を返してくれません。Webhookが無効なHTTPステータスコードを返しました(期待されるステータスコードは200です)というのがLine developersで表示されますがこれが原因なのでしょうか?もし分かる方がいれば教えてください

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); 74

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

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

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

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

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

y_waiwai

2018/10/05 14:55

問題を解決してほしかったら、コードを提示しましょう。オイラはエスパーじゃありませんw
yubon

2018/10/06 05:29

失礼いたしました
y_waiwai

2018/10/06 05:51

質問は編集できます。コードは、<code>ボタンで、’’’の枠の中に貼り付けてください
yubon

2018/10/06 05:56

質問を編集しました 教えてくださってありがとうございます
CHERRY

2018/10/07 14:04

Webサーバーのログにエラーが出ていたりしないでしょうか?
guest

回答1

0

Webhookが無効なHTTPステータスコードを返しました(期待されるステータスコードは200です)

これを修正しないと、lineから自分のサーバーへ来るリクエストを受け取ることはできないです。

ですので、それに対する返答等を行うこともできません。

ラインから送られてくるリクエストをサーバー側で受け取って、200のレスポンスを返す。というような実装を行う必要があるはずです。

回答の中に意味のわからない箇所があるという場合は追加で質問していただければ回答します!

投稿2020/03/14 14:49

編集2020/03/14 14:52
tktcorporation

総合スコア108

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問