私訊回覆

本文件說明如何以程式設計的方式將私訊回覆加入傳送訊息體驗。

運作方式

私訊回覆可以讓 Instagram 專業帳號傳送單一訊息給在 Instagram 專業帳號貼文、廣告貼文、連續短片或直播限時動態中留言的用戶。

當您透過 Instagram 圖形 API 收到 commentslive_comments Webhooks 通知,得知用戶在您的 Instagram 專業帳號貼文、廣告貼文、連續短片或直播限時動態中留言時,可以使用留言編號直接傳送私訊回覆給該用戶。如果用戶有追蹤商家的 Instagram 專業帳號,此回覆會投遞到用戶的收件匣資料夾中,如果用戶沒有追蹤該帳號,則會投遞到用戶的要求資料夾。

您可以在留言時間後 7 天內傳送這則私訊回覆,但 Instagram Live 例外,您只能在直播期間傳送私訊回覆。訊息中會包含用戶留言的貼文連結。

Webhooks

  • 舉辦 Instagram Live 限時動態時,請確認您的伺服器能夠處理因 live_comments Webhooks 事件(透過 Instagram API) 觸發而增加的通知負載量,而且您的系統能夠區分 live_commentscomments 通知。
  • 廣告貼文的 Instagram 圖形 API comments Webhooks 通知會包含廣告的編號和標題。您可能需要更新 Webhooks 伺服器,才能處理這些新欄位。

    當用戶對加強推廣的 Instagram 貼文或 Instagram 廣告貼文發表留言時,系統會在影音素材物件中傳回 ad_idad_title。如此可能會導致重複的 Webhook 通知。

限制

  • 只能傳送一則訊息給留言的用戶
  • 您必須在貼文、廣告貼文或連續短片的留言建立後 7 天內傳送訊息
  • Instagram Live 限時動態具有時效性,因此只能在直播期間對 Instagram Live 限時動態的留言傳送私訊回覆。直播結束後,就無法再傳送私訊回覆。
  • 您必須等用戶回覆私訊,才能在 24 小時的傳送訊息時限內繼續對話。
  • 一般存取權限應用程式的資料存取對象只限在該應用程式具有角色的用戶
  • 不支援對 IGTV 留言的私訊回覆
  • API v7.0 或舊版需要使用真人客服功能和真人客服訊息標籤來傳送私訊回覆

準備工作

本教學導覽假設您已閱讀 Messenger 平台總覽Instagram 傳訊總覽,且已實作所需的元件。

必備項目:

  • 連結至 Instagram 專業帳號的 Facebook 粉絲專頁編號
  • 您的私訊回覆傳送對象留言時的留言編號。編號來源包括貼文、廣告貼文和連續短片的 Instagram comments Webhooks,以及直播限時動態的 Instagram live_comments Webhooks(為避開速度限制,建議採用這個來源),或者是對 /page/feed 端點發出的 API 呼叫
  • instagram_manage_commentspages_messaging 權限,透過 Facebook 登入取得
  • 用戶要求的粉絲專頁存取權杖,該用戶能夠在與您的 Instagram 專業帳號連結的 Facebook 粉絲專頁上執行 MESSAGING 任務
  • 真人客服功能
  • 進階存取權限

傳送私訊回覆

若要傳送私訊回覆給在您的貼文、連續短片或直播限時動態中留言的用戶,請傳送 POST 要求到 /PAGE-ID/messages 端點,其中 recipient 參數包含留言編號,message 參數則包含您想要傳送的文字。

採用方便閱讀的格式。
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
}

另請參閱

開發人員支援