資料來源: https://ithelp.ithome.com.tw/articles/10197544
# 查天氣
reply_image = get_weather(received_text)
# 沒有查到圖的話 後面的事情就不作了
unless reply_image.nil?
# 傳送圖片到 line
response = reply_image_to_line(reply_image)
# 回應 200
head :ok
return
end
def get_weather(received_text)
return nil unless received_text.include? 'J:W'
upload_to_imgur(get_weather_from_cwb)
end
def get_weather_from_cwb
uri = URI('https://www.cwb.gov.tw/V7/js/HDRadar_1000_n_val.js')
response = Net::HTTP.get(uri)
start_index = response.index('","') + 3
end_index = response.index('"),') - 1
"http://www.cwb.gov.tw" + response[start_index..end_index]
end
def upload_to_imgur(image_url)
url = URI("https://api.imgur.com/3/image")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["authorization"] = 'Client-ID 6d2ceae9baXXXXX'
request.set_form_data({"image" => image_url})
response = http.request(request)
json = JSON.parse(response.read_body)
begin
json['data']['link'].gsub("http:","https:")
rescue
nil
end
end
# 傳送圖片到 line
def reply_image_to_line(reply_image)
return nil if reply_image.nil?
# 取得 reply token
reply_token = params['events'][0]['replyToken']
# 設定回覆訊息
message = {
type: "image",
originalContentUrl: reply_image,
previewImageUrl: reply_image
}
# 傳送訊息
line.reply_message(reply_token, message)
end


沒有留言:
張貼留言