คำขอแบบแบตช์ที่ไม่ซิงโครไนซ์

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

วิธีจัดการโฆษณาที่มีประสิทธิภาพที่สุดคือการดำเนินการผ่านคำขอแบบแบตช์ โดยใช้เพื่อทำการส่งคำขอบางประเภทที่พบบ่อย

คำขอแบบไม่ซิงโครไนซ์

ตัวอย่างเช่น รับสถานะของชุดคำขอแบบไม่ซิงโครไนซ์ ดังนี้

curl -G \
  -d 'fields=name,success_count,error_count,is_completed' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v21.0/<REQUEST_SET_ID>

คำขอนี้จะส่งคืนสถานะโดยรวมของชุดคำขอแบบไม่ซิงค์มาให้คุณในรูปแบบของอ็อบเจ็กต์ JSON บางช่องอาจไม่ปรากฏโดยค่าเริ่มต้น หากต้องการให้การสืบค้นแสดงช่องที่ไม่ใช่ค่าเริ่มต้น ให้ระบุใน fields เช่น fields=id,owner_id,name,total_count,success_count,error_count,is_completed

ชื่อ คำอธิบาย

id

ประเภท: จำนวนเต็ม

แสดงตามค่าเริ่มต้น

id ของชุดคำขอแบบไม่ซิงค์ปัจจุบัน

owner_id

ประเภท: จำนวนเต็ม

แสดงตามค่าเริ่มต้น

อ็อบเจ็กต์ที่เป็นเจ้าของชุดคำขอแบบไม่ซิงค์นี้ สำหรับคำขอแบบไม่ซิงค์บนโฆษณา owner_id คือ ID บัญชี

name

ประเภท: สตริง

แสดงตามค่าเริ่มต้น

ชื่อของชุดคำขอแบบไม่ซิงค์นี้

is_completed

ประเภท: บูลีน

แสดงตามค่าเริ่มต้น

คำขอแบบไม่ซิงค์อยู่ในชุดนี้ครบแล้ว

total_count

ประเภท: จำนวนเต็ม

ไม่แสดงตามค่าเริ่มต้น

จำนวนคำขอทั้งหมดในชุดคำขอนี้

initial_count

ประเภท: จำนวนเต็ม

ไม่แสดงตามค่าเริ่มต้น

จำนวนคำขอที่ยังไม่ได้ดำเนินการ

in_progress_count

ประเภท: จำนวนเต็ม

ไม่แสดงตามค่าเริ่มต้น

จำนวนคำขอที่อยู่ระหว่างดำเนินการ

success_count

ประเภท: จำนวนเต็ม

ไม่แสดงตามค่าเริ่มต้น

จำนวนคำขอที่ดำเนินการเสร็จแล้วและสำเร็จ

error_count

ประเภท: จำนวนเต็ม

ไม่แสดงตามค่าเริ่มต้น

จำนวนคำขอที่ดำเนินการเสร็จแล้วแต่ไม่สำเร็จ

canceled_count

ประเภท: จำนวนเต็ม

ไม่แสดงตามค่าเริ่มต้น

จำนวนคำขอที่ผู้ใช้ยกเลิก

notification_uri

ประเภท: สตริง

ไม่แสดงตามค่าเริ่มต้น

URI การแจ้งเตือนสำหรับชุดคำขอแบบไม่ซิงค์นี้

notification_mode

ประเภท: สตริง

ไม่แสดงตามค่าเริ่มต้น

วิธีในการรับการแจ้งเตือน ค่าที่ถูกต้อง ได้แก่

  • OFF – ไม่มีการแจ้งเตือน
  • ON_COMPLETE – ส่งการแจ้งเตือนเมื่อดำเนินการตามคำขอครบทั้งชุดแล้ว

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

curl -G \
  -d 'fields=id,status' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v21.0/<REQUEST_SET_ID>/requests   

การดำเนินการนี้จะส่งคืนสถานะและรายละเอียดของแต่ละคำขอที่อยู่ในชุดคำขอแบบไม่ซิงค์ สำหรับการสร้างโฆษณาแบบไม่ซิงค์ ให้ส่ง 1 คำขอเพื่อสร้างโฆษณา 1 ชิ้น ระบบจะใช้พารามิเตอร์สถานะเพื่อกรองคำขอตามสถานะของคำขอนั้น และจะเป็นการผสมรูปแบบใดก็ได้ระหว่างค่าต่างๆ ต่อไปนี้

  • initial – ยังไม่ได้ดำเนินการ
  • in_progress – กำลังดำเนินการตามคำขอ
  • success – ดำเนินการตามคำขอเสร็จแล้วและสำเร็จ
  • error – ดำเนินการตามคำขอเสร็จแล้วแต่ไม่สำเร็จ
  • Canceled – ผู้ใช้ยกเลิกคำขอ

