質問編集履歴

1

ご回答を頂き試したコードを追加

2020/08/21 04:52

投稿

true_colors_20
true_colors_20

スコア25

test CHANGED
File without changes
test CHANGED
@@ -193,3 +193,193 @@
193
193
  });
194
194
 
195
195
  ```
196
+
197
+ ↓ 追記:20200821 13:48
198
+
199
+
200
+
201
+ NovisHub様からご回答を頂き、試してみたコードです。
202
+
203
+ こちらのコードでもメッセージが送信されませんでした。
204
+
205
+
206
+
207
+ また、現在herokuで動かしており、
208
+
209
+ `コードを修正 → デプロイ → LINEでメッセージを送って動作確認`
210
+
211
+ のような感じで作業しているのですが、エラーメッセージを見るなど良いデバッグ方法はありませんでしょうか?
212
+
213
+
214
+
215
+ こちらがサイト側のURLです。
216
+
217
+ [https://line-recipe.herokuapp.com/](https://line-recipe.herokuapp.com/)
218
+
219
+
220
+
221
+
222
+
223
+ ### ご回答を頂いて試してみたコード
224
+
225
+ ```
226
+
227
+ 'use strict';
228
+
229
+
230
+
231
+ const line = require('@line/bot-sdk');
232
+
233
+ const express = require('express');
234
+
235
+ const axios = require('axios');
236
+
237
+
238
+
239
+ // create LINE SDK config from env variables
240
+
241
+ const config = {
242
+
243
+ channelAccessToken: process.env.CHANNEL_ACCESS_TOKEN,
244
+
245
+ channelSecret: process.env.CHANNEL_SECRET,
246
+
247
+ };
248
+
249
+
250
+
251
+ // create LINE SDK client
252
+
253
+ const client = new line.Client(config);
254
+
255
+
256
+
257
+ // create Express app
258
+
259
+ // about Express itself: https://expressjs.com/
260
+
261
+ const app = express();
262
+
263
+
264
+
265
+ // register a webhook handler with middleware
266
+
267
+ // about the middleware, please refer to doc
268
+
269
+ app.post('/callback', line.middleware(config), (req, res) => {
270
+
271
+ Promise
272
+
273
+ .all(req.body.events.map(handleEvent))
274
+
275
+ .then((result) => res.json(result))
276
+
277
+ .catch((err) => {
278
+
279
+ console.error(err);
280
+
281
+ res.status(500).end();
282
+
283
+ });
284
+
285
+ });
286
+
287
+
288
+
289
+ // event handler
290
+
291
+ function handleEvent(event) {
292
+
293
+ if (event.replyToken === '00000000000000000000000000000000') {
294
+
295
+ return {}
296
+
297
+ }
298
+
299
+ if (event.type !== 'message' || event.message.type !== 'text') {
300
+
301
+ // ignore non-text-message event
302
+
303
+ return Promise.resolve(null);
304
+
305
+ }
306
+
307
+
308
+
309
+ // RAKUTEN Recipe API
310
+
311
+ const appId = process.env.RAKUTEN_RECIPE_API_APP_ID
312
+
313
+ const catId = event.message.text
314
+
315
+ const request = `https://app.rakuten.co.jp/services/api/Recipe/CategoryRanking/20170426?applicationId=${appId}&formatVersion=2&categoryId=${catId}`
316
+
317
+
318
+
319
+ return new Promise(function (resolve, reject) {
320
+
321
+ fetch(request, {
322
+
323
+ method: "GET",
324
+
325
+ })
326
+
327
+ .then(response => response.text())
328
+
329
+ .then(data => {
330
+
331
+ console.log(data);
332
+
333
+ const echo = [{
334
+
335
+ type: 'text',
336
+
337
+ text: event.message.text
338
+
339
+ },
340
+
341
+ {
342
+
343
+ type: 'text',
344
+
345
+ text: data
346
+
347
+ }
348
+
349
+ ]
350
+
351
+ client.replyMessage(event.replyToken, echo).then(function (messageAPIResponseBase) {
352
+
353
+ resolve();
354
+
355
+ }).catch(function (error) {
356
+
357
+ reject(error);
358
+
359
+ });
360
+
361
+ });
362
+
363
+ });
364
+
365
+
366
+
367
+ // use reply API
368
+
369
+ // return client.replyMessage(event.replyToken, echo);
370
+
371
+ }
372
+
373
+
374
+
375
+ // listen on port
376
+
377
+ const port = process.env.PORT || 3000;
378
+
379
+ app.listen(port, () => {
380
+
381
+ console.log(`listening on ${port}`);
382
+
383
+ });
384
+
385
+ ```