ตั้งค่า Webhooks สำหรับ Instagram

Webhooks สำหรับ Instagram ช่วยให้คุณได้รับการแจ้งเตือนแบบเรียลไทม์เมื่อมีผู้แสดงความคิดเห็นในอ็อบเจ็กต์สื่อของผู้ใช้แอพของคุณ เมื่อมีผู้ @กล่าวถึงผู้ใช้แอพ หรือเมื่อสตอรี่ของผู้ใช้แอพหมดอายุ

รับการแจ้งเตือนตามเวลาจริง

หากต้องการรับการแจ้งเตือน Webhooks ตามเวลาจริง ให้ปฏิบัติตามเงื่อนไขดังต่อไปนี้ให้ครบทุกข้อ

  • แอพของคุณต้องกำหนดค่า Webhooks สำหรับ Instagram และมีช่องที่ติดตามข้อมูลไว้ตามความเหมาะสมในแดชบอร์ดของแอพ
  • สำหรับแอพผู้บริโภค จะต้องอยู่ในโหมดเผยแพร่
  • สำหรับแอพธุรกิจ จะต้องมีสิทธิ์การอนุญาตระดับ Advanced Access คุณสามารถขอสิทธิ์การอนุญาต Advanced Access ตามที่แสดงอยู่ที่นี่

หากสิทธิ์การอนุญาตของแอพไม่มีสิทธิ์การเข้าถึงระดับ Advanced Access แอพจะไม่ได้รับการแจ้งเตือน Webhooks

  • ผู้ใช้แอพต้องให้สิทธิ์การอนุญาตที่เหมาะสมแก่แอพของคุณ (instagram_manage_insights สำหรับสตอรี่, instagram_manage_comments สำหรับการแสดงความคิดเห็นและการ @กล่าวถึง)
  • เพจที่เชื่อมต่อกับบัญชีของผู้ใช้แอพต้องเปิดใช้งานการติดตามข้อมูลของเพจ
  • ธุรกิจที่เชื่อมต่อกับเพจของผู้ใช้แอพต้องได้รับการตรวจสอบยืนยัน
  • เจ้าของอ็อบเจ็กต์สื่อที่มีความคิดเห็นหรือการ @กล่าวถึงปรากฏอยู่ต้องไม่ตั้งค่าบัญชีของตนเป็นส่วนตัว

ข้อจำกัด

  • การแจ้งเตือน Webhook เมื่อมีการแสดงความคิดเห็นในอัลบั้มจะไม่มี ID อัลบั้มรวมอยู่ด้วย สามารถรับ ID อัลบั้มได้โดยการสืบค้น ID ความคิดเห็นที่อยู่ใน Webhooks และส่งคำขอช่อง media
  • แอพจะไม่ได้รับการแจ้งเตือน Webhook หากสื่อที่มีความคิดเห็นหรือการ@กล่าวถึงปรากฏอยู่สร้างขึ้นโดยบัญชีที่ตั้งค่าเป็นส่วนตัว
  • เกณฑ์ชี้วัดข้อมูลเชิงลึกของสตอรี่ที่มีจำนวนต่ำกว่า 5 รายการ จะส่งคืนเป็น -1
  • แอพจะได้รับเฉพาะการแจ้งเตือน Webhooks สำหรับความคิดเห็นในสื่อบน Instagram แบบถ่ายทอดสดหากสื่ออยู่ระหว่างแพร่ภาพ
  • ไม่รองรับคลิป Reels
  • แอพของคุณต้องดำเนินการตรวจสอบแอพ (Advanced Access) ให้เสร็จเรียบร้อย เพื่อรับการแจ้งเตือน Webhooks สำหรับช่อง Webhooks comments และ live_comments

ขั้นตอนที่ 1: สร้างตำแหน่งข้อมูล

สร้างตำแหน่งข้อมูลที่ยอมรับและประมวลผล Webhooks ระหว่างการกำหนดค่า เลือกอ็อบเจ็กต์ API กราฟของ Instagram จากนั้นคลิก ตั้งค่า และสมัครรับข้อมูลใน ช่อง Instagram fields หนึ่งช่องหรือมากกว่า

ช่อง Instagram

ฟิลด์คำอธิบายสิทธิ์การอนุญาตที่จำเป็น

comments

ความคิดเห็นบนสื่อบน Instagram ที่ผู้ใช้ Instagram ของแอพของคุณเป็นเจ้าของ