การตอบกลับจะเป็นอาร์เรย์ JSON พร้อมช่องที่เป็นค่าเริ่มต้น หากต้องการให้แสดงช่องที่ไม่ใช่ค่าเริ่มต้น ให้ระบุใน fields เช่น fields=id,scope_object_id,status,result,input,async_request_set

ชื่อ คำอธิบาย

id

ประเภท: จำนวนเต็ม

แสดงตามค่าเริ่มต้น

ID ของแต่ละคำขอแบบไม่ซิงค์

scope_object_id

ประเภท: จำนวนเต็ม

แสดงตามค่าเริ่มต้น

ID หลักของอ็อบเจ็กต์ที่คำขอนี้สร้างขึ้น หากคุณสร้างโฆษณา นี่คือ ID ชุดโฆษณาสำหรับโฆษณาใหม่

status

ประเภท: สตริง

แสดงตามค่าเริ่มต้น

สถานะของคำขอแบบไม่ซิงค์นี้ ตัวเลือกมีดังนี้

  • Initial – ยังไม่ได้ดำเนินการ
  • in_progress – กำลังดำเนินการตามคำขอ
  • Success – ดำเนินการตามคำขอเสร็จแล้วและสำเร็จ
  • Error – ดำเนินการตามคำขอเสร็จแล้วแต่ไม่สำเร็จ
  • Canceled – ผู้ใช้ยกเลิกคำขอ

result

ประเภท: อาร์เรย์

ไม่แสดงตามค่าเริ่มต้น

หากดำเนินการตามคำขอเสร็จ ระบบจะแสดงผลลัพธ์ของคำขอ
เมื่อดำเนินการสำเร็จ ผลลัพธ์จะเหมือนกับคำขอแบบไม่ซิงค์ ตัวอย่างเช่น หากคุณสร้างโฆษณา ผลลัพธ์สำหรับแต่ละคำขอคือ ID ของโฆษณาใหม่ หากเกิดข้อผิดพลาด ระบบจะแสดงอาร์เรย์ต่อไปนี้

  • error_code – รหัสข้อผิดพลาดที่ส่งคืน
  • error_message – ข้อความแสดงข้อผิดพลาด

input

ประเภท: อ็อบเจ็กต์

ไม่แสดงตามค่าเริ่มต้น

อินพุตเดิมของคำขอแบบไม่ซิงค์นี้ หากคุณสร้างโฆษณา อินพุตคือ adgroup_spec

async_request_set

ประเภท: อ็อบเจ็กต์

ไม่แสดงตามค่าเริ่มต้น

ชุดคำขอแบบไม่ซิงค์ที่มีคำขอแยกต่างหากนี้

รับรายละเอียดคำขอ

หากต้องการรับรายละเอียดของคำขอแบบไม่ซิงค์ที่เจาะจง ให้ทำการเรียกดังนี้

curl -G \
  -d 'fields=id,status' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v21.0/<REQUEST_SET_ID>/requests   

การดำเนินการนี้จะส่งคืนอ็อบเจ็กต์ JSON พร้อมช่องตามที่ระบุข้างต้น

แสดงรายการชุดคำขอสำหรับบัญชี

คุณสามารถสร้างชุดคำขอโฆษณาแบบไม่ซิงค์ได้หลายรายการ วิธีสืบค้นชุดคำขอโฆษณาแบบไม่ซิงค์ทั้งหมดสำหรับบัญชีโฆษณามีดังนี้

curl -G \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/asyncadrequestsets  

การดำเนินการนี้จะส่งคืนอาร์เรย์ JSON ที่แสดงอ็อบเจ็กต์ชุดคำขอแบบไม่ซิงค์ แต่ละอ็อบเจ็กต์จะเหมือนกับที่ระบุไว้ในส่วนชุดคำขอแบบไม่ซิงค์ คุณสามารถกรองผลลัพธ์ด้วย is_completed หากกรองด้วย is_completed=true คุณจะเห็นเฉพาะชุดคำขอแบบไม่ซิงค์ที่เสร็จสมบูรณ์แล้วเท่านั้น

แสดงรายการคำขอสำหรับชุดโฆษณา

คุณสามารถเรียกข้อมูลแบบไม่ซิงค์เพื่อสร้างโฆษณาในชุดโฆษณาต่างๆ ได้ หากต้องการรับสถานะสำหรับชุดโฆษณาแต่ละชุด ให้รับคำขอสร้างโฆษณาทั้งหมดสำหรับชุดโฆษณา 1 ชุด ดังนี้

curl -G \
  -d 'fields=id,status' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v21.0/<AD_SET_ID>/asyncadrequests

การดำเนินการนี้จะส่งคืนอาร์เรย์ JSON ของอ็อบเจ็กต์คำขอแบบไม่ซิงค์ โดยสถานะ ตัวกรองช่อง และช่องคำขอแบบไม่ซิงค์จะเหมือนกับ API https://graph.facebook.com/&lt;API_VERSION>/&lt;REQUEST_SET_ID>/requests

