ระหว่างเซิร์ฟเวอร์: การแก้ไขปัญหาการผสานการทำงานการประมูล

สื่อกลางโฆษณาภายในองค์กรยังไม่พร้อมให้บริการต่อสาธารณะ

ขณะนี้การประมูลภายในองค์กรด้วย Audience Network เป็นเวอร์ชั่นเบต้าแบบปิดและยังไม่พร้อมให้บริการต่อสาธารณะ โดยเราจะแจ้งข้อมูลอัพเดตเพิ่มเติมหากมีการเปลี่ยนแปลง

ในระหว่างนี้ คุณสามารถเข้าถึงการประมูลของ Audience Network ผ่านแพลตฟอร์มสื่อกลางโฆษณาที่เราเป็นพาร์ทเนอร์ด้วยแทนได้

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

ข้อกำหนดเบื้องต้น

เนื้อหาส่วนต่างๆ

ใช้ cURL เพื่อแก้ไขจุดบกพร่องของคำขอประมูล

รหัสข้อผิดพลาด HTTP และการแก้ไขปัญหาในคำขอประมูล

การแก้ไขปัญหา "ไม่มีการประมูล"

ใช้ cURL เพื่อแก้ไขจุดบกพร่องของคำขอประมูล

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

ขั้นตอนที่ 1 เพย์โหลด JSON สำหรับโฆษณาคั่นในคำขอประมูล

  • แทนที่ YOUR_PLACEMENT_ID ด้วย ID ตำแหน่งการจัดวางของคุณ
  • แทนที่ YOUR_BUSINESS_ID ด้วย ID ธุรกิจของคุณ
  • แทนที่ YOUR_DEVICE_ID ด้วย ID อุปกรณ์ของคุณ
  • แทนที่ YOUR_BIDDER_TOKEN ด้วยโทเค็นผู้ประมูลของคุณที่สร้างจาก Audience Network SDK
  • แทนที่ YOUR_PLATFORM_ID ด้วย ID แพลตฟอร์มของพาร์ทเนอร์สื่อกลางโฆษณา (ID แอพ Facebook)
  • ในกรณีที่คุณต้องการทดสอบกับโฆษณารูปแบบอื่น โปรดดูรูปแบบโฆษณาที่รองรับ
  • บันทึกเพย์โหลด JSON ด้านล่างเป็น bid_request.json
{
"id": "vwxfKskkMobzQQ1e7M70",
"imp": [
{
"id": "FB Ad Impression",
"tagid": "YOUR_PLACEMENT_ID",
"instl": 1,
"banner": {
"h": 0,
"w": 0,
"linearity": 0
}
}
],
"app": {
"publisher": {
"id": "YOUR_BUSINESS_ID"
}
},
"device": {
"ua": "Dalvik\/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build\/OSM1.180201.000)",
"ifa": "YOUR_DEVICE_ID",
"dnt": 0,
"ip": "125.123.255.123"
},
"user": {
"buyeruid": "YOUR_BIDDER_TOKEN"
},
"regs": {
"coppa": 0
},
"at": 1,
"tmax": 500,
"test": 1,
"ext": {
"platformid": "YOUR_PLATFORM_ID"
}
}

ขั้นตอนที่ 2 ส่งคำขอประมูลด้วยคำสั่ง cURL

  • เปิด Terminal ของคุณ
  • ไปที่ไดเรกทอรีที่คุณบันทึก bid_request.json ด้วยคำสั่ง cd ~/{FILE_PATH}
curl -X POST -H "Content-Type: application/json" -d @bid_request.json https://an.facebook.com/placementbid.ortb

ขั้นตอนที่ 3 ตรวจสอบการตอบกลับการประมูลในกรณีที่คำขอประมูลถูกต้อง

{
"id": "Auction ID",
"seatbid": [
{
"bid": [
{
"id": "Bid Response ID",
"impid": "FB Ad Impression",
"price": 99.99,
"adm": "{\"type\":\"ID\",\"bid_id\":\"BID ID\",\"placement_id\":\"Placement ID\",\"resolved_placement_id\":\"Resolved Placement ID\",\"sdk_version\":\"SDK Version\",\"device_id\":\"Device ID\",\"template\":102,\"payload\":null}",
"nurl": "https://www.facebook.com/audiencenetwork/nurl/?partner=partner_id&app=app_id&placement=placement_id&auction=auction_id&impression=impression_id&request=request_id&bid=bid_id&ortb_loss_code=0&clearing_price=${AUCTION_PRICE}",
"lurl": "https://www.facebook.com/audiencenetwork/nurl/?partner=partner_id&app=app_id&placement=placement_id&auction=auction_id&impression=impression_id&request=request_id&bid=bid_id&ortb_loss_code=${AUCTION_LOSS}&clearing_price=${AUCTION_PRICE}"
}
]
}
],
"bidid": "Bid ID",
"cur": "USD"
}

