公式ドキュメントに
指定されているリクエストヘッダ
と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(入力しろなどのメッセージはでないので。。)