Messaging API を利用したメッセージ受信

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

これまで Messaging API について、

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

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

・Messaging API を使ってメッセージを送信する方法
https://kotovuki.co.jp/archives/18314

と3回に分けて解説してきました。

今回は「Messaging API を利用したメッセージ受信」について、受信メッセージ処理の簡単な仕組みを作成しながら説明していきます。

このブログで作成する受信メッセージ処理の仕組み

友達になったユーザーが LINE公式アカウントにメッセージを送信すると、そのメッセージをオウム返しする仕組みを作ります。

例えば、ユーザーが「こんにちは!」と送信した場合、LINE公式アカウントが下図のようにユーザーからのメッセージを含んだ返信を行います。

全体の構成は下図のようになります。
まずは、ユーザーからのメッセージを Webhookサーバーに転送します。
この記事では、Webhookサーバー に Google Apps Script を利用します。

次に、Google Apps Script から Claris FileMaker Data API を利用して Claris FileMaker に送信します。

最後に、Claris FileMaker から Messaging API を利用して、送信してきたユーザーへメッセージを返信します。

Google Apps Script(Webhookサーバー)でユーザーからのメッセージを受信する

ユーザーからのメッセージを Google Apps Script へ転送する設定を行います。

この記事では Messaging API の内容に焦点を当てているため、Google Apps Script の詳細な設定方法は割愛します。Google Apps Script の詳しい情報が必要な場合は、以下の弊社ブログを参照してください。

まず、LINE Developers コンソールを開き、[Messaging API設定]タブに移動します。

Webhook URL に Google Apps Script の URL を設定します。

Webhook の利用 をオンにします。

これで、LINE公式アカウントがユーザーからメッセージを受け取ると、Google Apps Script へ転送されるようになります。

次に、Google Apps Script でメッセージが受信できることを確認します。以下のコードは、受信したメッセージをスプレッドシートに書き込むというものです。

LINE公式アカウントに「こんにちは!」とメッセージを送信します。

すると、スプレッドシートにJSONデータが書き込まれました。

コード全体はこのようになります。

{
  "destination": "Ud53a9e137dcc9632e15e17a1e2f4cf4b",
  "events": [
    {
      "type": "message",
      "message": {
        "type": "text",
        "id": "508939572231799208",
        "quoteToken": "m9f8Zv9MPZXQ7JhDlU7V-qSF-WwFNQV1gOEC4XsJkL0XFm70Zoi6UT--lcm45x5l0-MNupjsccz7Db673Lw0yKlFlbyjW4bLlgbBufqztfaIWxrbIUWGj1v4xPdqY-OMFGKfUIYnIaZp20v1Zo0Zfw",
        "text": "こんにちは!"
      },
      "webhookEventId": "01HYA7JK9W03HW90HK30KT0HQ7",
      "deliveryContext": {
        "isRedelivery": false
      },
      "timestamp": 1716182928240,
      "source": {
        "type": "user",
        "userId": "U45d747d7de2f03fbd90d0392adcfdbef"
      },
      "replyToken": "26b76f70ef524204ab008938b27f778e",
      "mode": "active"
    }
  ]
}

この JSONデータの内容は、ユーザーの行動によって変わります。今回は “type” が “message” となっており、テキストメッセージを受信したことがわかります。

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

例えば、ユーザーが LINE公式アカウントを友だち追加した場合は “type” が “follow”、友達解除した場合は “unfollow” となります。他にもさまざまな種類がありますので、詳しく知りたい方は以下のドキュメントをご確認ください。

参考:メッセージ(Webhook)を受信する(Messaging API リファレンス)
https://developers.line.biz/ja/docs/messaging-api/receiving-messages

Claris FileMaker にレコード を作成する(Claris FileMaker Data API)

ここまでで、ユーザーからのメッセージを含んだ JSONデータが Google Apps Script(Webhook)を経由して受信できることを確認しました。次に、受信したデータを Google Apps Script から Claris FileMaker に転送します。

Claris FileMaker にアクセスする際には、Claris FileMaker Data API を利用します。