ขั้นตอนที่ 4 ดู x-fb-an-errors ในส่วนหัวของการตอบกลับ HTTP เมื่อคุณไม่ได้รับการตอบกลับการประมูลข้างต้น

ใช้คำสั่ง cURL เพื่อแสดงส่วนหัวของการตอบกลับ HTTP

url -X POST -H "Content-Type: application/json" -v @bid_request.json https://an.facebook.com/placementbid.ortb
...
> Content-Type: application/json
>
* Connection state changed (MAX_CONCURRENT_STREAMS updated)!
< HTTP/2 400
< x-fb-an-request-id: fb_an_request_id
...
< x-fb-an-errors: Value cannot be null: value given: null
...

โปรดดูคำอธิบายข้อผิดพลาด HTTP และการแก้ไขปัญหาในคำขอประมูลเพื่อแก้ไขคำขอประมูลของคุณ

คำอธิบายข้อผิดพลาด HTTP และการแก้ไขปัญหาในคำขอประมูล

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

การตอบกลับด้วยรหัส 400: ข้อผิดพลาดเนื่องจากพารามิเตอร์ไม่ถูกต้อง

ข้อความแสดงข้อผิดพลาด คำอธิบาย การแก้ไขปัญหา

โทเค็นผู้ประมูลใน user.buyeruid ไม่ถูกต้อง

โทเค็นผู้ประมูลใน user.buyeruid ไม่ถูกต้อง

วิธีสร้างโทเค็นผู้ประมูลที่ถูกต้อง:

  • Android - BidderTokenProvider.getBidderToken(context)

  • iOS — [FBAdSettings bidderToken]

ที่อยู่ IP ต้องเป็นที่อยู่ IP ที่ถูกต้อง

ในอ็อบเจ็กต์ device ของเพย์โหลดคำขอประมูล คุณควรระบุที่อยู่ IP ที่ถูกต้องสำหรับช่อง ip(v4) หรือ ipv6

ตัวอย่างที่ถูกต้อง:

  • ip(v4): 255.255.255.0

  • ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334

ตัวอย่างที่ไม่ถูกต้อง: (ห้ามตัดทอน IP ของคุณ)

  • ip(v4): 255.255.255

  • ipv6: 2001:0db8:85a3:0000:0000:8a2e

ต้องระบุ ID ตำแหน่งการจัดวางที่ถูกต้อง

ในช่อง imp.tagid คุณควรระบุ ID ตำแหน่งการจัดวาง Audience Network ที่ถูกต้อง

โปรดดู ID ตำแหน่งการจัดวางของคุณจากตัวจัดการธุรกิจ เลือก "จัดการคุณสมบัติ" และดู ID ตำแหน่งการจัดวางในส่วน "พื้นที่โฆษณา" ของแพลตฟอร์ม Android หรือ iOS

ไม่ได้ตั้งค่า ID ผู้เผยแพร่ในคำขอแอพ

ไม่ได้ตั้งค่าช่อง app.publisher.id ในคำขอ

โปรดดู ID ผู้เผยแพร่ของคุณจากการตั้งค่าธุรกิจ เลือก "แอพ" ในเมนูด้านซ้ายและดู ID แอพของคุณซึ่งจะเป็น ID ผู้เผยแพร่

ID ตำแหน่งการจัดวางทั้งหมดต้องเป็นของ ID แอพเดียวกัน

ID ตำแหน่งการจัดวาง Audience Network ทั้งหมดในคำขอประมูลควรเป็นของ ID แอพเดียวกันดังที่ข้อความระบุ

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

ค่าไม่มีช่องรูปแบบที่จำเป็นต้องระบุและต้องไม่ใช่ค่าว่าง

ค่าที่จำเป็นต้องระบุในคำขอประมูลของคุณขาดหายไป