อัพเดตชุดคำขอ

คุณสามารถเปลี่ยน name, notification_uri และ notification_mode สำหรับชุดคำขอแบบไม่ซิงค์

curl \
  -F 'name=New Name' \
  -F 'notification_mode=OFF' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v21.0/<REQUEST_SET_ID>

การดำเนินการนี้จะส่งคืน true เมื่ออัพเดตสำเร็จ ทั้งนี้ คุณสามารถเปลี่ยนได้เฉพาะ notification_uri และ notification_mode ก่อนส่งการแจ้งเตือน

ยกเลิกคำขอ

คุณสามารถยกเลิกคำขอแบบไม่ซิงค์ได้ แต่จะยกเลิกคำขอได้เฉพาะในกรณีที่ยังไม่ได้ดำเนินการตามคำขอเท่านั้น

curl -X DELETE \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v21.0/<REQUEST_ID>

ระบบจะส่งคืนค่าเป็น true เมื่อยกเลิกสำเร็จ และคุณยังสามารถยกเลิกคำขอที่ยังไม่ได้ดำเนินการในชุดคำขอแบบไม่ซิงค์ได้เช่นกัน ดังนี้

curl -X DELETE \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v21.0/<REQUEST_SET_ID>

ระบบจะส่งคืนค่าเป็น true เมื่อยกเลิกสำเร็จ

ตัวอย่างแบบไม่ซิงค์

การรับข้อมูลสถานะของคำขอแบบไม่ซิงค์ที่ต้องการมีวิธีดังนี้

//pretty=true for command line readable output
curl -G \
-d "id=6012384857989" \
-d "pretty=true" \
-d "access_token=_____" \
"https://graph.facebook.com/v21.0/"

ระบบจะส่งคืนค่าดังนี้

{
   "id": "6012384857989",
   "owner_id": 12345,
   "name": "testasyncset",
   "is_completed": true
}

รับผลลัพธ์ของคำขอ

curl -G \
-d "id=6012384857989" \
-d "pretty=true" \
-d "fields=result" \
-d "access_token=_____" \
"https://graph.facebook.com/v21.0/requests"

ส่งคืนผลลัพธ์ดังนี้

{
   "data": [
      {
         "result": {
            "id": "6012384860989"
         },
         "id": "6012384858389"
      },
      {
         "result": {
            "id": "6012384858789"
         },
         "id": "6012384858189"
      }
   ],
   "paging": {
      "cursors": {
         "after": "___",
         "before": "___"
      }
   }
}

รับรายการชุดคำขอสำหรับบัญชีโฆษณา ดังนี้

curl -G \
-d "is_completed=1" \
-d "pretty=true" \
-d "access_token=___" \
"https://graph.facebook.com/v21.0/act_71597454/asyncadrequestsets"

ส่งคืนผลลัพธ์ดังนี้

{
   "data": [
      {
         "id": "6012384253789",
         "owner_id": 71597454,
         "name": "testasyncset",
         "is_completed": true
      },
   ],
   "paging": {
      "cursors": {
         "after": "___",
         "before": "___"
      }
   }
}

การรับรายการชุดคำขอสำหรับแคมเปญมีวิธีดังนี้

curl -G \
-d "status=SUCCESS,ERROR" \
-d "pretty=true" \
-d "access_token=___" \
"https://graph.facebook.com/v21.0/6008248529789/asyncadrequests"
    

ระบบจะส่งคืนค่าดังนี้

{
   "data": [
      {
         "id": "6012384951789",
         "scope_object_id": 6008248529789,
         "status": "SUCCESS"
      },
   ],
   "paging": {
      "cursors": {
         "after": "___",
         "before": "___"
      }
   }
}

การส่งคำขอแบบแบตช์

เมื่อใช้คำขอแบบแบตช์ คุณจะสามารถรวมการเรียกใช้ API กราฟจำนวนหนึ่งเข้าด้วยกันเป็นคำขอ HTTP เพียงรายการเดียวได้ โดย API การตลาดจะแบ่งคำขอนี้เป็นคำขอหน่วยประกอบของ API เอง วิธีนี้ทำให้คำขอแบบแบตช์เป็นวิธีโต้ตอบกับ API การตลาดที่มีประสิทธิภาพที่สุด หากคุณต้องการประสิทธิภาพที่สูงยิ่งขึ้น ให้สร้างคำขอแบบแบตช์คู่กันโดยใช้เธรดการประมวลผลแบบแยกต่างหาก

คำขอแบบแบตช์แต่ละรายการสามารถใส่คำขอได้สูงสุด 50 รายการ หากเป็นการสร้างโฆษณา คุณควรใส่โฆษณาไม่เกิน 10 ชิ้นต่อแบตช์

