15
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

[Ruby] Line NotifyでLineにメッセージ送信する手順メモ

※こちらがLineのWeb管理画面からトークン取得までのキャプチャ画像有りの詳細手順です。
文章では分かりづらい場合はこちらも合わせてご参照ください。
RubyからLine NotifyでLineにメッセージを送るかんたん手順

アクセストークンの取得

  • Line Web管理画面にログイン

こちらから、LineのWeb管理画面にいきます。

  • トークン名、トークルームを選択

続いて、Lineへのメッセージ送信の際の通知名や、送信先チャットルーム(トークルーム)を選択します。

curlで送信テスト

curlでAPIの動作確認します。詳細はAPIドキュメント参照

$ curl -X POST -H 'Authorization: Bearer KorehaDummyNoTokenIdDayo3kmr5aQjM7kZ4swehzPBY' -F "message=ビルの窓ガラスによく張ってある、「▼」のマークってなんなの?" 'https://notify-api.line.me/api/notify'
{"status":200,"message":"ok"}

こんな感じで届きます → スマホに届くメッセージ画面キャプチャ

先程のトークン作成時のトークン名などが結構関わってくるので受信画面のイメージを頭に持っておくのが大事です。

Rubyで送信スクリプトを作成する

curlをRubyで再現しただけのかんたんスクリプト。トークン文字列だけ入れ替えればどの環境でも動くと思います。

send_msg_with_line_Notify.rb
require 'net/http'
require 'uri'

class Line
  TOKEN = "KorehaDummyNoTokenIdDayo3kmr5aQjM7kZ4swehzPBY"
  URI = URI.parse("https://notify-api.line.me/api/notify")

  def make_request(msg)
    request = Net::HTTP::Post.new(URI)
    request["Authorization"] = "Bearer #{TOKEN}"
    request.set_form_data(message: msg)
    request
  end

  def send(msg)
    request = make_request(msg)
    response = Net::HTTP.start(URI.hostname, URI.port, use_ssl: URI.scheme == "https") do |https|
      https.request(request)
    end
  end
end

line = Line.new
msg = ARGV[0]

res = line.send(msg)
puts res.code
puts res.body
実行方法
$ ruby send_msg_with_line_notify.rb 'ビルの窓ガラスによく張ってある、「▼」のマークってなんなの?'
200
{"status":200,"message":"ok"}
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
15
Help us understand the problem. What are the problem?