LINEBotって簡単じゃない?
本日は
最近、巷で流行りのBotですが、LINEボットって本当に簡単にできるんです。 ちょっと、会社で紹介する機会があったのでこちらでも。
まずは申請しましょう
申請画面
こんな画面になる
こんな画面になる(続き)
この辺の値が大事
ここのURLをちゃんと設定する
ここのURLは
SSLじゃなくては行けないらしい。 ※巷では、Let's Encryptではダメとかいう都市伝説があるが、都市伝説です。
routes.rbを設定する
# line bot post '/callback' => 'bot#callback'
設定を書く
CHANNEL_ID = ENV['LINE_CHANNEL_ID'] CHANNEL_SECRET = ENV['LINE_CHANNEL_SECRET'] CHANNEL_MID = ENV['LINE_CHANNEL_MID']
controllerを書く
# rubocop:disable all def callback render nothing: true, status: 470 unless validate_signature? #アクセス制限 result = params[:result][0] text_message = result['content']['text'] #送信された単語 from_mid = result['content']['from'] #送信された相手 client = Line::Bot::Client.new do |config| config.channel_id = CHANNEL_ID config.channel_secret = CHANNEL_SECRET config.channel_mid = CHANNEL_MID end client.send_text([送信先MID], text: text_message) #※※補足あり render nothing: true, status: :ok end # rubocop:enable all
LINEからのアクセスのみ許す
# LINEからのアクセスか確認. # 認証に成功すればtrueを返す。 def validate_signature? signature = request.headers['X-LINE-ChannelSignature'] http_request_body = request.raw_post hash = OpenSSL::HMAC.digest(OpenSSL::Digest::SHA256.new, CHANNEL_SECRET, http_request_body) signature_answer = Base64.strict_encode64(hash) signature == signature_answer end
ちなみに
こんな便利なgemがある http://qiita.com/gogotanaka/items/9885ef202066e5d6eff9
gem 'line-bot'
言葉以外いろいろできる
client.send_text(["uxxxxxxxxxxxxx"], text: "Hi!" ) client.send_image(["uxxxxxxxxxxxxx"], originalContentUrl: "http://example.com/original.jpg", previewImageUrl: "http://example.com/preview.jpg" ) client.send_video(["uxxxxxxxxxxxxx"], originalContentUrl: "http://example.com/original.jpg", previewImageUrl: "http://example.com/preview.jpg" ) client.send_audio(["uxxxxxxxxxxxxx"], originalContentUrl: "http://example.com/original.m4a", contentMetadata: { "AUDLEN" => "240000" } )
更にちなみに
ユーザローカルという会社で人工知能会話APIを提供している(無料)
http://www.userlocal.jp/news/201605101/
結果