ค่าที่จำเป็นต้องระบุ:

  1. id

  2. imp, imp.tagid, imp.id

  3. app.publisher, app.publisher.id

  4. device

  5. ext, ext.platformid

  6. at -- จำเป็นต้องระบุค่า Enum (1, 2)

จำเป็นต้องระบุรูปแบบโฆษณา โดยรูปแบบโฆษณาและ ID ตำแหน่งการจัดวางควรมีจำนวนเท่ากัน

โปรดระบุรูปแบบโฆษณาที่ไม่ว่างเปล่าและถูกต้อง

รูปแบบโฆษณาที่รองรับ:

  • รูปแบบเนทีฟ: {'id': ${AUCTION_ID}, "native": { "h": -1, "w": -1 }, 'tagid': ${PLACEMENT_ID}}

  • รูปแบบแบนเนอร์เนทีฟ: {'id': ${AUCTION_ID}, "native": { "h": -1, "w": -1 }, 'tagid': ${PLACEMENT_ID}}

  • รูปแบบโฆษณาคั่น: {'id': ${AUCTION_ID}, "banner": { "h": 0, "w": 0 }, 'tagid': ${PLACEMENT_ID}, 'instl': 1}

  • รูปแบบวิดีโอที่มีรางวัลหลังชมจบ: {'id': ${AUCTION_ID}, "video": { "h": 0, "w": 0, 'ext': { 'videotype': 'rewarded' } }, 'tagid': ${PLACEMENT_ID}}

  • รูปแบบแบนเนอร์ - ความสูง 50: {'id': ${AUCTION_ID}, "banner": { "h": 50, "w": -1 }, 'tagid': ${PLACEMENT_ID}}

  • รูปแบบแบนเนอร์ - ความสูง 250: {'id': ${AUCTION_ID}, "banner": { "h": 250, "w": -1 }, 'tagid': ${PLACEMENT_ID}}

  • รูปแบบวิดีโอในสตรีม: {'id': ${AUCTION_ID}, "video": { "h": 0, "w": 0, 'linearity': 1 }, 'tagid': ${PLACEMENT_ID}}

โปรดดูข้อมูลเพิ่มเติมที่รูปแบบโฆษณาที่รองรับ

ไม่สามารถมีอ็อบเจ็กต์แบนเนอร์ เนทีฟ และวิดีโอพร้อมกันได้ แต่ต้องมีอย่างใดอย่างหนึ่ง

รูปแบบโฆษณาข้างต้นมีอ็อบเจ็กต์ที่แตกต่างกัน ได้แก่ native, banner และ video โดยตำแหน่งข้อมูลของเราจำเป็นต้องมีหนึ่งใน 3 อ็อบเจ็กต์นี้ แต่ต้องระวังไม่ให้มีอ็อบเจ็กต์หลายประเภทพร้อมกัน

โปรดดูการแก้ไขปัญหาเกี่ยวกับรูปแบบโฆษณาที่รองรับข้างต้น

การตอบกลับด้วยรหัส 400: ข้อผิดพลาดเนื่องจากการไม่ได้รับอนุญาต

ข้อความแสดงข้อผิดพลาด คำอธิบาย การแก้ไขปัญหา

ไม่มีแอพที่ตรงกับโดเมนและ ID ธุรกิจ

ในกรณีที่คุณใช้ ID ธุรกิจในช่อง app.publisher.id แบ็คเอนด์ของเราจะไม่สามารถค้นหาแอพตามโดเมนและธุรกิจได้

หากคุณยังคงเห็นข้อผิดพลาดนี้ โปรดใช้ ID แอพในช่อง app.publisher.id

แอพพลิเคชั่นไม่ได้รับอนุญาตสำหรับการประมูลแอพ

ID แอพพลิเคชั่นใน app.publisher.id ไม่อยู่ในรายการที่อนุญาตสำหรับการประมูล หรือแอพพลิเคชั่นอยู่ระหว่างรอการตรวจสอบ

โปรดติดต่อเราเพื่อเพิ่มแอพของคุณลงในรายการที่อนุญาต หรือรอให้แอพได้รับการอนุมัติ

แพลตฟอร์มไม่ได้รับอนุญาตสำหรับการประมูลแอพ

ID แพลตฟอร์มใน ext.platformid ไม่อยู่ในรายการที่อนุญาตสำหรับการประมูล โปรดตรวจสอบให้แน่ใจว่า ID แอพของคุณอยู่ในรายการที่อนุญาตและไม่ได้อยู่ระหว่างรอการตรวจสอบ

