undefined method `[]' for nil:NilClass (NoMethodError)
LINE Botをつくりたく、下記RubyプログラムをHerokuのURLにアクセスするという形で実行したところ、
callback.rb:19:in `<main>': undefined method `[]' for nil:NilClass (NoMethodError)
とのエラーが発生しました。
どのメソッドが未定義?Nil?なのでしょうか。そして、どうすれば解決するのでしょうか。
いっぽうLINE側のWebhook URLにherokuのurlを登録してVERIFYすると、
A http status of the response was '503 Service Unavailable'.
というエラーが返ってきます。
これは上のundefined methodエラーが原因なのでしょうか?
ソースコードはこのサイトを参考にしました。
http://qiita.com/mix_dvd/items/b0065d9adb8f486838c4
#!/usr/local/bin/ruby
# encoding: utf-8
# ライブラリの読込
require 'cgi'
require 'json'
require 'line/bot'
# CGIの生成
$cgi = CGI.new()
# 送信されたデータの整形
params = {}
$cgi.params.each {|key, val|
params = JSON.parse(key)
}
# 返信に必要な情報の取得
replyToken = params["events"][0]["replyToken"]
msgType = params["events"][0]["message"]["type"]
if msgType == "sticker" then
msgText = "イイね!"
else
msgText = params["events"][0]["message"]["text"]
end
# 返信データの作成
message = {
type: 'text',
text: msgText
}
# データ送信
client = Line::Bot::Client.new { |config|
config.channel_secret = "[自分のチャンネルシークレットを入力]"
config.channel_token = "[自分のチャンネルトークンを入力]"
}
response = client.reply_message(replyToken, message)
#p response
# 初期認証用コード
puts <<EOF
Content-type: text/html
linebot
EOF