คำขอแบบแบตช์สำหรับโฆษณาชิ้นงานโฆษณา และชุดโฆษณาจะคล้ายคลึงกันมาก ดังนั้นเราจะกล่าวถึงทั้งสองอย่างนี้ไปพร้อมกัน โปรดดูข้อมูลเพิ่มเติมที่คำขอแบบแบตช์สำหรับ API และ ETag

สร้างโฆษณา

คุณสามารถใส่ชิ้นงานโฆษณาและอ็อบเจ็กต์โฆษณาอื่นๆ ลงในคำขอแบบแบตช์ได้ ตัวอย่างเช่น คุณสามารถสร้างโฆษณา 3 ชิ้นโดยใช้ชิ้นงานโฆษณา 1 ชิ้น และข้อมูลจำเพาะของการกำหนดเป้าหมายที่ต่างกัน 3 รายการ โดยคุณจะต้องกำหนดชิ้นงานโฆษณาก่อน จากนั้นจึงอ้างอิงงานชิ้นนั้นเมื่อคุณสร้างโฆษณาแต่ละชิ้น ดังนี้

curl -F 'access_token=______' 
  -F 'test1=@./test1.jpg'  
  -F 'batch=[
             {
              "method": "POST",
              "name": "create_adimage",
              "relative_url": "<API_VERSION>/act_187687683/adimages",
              "attached_files": "test1"
             },
             {
              "method": "POST",
              "name": "create_creative",
              "relative_url": "<API_VERSION>/act_187687683/adcreatives",
              "attached_files": "test1",
              "body": "name=sample creative&object_story_spec={\"link_data\": {\"image_hash\": \"{result=create_adimage:$.images.*.hash}\", \"link\": \"https://www.test12345.com\", \"message\": \"this is a sample message\"}, \"page_id\":\"12345678\"}&degrees_of_freedom_spec={\"creative_features_spec\": {\"standard_enhancements\": {\"enroll_status\": \"OPT_OUT\"}}}"
             },
             {
              "method": "POST",
              "relative_url": "<API_VERSION>/act_187687683/ads",
              "body": "adset_id=6004163746239&redownload=1&status=PAUSED&optimization_goal=REACH&billing_event=IMPRESSIONS&&creative={\"creative_id\":\"{result=create_creative:$.id}\"}&targeting={\"countries\":[\"US\"]}&name=test1"
             },
             {
              "method": "POST",
              "relative_url": "<API_VERSION>/act_187687683/ads",
              "body": "adset_id=6004163746239&redownload=1&status=PAUSED&optimization_goal=REACH&billing_event=IMPRESSIONS&&creative={\"creative_id\":\"{result=create_creative:$.id}\"}&targeting={\"countries\":[\"US\"]}&name=test2"
             },
             {
              "method": "POST",
              "relative_url": "<API_VERSION>/act_187687683/ads",
              "body": "adset_id=6004163746239&redownload=1&status=PAUSED&optimization_goal=REACH&billing_event=IMPRESSIONS&&creative={\"creative_id\":\"{result=create_creative:$.id}\"}&targeting={\"countries\":[\"US\"]}&name=test3"
             }
            ]' https://graph.facebook.com/

การตอบกลับนี้มีรหัสการตอบกลับของแต่ละคำขอและการตอบกลับ API กราฟมาตรฐาน ดูรายละเอียดที่การสร้างคำขอ API หลายรายการ

กระบวนการคำขอแบบแบตช์จะใช้รูปแบบนิพจน์ JSONPath ในการอ้างอิงถึงคำขอก่อนหน้า

อัพเดตโฆษณา

คุณสามารถอัพเดตโฆษณาได้ด้วยคำขอแบบแบตช์ วิธีอัพเดตราคาประมูลสำหรับโฆษณา 3 ชิ้นมีดังนี้

curl -F 'access_token=____' 
  -F 'batch=[
             {
              "method": "POST",
              "relative_url": "<API_VERSION>/6004251715639",
              "body": "redownload=1&name=new name"
             },
             {
              "method": "POST",
              "relative_url": <API_VERSION>/v6004251716039",
              "body": "redownload=1&name=new name"
             },
             {
              "method": "POST",
              "relative_url": "<API_VERSION>/6004251715839",
              "body": "redownload=1&name=new name"
             }
            ]' https://graph.facebook.com

หากคุณรวม redownload=1 ไว้ใน URL ที่เกี่ยวข้อง คุณจะได้รับรายละเอียดทั้งหมดของโฆษณา ซึ่งรวมถึง ID โฆษณาด้วย วิธีนี้จะช่วยระบุโฆษณาที่คุณอัพเดตแล้ว

หากต้องการอัพเดตชิ้นงานโฆษณา ให้ระบุชิ้นงานโฆษณาทั้งหมด หรือแจ้ง ID ชิ้นงานโฆษณาใหม่ ที่ต้องทำเช่นนี้เพราะชิ้นงานโฆษณาที่สร้างขึ้นมาแล้วจะไม่สามารถแก้ไขได้ คุณจะแก้ไขได้เพียงชื่อและสถานะการทำงานของโฆษณาเท่านั้น

