非公開返信

このドキュメントでは、プログラムを使ってメッセージエクスペリエンスに非公開返信を追加する方法について説明します。

処理の概要

非公開返信を使えば、Instagramのプロアカウントで、Instagramプロの投稿、広告投稿、リール動画、ライブストーリーに対してコメントした個人に、単一のメッセージを返信することができます。

InstagramグラフAPI経由で、Instagramプロの投稿、広告投稿、リール動画、ライブストーリーに対してコメントがあったことを知らせるcommentsまたはlive_commentsのWebhooks通知を受け取った場合、コメントした人にコメントIDを使って非公開返信を直接送信できます。この返信は、その人がビジネスのInstagramプロアカウントをフォローしている場合はInboxフォルダー、その人がそのアカウントをフォローしていない場合はRequestフォルダーの中に配信されます。

この非公開の返信を送信できるのは、コメントの作成日から7日以内です。ただし、Instagram Liveの場合はライブ配信中にしか非公開の返信を送信できません。返信メッセージには、その人がコメントした投稿へのリンクが含まれます。

Webhooks

  • Instagram Liveストーリーをホスティングする際は、Instagram APIを通じてlive_comments Webhooksイベントによりトリガーされる通知によって増加する負荷をサーバーが処理できること、また、システムでlive_commentscommentsの通知を区別できることを確認してください。
  • 広告投稿のInstagramグラフAPI comments Webhooks通知には、広告のIDとタイトルが含まれます。これらの新しいフィールドに対処するには、Webhooksサーバーのアップデートが必要な場合があります。

    宣伝されたInstagram投稿やInstagram広告投稿にコメントが付けられると、ad_idad_titleがメディアオブジェクトで返されます。そのため、Webhook通知が重複する可能性があります。

制限

  • コメントした人に送信できるメッセージは、1つだけです
  • 投稿、広告投稿、またはリールに対するコメントの場合、コメント作成時点から7日以内にメッセージを送信する必要があります
  • Instagram Liveストーリーは一時的なものであるため、Instagram Liveストーリーのコメントに対する非公開返信は、ライブ配信の間しか送信できません。ライブ配信が終了すると、非公開返信は送信できなくなります。
  • 非公開メッセージにだれかが返信した場合にのみ、24時間メッセージ枠内にスレッドを継続できます。
  • 標準アクセスアプリからアクセスできるのは、そのアプリに対して役割のある人のデータだけです
  • IGTVコメントに対する非公開返信はサポートされていません
  • API v7.0以前の場合、非公開返信のためにヒューマンエージェント機能とヒューマンエージェントメッセージタグが必要です

開始する前に

このチュートリアルは、Messengerプラットフォームの概要Instagramメッセージの概要を読んでいること、および必要なコンポーネントが実装されていることを前提としています。

以下が必要です。

  • InstagramプロアカウントにリンクされているFacebookページのID
  • 非公開返信の送信先となる人によるコメントのID。IDは、投稿と広告投稿とリールの場合はInstagram comments Webhooksから、ライブストーリーズの場合はInstagram live_comments Webhooksから(レート制限回避のためおすすめ)、または/page/feedエンドポイントへのAPI呼び出しから取得できます
  • Facebookログインにより取得された、instagram_manage_commentspages_messagingのアクセス許可
  • InstagramプロアカウントにリンクされているFacebookページでMESSAGINGタスクを実行できるユーザーがリクエストした、ページアクセストークン
  • ヒューマンエージェント機能
  • アドバンスアクセス

非公開返信を送信する

投稿、リール動画、ライブストーリーにコメントしたユーザーに非公開返信を送信するには、recipientパラメーターにコメントIDを、messageパラメーターに送信するテキストを指定して、POSTリクエストを/PAGE-ID/messagesエンドポイントに送信します。

読みやすくするためにフォーマットしています。
curl -i -X POST "https://graph.facebook.com/PAGE-ID/messages
  ?recipient: { comment_id: COMMENT-ID }
  &message: { "text": "Thanks for reaching out, how can I help?" }
  &access_token=PAGE-ACCESS-TOKEN"
GraphRequest request = GraphRequest.newPostRequest(
  accessToken,
  "/1353269864728879/messages",
  new JSONObject("{\"recipient\":\"{comment_id: 18000158536435933}\",\"message\":\"{\\\"text\\\": \\\"It is cool\\\"}\"}"),
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/1353269864728879/messages"
           parameters:@{ @"recipient": @"{comment_id: 18000158536435933}",@"message": @"{"text": "It is cool"}",}
           HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/1353269864728879/messages',
  'POST',
  {"recipient":"{comment_id: 18000158536435933}","message":"{\"text\": \"It is cool\"}"},
  function(response) {
      // Insert your code here
  }
);

成功すると、アプリは次の応答を受け取ります。

{
  "recipient_id": "526...",   // The Instagram-scoped ID 
  "message_id": "aWdfZ..."    // The message ID for your private reply
}

参考情報

開発者サポート