Messaging API を使ってメッセージを送信する方法

Messaging API は、LINE公式アカウントから友だち登録済みのユーザーに対して、メッセージを送ったり、ユーザー情報を取得したりできるAPIです。

これまで Messaging API について、

・LINE Developers コンソール
https://kotovuki.co.jp/archives/16761

・Messaging API の 利用料金
https://kotovuki.co.jp/archives/17715

と2回に分けて解説してきました。今回は、その実践編として「Messaging API を使ってメッセージを送信する方法」について、以下の点を詳しく説明します。

・Messaging API を利用してメッセージを送信するメリット
・チャネルアクセストークン(長期)の取得方法
・3種類のメッセージ送信API
・画像メッセージの送信方法
・クイックリプライ機能

Messaging API を利用してメッセージを送信するメリット

LINE公式アカウントから友だち登録済みのユーザーにメッセージを送信することを、メッセージ送信といいます。

Messaging API を利用しなくてもメッセージ送信は可能ですが、Messaging API を使うことで以下の2つのメリットがあります。

・指定したユーザーにメッセージを送信できる
・外部システムからメッセージを送信できる

指定したユーザーにメッセージを送信できる

Messaging API を利用しない場合、メッセージは「LINE Official Account Manager」の「メッセージ配信」画面から送信できます。

この画面では、送信先は「全ての友だちユーザー」または「条件で絞り込まれたユーザー」に限られます。
一方、Messaging API を使えば、任意のユーザーを指定して個別にメッセージを送ることができます。

外部システムからメッセージを送信できる

Messaging API を利用すれば、Claris FileMaker などの外部システムからメッセージを送信できます。外部システムの情報に応じて自動でメッセージを送る運用ができます。

さらに、Messaging API にはユーザー情報の取得 API も用意されているため、ユーザー情報の管理が容易になるというメリットもあります。

参考:ユーザー情報の取得(Messaging API リファレンス)
https://developers.line.biz/ja/reference/messaging-api/#users

チャネルアクセストークン(長期)を取得する

Messaging API を使うには、チャネルアクセストークンを取得する必要があります。

LINE Developers コンソール画面で該当のチャネルを選択します。
[Messaing API 設定] タブを開きます。

下図の 「チャネルアクセストークン(長期)」の値をコピーします。

今回は簡単に取得できる「長期」トークンを紹介しましたが、公式ドキュメントでは「有効期限のあるチャネルアクセストークン」の利用が推奨されています。

参考:チャネルアクセストークン(Messaging API リファレンス)
https://developers.line.biz/ja/docs/basics/channel-access-token

3種類のメッセージ送信API

メッセージを送信するAPIは、送信先によって3種類あります。

リクエストボディの “messages” 配列 に、実際に送信するメッセージの内容を指定します。

{
    "to": "U4af4980629...",
    "messages":[
        {
            "type":"text",
            "text":"こんにちは!"
        },
        {
            "type":"text",
            "text":"伊藤さん"
        }
    ]
}

上の例では、”messages”配列に2つの “text” メッセージオブジェクトを指定しています。この指定により、ユーザーには2つの吹き出しメッセージが連続で送信されます。

“type” プロパティで送信するメッセージの種類を指定します。”text” の場合はテキストメッセージ、”image” の場合は画像メッセージとなります(画像送信の詳細は後述します)。

  {
     "type":"text",
     "text":"こんにちは!"
  }

“type” が “text” の場合、”text” プロパティに送信したいメッセージ文字列を設定します。上記の例では「こんにちは!」というメッセージが送信されます。

 {
    "type":"text",
    "text":"こんにちは!"
 }

ここまではテキストメッセージについて説明しましたが、次に画像メッセージなど、他のメッセージタイプについても解説します。

画像メッセージを送信する

Messaing API は、JPEG 形式 または PNG 形式の画像送信に対応しています。
画像を送信する際は、”type” プロパティに “image” を指定します。

{
  "type": "image",
  "originalContentUrl": "https://example.com/original.jpg",
  "previewImageUrl": "https://example.com/preview.jpg"
}

画像のURLは2つ指定する必要があります。
“originalContentUrl” : 実際に送信する本体の画像URL
“previewImageUrl” : トーク画面に表示されるプレビュー用の画像URL

プレビュー用の画像とは、下図のようなトーク画面に表示される画像です。

プレビュー用の画像をタップすると、本体画像がダウンロードできる画面が表示されます。

クイックリプライ機能

クイックリプライは、ユーザーが返信するためのボタンを、メッセージと一緒に表示するための機能です。
ユーザーは、トーク画面の下部に表示されるボタンをタップするだけで、LINE公式アカウントに簡単に返信できます。

例えば、「どの果物が好きですか?」というメッセージと共に、下部に3つのボタンが表示されているとします。

「オレンジ」のボタンを押すことで、 “orange” というテキストが送信されます。このようにユーザーは文字を入力することなく、返信することができるのがクリックリプライ機能です。

リクエストボディの中身は下のコードのような構造になります。リプライボタンを配置するには、messages 配列の中に quickReply プロパティを指定します。

{ 
“messages: [
  “to” : “Ub685b39e4346…..”
  "text" : "どの果物が好きですか?",
  "type" : "text",
  "quickReply": {
    "items": [
      {
        "type": "action",
        "action": {
          "type": "message",
          "label": "オレンジ”,
          “text”:”orange”
        }
      },
      {
        "type": "action",
        "action": {
          "type": "message",
          "label": "ぶどう”,
          “text”:”grape”
        }
      },
      {
        "type": "action",
        "action": {
          "type": "message",
          "label": "りんご”,
          “text”:”apple”
        }
      },
    ]
  }
],
}

items 配列の中にあるオブジェクトの数だけボタンとして配置されます。3つのボタンを表示させたければ、3つのオブジェクトを配列の中に入れます。

    "items": [
      {
        "type": "action",
        "action": {
          "type": "message",
          "label": "オレンジ”,
          “text”:”orange”
        }
      },
      {
        "type": "action",
        "action": {
          "type": "message",
          "label": "ぶどう”,
          “text”:”grape”
        }
      },
      {
        "type": "action",
        "action": {
          "type": "message",
          "label": "りんご”,
          “text”:”apple”
        }
      },
    ]

“items” 配列の中にある “action” オブジェクトは、ボタンを押した時の動きを指定するためのものです。
“type” プロパティを “message” と指定した場合、ボタンを押すとテキストが返信されます。

"action": {
     "type": "message",
     "label": "オレンジ”,
     “text”:”orange”
}

ボタンに表示される文字は、“label” プロパティに指定します。

"action": {
     "type": "message",
     "label": "オレンジ”,
     "text": "orange"
}

返信するテキストは、”text” プロパティで指定します。

"action": {
     "type": "message",
     "label": "オレンジ”,
     “text”:”orange”
}

“text” プロパティに “orange” を指定しているので、ユーザーは”オレンジ”のボタンを押すと、下図のように “orange” が返信されます。

まとめ

今回は Messaging API を使用したメッセージ送信について解説しました。Messaging API はテキスト、画像、クイックリプライなど様々な種類のメッセージ送信に対応しています。この記事ですべてを紹介しきれていないので、さらに詳しく知りたい方は公式ドキュメントをご覧ください。

参考:メッセージタイプ(Messaging API リファレンス)
https://developers.line.biz/ja/docs/messaging-api/message-types

次回が本シリーズの最終回となり、「Messaging API を利用したメッセージ受信」について詳しく解説する予定です。メッセージの受信方法に興味のある方はお楽しみに。