การอ่านโฆษณา

หากคุณมีโฆษณาจำนวนมาก ให้แบ่งคำขอออกเป็นหลายๆ คำขอภายในคำขอแบบแบตช์ ดังนี้

curl -F 'access_token=____' 
  -F 'batch=[
             {
              "method": "GET",
              "relative_url": "<API_VERSION>/?ids=6003356308839,6004164369439&fields=<comma separated list of fields>"
             },
             {
              "method": "GET",
              "relative_url": "<API_VERSION>/6003356307839/ads&fields=<comma separated list of fields>"
             },
             {
              "method": "GET",
              "relative_url": "<API_VERSION>/act_187687683/ads?adset_ids=[6003356307839, 6004164259439]&fields=<comma separated list of fields>"
             }
            ]' https://graph.facebook.com

6003356308839 และ 6004164369439 คือ ID โฆษณา ส่วน 6003356307839 และ 6004164259439 คือ ID ชุดโฆษณา

ข้อมูลเชิงลึกของโฆษณา

หากคุณมีข้อมูลเชิงลึกของโฆษณาจำนวนมาก ให้แบ่งคำขอออกเป็นหลายๆ คำขอภายในคำขอแบบแบตช์ ดังนี้

curl -F 'access_token=____' 
  -F 'batch=[
             {
              "method": "GET",
              "relative_url": "<API_VERSION>/act_19643108/insights?filtering=[{field:'ad.id',operator:'IN',value:[6003356308839,6004164369439]}]"
             },
             {
              "method": "GET",
              "relative_url": "<API_VERSION>/6003356308839/insights"
             },
             {
              "method": "GET",
              "relative_url": "<API_VERSION>/act_187687683/insights?filtering=[{field:'adset.id',operator:'IN',value:[6003356307839, 6004164259439]}]"
             }
            ]' https://graph.facebook.com

ในตัวอย่างนี้ 6003356308839 และ 6004164369439 คือ ID โฆษณา ส่วน 6003356307839 และ 6004164259439 คือ ID ชุดโฆษณา

ในกรณีของบัญชีโฆษณาที่มีโฆษณาจำนวนมาก เราไม่แนะนำให้ใช้ act_<account_ID>/adgroupstats เนื่องจากอาจส่งผลให้คำขอหมดเวลาได้

คำขอแบบแบตช์สำหรับค่าประมาณการเข้าถึง

คุณสามารถขอค่าประมาณการเข้าถึงได้สูงสุด 50 รายการภายในคำขอแบบแบตช์รายการเดียว ตัวอย่างต่อไปนี้แสดงค่าประมาณการเข้าถึงที่ร้องขอสำหรับข้อมูลจำเพาะของการกำหนดเป้าหมายที่ต่างกัน 2 รายการ

curl -F 'access_token=____' 
  -F 'batch=[
             {
              "method": "GET",
              "relative_url": "<API_VERSION>/act_600335/reachestimate?targeting_spec={'geo_locations': {'countries':['US']}}"
             },
             {
              "method": "GET",
              "relative_url": "<API_VERSION>/act_600335/reachestimate?targeting_spec={'geo_locations': {'countries':['FR']}}"
             }
            ]' https://graph.facebook.com

API แบตช์

API แบตช์ช่วยให้คุณสามารถจัดกลุ่มคำขอและส่งแบบไม่ซิงโครไนซ์ได้ โดยจัดกลุ่มการเรียกใช้ API กราฟหลายรายการไว้ในคำขอ HTTP เดียว จากนั้นดำเนินการแบบไม่ซิงโครไนซ์โดยไม่ต้องบล็อก นอกจากนี้ คุณสามารถกำหนดความขึ้นต่อกันระหว่างการดำเนินการที่เกี่ยวข้องได้ด้วย

Facebook จะประมวลผลการดำเนินการอิสระแต่ละรายการแบบขนานและการดำเนินการที่ขึ้นต่อกันตามลำดับ การเรียกใช้ API แต่ละรายการจะมีคำขอได้ไม่เกิน 1,000 รายการ

เรียกใช้ API แบตช์

วิธีเรียกใช้ API แบตช์มีดังนี้

curl \
-F "access_token=___" \
-F "name=asyncbatchreqs" \
-F "adbatch=<an array of requests>"\
"https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/async_batch_requests"

ให้ระบุอาร์เรย์ของคำขอ HTTP POST เป็นอาร์เรย์ JSON โดยแต่ละคำขอต้องมีข้อมูลต่อไปนี้

  • name
  • relative_url - ส่วนของ URL หลัง graph.facebook.com
  • body

API จะส่งคืน ID ที่คุณใช้เพื่อสืบค้นความคืบหน้าของคำขอ

