質問編集履歴
2
重複箇所の削除
test
CHANGED
File without changes
|
test
CHANGED
@@ -406,162 +406,6 @@
|
|
406
406
|
|
407
407
|
|
408
408
|
|
409
|
-
###追記: 新たなエラー
|
410
|
-
|
411
|
-
### 環境変数の設定が完了した後、新たに2つのエラーが浮上し未だにcallbackは成功しないままです。
|
412
|
-
|
413
|
-
### 新エラー①
|
414
|
-
|
415
|
-
##### ActionController::RoutingError (No route matches [GET] "/linebots"):
|
416
|
-
|
417
|
-
- このエラーに関しては、routes.rbの編集で解決しました。下記文言を追記し、再度デプロイしたらエラーが消えました。
|
418
|
-
|
419
|
-
```
|
420
|
-
|
421
|
-
get "*path" => 'application#render_404'
|
422
|
-
|
423
|
-
```
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
### 新エラー②
|
428
|
-
|
429
|
-
#### NoMethodError (undefined method `include?' for nil:NilClass):
|
430
|
-
|
431
|
-
#### こっちのエラーに新たに頭を悩ませています。linebots_contoroller内で修正したのは環境変数を記述した箇所のみで,他は変えていません。
|
432
|
-
|
433
|
-
#### include?メソッドが定義されていないというのは分かりました。配列内に引数指定したものがあるかどうかというメソッドだそうですが、ここで言われている定義されていないの意味が掴めないでいます。メソッドが定義されていない事が、サーバーエラーを引き起こしているstatus500との繋がりが見えないが新たな悩みとなっています。
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
```
|
438
|
-
|
439
|
-
class LinebotsController < ApplicationController
|
440
|
-
|
441
|
-
require 'line/bot' # gem 'line-bot-api'
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
# callbackアクションのCSRFトークン認証を無効
|
446
|
-
|
447
|
-
protect_from_forgery :except => [:callback]
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
def client
|
452
|
-
|
453
|
-
@client ||= Line::Bot::Client.new { |config|
|
454
|
-
|
455
|
-
config.channel_secret = ENV['LINE_BOT_CHANNEL_SECRET']
|
456
|
-
|
457
|
-
config.channel_token = ENV['LINE_BOT_CHANNEL_TOKEN']
|
458
|
-
|
459
|
-
}
|
460
|
-
|
461
|
-
end
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
def callback
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
# Postモデルの中身をランダムで@postに格納する
|
470
|
-
|
471
|
-
@post=Post.offset( rand(Post.count) ).first
|
472
|
-
|
473
|
-
body = request.body.read
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
signature = request.env['HTTP_X_LINE_SIGNATURE']
|
478
|
-
|
479
|
-
unless client.validate_signature(body, signature)
|
480
|
-
|
481
|
-
head :bad_request
|
482
|
-
|
483
|
-
end
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
events = client.parse_events_from(body)
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
events.each { |event|
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
# event.message['text']でLINEで送られてきた文書を取得
|
496
|
-
|
497
|
-
if event.message['text'].include?("パスワード")
|
498
|
-
|
499
|
-
response = "パスワードが違う!曲者め!"
|
500
|
-
|
501
|
-
elsif event.message["text"].include?("退け")
|
502
|
-
|
503
|
-
response = "我が剣の切れ味、身を以て知るがいい"
|
504
|
-
|
505
|
-
elsif event.message['text'].include?("覚悟")
|
506
|
-
|
507
|
-
response = "ふん、意気込みだけでは儂に勝てぬぞ"
|
508
|
-
|
509
|
-
elsif event.message['text'].include?("姫はどこだ")
|
510
|
-
|
511
|
-
response = "そんな小娘のことより、己自身の心配をせい"
|
512
|
-
|
513
|
-
else
|
514
|
-
|
515
|
-
response = @post.name
|
516
|
-
|
517
|
-
end
|
518
|
-
|
519
|
-
#if文でresponseに送るメッセージを格納
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
case event
|
524
|
-
|
525
|
-
when Line::Bot::Event::Message
|
526
|
-
|
527
|
-
case event.type
|
528
|
-
|
529
|
-
when Line::Bot::Event::MessageType::Text
|
530
|
-
|
531
|
-
message = {
|
532
|
-
|
533
|
-
type: 'text',
|
534
|
-
|
535
|
-
text: response
|
536
|
-
|
537
|
-
}
|
538
|
-
|
539
|
-
client.reply_message(event['replyToken'], message)
|
540
|
-
|
541
|
-
end
|
542
|
-
|
543
|
-
end
|
544
|
-
|
545
|
-
}
|
546
|
-
|
547
|
-
head :ok
|
548
|
-
|
549
|
-
end
|
550
|
-
|
551
|
-
end
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
```
|
556
|
-
|
557
|
-
#### 似たソースコードでbotが動いている人が居るので、何故に自分のソースコードはNoMethodError (undefined method `include?' for nil:NilClass):が起きるのか不明という状況です。
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
####自己解決が難しい&知見を広げたい思いがあり再度お知恵をお借りしたく思います。よろしくお願い致します。
|
562
|
-
|
563
|
-
|
564
|
-
|
565
409
|
|
566
410
|
|
567
411
|
### 補足情報(FW/ツールのバージョンなど)
|
1
新たなエラーが発生しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -26,41 +26,7 @@
|
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
-
###ターミナルでheroku logsを実行すると、
|
30
|
-
|
31
|
-
```
|
32
|
-
|
33
|
-
2020-08-12T13:12:53.329519+00:00 app[web.1]: I, [2020-08-12T13:12:53.329390 #4] INFO -- : [b5dc7586-5c4b-4a9e-96ca-fcb01120e96e] Started POST "/callback" for 203.104.156.73 at 2020-08-12 13:12:53 +0000
|
34
|
-
|
35
|
-
2020-08-12T13:12:53.331293+00:00 app[web.1]: I, [2020-08-12T13:12:53.331200 #4] INFO -- : [b5dc7586-5c4b-4a9e-96ca-fcb01120e96e] Processing by LinebotsController#callback as HTML
|
36
|
-
|
37
|
-
2020-08-12T13:12:53.331578+00:00 app[web.1]: I, [2020-08-12T13:12:53.331477 #4] INFO -- : [b5dc7586-5c4b-4a9e-96ca-fcb01120e96e] Parameters: {"events"=>[{"replyToken"=>"00000000000000000000000000000000", "type"=>"message", "timestamp"=>1597237972699, "source"=>{"type"=>"user", "userId"=>"Udeadbeefdeadbeefdeadbeefdeadbeef"}, "message"=>{"id"=>"100001", "type"=>"text", "text"=>"Hello, world"}}, {"replyToken"=>"ffffffffffffffffffffffffffffffff", "type"=>"message", "timestamp"=>1597237972699, "source"=>{"type"=>"user", "userId"=>"Udeadbeefdeadbeefdeadbeefdeadbeef"}, "message"=>{"id"=>"100002", "type"=>"sticker", "packageId"=>"1", "stickerId"=>"1"}}], "linebot"=>{"events"=>[{"replyToken"=>"00000000000000000000000000000000", "type"=>"message", "timestamp"=>1597237972699, "source"=>{"type"=>"user", "userId"=>"Udeadbeefdeadbeefdeadbeefdeadbeef"}, "message"=>{"id"=>"100001", "type"=>"text", "text"=>"Hello, world"}}, {"replyToken"=>"ffffffffffffffffffffffffffffffff", "type"=>"message", "timestamp"=>1597237972699, "source"=>{"type"=>"user", "userId"=>"Udeadbeefdeadbeefdeadbeefdeadbeef"}, "message"=>{"id"=>"100002", "type"=>"sticker", "packageId"=>"1", "stickerId"=>"1"}}]}}
|
38
|
-
|
39
|
-
2020-08-12T13:12:53.335535+00:00 app[web.1]: D, [2020-08-12T13:12:53.335420 #4] DEBUG -- : [b5dc7586-5c4b-4a9e-96ca-fcb01120e96e] (1.1ms) SELECT COUNT(*) FROM "posts"
|
40
|
-
|
41
|
-
2020-08-12T13:12:53.337417+00:00 app[web.1]: D, [2020-08-12T13:12:53.337323 #4] DEBUG -- : [b5dc7586-5c4b-4a9e-96ca-fcb01120e96e] Post Load (0.9ms) SELECT "posts".* FROM "posts" ORDER BY "posts"."id" ASC LIMIT $1 OFFSET $2 [["LIMIT", 1], ["OFFSET", 5]]
|
42
|
-
|
43
|
-
2020-08-12T13:12:53.338305+00:00 app[web.1]: I, [2020-08-12T13:12:53.338236 #4] INFO -- : [b5dc7586-5c4b-4a9e-96ca-fcb01120e96e] Completed 500 Internal Server Error in 7ms (ActiveRecord: 2.0ms | Allocations: 697)
|
44
|
-
|
45
|
-
2020-08-12T13:12:53.339074+00:00 app[web.1]: F, [2020-08-12T13:12:53.338979 #4] FATAL -- : [b5dc7586-5c4b-4a9e-96ca-fcb01120e96e]
|
46
|
-
|
47
|
-
2020-08-12T13:12:53.339075+00:00 app[web.1]: [b5dc7586-5c4b-4a9e-96ca-fcb01120e96e] ArgumentError (`channel_token` is not configured):
|
48
|
-
|
49
|
-
2020-08-12T13:12:53.339076+00:00 app[web.1]: [b5dc7586-5c4b-4a9e-96ca-fcb01120e96e]
|
50
|
-
|
51
|
-
2020-08-12T13:12:53.339076+00:00 app[web.1]: [b5dc7586-5c4b-4a9e-96ca-fcb01120e96e] app/controllers/linebots_controller.rb:63:in `block in callback'
|
52
|
-
|
53
|
-
2020-08-12T13:12:53.339077+00:00 app[web.1]: [b5dc7586-5c4b-4a9e-96ca-fcb01120e96e] app/controllers/linebots_controller.rb:27:in `each'
|
54
|
-
|
55
|
-
2020-08-12T13:12:53.339077+00:00 app[web.1]: [b5dc7586-5c4b-4a9e-96ca-fcb01120e96e] app/controllers/linebots_controller.rb:27:in `callback'
|
56
|
-
|
57
|
-
2020-08-12T13:12:53.341134+00:00 heroku[router]: at=info method=POST path="/callback" host=shinobi01bot.herokuapp.com request_id=b5dc7586-5c4b-4a9e-96ca-fcb01120e96e fwd="203.104.156.73" dyno=web.1 connect=0ms service=13ms status=500 bytes=1827 protocol=https
|
58
|
-
|
59
|
-
athlaliel@asurarierunoMacBook-Pro textbot %
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
```
|
29
|
+
###ターミナルでheroku logsを実行すると、logが出てきます。status=500と一番下に出ているので、サーバーエラーなのは分かるのですが、どこが悪いのか最早分からない状態です。
|
64
30
|
|
65
31
|
|
66
32
|
|
@@ -438,6 +404,166 @@
|
|
438
404
|
|
439
405
|
###最終的にはターミナルでstatus500のサーバーエラーが出てきますが、これ以上どこを見直せばいいのか不明です。色々と調べて実行するも、一日経っても未だ解決しないので、途方にくれています。そこで先人の方々の知恵をお借りしたく思います。よろしくお願い致します。
|
440
406
|
|
407
|
+
|
408
|
+
|
409
|
+
###追記: 新たなエラー
|
410
|
+
|
411
|
+
### 環境変数の設定が完了した後、新たに2つのエラーが浮上し未だにcallbackは成功しないままです。
|
412
|
+
|
413
|
+
### 新エラー①
|
414
|
+
|
415
|
+
##### ActionController::RoutingError (No route matches [GET] "/linebots"):
|
416
|
+
|
417
|
+
- このエラーに関しては、routes.rbの編集で解決しました。下記文言を追記し、再度デプロイしたらエラーが消えました。
|
418
|
+
|
419
|
+
```
|
420
|
+
|
421
|
+
get "*path" => 'application#render_404'
|
422
|
+
|
423
|
+
```
|
424
|
+
|
425
|
+
|
426
|
+
|
427
|
+
### 新エラー②
|
428
|
+
|
429
|
+
#### NoMethodError (undefined method `include?' for nil:NilClass):
|
430
|
+
|
431
|
+
#### こっちのエラーに新たに頭を悩ませています。linebots_contoroller内で修正したのは環境変数を記述した箇所のみで,他は変えていません。
|
432
|
+
|
433
|
+
#### include?メソッドが定義されていないというのは分かりました。配列内に引数指定したものがあるかどうかというメソッドだそうですが、ここで言われている定義されていないの意味が掴めないでいます。メソッドが定義されていない事が、サーバーエラーを引き起こしているstatus500との繋がりが見えないが新たな悩みとなっています。
|
434
|
+
|
435
|
+
|
436
|
+
|
437
|
+
```
|
438
|
+
|
439
|
+
class LinebotsController < ApplicationController
|
440
|
+
|
441
|
+
require 'line/bot' # gem 'line-bot-api'
|
442
|
+
|
443
|
+
|
444
|
+
|
445
|
+
# callbackアクションのCSRFトークン認証を無効
|
446
|
+
|
447
|
+
protect_from_forgery :except => [:callback]
|
448
|
+
|
449
|
+
|
450
|
+
|
451
|
+
def client
|
452
|
+
|
453
|
+
@client ||= Line::Bot::Client.new { |config|
|
454
|
+
|
455
|
+
config.channel_secret = ENV['LINE_BOT_CHANNEL_SECRET']
|
456
|
+
|
457
|
+
config.channel_token = ENV['LINE_BOT_CHANNEL_TOKEN']
|
458
|
+
|
459
|
+
}
|
460
|
+
|
461
|
+
end
|
462
|
+
|
463
|
+
|
464
|
+
|
465
|
+
def callback
|
466
|
+
|
467
|
+
|
468
|
+
|
469
|
+
# Postモデルの中身をランダムで@postに格納する
|
470
|
+
|
471
|
+
@post=Post.offset( rand(Post.count) ).first
|
472
|
+
|
473
|
+
body = request.body.read
|
474
|
+
|
475
|
+
|
476
|
+
|
477
|
+
signature = request.env['HTTP_X_LINE_SIGNATURE']
|
478
|
+
|
479
|
+
unless client.validate_signature(body, signature)
|
480
|
+
|
481
|
+
head :bad_request
|
482
|
+
|
483
|
+
end
|
484
|
+
|
485
|
+
|
486
|
+
|
487
|
+
events = client.parse_events_from(body)
|
488
|
+
|
489
|
+
|
490
|
+
|
491
|
+
events.each { |event|
|
492
|
+
|
493
|
+
|
494
|
+
|
495
|
+
# event.message['text']でLINEで送られてきた文書を取得
|
496
|
+
|
497
|
+
if event.message['text'].include?("パスワード")
|
498
|
+
|
499
|
+
response = "パスワードが違う!曲者め!"
|
500
|
+
|
501
|
+
elsif event.message["text"].include?("退け")
|
502
|
+
|
503
|
+
response = "我が剣の切れ味、身を以て知るがいい"
|
504
|
+
|
505
|
+
elsif event.message['text'].include?("覚悟")
|
506
|
+
|
507
|
+
response = "ふん、意気込みだけでは儂に勝てぬぞ"
|
508
|
+
|
509
|
+
elsif event.message['text'].include?("姫はどこだ")
|
510
|
+
|
511
|
+
response = "そんな小娘のことより、己自身の心配をせい"
|
512
|
+
|
513
|
+
else
|
514
|
+
|
515
|
+
response = @post.name
|
516
|
+
|
517
|
+
end
|
518
|
+
|
519
|
+
#if文でresponseに送るメッセージを格納
|
520
|
+
|
521
|
+
|
522
|
+
|
523
|
+
case event
|
524
|
+
|
525
|
+
when Line::Bot::Event::Message
|
526
|
+
|
527
|
+
case event.type
|
528
|
+
|
529
|
+
when Line::Bot::Event::MessageType::Text
|
530
|
+
|
531
|
+
message = {
|
532
|
+
|
533
|
+
type: 'text',
|
534
|
+
|
535
|
+
text: response
|
536
|
+
|
537
|
+
}
|
538
|
+
|
539
|
+
client.reply_message(event['replyToken'], message)
|
540
|
+
|
541
|
+
end
|
542
|
+
|
543
|
+
end
|
544
|
+
|
545
|
+
}
|
546
|
+
|
547
|
+
head :ok
|
548
|
+
|
549
|
+
end
|
550
|
+
|
551
|
+
end
|
552
|
+
|
553
|
+
|
554
|
+
|
555
|
+
```
|
556
|
+
|
557
|
+
#### 似たソースコードでbotが動いている人が居るので、何故に自分のソースコードはNoMethodError (undefined method `include?' for nil:NilClass):が起きるのか不明という状況です。
|
558
|
+
|
559
|
+
|
560
|
+
|
561
|
+
####自己解決が難しい&知見を広げたい思いがあり再度お知恵をお借りしたく思います。よろしくお願い致します。
|
562
|
+
|
563
|
+
|
564
|
+
|
565
|
+
|
566
|
+
|
441
567
|
### 補足情報(FW/ツールのバージョンなど)
|
442
568
|
|
443
569
|
|