การแก้ไขปัญหา:

  1. หากคุณเป็นผู้เผยแพร่ ID แอพของคุณจะเหมือนกับ ID แพลตฟอร์ม

  2. หากคุณเป็นพาร์ทเนอร์ ผู้เผยแพร่ของคุณจะใส่ค่าใน ext.platformid (ID แอพของพาร์ทเนอร์) และ app.publisher.id (ID แอพของผู้เผยแพร่) ไม่เหมือนกัน

โปรดติดต่อเราเพื่อเพิ่มแอพของคุณลงในรายการที่อนุญาต หรือรอให้แอพได้รับการอนุมัติ

ข้อผิดพลาดที่ไม่คาดคิด

สาเหตุ:

  1. การจำกัดผลลัพธ์ของแอพ/ผู้ใช้

  2. แอพพลิเคชั่นถูกปฏิเสธ

  3. ตัวติดตั้งไม่น่าเชื่อถือ

  4. คำขอมีเจตนาหลอกลวง

การแก้ไขปัญหา:

  1. โปรดโหลดโฆษณาซ้ำให้น้อยลง

  2. โปรดติดต่อเราเพื่อตรวจสอบสถานะแอพพลิเคชั่นของคุณ

  3. โปรดตรวจสอบให้แน่ใจว่าคุณติดตั้งแอพจาก App Store ที่เชื่อถือได้

  4. โปรดติดต่อเราหากยังคงเห็นข้อผิดพลาดนี้

การตอบกลับด้วยรหัส 204: ข้อความแสดงข้อผิดพลาดที่ว่างเปล่า

ข้อความแสดงข้อผิดพลาด คำอธิบาย การแก้ไขปัญหา

ส่วนหัวของข้อผิดพลาด x-fb-an-errors จากการตอบกลับการประมูลว่างเปล่า

สาเหตุ:

  1. สำหรับกรณีของ dnt: 1 -- ห้ามติดตาม Facebook จะไม่ประมูล

  2. imp.instl สำหรับรูปแบบโฆษณาคั่นขาดหายไป

  3. Facebook เลือกที่จะไม่เข้าร่วมการประมูลราคา

การแก้ไขปัญหา:

  1. ผู้ใช้ต้องเปิดการติดตามการโฆษณาในอุปกรณ์ จากนั้นไคลเอ็นต์จะส่ง dnt: 0 (ห้ามติดตาม) ในคำขอประมูล แล้ว Facebook จึงจะประมูล

  2. ช่อง imp.instl จะต้องเป็น 1 เพื่อประมูลโฆษณาคั่น

โปรดติดต่อเรา หากยังคงเห็นการตอบกลับด้วยรหัส 204 อยู่

การแก้ไขปัญหา "ไม่มีการประมูล"

  • อย่าลืมเก็บและบันทึกส่วนหัว HTTP x-fb-an-errors เพื่อช่วยให้คุณเข้าใจสาเหตุของข้อผิดพลาด
  • ตรวจสอบให้แน่ใจว่าได้ติดตั้งแอพ Facebook บนอุปกรณ์ที่แอพของคุณทำงานอยู่ และคุณเข้าสู่ระบบ Facebook ด้วยบัญชีผู้ใช้จริง บัญชีผู้ใช้ Facebook ปลอมหรือบัญชีขั้นทดสอบถือเป็นการละเมิดนโยบายของ Facebook และจะถูกปิดใช้งาน
  • ตรวจสอบให้แน่ใจว่าคุณจะได้รับโทเค็นผู้ประมูลจาก Audience Network SDK โดยเรียกใช้ com.facebook.ads.BidderTokenProvider.getBidderToken() บน Android และ [FBAdSettings bidderToken] บน iOS รวมถึงส่งสตริงที่ถูกส่งคืนลงในช่อง buyeruid ของคำขอประมูล
  • ตรวจสอบให้แน่ใจว่าคุณส่ง ID อุปกรณ์ที่ถูกต้องในช่อง ifa ในคำขอประมูล (Android -- AdvertisingIdClient.getAdvertisingIdInfo(context).getId(), iOS -- [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString])
  • ตรวจสอบให้แน่ใจว่าไม่ได้เปิดใช้งาน "ห้ามติดตาม" (dnt) บนอุปกรณ์ของคุณ จากนั้นส่ง dnt: 0 (ห้ามติดตาม) ในคำขอประมูล