ตัวอย่างเช่น สร้างแคมเปญที่มีชุดโฆษณาโดยใช้รูปแบบ JSONPath เพื่ออ้างอิงคำขอก่อนหน้า ดังนี้

curl \
-F "access_token=___" \
-F "name=batchapiexample" \
-F "adbatch=[
  {
    'name': 'create-campaign',
    'relative_url': 'act_123456/campaigns',
    'body': 'name%3DTest+Campaign%26objective%3DLINK_CLICKS%26status%3DPAUSED%26buying_type%3DAUCTION',
  },
  {
    'name': 'create-adset',
    'relative_url': 'act_123456/adsets',
    'body': 'targeting%3D%7B%22geo_locations%22%3A%7B%22countries%22%3A%5B%22US%22%5D%7D%7D%26daily_budget%3D5000%26campaign_id%3D%7Bresult%3Dcreate-campaign%3A%24.id%7D%26bid_amount%3D2%26name%3DFirst%2BAd%2BSet%20Test%26billing_event%3DLINK_CLICKS',
  },
]" \
https://graph.facebook.com/<API_VERSION>/act_123456/async_batch_requests

วิธีรับสถานะชุดคำขอมีดังนี้

curl –G \
-d "access_token=___" \
-d "fields=<comma separated list of fields>" \
"https://graph.facebook.com/v21.0/<REQUEST_SET_ID>"

การดำเนินการนี้จะส่งคืนสถานะโดยรวมของชุดคำขอแบบไม่ซิงค์ในรูปแบบอ็อบเจ็กต์ JSON ระบบจะไม่แสดงบางช่องโดยค่าเริ่มต้น หากต้องการรวมช่องข้อมูลใด ให้ระบุ fields เช่น fields=id,owner_id,name,total_count,success_count,error_count,is_completed

ชื่อ คำอธิบาย

id

ประเภท: จำนวนเต็ม

แสดงตามค่าเริ่มต้น

id ของชุดคำขอแบบไม่ซิงค์ปัจจุบัน

owner_id

ประเภท: จำนวนเต็ม

แสดงตามค่าเริ่มต้น

อ็อบเจ็กต์ที่เป็นเจ้าของชุดคำขอแบบไม่ซิงค์นี้ หากคุณสร้างโฆษณา owner_id คือ ID บัญชีโฆษณา

name

ประเภท: สตริง

แสดงตามค่าเริ่มต้น

ชื่อของชุดคำขอแบบไม่ซิงค์นี้

is_completed

ประเภท: บูลีน

แสดงตามค่าเริ่มต้น

คำขอแบบไม่ซิงค์ทั้งหมดอยู่ในชุดครบแล้ว

total_count

ประเภท: จำนวนเต็ม

ไม่แสดงตามค่าเริ่มต้น

จำนวนคำขอทั้งหมดสำหรับชุดคำขอนี้

initial_count

ประเภท: จำนวนเต็ม

ไม่แสดงตามค่าเริ่มต้น

จำนวนคำขอที่ยังไม่ได้ดำเนินการ

in_progress_count

ประเภท: จำนวนเต็ม

ไม่แสดงตามค่าเริ่มต้น

จำนวนคำขอที่อยู่ระหว่างดำเนินการ

success_count

ประเภท: จำนวนเต็ม

ไม่แสดงตามค่าเริ่มต้น

จำนวนคำขอที่ดำเนินการเสร็จแล้วและสำเร็จ

error_count

ประเภท: จำนวนเต็ม

ไม่แสดงตามค่าเริ่มต้น

จำนวนคำขอที่ดำเนินการเสร็จแล้วแต่ไม่สำเร็จ

canceled_count

ประเภท: จำนวนเต็ม

ไม่แสดงตามค่าเริ่มต้น

จำนวนคำขอที่ผู้ใช้ยกเลิก

notification_uri

ประเภท: สตริง

ไม่แสดงตามค่าเริ่มต้น

URI การแจ้งเตือนสำหรับชุดคำขอแบบไม่ซิงค์นี้

notification_mode

ประเภท: สตริง

ไม่แสดงตามค่าเริ่มต้น

วิธีในการรับการแจ้งเตือน ค่าที่ถูกต้อง ได้แก่

  • OFF – ไม่มีการแจ้งเตือน
  • ON_COMPLETE – ส่งการแจ้งเตือนเมื่อดำเนินการตามคำขอครบทั้งชุดแล้ว

notification_result

ประเภท: สตริง

ไม่แสดงตามค่าเริ่มต้น

ผลลัพธ์ของการส่งการแจ้งเตือน

notification_status

ประเภท: สตริง

ไม่แสดงตามค่าเริ่มต้น

สถานะการแจ้งเตือน ได้แก่ not_sent, sending หรือ sent