Google Apps Script から Claris FileMaker へデータを送るには、Claris FileMaker Data API を使用します。下図の Google Apps Script のコードでは、Claris FileMaker のレコードを作成し、受信した JSONデータをフィールドに設定しています。

この記事では、Claris FileMaker Data API のトークンの取得方法などの詳細な説明については割愛しています。Claris FileMaker Data API の詳細については、以下のリンクを参照してください。

参考:Claris FileMaker Data API ドキュメント
https://kbs192linux.kbscloud.jp//fmi/data/apidoc

ユーザーが LINE 画面から「こんにちは!」と送信すると、Claris FileMaker でレコードが作成され、先ほど Google Apps Script で確認したデータがフィールドに入力されていることが確認できました。

ユーザーへメッセージを返信する(応答メッセージを送る)

最後に、Claris FileMaker から送信してきたユーザーへメッセージを返信します。

ユーザーへの返信は、 Messaging API の「応答メッセージを送る」API を使用します。

参考:応答メッセージを送る(LINE Developers コンソール ドキュメント)
https://developers.line.biz/ja/reference/messaging-api/#send-reply-message

Google Apps Script から Claris FileMaker Data API でレコードを作成した後、Claris FileMaker のスクリプトでユーザーへの返信を行います。Google Apps Script のコードに「メッセージ送信」というスクリプトを実行させる記述を追加します。

この API を利用するためには、受け取った JSONデータに含まれている “replyToken” というプロパティの値を使用します。

{
  "destination": "U7e35fadaf69a2e83b1c986baa2963d1b",
  "events": [
    {
      "type": "message",
      "message": {
        "type": "text",
        "id": "493700155481784390",
        "quoteToken": "blACCw0U-cg9_-r_hVw9e1G-iu3XMWOG8mvQHPyntiS4vogR3EwrLQXEJtjCk2KTcl4npbApEJaW3M0SVqAeB3N2lOvKamsq3dUiLABduNCvDIZolH_aKHO3N2rp0x2OiCvkXzWM_Ep7SMsIzZbEqQ",
        "text": "こんにちは!"
      },
      "webhookEventId": "01HNVGZ7ANKZM8G9J39JYP5E68",
      "deliveryContext": {
        "isRedelivery": false
      },
      "timestamp": 1707099528071,
      "source": {
        "type": "user",
        "userId": "Ub685b39e4346790d0edf5362f59ec152"
      },
      "replyToken": "f95c849575c4447d908d0ef846efc9b9",
      "mode": "active"
    }
  ]
}

Claris FileMaker から送信する際のリクエストボディには、受信時と同じ “replyToken” を設定します。

{
    "replyToken":"f95c849575c4447d908d0ef846efc9b9",
    "messages":[
        {
            "type":"text",
            "text":"返信するメッセージ"
        }
    ]
}

ユーザーへ返信するメッセージは、messages 配列に設定します。”text” プロパティには返信するメッセージの内容を入力します。

{
    "replyToken":"f95c849575c4447d908d0ef846efc9b9",
    "messages":[
        {
            "type":"text",
            "text":"返信するテキストメッセージ"
        }
    ]
}

ユーザーが送信した「こんにちは!」というテキストメッセージを返信に含めるため、以下のように $replyMessage という変数を設定します。(変数 $json には Google Apps Script から受け取った JSON データが入っています)

“text” プロパティに、先ほど設定した $replyMessage 変数を入れます。

{
    "replyToken":"f95c849575c4447d908d0ef846efc9b9",
    "messages":[
        {
            "type":"text",
            "text":"$replyMessage 
        }
    ]
}

「こんにちは!」と送ってみると、LINE公式アカウントがユーザーが送ったメッセージを含んだ返信をすることを確認できました。

まとめ

今回は「Messaging API を利用したメッセージ受信」について解説しました。

ユーザーからのメッセージを受信することで、システム側でさまざまな対応が可能になります。対応の幅が広がることで、自動化の可能性も広がります。

今回の記事までで、 Messaging API の一通りの機能は紹介させていただきました。これまでの記事が Messaging API を利用する方にとって役立つものであれば幸いです。これまで Messaging API シリーズをご覧いただき、ありがとうございました。