質問編集履歴

2

コードの追加

2018/10/06 05:56

投稿

yubon
yubon

スコア13

test CHANGED
File without changes
test CHANGED
@@ -1 +1,155 @@
1
1
  line chat botを作成したのですが本来位置情報を送信したら返答してくれるはずが返答を返してくれません。Webhookが無効なHTTPステータスコードを返しました(期待されるステータスコードは200です)というのがLine developersで表示されますがこれが原因なのでしょうか?もし分かる方がいれば教えてください
2
+
3
+
4
+
5
+ ```php
6
+
7
+ <?php
8
+
9
+
10
+
11
+ $accessToken = 'LINEのアクセストークン(管理画面より取得)';
12
+
13
+
14
+
15
+ // 受信したメッセージ情報
16
+
17
+ $raw = file_get_contents('php://input');
18
+
19
+ $receive = json_decode($raw, true);
20
+
21
+
22
+
23
+ $event = $receive['events'][0];
24
+
25
+ $replyToken = $event['replyToken'];
26
+
27
+ $messageType = $event['message']['type'];
28
+
29
+
30
+
31
+ // 送られてきたのが位置情報以外だったら応答しない
32
+
33
+ if($messageType != "location") exit;
34
+
35
+
36
+
37
+ $lat = $event['message']['latitude'];
38
+
39
+ $lon = $event['message']['longitude'];
40
+
41
+
42
+
43
+ // 送られてきた位置情報を元にぐるなびのAPIにアクセスしてマクドナルドの店舗情報を取得する
44
+
45
+ $uri = 'https://api.gnavi.co.jp/RestSearchAPI/20150630/';
46
+
47
+ $accKey = 'ぐるなびのアクセスキー(アカウント発行後メールにて送られてきます)';
48
+
49
+
50
+
51
+ $url = $uri . '?format=json&name=マクドナルド&range=5&keyid=' . $accKey . '&latitude=' . $lat . '&longitude=' . $lon;
52
+
53
+
54
+
55
+ $json = file_get_contents($url);
56
+
57
+ $obj = json_decode($json);
58
+
59
+
60
+
61
+ // 店舗情報を取得
62
+
63
+ $count = 0;
64
+
65
+ $columns = array();
66
+
67
+ foreach ($obj->rest as $restaurant) {
68
+
69
+ $columns[] = array(
70
+
71
+ 'thumbnailImageUrl' => $restaurant->image_url->shop_image1,
72
+
73
+ 'text' => $restaurant->name,
74
+
75
+ 'actions' => array(array(
76
+
77
+ 'type' => 'uri',
78
+
79
+ 'label' => '詳細を見る',
80
+
81
+ 'uri' => $restaurant->url
82
+
83
+ ))
84
+
85
+ );
86
+
87
+ if (++$count > 5) { // 最大5店舗の情報を返す
88
+
89
+ break;
90
+
91
+ }
92
+
93
+ }
94
+
95
+
96
+
97
+ // LINEで返信する内容
98
+
99
+ $headers = array('Content-Type: application/json',
100
+
101
+ 'Authorization: Bearer ' . $accessToken);
102
+
103
+
104
+
105
+ if ($columns) {
106
+
107
+ $template = array('type' => 'carousel',
108
+
109
+ 'columns' => $columns);
110
+
111
+
112
+
113
+ $message = array('type' => 'template',
114
+
115
+ 'altText' => 'マクドナルドの店舗情報',
116
+
117
+ 'template' => $template);
118
+
119
+ } else {
120
+
121
+ $message = array('type' => 'text',
122
+
123
+ 'text' => '残念ですが、近くにマクドナルドはありませんでした。');
124
+
125
+ }
126
+
127
+
128
+
129
+ $body = json_encode(array('replyToken' => $replyToken,
130
+
131
+ 'messages' => array($message)));
132
+
133
+ $options = array(CURLOPT_URL => 'https://api.line.me/v2/bot/message/reply',
134
+
135
+ CURLOPT_CUSTOMREQUEST => 'POST',
136
+
137
+ CURLOPT_RETURNTRANSFER => true,
138
+
139
+ CURLOPT_HTTPHEADER => $headers,
140
+
141
+ CURLOPT_POSTFIELDS => $body);
142
+
143
+
144
+
145
+ $curl = curl_init();
146
+
147
+ curl_setopt_array($curl, $options);
148
+
149
+ curl_exec($curl);
150
+
151
+ curl_close($curl);
152
+
153
+
154
+
155
+ ```

1

文章の追加

2018/10/06 05:56

投稿

yubon
yubon

スコア13

test CHANGED
@@ -1 +1 @@
1
- line chat botが返答を返さない
1
+ line chat botが返答を返さない 「Webhookが無効なHTTPステータスコードを返しました」が原因でしょうか
test CHANGED
File without changes