API ลงทะเบียนอุปกรณ์

API ลงทะเบียนอุปกรณ์มีอินเทอร์เฟซฝั่งเซิร์ฟเวอร์สำหรับลงทะเบียน Token อุปกรณ์และรับ registration_id ใน AppPush

รับ registration_id ผ่าน Token

API นี้ช่วยให้เซิร์ฟเวอร์ลงทะเบียนผู้ใช้ AppPush ด้วย FCM Tokens หรือ APNs Device Tokens และรับ registration_id ที่ EngageLab สร้างขึ้น หลังจากได้รับ registration_id แล้ว สามารถนำไปใช้ส่ง Push ไปยังผู้ใช้ที่ระบุ รวมถึงใช้กับ APIs ที่เกี่ยวข้องกับอุปกรณ์ เช่น แท็กและนามแฝง

ข้อจำกัดการใช้งาน

  • แต่ละคำขอรองรับการลงทะเบียน Tokens ตั้งแต่ 1–500 รายการ
  • หนึ่งคำขอต้องมี Tokens จากแพลตฟอร์มเดียวเท่านั้น ได้แก่ ชุด FCM Tokens หรือชุด APNs Device Tokens ไม่รองรับการผสม Tokens ของ FCM และ APNs ในคำขอเดียวกัน
  • คำขอซ้ำที่ใช้แอปพลิเคชัน แพลตฟอร์ม และ Token เดียวกันเป็นแบบ idempotent ระบบจะไม่สร้างผู้ใช้ซ้ำและจะส่งคืน registration_id เดิม
  • ผลลัพธ์จะเรียงตามลำดับเดียวกับ Tokens ในคำขอ

Endpoint

POST /v4/devices/token/registration_id
              
              POST /v4/devices/token/registration_id

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

URL คำขอแบบเต็มประกอบด้วย Base URL ของศูนย์ข้อมูลที่แอปพลิเคชันสังกัดและพาธด้านบน สำหรับที่อยู่ศูนย์ข้อมูลและวิธีการยืนยันตัวตน โปรดดู ภาพรวม REST API

ส่วนหัวคำขอ

Content-Type: application/json Accept: application/json Authorization: Basic base64_auth_string
              
              Content-Type: application/json
Accept: application/json
Authorization: Basic base64_auth_string

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์คำขอ

ชื่อ ประเภท จำเป็น คำอธิบาย
platform string ใช่ แพลตฟอร์มของ Tokens ค่าที่รองรับคือ android และ ios สำหรับ FCM Tokens ให้ใช้ android
tokens array<string> ใช่ รายการ Tokens ที่ต้องการลงทะเบียน มีจำนวน 1–500 รายการ Tokens ทั้งหมดในคำขอเดียวกันต้องอยู่ในแพลตฟอร์มที่ platform ระบุ
apns_production boolean จำเป็นสำหรับ iOS สภาพแวดล้อม APNs โดย true หมายถึงสภาพแวดล้อม Production และ false หมายถึงสภาพแวดล้อม Development คำขอ Android ห้ามส่งฟิลด์นี้

กฎรูปแบบ Token

  • FCM Token: ต้องเป็นสตริงที่ไม่ว่างและยาวไม่เกิน 400 อักขระ อนุญาตเฉพาะอักขระ ASCII ที่พิมพ์ได้ (0x210x7E) ห้ามมีช่องว่าง ขึ้นบรรทัดใหม่ หรือช่องว่างที่ต้นและท้าย
  • APNs Device Token: ต้องเป็นสตริงเลขฐานสิบหกที่ไม่ว่าง มีจำนวนอักขระเป็นเลขคู่ และยาวไม่เกิน 400 อักขระ อนุญาตเฉพาะ 0-9, a-f และ A-F ห้ามมีช่องว่าง วงเล็บมุม หรือตัวคั่นอื่น

API นี้ตรวจสอบเฉพาะรูปแบบ Token และไม่สามารถยืนยันได้ว่า Token ยังใช้งานได้จริงหรือไม่ ความถูกต้องของ Token ให้พิจารณาจากผลการส่ง Push ของ FCM หรือ APNs

ตัวอย่างคำขอ Android (FCM)

curl -X POST 'https://pushapi-sgp.engagelab.com/v4/devices/token/registration_id' \ -u 'appKey:masterSecret' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{ "platform": "android", "tokens": [ "fcm_token_1", "fcm_token_2" ] }'
              
              curl -X POST 'https://pushapi-sgp.engagelab.com/v4/devices/token/registration_id' \
  -u 'appKey:masterSecret' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{
    "platform": "android",
    "tokens": [
      "fcm_token_1",
      "fcm_token_2"
    ]
  }'

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ตัวอย่างคำขอ iOS (APNs)

curl -X POST 'https://pushapi-sgp.engagelab.com/v4/devices/token/registration_id' \ -u 'appKey:masterSecret' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{ "platform": "ios", "tokens": [ "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" ], "apns_production": true }'
              
              curl -X POST 'https://pushapi-sgp.engagelab.com/v4/devices/token/registration_id' \
  -u 'appKey:masterSecret' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{
    "platform": "ios",
    "tokens": [
      "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
    ],
    "apns_production": true
  }'

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์การตอบกลับ