ระบบจะส่งคืน ad_id และ ad_title ในอ็อบเจ็กต์สื่อ เมื่อมีผู้ใช้แสดงความคิดเห็นในโพสต์บน Instagram หรือโพสต์โฆษณาบน Instagram ที่ได้รับการโปรโมท ซึ่งการดำเนินการนี้อาจส่งผลให้มีการแจ้งเตือน Webhook ซ้ำได้

live_comments

ความคิดเห็นบน สื่อบน Instagram ที่เป็นวิดีโอถ่ายทอดสด ซึ่งผู้ใช้ Instagram ของแอพของคุณเป็นเจ้าของ

mentions

การ@กล่าวถึงสำหรับผู้ใช้ Instagram ในความคิดเห็นในแอพของคุณ

story_insights

เกณฑ์ชี้วัดที่อธิบายการโต้ตอบบนสตอรี่ ส่งหลังจากสตอรี่หมดอายุไปแล้ว 1 ชั่วโมง

ขั้นตอนที่ 2: เปิดใช้งานงานการติดตามข้อมูลของเพจ

แอพของคุณต้องเปิดใช้งานการติดตามข้อมูลจากเพจบนเพจที่เชื่อมต่อกับบัญชีของผู้ใช้แอพ โดยส่งคำขอ POST ไปยังจุดเชื่อมโยงแอพที่ติดตามข้อมูลจากเพจ และติดตามข้อมูลจากช่องใดก็ได้ของเพจ

ข้อกำหนดของตำแหน่งข้อมูล

  • โทเค็นการเข้าถึงเพจของผู้ใช้แอพ

รูปแบบคำสั่งของคำขอ

POST /{page-id}/subscribed_apps
  ?access_token={access-token}
  &subscribed_fields={fields}

พารามิเตอร์การส่งคำขอ

ตัวยึดตำแหน่งค่า คำอธิบายค่า

{page_id}

ID ของเพจที่เชื่อมต่อกับบัญชีของผู้ใช้แอพ

{access_token}

โทเค็นการเข้าถึงเพจของผู้ใช้แอพ

{fields}

ช่องเพจ (เช่น: feed)

แอพของคุณจะไม่ได้รับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงในช่องนั้น เว้นแต่คุณจะกำหนดค่าการติดตามข้อมูลของเพจในแดชบอร์ดของแอพและติดตามข้อมูลในช่องนั้น

ตัวอย่างคำขอ

curl -i -X POST \
  "https://graph.facebook.com/v19.0/1755847768034402/subscribed_apps?subscribed_fields=feed&access_token=EAAFB..."
ตัวอย่างการตอบกลับ
{
  "success": true
}

การใช้งานทั่วไป

บันทึกข้อมูลเชิงลึกของสตอรี่

หากคุณสมัครรับข้อมูลช่อง story_insights เราจะส่งการแจ้งเตือน Webhook ที่มีเกณฑ์ชี้วัดการโต้ตอบของผู้ใช้บนสตอรี่ไปยังตำแหน่งข้อมูลของคุณหลังจากที่สตอรี่หมดอายุลง

ตัวอย่างเพย์โหลดข้อมูลเชิงลึกของสตอรี่

[
  {
    "entry": [
      {
        "changes": [
          {
            "field": "story_insights",
            "value": {
              "media_id": "18023345989012587",
              "exits": 1,
              "replies": 0,
              "reach": 17,
              "taps_forward": 12,
              "taps_back": 0,
              "impressions": 28
            }
          }
        ],
        "id": "17841405309211844",  // Instagram Business or Creator Account ID
        "time": 1547687043
      }
    ],
    "object": "instagram"
  }
]

ตอบกลับความคิดเห็นที่มีการ @กล่าวถึง

หากคุณติดตามข้อมูลจากช่อง mentions เราจะส่งการแจ้งเตือน Webhooks ไปยังตำแหน่งข้อมูลของคุณเมื่อใดก็ตามที่ผู้ใช้ Instagram @กล่าวถึงบัญชี Instagram Business หรือบัญชีครีเอเตอร์ในความคิดเห็นหรือคำบรรยาย

ต่อไปนี้คือตัวอย่างเพย์โหลดการแจ้งเตือน Webhooks การแสดงความคิดเห็นสำหรับบัญชี Instagram Business (17841405726653026):

ตัวอย่างเพย์โหลดการ @กล่าวถึงในความคิดเห็น

[
  {
    "entry": [
      {
        "changes": [
          {
            "field": "mentions",
            "value": {
              "comment_id": "17894227972186120",
              "media_id": "17918195224117851"
            }
          }
        ],
        "id": "17841405726653026",
        "time": 1520622968
      }
    ],
    "object": "instagram"
  }
]

