公式ドキュメント指定されているリクエストヘッダjson形式のメッセージデータ送りたいアカウントのLineの識別子がわかれば、curlからメッセージ送信できるぽいのでやってみた。

何に使える?

Line BOT作成のときに使える。

Line BOTを作る際にどんなメッセージを返すかなどの確認や、cronと連携して、ある時刻になったらメッセージをおくるなどできる。

Line BOTのアカウントを持っている前提で話しますのでご了承ください。

送信するjson形式のメッセージデータの雛形を作成

送る形式によって雛形を作っておく。下記は標準的なテキスト。 画像や、スタンプ、リッチなメッセージを送る用途によって雛形を作っておくと便利。

# vim msg

#!/bin/bash
read text
cat <<EOS
{
  "to":["送信先ユーザーの識別子"],
  "toChannel": 1383378250,
  "eventType":"138311608800106203",
  "content":{
    "contentType":1,
    "toType":1,
    "text":"$text"
  }
}
EOS

内容をすこし解説

toはlineメッセージを送りたい相手の識別子(識別子の調べ方は割愛)、toChannelは定数で公式ドキュメントに記載されてる、eventTypeも定数で公式ドキュメントに記載されてる。 textに送りたいメッセージが入る。contentTypeはコンテンツの種類。

toTypeはおそらく送信相手の数?(ドキュメントに記載なし。複数人がいるグループだと2などになってマルチを意味するとかになると予想。現在はベータ版なので、一対一のみ対応しているイメージ)

curlでlineにメッセージを送る

1.msgスクリプトでjsonデータを標準出力する
2.curlでjsonデータを受け取る(-dオプション)
3.LineAPIをたたいて送信
4.送信先に指定した相手はBOTからメッセージが届く
sh msg | curl -X POST \
-H 'Content-Type: application/json' \
-H 'X-Line-ChannelID: <あなたのChannel ID>' \
-H 'X-Line-ChannelSecret: <あなたのChannel Secret>' \
-H 'X-Line-Trusted-User-With-ACL: <あなたのMID>' \
-d @- 'https://trialbot-api.line.me/v1/events'
 ←送信したいメッセージ入力しEnter(入力しろなどのメッセージはでないので。。)