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

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

ただいまの
回答率

90.35%

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

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 519

yubon

score 7

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

<?php

$accessToken = 'LINEのアクセストークン(管理画面より取得)';

// 受信したメッセージ情報
$raw = file_get_contents('php://input');
$receive = json_decode($raw, true);

$event = $receive['events'][0];
$replyToken  = $event['replyToken'];
$messageType = $event['message']['type'];

// 送られてきたのが位置情報以外だったら応答しない
if($messageType != "location") exit;

$lat = $event['message']['latitude'];
$lon = $event['message']['longitude'];

// 送られてきた位置情報を元にぐるなびのAPIにアクセスしてマクドナルドの店舗情報を取得する
$uri    = 'https://api.gnavi.co.jp/RestSearchAPI/20150630/';
$accKey = 'ぐるなびのアクセスキー(アカウント発行後メールにて送られてきます)';

$url  = $uri . '?format=json&name=マクドナルド&range=5&keyid=' . $accKey . '&latitude=' . $lat . '&longitude=' . $lon;

$json = file_get_contents($url);
$obj  = json_decode($json);

// 店舗情報を取得
$count = 0;
$columns = array();
foreach ($obj->rest as $restaurant) {
  $columns[] = array(
    'thumbnailImageUrl' => $restaurant->image_url->shop_image1,
'text'    => $restaurant->name,
    'actions' => array(array(
                  'type'  => 'uri',
                  'label' => '詳細を見る',
                  'uri'   => $restaurant->url
                ))
  );
  if (++$count > 5) { // 最大5店舗の情報を返す
    break;
  }
}

// LINEで返信する内容
$headers = array('Content-Type: application/json',
                 'Authorization: Bearer ' . $accessToken);

if ($columns) {
  $template = array('type'    => 'carousel',
                    'columns' => $columns);

  $message = array('type'     => 'template',
                   'altText'  => 'マクドナルドの店舗情報',
                   'template' => $template);
} else {
  $message = array('type' => 'text',
                   'text' => '残念ですが、近くにマクドナルドはありませんでした。');
}

$body = json_encode(array('replyToken' => $replyToken,
                          'messages'   => array($message)));
$options = array(CURLOPT_URL            => 'https://api.line.me/v2/bot/message/reply',
                 CURLOPT_CUSTOMREQUEST  => 'POST',
                 CURLOPT_RETURNTRANSFER => true,
                 CURLOPT_HTTPHEADER     => $headers,
CURLOPT_POSTFIELDS     => $body);

$curl = curl_init();
curl_setopt_array($curl, $options);
curl_exec($curl);
curl_close($curl);
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • y_waiwai

    2018/10/06 14:51

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

    キャンセル

  • yubon

    2018/10/06 14:56

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

    キャンセル

  • CHERRY

    2018/10/07 23:04

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

    キャンセル

まだ回答がついていません

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

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る