ชื่อ ประเภท คำอธิบาย
results array<object> ผลการลงทะเบียนของแต่ละ Token โดยเรียงลำดับเดียวกับ tokens ในคำขอ
results[].token string Token จากคำขอ
results[].registration_id string รหัสผู้ใช้เฉพาะของ EngageLab ส่งคืนเมื่อ Token ปัจจุบันลงทะเบียนสำเร็จ
results[].is_new boolean true หมายถึงสร้างผู้ใช้ใหม่ในคำขอนี้ ส่วน false หมายถึง Token ลงทะเบียนไว้แล้วและส่งคืนผู้ใช้เดิม
results[].code integer รหัสผลการประมวลผลของ Token แต่ละรายการ 0 หมายถึงสำเร็จ และค่าที่ไม่ใช่ 0 หมายถึงล้มเหลว
results[].message string คำอธิบายข้อผิดพลาดเมื่อการประมวลผล Token แต่ละรายการล้มเหลว หากสำเร็จจะไม่ส่งคืนฟิลด์นี้

รหัสผลลัพธ์รายรายการ:

Code คำอธิบาย
0 ลงทะเบียน Token สำเร็จ
21003 รูปแบบ Token ไม่ถูกต้อง
27000 การค้นหา ลงทะเบียน หรือซิงโครไนซ์ Token ล้มเหลว

ตัวอย่างการตอบกลับสำเร็จ

เมื่อลงทะเบียนครั้งแรก is_new จะเป็น true:

{ "results": [ { "token": "fcm_token_1", "registration_id": "13065ffa4e1a6cc91c3", "is_new": true, "code": 0 }, { "token": "fcm_token_2", "registration_id": "13065ffa4e1a6cc91c4", "is_new": true, "code": 0 } ] }
              
              {
  "results": [
    {
      "token": "fcm_token_1",
      "registration_id": "13065ffa4e1a6cc91c3",
      "is_new": true,
      "code": 0
    },
    {
      "token": "fcm_token_2",
      "registration_id": "13065ffa4e1a6cc91c4",
      "is_new": true,
      "code": 0
    }
  ]
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

เมื่อส่ง Token ที่ลงทะเบียนแล้วอีกครั้ง ระบบจะส่งคืน registration_id เดิม และ is_new จะเป็น false:

{ "results": [ { "token": "fcm_token_1", "registration_id": "13065ffa4e1a6cc91c3", "is_new": false, "code": 0 } ] }
              
              {
  "results": [
    {
      "token": "fcm_token_1",
      "registration_id": "13065ffa4e1a6cc91c3",
      "is_new": false,
      "code": 0
    }
  ]
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ตัวอย่าง Token รายการเดียวล้มเหลว

หาก Token รายการใดในชุดมีรูปแบบไม่ถูกต้องหรือลงทะเบียนล้มเหลว รายการนั้นจะส่งคืนข้อผิดพลาดผ่าน code และ message ขณะที่ Tokens อื่นยังประมวลผลได้ตามปกติ ตัวอย่างต่อไปนี้แสดง Token ว่างที่ไม่ผ่านการตรวจสอบรูปแบบ:

{ "results": [ { "token": "fcm_token_1", "registration_id": "13065ffa4e1a6cc91c3", "is_new": false, "code": 0 }, { "token": "", "is_new": false, "code": 21003, "message": "invalid fcm token format" } ] }
              
              {
  "results": [
    {
      "token": "fcm_token_1",
      "registration_id": "13065ffa4e1a6cc91c3",
      "is_new": false,
      "code": 0
    },
    {
      "token": "",
      "is_new": false,
      "code": 21003,
      "message": "invalid fcm token format"
    }
  ]
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ตัวอย่างคำขอล้มเหลว

หากพารามิเตอร์โดยรวมของคำขอไม่ถูกต้อง API จะส่งคืน HTTP 400 ตัวอย่างเช่น คำขอ iOS ที่ไม่ได้ส่ง apns_production จะได้รับ:

{ "error": { "code": 21003, "message": "apns_production is required for ios" } }
              
              {
  "error": {
    "code": 21003,
    "message": "apns_production is required for ios"
  }
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ข้อผิดพลาดของคำขอที่พบบ่อย:

  • platform ไม่ใช่ android หรือ ios;
  • tokens ว่างหรือมีมากกว่า 500 รายการ;
  • คำขอ Android ส่ง apns_production;
  • คำขอ iOS ไม่ได้ส่ง apns_production

การตอบกลับของ API

รหัสสถานะ HTTP

ดู รหัสสถานะ HTTP

รหัสข้อผิดพลาด

ตารางต่อไปนี้แสดงรหัสข้อผิดพลาดระดับคำขอ ในคำขอแบบ Batch ข้อผิดพลาดของ Token แต่ละรายการจะส่งคืนผ่าน results[].code และ results[].message โดยไม่กระทบการประมวลผล Tokens อื่น

Code คำอธิบาย รายละเอียด HTTP Status Code
0 success คำขอสำเร็จ โปรดดูผลการประมวลผล Token แต่ละรายการใน results 200
21003 Parameter value is invalid platform, tokens หรือ apns_production ไม่ถูกต้อง 400
21004 basic auth failed Master Secret ไม่ถูกต้อง 401
21008 app_key is not a 24 size string ความยาว AppKey ไม่ถูกต้อง 400
23010 Rate limit exceeded for the API AppKey ปัจจุบันเรียก API เกินขีดจำกัดความถี่ 400
27000 Server inner err ข้อผิดพลาดภายในเซิร์ฟเวอร์ โปรดลองอีกครั้งภายหลัง 500
27001 app_key does not exist or basic info is invalid ไม่ได้ระบุ Basic Auth, ไม่มี AppKey หรือข้อมูลการยืนยันตัวตนของแอปพลิเคชันไม่ถูกต้อง 401
27002 parameter is invalid ไม่มี Request Body, รูปแบบ JSON ไม่ถูกต้อง หรือประเภทของพารามิเตอร์ไม่ถูกต้อง 400
Icon Solid Transparent White Qiyu
ติดต่อฝ่ายขาย