หลังจากได้รับสถานะโดยรวมแล้ว คุณสามารถรับรายละเอียดของแต่ละคำขอได้ ดังนี้

curl –G \   
-d "access_token=___" \
-d "fields=<comma separated list of fields>" \
"https://graph.facebook.com/v21.0/<REQUEST_SET_ID>/requests"

การดำเนินการนี้จะส่งคืนรายละเอียดในรูปแบบของอาร์เรย์ JSON หากต้องการให้แสดงช่องที่ไม่ใช่ค่าเริ่มต้น ให้ระบุใน fields เช่น fields=id,scope_object_id,status,result,input,async_request_set

ชื่อ คำอธิบาย

id

ประเภท: จำนวนเต็ม

แสดงตามค่าเริ่มต้น

ID ของแต่ละคำขอแบบไม่ซิงค์

scope_object_id

ประเภท: จำนวนเต็ม

แสดงตามค่าเริ่มต้น

ID หลักของอ็อบเจ็กต์ที่คำขอนี้สร้างขึ้น หากคุณสร้างโฆษณา นี่คือ ID ชุดโฆษณาสำหรับโฆษณาใหม่

status

ประเภท: สตริง

แสดงตามค่าเริ่มต้น

สถานะของคำขอแบบไม่ซิงค์นี้ ได้แก่

  • Initial – ยังไม่ได้ดำเนินการ
  • in_progress – กำลังดำเนินการตามคำขอ
  • Success – ดำเนินการตามคำขอเสร็จแล้วและสำเร็จ
  • Error – ดำเนินการตามคำขอเสร็จแล้วแต่ไม่สำเร็จ
  • Canceled – ผู้ใช้ยกเลิกคำขอ

result

ประเภท: อาร์เรย์

ไม่แสดงตามค่าเริ่มต้น

หากดำเนินการตามคำขอเสร็จแล้ว ให้แสดงผลลัพธ์ ในกรณีที่สำเร็จ ผลลัพธ์จะเหมือนกันกับ API ที่ไม่ใช่แบบไม่ซิงค์ ตัวอย่างเช่น หากคุณสร้าง “การสร้างโฆษณา” ขึ้นมาหนึ่งรายการ ผลลัพธ์ที่ได้คือ ID โฆษณาใหม่ ในกรณีที่เกิดข้อผิดพลาด ระบบจะแสดงผลลัพธ์ดังนี้

  • error_code – รหัสข้อผิดพลาดที่ส่งคืน
  • error_message – ข้อความแสดงข้อผิดพลาด

input

ประเภท: อ็อบเจ็กต์

ไม่แสดงตามค่าเริ่มต้น

อินพุตเดิมสำหรับคำขอนี้ หากคุณสร้างโฆษณา อินพุตคือ adgroup_spec

async_request_set

ประเภท: อ็อบเจ็กต์

ไม่แสดงตามค่าเริ่มต้น

ชุดคำขอแบบไม่ซิงค์มีคำขอนี้

แสดงรายการคำขอ API แบบแบตช์สำหรับบัญชีโฆษณา

คุณสามารถสร้างชุดคำขอ API แบบแบตช์ได้หลายรายการ หากต้องการสืบค้นชุดคำขอทั้งหมดที่อยู่ภายใต้บัญชีโฆษณา ให้ดำเนินการดังนี้

curl –G \ 
-d "access_token=___" \
"https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/async_requests"

ETag

API การตลาดรองรับ Etag ซึ่งจะช่วยให้คุณทราบว่าข้อมูลที่คุณสืบค้นมีการเปลี่ยนแปลงหรือไม่นับตั้งแต่ที่คุณตรวจสอบครั้งล่าสุด โดยวิธีการทำงานมีดังนี้

  1. เมื่อคุณเรียกใช้ ส่วนหัวของการตอบกลับจะประกอบด้วย ETag ที่มีค่าซึ่งเป็นแฮชของข้อมูลที่ส่งคืนในการเรียกใช้ API ให้บันทึกค่า ETag นี้ไว้เพื่อใช้ในขั้นตอนถัดไป
  2. ครั้งต่อไปที่คุณเรียกใช้ API เดิม ให้รวมค่า ETag ที่บันทึกไว้ในส่วนหัวของคำขอ If-None-Match ด้วย
  3. หากข้อมูลไม่มีการเปลี่ยนแปลง รหัสสถานะการตอบกลับจะเป็น 304 – Not Modified และจะไม่มีการส่งคืนข้อมูล
  4. หากข้อมูลมีการเปลี่ยนแปลงนับตั้งแต่การสืบค้นครั้งล่าสุด ระบบจะส่งคืนข้อมูลตามปกติพร้อม ETag ใหม่ ให้บันทึกค่า ETag ใหม่นี้และใช้สำหรับการเรียกใช้ครั้งต่อๆ ไป