รับเนื้อหาของความคิดเห็น

หากต้องการดูเนื้อหาของความคิดเห็น ให้ใช้คุณสมบัติ comment_id เพื่อสืบค้นจุดเชื่อมโยง GET /{ig-user-id}/mentioned_comment:

ตัวอย่างการสืบค้น

GET https://graph.facebook.com/17841405726653026 ?fields=mentioned_comment.comment_id(17894227972186120) 

ตัวอย่างการตอบกลับ

{
  "mentioned_comment": {
    "timestamp": "2018-03-20T00:05:29+0000",
    "text": "@bluebottle challenge?",
    "id": "17894227972186120"
  },
  "id": "17841405726653026"
}

วิเคราะห์เพย์โหลดและการตอบกลับ

เมื่อคุณได้รับการตอบกลับแล้ว ให้แยกวิเคราะห์เพย์โหลดของคุณสมบัติ text เพื่อพิจารณาว่าต้องการตอบกลับความคิดเห็นนั้นหรือไม่ หากต้องการตอบกลับ ให้ใช้ caption_id ของเพย์โหลดการแจ้งเตือน Webhook และค่าของคุณสมบัติ media_id ในการสืบค้นตำแหน่งข้อมูล POST /{ig-user-id}/mentions:

ตัวอย่างการสืบค้น

curl -i -X POST \
  -d "comment_id=17894227972186120" \
  -d "media_id=17918195224117851" \
  -d "message=Challenge%20accepted!" \
  -d "access_token={access-token}" \
  "https://graph.facebook.com/17841405726653026/mentions"

ตัวอย่างการตอบกลับ

{
  "id": "17911496353086895"
}

ตอบกลับการ @กล่าวถึงในคำบรรยาย

หากคุณติดตามข้อมูลจากช่อง mentions เราจะส่งการแจ้งเตือน Webhooks ไปยังตำแหน่งข้อมูลของคุณเมื่อใดก็ตามที่มีผู้ใช้ @กล่าวถึงบัญชี Instagram Business หรือบัญชีครีเอเตอร์ในความคิดเห็นหรือคำบรรยายในอ็อบเจ็กต์สื่อที่ไม่ใช่ของธุรกิจหรือครีเอเตอร์นั้นๆ

ต่อไปนี้คือตัวอย่างเพย์โหลดการแจ้งเตือน Webhooks การ @กล่าวถึงในคำบรรยายสำหรับบัญชี Instagram Business (17841405726653026):

ตัวอย่างการแจ้งเตือน Webhooks การ@กล่าวถึงในคำบรรยาย

[
  {
    "entry": [
      {
        "changes": [
          {
            "field": "mentions",
            "value": {
              "media_id": "17918195224117851"
            }
          }
        ],
        "id": "17841405726653026",
        "time": 1520622968
      }
    ],
    "object": "instagram"
  }
]

รับเนื้อหาของคำบรรยาย

หากต้องการดูเนื้อหาของคำบรรยาย ให้ใช้คุณสมบัติ media_id เพื่อสืบค้นจุดเชื่อมโยง GET /{ig-user-id}/mentioned_media:

ตัวอย่างการสืบค้น

GET https://graph.facebook.com/17841405726653026 ?fields=mentioned_media.media_id(17918195224117851){caption,media_type} 

ตัวอย่างการตอบกลับ

{
  "mentioned_media": {
    "caption": "@bluebottle There can be only one!",
    "media_type": "IMAGE",
    "id": "17918195224117851"
  },
  "id": "17841405726653026"
}

แยกวิเคราะห์เพย์โหลดและการตอบกลับ

เมื่อคุณได้รับการตอบกลับแล้ว ให้แยกวิเคราะห์เพย์โหลดของคุณสมบัติ caption เพื่อพิจารณาว่าต้องการตอบกลับความคิดเห็นนั้นหรือไม่ หากต้องการตอบกลับ ให้ใช้คุณสมบัติ media_id ของ Webhooks ในการสืบค้นตำแหน่งข้อมูล POST /{ig-user-id}/mentions:

ตัวอย่างการสืบค้น

curl -i -X POST \
  -d "media_id=17918195224117851" \
  -d "message=MacLeod%20agrees!" \
  -d "access_token={access-token}" \
  "https://graph.facebook.com/17841405726653026/mentions"

ตัวอย่างการตอบกลับ

{
  "id": "17911496353086895"
}