LoginSignup
13
11

More than 5 years have passed since last update.

LINE BOT が チラシをくれた(2) 〜PUSH編

Last updated at Posted at 2016-05-30

前回はオウム返しまではできた。
LINE BOT が チラシをくれた(1) 〜おうむ返し編

追記

この記事は、LINE Messaging APIになる前のbot trialの内容である。

内容

今回はメッセージなどをBOTから送ってくれるようにするところまで。
普通に家に来るチラシは寝て起きればポストに入ってるのが普通。
LINE BOT でも寝て起きれば来るようにしなければなんかダサいし実用的じゃない。
そのために何かの条件でBOTから自動的におくってくれるような仕様にすればいい。

0.LINE BOT API

contentType mean
   1     テキスト 
2 画像
3 動画
4 音楽
7 位置情報
8 スタンプ
10 連絡先

今回は画像とテキストしか使わないので画像とテキストについて書いていくと思う。

1.メッセージを返すために必要な情報

send_text.json
{
"to":["送る人のID"],
"toChannel":1383378250,
"eventType":"138311608800106203",
"content":{"contentType":1,
           "toType":1,
           "text":"おはよう"
           }
}

実際に送るのがテキストメッセージの場合、上記のように contentType は 1 にそして text というフィールドが必要になる。
(ちな、 toType はどのような人に送るか。 個人に送る場合1になる。)

2.画像を送るとき

send_Image.json
{
"to":["送る人のID"],
"toChannel":1383378250,
"eventType":"138311608800106203",
"content":{"contentType":2,
           "toType":1,
           "originalContentUrl": "http://example.com/example.jpg",
           "previewImageUrl": "http://example.com/examplesamune.jpg"
           }
}

画像を送る場合 "originalContentUrl" と "previewImageUrl" というのが必要になる。
(この二つは同じでも可)

3.PUSHする方法

LINE BOT は普通のwebアプリを作るのと似てると思う。
'linebot/callback/' が来たらそれに対して何かの処理をするのんだったら、 '/' が来たときの処理でPUSHしてやればいいんじゃないかと考えた。

Heroku には便利なアドオンがあって決めた時間にコマンドを実行みたいなのができるのでそれを使う。名前は Heroku scheduler という。

例えば 朝8時におはようっていうメッセージを自動的に送ってきて欲しかったら、

config.ru
get '/' do
 if (Time.now.hour == 23 && Time.now.min == 0)
  toMe = ENV["MY_ID"]
  request_content = {
          to: [toMe],
          toChannel: 1383378250, # Fixed  value                                                                                                                 
          eventType: "138311608800106203", # Fixed value                                                                                                        
          content: {contentType: 1,
                    toType: 1,
                    text: "おはよう"
                   }
        }
  request_content_json = request_content.to_json
  RestClient.proxy = ENV["FIXIE_URL"]
  RestClient.post(@endpoint_uri,request_content_json,@request_header)
 end
end

っていうのを前回のコードに追記して
MY_ID を Heroku の環境変数に登録して Heroku に push する。
今回は自分に送るように開発してるので、to: の部分はあらかじめわかってる。

Heroku の Heroku Scheduler に 毎日23(UTC)に
$ curl https://myappname.herokuapp.com/
(myappnameには Heroku の アプリ名)
というコマンドを実行って設定すれば毎朝8時にメッセージが来るようになる。

画像を送信したければ、上のほうに書いてあるように request_content を変えるだけ。

まとめ

これを自由自在に変えれば好きな事をBOTが送ってきてくれるようになる。
悪いところとかご指導してもらえると嬉しいです。

次回

LINE BOT が チラシをくれた(3) 〜最後まで

参考資料

LINE BOT が チラシをくれた(1) 〜おうむ返し編
API reference for BOT API

13
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11