ถึงแม้ว่า ETag จะช่วยลดจำนวนผู้เข้าชมข้อมูลได้ แต่ If-None-Match GET จะยังคงนับโดยเทียบกับขีดจำกัดอัตราสำหรับแอพของคุณ

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

ตัวอย่าง Etag

วิธีตรวจสอบว่าบัญชีโฆษณาของผู้ใช้มีการเปลี่ยนแปลงหรือไม่ มีดังนี้

ขั้นตอนที่ 1: กำหนด ETag สำหรับข้อมูลปัจจุบัน

curl -i "https://graph.beta.facebook.com/me/adaccounts?access_token=___"

การตอบกลับจะมีลักษณะดังนี้

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Cache-Control: private, no-cache, no-store, must-revalidate
Content-Type: text/javascript; charset=UTF-8
ETag: "7776cdb01f44354af8bfa4db0c56eebcb1378975"
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Pragma: no-cache
X-FB-Rev: 495685
X-FB-Server: 10.30.149.204
X-FB-Debug: CWbHcogdwUE8saMv6ML+8FacXFrE8ufhjjwxU2dQWaA=
X-Cnection: close
Date: Mon, 16 Jan 2012 12:07:44 GMT
Content-Length: 3273

{"data":[{"id":"act.......

ในตัวอย่างนี้ ETag คือ "7776cdb01f44354af8bfa4db0c56eebcb1378975" ให้สังเกตว่า ETag จะมีเครื่องหมายอัญประกาศ (") อยู่ด้วย

ขั้นตอนที่ 2: ตรวจสอบว่าข้อมูลมีการเปลี่ยนแปลงหรือไม่

curl -i -H "If-None-Match: \"7776cdb01f44354af8bfa4db0c56eebcb1378975\"" "https://graph.beta.facebook.com/me/adaccounts?access_token=___"

หากไม่มีการเปลี่ยนแปลง การตอบกลับจะมีลักษณะดังนี้

HTTP/1.1 304 Not Modified
Access-Control-Allow-Origin: *
Cache-Control: private, no-cache, no-store, must-revalidate
Content-Type: text/javascript; charset=UTF-8
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Pragma: no-cache
X-FB-Rev: 495685
X-FB-Server: 10.30.177.190
X-FB-Debug: ImBhat3k07Nez5FvuS2lPWU0U2xxmxD4B3k9ua4Sk7Q=
X-Cnection: close
Date: Mon, 16 Jan 2012 12:09:17 GMT
Content-Length: 0

ให้สังเกตการตอบกลับ 304 Not Modified หากข้อมูลมีการเปลี่ยนแปลง ระบบจะส่งคืนการตอบกลับ API ตามปกติ

ตัวอย่างแบบกลุ่มใช้ตรวจสอบว่าโฆษณาของผู้ใช้มีการเปลี่ยนแปลงหรือไม่

ขั้นตอนที่ 1: กำหนด ETag สำหรับข้อมูลปัจจุบัน

curl -i "curl -F 'access_token=___' -F 'batch=[ 
  {"method":"GET", "relative_url": "?ids=6003356308839,6004164369439" }, 
  {"method":"GET", "relative_url": "act_12345678/ads?campaign_ids=[6003356307839, 6004164259439]"}]'
 https://graph.facebook.com"

การตอบกลับจะประกอบด้วยค่า ETag ดังต่อไปนี้

...{"name":"ETag","value":"\"21d371640127490b2ed0387e8af3f0f8c9eff012\""}...      
...{"name":"ETag","value":"\"410e53bb257f116e8716e4ebcc76df1c567b87f4\""}...

ในตัวอย่างนี้ ETag คือ "21d371640127490b2ed0387e8af3f0f8c9eff012" และ "410e53bb257f116e8716e4ebcc76df1c567b87f4" ให้สังเกตว่า ETag จะมีเครื่องหมายอัญประกาศ (") อยู่ด้วย

ขั้นตอนที่ 2: ตรวจสอบว่าข้อมูลมีการเปลี่ยนแปลงหรือไม่:

curl -F 'access_token=___' -F 'batch=[
  {"method":"GET", "headers":["If-None-Match: \"21d371640127490b2ed0387e8af3f0f8c9eff012\""], "relative_url": "?ids=6003356308839,6004164369439" },
  {"method":"GET",  "headers":["If-None-Match: \"410e53bb257f116e8716e4ebcc76df1c567b87f4\""], "relative_url": "act_12345678/ads?campaign_ids=[6003356307839, 6004164259439]"}]' 
https://graph.facebook.com

หากไม่มีการเปลี่ยนแปลง การตอบกลับจะเป็นดังนี้

[{
    "code": 304,
    .
    .
    .
    "body": null
},
{
    "code": 304,
    .
    .
    .
    "body": null
}]

ให้สังเกตการตอบกลับ 304 Not Modified หากข้อมูลมีการเปลี่ยนแปลง เราจะส่งคืนการตอบกลับ API ตามปกติ