はじめに
以前、WebアプリケーションにLINEログインを組み込む方法を紹介しました。そこで今回はWebアプリケーションからLINEのメッセージを送る方法を紹介します。
Messaging APIとは
Messaging APIはLINEボットを操作するREST APIです。このAPIでは以下のような機能を提供しています。
- LINEボットから任意のユーザ、グループ、ルームに対してメッセージを送る
- ユーザからのメッセージやアクションに応じてメッセージを送る(Webhook)
- ユーザプロフィールを取得する
- グループチャットに参加する
- リッチメニューを使う
- ビーコンを使う
- 送信件数を取得する
Messaging APIの仕組み
Messaging APIを使うとボットサーバとLINEプラットフォームとの間でデータを交換する事ができます。リクエストはJSON形式でHTTPSを使って送られます。
処理の一例は以下のとおりです。
- ユーザは友達登録しているLINE公式アカウントにメッセージを送る
- LINEプラットフォームからボットサーバのWebhook URLにWebhookイベントが送られる
- Webhookイベントに応じてボットサーバからユーザにLINEプラットフォームを介してメッセージを送る
Webhookイベント
友達登録やメッセージ送信などのイベントがトリガーされると、Webhook URLにWebhookイベントがHTTPSでPOSTされます。このリクエストにはステータスコード200を返す必要があります。
POSTされるパラメータにはイベントの種類を表す type やイベントの送信元情報を表す source 、イベントごとのパラメータが含まれます。
例えば、ユーザから友達登録された場合は以下のようなパラメータが送られます。
1 2 3 4 5 6 7 8 9 | { "replyToken": "kfs9KJHdw8L9Kd", "type": "follow", "timestamp": 1462629479194, "source": { "type": "user", "userId": "U4afk080629..." } } |
メッセージオブジェクトの種類
メッセージはメッセージオブジェクトとして送ります。メッセージオブジェクトはメッセージの内容を表すJSONオブジェクトです。
メッセージオブジェクトの種類は以下のとおりです。
- テキストメッセージ
- 画像メッセージ
- 音声メッセージ
- 動画メッセージ
- 位置情報メッセージ
- スタンプメッセージ
- イメージマップメッセージ
- テンプレートメッセージ
- Flex Message
料金形態
Messaging APIを使うためにはLINE公式アカウントのいずれかのプランに加入するか、LINE@のMessaging APIのいずれかのプランに加入する必要があります。
LINE@はLINE公式アカウントに統合される予定ですので、LINE公式アカウントのプランについて簡単に説明すると、フリープラン、ライトプラン、スタンダードプランの3種類があります。これらの違いは月額料金、無料メッセージ件数、追加メッセージ件数のみで機能の制限はありません。
無料メッセージ件数を超えてメッセージを送りたい場合は、1通ごとにプランごとに決まった料金が追加でかかります。
LINE Developersの設定
Messaging APIを利用するためにはLINE Developersにログインして、Messaging APIのチャルを作成する必要があります。LINE Developersへのログインはこちらの記事を参考にしてください。
チャンネルを作成する
まずはじめに、プロバイダー画面の新規チャンネル作成からMessaging APIを選択し、必要な項目を入力してチャンネルを作成します。
チャンルを作成したら、Webhook送信を 利用する に変更し、Webhook URLを設定します(LINEログインと組み合わせた場合はWebhookを使用しなくてもメッセージを送れます)
LINEログインとリンクする
メッセージを送るには相手のユーザIDかグループIDかルームIDを知っていなければなりません。これらのIDを取得する方法としては、LINEログインにMessaging APIのボットをリンクするかWebhook URL経由で取得することができます。
LINEログインとリンクするには、LINEログインのチャネルの このチャンネルにリンクされたボット で指定する必要があります。
メッセージを送ってみる
Messaging APIでメッセージを送るには、まずチャネルアクセストークンを取得します。以下のAPIで取得します(LINE Developersでも発行できます)
POST https://api.line.me/v2/oauth/accessToken
リクエストヘッダー
リクエストヘッダー | 説明 |
Content-Type | application/x-www-form-urlencoded |
リクエストボディ
フィールド | タイプ | 説明 |
grant_type | String | client_credentials |
client_id | String | チャネルID |
client_secret | String | チャネルシークレット |
レスポンス
プロパティ | タイプ | 説明 |
access_token | String | 短期のチャネルアクセストークン |
expires_in | Number | 有効期限 |
token_type | String | Bearer |
プッシュメッセージを送る
LINEログインなどで取得したユーザIDに対してメッセージを送るには以下のAPIにPOSTします。
POST https://api.line.me/v2/bot/message/push
リクエストヘッダー
リクエストヘッダー | 説明 |
Content-Type | application/json |
Authorization | Bearer { channel access token } |
リクエストボディ
プロパティ | タイプ | 必須 | 説明 |
to | String | 必須 | 送信先のID |
messages | メッセージオブジェクトの配列 | 必須 | 送信するメッセージ |
notificationDisabled | Boolean | 任意 | trueの場合通知されない |
レスポンス
ステータスコード 200 と空のJSONオブジェクト
さいごに
WebアプリからLINEのメッセージを送る方法を紹介しました。これ以外にも様々なメッセージが送れますので、詳しくは公式のドキュメントをご覧ください。