質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.21%

LINE Messaging APIで自分と友達になっているアカウントに対してメッセージを一括送信したい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 5,979

rnnka

score 15

PHPを使用して、メッセージを送信するアカウント(以下発信側)と友達になっているアカウントに対してAPIを通じてメッセージを送りたいと考えております。
Botとしての運用ではなく、全体に対してメッセージを一方的に送る(アカウントからメッセージを受け取っても返信はしないという仕様です。)
既に、1人を対象にして送る部分は完成しており、動作も確認済みです。

実際のコード

// POSTデータを設定してJSONにエンコード
$post = [
    'to' => 'LINE developerで確認したユーザーID',
    'messages' => [
        [
            'type' => 'text',
            'text' => $_POST['message'], //フォームを用意して、そのフォームで入力されたものを送信する予定です
        ],
    ],
];
$post = json_encode($post);

// HTTPリクエストを設定
$ch = curl_init('https://api.line.me/v2/bot/message/push');
$options = [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_BINARYTRANSFER => true,
    CURLOPT_HEADER => true,
    CURLOPT_POSTFIELDS => $post,
];
curl_setopt_array($ch, $options);

// 実行
$result = curl_exec($ch);

// エラーチェック
$errno = curl_errno($ch);
if ($errno) {
    return;
}

質問したい内容

LINE Messaging APIのリファレンスを読みましたが、複数のアカウントに対してメッセージを送ることは可能であることは確認しました。
その上で、

  • 友達かどうかはAPIを使用して取得→該当したアカウントにメッセージを送るという手法が良いのでしょうか。
  • 指定したWebhook URLから、そのログから友達であるアカウントを記録、もしくは取得するという手法が良いのでしょうか。

上記2つのやり口があると思うのですが、どちらにせよ方法がうまく思いつかないのが現状です。
もし過去に行ったことがあれば、ご教示いただきたいです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

以下の流れで、実現できると思います。

  1. 友だちになった or メッセージが送信されたタイミングでwebhook URLに対して、ユーザIDを含んだデータが送信されるので保存しておく
  2. 1を multicast API で指定することで、一括で複数ユーザに送信する

注意点としては、multicast API で1回に送れる人数は150人が最大なので
対象がそれ以上の場合は複数回実行する必要があります。

参考:  
https://developers.line.biz/ja/reference/messaging-api/#anchor-d2c981e5b9ab6aaca253183f323798541a101b5f  
https://developers.line.biz/ja/reference/messaging-api/#anchor-fa99cafa93ac4294d83cd7b89b60c822c1dafa9b

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/17 10:30

    ご回答と参考URL、有り難うございます。
    リファレンスを読みましたら、友達情報取得のAPIを使用するより、Webhook URL宛に送信されたデータをこちら側で保存する方が一番現実的ですね、、、
    Webhookに送信されたデータをキャッチするところまでできましたので、あとはこちら側で上限数を確認しながら送信してみます。
    再度になりますが、ご教示感謝致します。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる
  • トップ
  • PHPに関する質問
  • LINE Messaging APIで自分と友達になっているアカウントに対してメッセージを一括送信したい