API งานที่กำหนดเวลา
ชั้น API รองรับฟังก์ชันการกำหนดเวลา โดยรักษาออบเจ็กต์ Schedule เพื่อดำเนินงานอย่างอิสระ
หมายเหตุ: งานที่กำหนดเวลาที่สร้างผ่าน API สามารถเรียกค้น แก้ไข หรือลบได้ผ่านการเรียก API เท่านั้น
การตรวจสอบสิทธิ์
โปรดดูรายละเอียดใน วิธีการตรวจสอบสิทธิ์ ในภาพรวมของ REST API
คำอธิบายพารามิเตอร์ Schedule
งานที่กำหนดเวลาแต่ละงานประกอบด้วย 4 ส่วน: name, enabled, trigger และ push
พารามิเตอร์ | ประเภท | จำเป็นหรือไม่ | คำอธิบาย |
---|---|---|---|
name | String | ไม่ | ชื่อของงานที่กำหนดเวลา ไม่เกิน 255 ไบต์ ประกอบด้วยอักขระจีน ตัวอักษร ตัวเลข และขีดล่าง |
enabled | Boolean | ไม่ | แสดงสถานะปัจจุบันของงาน; ต้องเป็น true เมื่อสร้างงาน |
trigger | JSON Object | ไม่ | เงื่อนไขและเวลาที่กระตุ้นงานที่กำหนดเวลา ปัจจุบันรองรับงานครั้งเดียว (single ), งานที่เกิดซ้ำ (periodical ) และการส่งแบบอัจฉริยะ (intelligent ) ดูรายละเอียดเพิ่มเติมที่ คำอธิบาย single |
push | JSON Object | ไม่ | ข้อมูลเนื้อหาที่จะส่ง ดูข้อมูลใน เอกสารการส่งแอปพลิเคชัน |
คำอธิบาย Single
อธิบายเงื่อนไขการกระตุ้นงานที่กำหนดเวลา รวมถึงเวลาและประเภทของงานที่กำหนดเวลา
พารามิเตอร์ | ประเภท | จำเป็นหรือไม่ | คำอธิบาย |
---|---|---|---|
time | String | ไม่ | เวลากระตุ้นงานที่กำหนดเวลา รูปแบบเวลามาตรฐานคือ "yyyy-mm-dd hh:mm:ss" เช่น "2014-02-15 13:16:59" ไม่รับรูปแบบที่ไม่สมบูรณ์ เช่น "2014-2-15 13:16:59" หรือ "2014-12-15 13:16" เวลาที่กำหนดงานต้องไม่เกินหนึ่งปี |
zone_type | Int | ไม่ | แสดงประเภทของงานที่กำหนดเวลา: 1 แสดงการกระตุ้นตามเขตเวลาที่ตั้งค่าโดยเซิร์ฟเวอร์หลัก, 2 แสดงการกระตุ้นตามเขตเวลาของผู้ใช้ปลายทาง |
คำอธิบาย Periodical
พารามิเตอร์ | ประเภท | จำเป็นหรือไม่ | คำอธิบาย |
---|---|---|---|
start | String | ไม่ | เวลาที่เริ่มต้นของงานที่เกิดซ้ำ รูปแบบที่เข้มงวดคือ "yyyy-MM-dd HH:mm:ss" ต้องเป็นรูปแบบ 24 ชั่วโมง |
end | String | ไม่ | เวลาหมดอายุของงานที่เกิดซ้ำ รูปแบบเดียวกันกับด้านบน งานที่เกิดซ้ำต้องไม่เกินหนึ่งปี |
time | String | ไม่ | เวลาที่กระตุ้นงานที่เกิดซ้ำ รูปแบบที่เข้มงวดคือ "HH:mm:ss" ต้องเป็นรูปแบบ 24 ชั่วโมง |
time_unit | String | ไม่ | หน่วยเวลาขั้นต่ำที่งานที่เกิดซ้ำจะดำเนินการ มีสามตัวเลือก: "day", "week", และ "month" ไม่สนใจตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก |
point | String | ไม่ | รายการที่สอดคล้องกับ time_unit: ดูตารางด้านล่าง |
zone_type | Int | ไม่ | แสดงประเภทของงานที่กำหนดเวลา: 1 แสดงการกระตุ้นตามเขตเวลาที่ตั้งค่าโดยเซิร์ฟเวอร์หลัก, 2 แสดงการกระตุ้นตามเขตเวลาของผู้ใช้ปลายทาง |
ข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ point:
time_unit | point | คำอธิบาย |
---|---|---|
day | NULL | เมื่อ time_unit เป็น day, point ไม่เกี่ยวข้อง |
week | "MON","TUE","WED","THU","FRI","SAT","SUN" | สำหรับ week, point สามารถเป็นหนึ่งหรือหลายวันแสดงเวลาที่กระตุ้น ไม่สนใจตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก |
month | "01","02","03" ... "31" | สำหรับ month, point สอดคล้องกับวันที่ที่ถูกต้องของเดือน จะไม่กระตุ้นในวันที่ที่ไม่ถูกต้อง (เช่น วันที่ 31 หรือ 30 ของเดือนกุมภาพันธ์) |
คำอธิบาย Intelligent
พารามิเตอร์ | ประเภท | จำเป็นหรือไม่ | ความหมาย |
---|---|---|---|
backup_time | String | จำเป็น | การส่งแบบอัจฉริยะเป็นฟีเจอร์พิเศษของ EngageLab ที่ออกแบบมาเพื่อเพิ่มอัตราการคลิกของการแจ้งเตือน ทุกครั้งที่ผู้ใช้เข้าถึงบริการของคุณผ่านเว็บไซต์หรือแอปพลิเคชันมือถือที่ติดตั้ง SDK ของ EngageLab เราจะติดตามเวลาที่ผู้ใช้เคลื่อนไหวล่าสุด ระบบจะบันทึกข้อมูลเหล่านี้และส่งการแจ้งเตือนให้ผู้ใช้แต่ละคนในเวลาที่เหมาะสมตามเขตเวลาของอุปกรณ์ผู้ใช้ สำหรับผู้ใช้ที่ไม่มีประวัติการเคลื่อนไหว คุณต้องเลือกว่าจะส่งทันทีหรือส่งในเวลาที่กำหนด (ตามเขตเวลาของผู้ใช้ปลายทาง) |
การสร้างงานที่กำหนดเวลา
ที่อยู่ API
POST v4/schedules
ข้อจำกัด
- จำนวนงานที่กำหนดเวลาที่มีผล (ยังไม่หมดอายุ) ถูกจำกัดไว้ที่ 1000 โดยค่าเริ่มต้น หากเกินจำนวนนี้ การสร้างงานใหม่จะล้มเหลว
- งานที่กำหนดเวลาสามารถมีช่วงเวลาสูงสุดได้ไม่จำกัด แต่แนะนำว่าไม่ควรเกิน 1 ปี
ตัวอย่างคำขอ
ส่วนหัวคำขอ
POST /v4/schedules
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
เนื้อหาคำขอ
ตัวอย่างคำของานที่กำหนดเวลาครั้งเดียว
{
"name":"Timed Push Example_single",
"enabled":true,
"trigger":{
"single":{
"time":"2022-11-23 19:20:00",
"zone_type":1
}
},
"push":{
"from":"push",
"to":{
"registration_id":[
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body":{
"platform":"android",
"notification":{
"alert":"Scheduled task from API",
"android":{
"title":"Scheduled task from API",
"extras":{
"key1":"value1"
}
}
},
"options":{
"time_to_live":60
}
},
"request_id":"12345",
"custom_args":{
"Engagelab": "push to you"
}
}
}
ตัวอย่างคำของานที่กำหนดเวลาซ้ำ
{
"name":"Timed Push Example_periodical",
"enabled":true,
"trigger":{
"periodical": {
"start": "2024-01-01 00:00:00",
"end": "2024-02-10 00:00:00",
"time": "12:00:00",
"time_unit": "day",
"point": [],
"zone_type": 1
}
},
"push":{
"from":"push",
"to":{
"registration_id":[
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body":{
"platform":"android",
"notification":{
"alert":"repeats periodic tasks",
"android":{
"title":"repeats periodic tasks",
"extras":{
"key1":"value1"
}
}
},
"options":{
"time_to_live":60
}
},
"request_id":"67890",
"custom_args":{
"Engagelab": "push to you"
}
}
}
ตัวอย่างคำขอการส่งแบบอัจฉริยะ
{
"name":"Intelligent delivery",
"enabled":true,
"trigger":{
"intelligent": {
"backup_time":"2024-01-01 00:00:00"
}
} ,
"push":{
"from":"push",
"to":{
"registration_id":[
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body":{
"platform":"android",
"notification":{
"alert":"Scheduled task from API",
"android":{
"title":"Scheduled task from API",
"extras":{
"key1":"value1"
}
}
},
"options":{
"time_to_live":60
}
},
"request_id":"12345",
"custom_args":{
"Engagelab": "push to you"
}
}
}
คำอธิบายข้อมูลคำขอ
zone_type
ต้องกรอกค่าที่ระบุ (1 หรือ 2); มิฉะนั้น การส่งจะเป็นไปตามเขตเวลาของเซิร์ฟเวอร์- เมื่อสร้างงานที่กำหนดเวลา
enabled
ต้องเป็น true หากสร้างenabled: false
งานจะล้มเหลว push
ต้องเป็นการดำเนินการส่งที่ถูกต้องและถูกกฎหมาย; มิฉะนั้น การสร้างจะล้มเหลว
ตัวอย่างการตอบกลับ
การตอบกลับสำเร็จ
HTTP/1.1 200 OK
Content-Type: application/json
{
"schedule_id": "a9b85590-6cec-4f91-b277-2d82b0e20ef6",
"name": "Timed Task Name"
}
การตอบกลับล้มเหลว
HTTP/1.1 400 BAD REQUEST
Content-Type: application/json; charset=utf-8
{
"error": {
"code": 28400,
"message": "error message"
}
}
การดึงรายการงานที่กำหนดเวลาที่มีผล
- ดึงรายการงานที่กำหนดเวลาที่มีผล (ยังไม่หมดอายุ) ในปัจจุบัน
ที่อยู่ API
GET v4/schedules?page=
ตัวอย่างคำขอ
ส่วนหัวคำขอ
GET /v4/schedules?page=
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
- ส่งคืนรายละเอียดรายการงานที่กำหนดเวลาของหน้าที่ร้องขอในปัจจุบัน หากไม่ได้ระบุหมายเลขหน้า จะเป็นหน้าที่ 1 โดยค่าเริ่มต้น
- การจัดเรียงตามเวลาที่สร้าง โดย schedule-service
- หากหมายเลขหน้าที่ร้องขอเกินจำนวนหน้าทั้งหมด
page
จะเป็นค่าที่ร้องขอ และschedules
จะว่างเปล่า - แต่ละหน้าส่งคืนงานสูงสุด 50 งาน หากจำนวนงานจริงในหน้าที่ร้องขอน้อยกว่า 50 งาน จะส่งคืนจำนวนงานจริง
ตัวอย่างการตอบกลับ
การตอบกลับสำเร็จ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"total_count": 1000,
"total_pages": 5,
"page": 4,
"schedules": [
{
"schedule_id": "0eac1b80-c2ac-4b69-948b-c65b34b96512",
"name": "",
"enabled": true
},
{} // รายการข้อมูลรายละเอียด
]
}
- แสดงจำนวนงานที่กำหนดเวลาทั้งหมด 1000 งาน รวม 5 หน้า ปัจจุบันเป็นหน้า 4 รวมข้อมูลงานที่กำหนดเวลา 50 รายการ
schedules
ที่ส่งคืนคือรายการข้อมูลรายละเอียดของงานที่กำหนดเวลา
การดึงรายละเอียดงานที่กำหนดเวลา
- ดึงรายละเอียดงานที่กำหนดเวลาของผู้ใช้ปัจจุบันที่มี id เป็น
{schedule_id}
ที่อยู่ API
GET v4/schedules/{schedule_id}
ตัวอย่างคำขอ
ส่วนหัวคำขอ
GET /v4/schedules/{schedule_id}
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
ตัวอย่างการตอบกลับ
การตอบกลับสำเร็จ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
ข้อมูลการตอบกลับ
[{
"schedule_id": "0eac1b80-c2ac-4b69-948b-c65b34b96512",
"name": "ตัวอย่างการส่งที่กำหนดเวลา",
"enabled": true,
"trigger": {...},
"push": {...}
}]
รับ ID ข้อความทั้งหมดของงานที่กำหนดเวลาไว้
- ดึงรายการ ID ข้อความทั้งหมดของงานที่กำหนดเวลา
{schedule_id}
ที่เป็นของผู้ใช้ปัจจุบัน
API
GET v4/schedules/{schedule_id}/msg-ids
ตัวอย่างคำขอ
ส่วนหัวของคำขอ
GET /v4/schedules/{schedule_id}/msg-ids
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
ตัวอย่างการตอบกลับ
การตอบกลับสำเร็จ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
ข้อมูลการตอบกลับ
- ตั้งแต่วันที่ 22 กุมภาพันธ์ 2024 ฟีเจอร์งานที่กำหนดเวลาซ้ำได้เปิดตัว รูปแบบข้อมูลที่ส่งกลับได้รับการอัปเดต เพิ่มการส่งกลับข้อมูล MsgIds เพื่อแทนที่ msgids เก่า โปรดตรวจสอบให้แน่ใจว่ารหัสของคุณเข้ากันได้
- ฟิลด์ ts แสดงเวลาประทับที่งานที่กำหนดเวลาสำเร็จ โดยมีความแม่นยำถึงมิลลิวินาที
{
"count": 1,
"MsgIds": [
"{\"msg_id\":\"1088009\",\"error\":{\"code\":0,\"message\":\"\"},\"needRetry\":false,\"ts\":1707278411611}",
"{\"msg_id\":\"0\",\"error\":{\"code\":1011,\"message\":\"Cannot find sending target\"},\"needRetry\":false,\"ts\":1707278411611}"
]
}
อัปเดตงานที่กำหนดเวลาไว้
- อัปเดตงานที่กำหนดเวลาที่ระบุโดยใช้ ID งาน
API
PUT v4/schedules/{schedule_id}
ตัวอย่างคำขอ
ส่วนหัวของคำขอ
PUT /v4/schedules/{schedule_id}
Authorization: Basic (base64 auth string)
Content-Type: application/x-www-form-urlencoded
Accept: application/json
เนื้อหาคำขอ
{
"name": "task",
"enabled": true,
"trigger": {...},
"push": {...}
}
หมายเหตุ:
- งานที่กำหนดเวลาที่หมดอายุแล้วไม่สามารถอัปเดตได้
- งานที่กำหนดเวลาโดยเขตเวลาของปลายทางไม่สามารถอัปเดตเป็นเขตเวลาหลักได้ และในทางกลับกัน
- การอัปเดตสามารถรวมถึงการเปลี่ยนแปลงใน "name", "enabled", "trigger" หรือ "push" ไม่รองรับการอัปเดตบางส่วน
ตัวอย่างการอัปเดตที่ไม่ถูกต้อง
// ไม่ถูกต้อง: อัปเดตเฉพาะแพลตฟอร์มเป็น iOS:
{
"push": {
"body": {
"platform": "ios"
}
}
}
// ไม่ถูกต้อง: อัปเดตเฉพาะวันที่สิ้นสุด:
{
"trigger": {
"periodical": {
"end": "2024-03-10 00:00:00"
}
}
}
ตัวอย่างการอัปเดตที่ถูกต้อง
เมื่ออัปเดต จำเป็นต้องรวมฟิลด์ย่อยที่เกี่ยวข้องทั้งหมดภายใต้ฟิลด์ push
เพื่อให้แน่ใจว่าการอัปเดตเป็นไปตามข้อกำหนดการอัปเดตแบบสมบูรณ์ ตัวอย่างต่อไปนี้แสดงการเปลี่ยนแพลตฟอร์มเป็น iOS พร้อมการอัปเดตการกำหนดค่าฟิลด์ push
แบบสมบูรณ์:
// ถูกต้อง: อัปเดตแพลตฟอร์มเป็น iOS:
{
"name": "Scheduled Push Example",
"enabled": true,
"trigger": {
"periodical": {
"start": "2024-01-01 00:00:00",
"end": "2024-02-10 00:00:00",
"time": "12:00:00",
"time_unit": "day",
"point": [],
"zone_type": 1
}
},
"push": {
"from": "push",
"to": {
"registration_id": [
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body": {
"platform": "ios",
"notification": {
"alert": "API terminal scheduled task",
"ios": {
"title": "API terminal scheduled task",
"extras": {
"key1": "value1"
}
}
},
"options": {
"time_to_live": 60
}
},
"request_id": "12345",
"custom_args": {
"Engagelab": "push to you"
}
}
}
// ถูกต้อง: ขยายวันที่สิ้นสุดของตัวกระตุ้นแบบเป็นรอบออกไปอีกหนึ่งเดือน:
{
"name": "Scheduled Push Example",
"enabled": true,
"trigger": {
"periodical": {
"start": "2024-01-01 00:00:00", // รักษาเวลาเริ่มต้นเดิม
"end": "2024-03-10 00:00:00", // ขยายออกไปอีกหนึ่งเดือนถึงวันที่ 10 มีนาคม
"time": "12:00:00", // รักษาเวลาทริกเกอร์เดิม
"time_unit": "day", // รักษาหน่วยเวลาเดิม
"point": [], // รักษาการกำหนดค่าจุดเดิม
"zone_type": 1 // รักษาประเภทเขตเวลาเดิม
}
},
"push": {
"from": "push",
"to": {
"registration_id": [
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body": {
"platform": "android",
"notification": {
"alert": "API terminal scheduled task",
"android": {
"title": "API terminal scheduled task",
"extras": {
"key1": "value1"
}
}
},
"options": {
"time_to_live": 60
}
},
"request_id": "12345",
"custom_args": {
"Engagelab": "push to you"
}
}
}
ในการอัปเดตเหล่านี้ ตรวจสอบให้แน่ใจว่า push ยังคงมีผล มิฉะนั้นการอัปเดตจะล้มเหลว ในการดำเนินการอัปเดต ให้ส่งโครงสร้างที่สมบูรณ์เสมอเพื่อหลีกเลี่ยงความล้มเหลวเนื่องจากการอัปเดตบางส่วน
ตัวอย่างการตอบกลับ
การตอบกลับสำเร็จ
HTTP/1.0 200 CREATED
Content-Type: application/json
ข้อมูลการตอบกลับ
{
"name": "Timed Push Example",
"enabled": true,
"trigger": {...},
"push": {...}
}
การตอบกลับล้มเหลว
- หาก
schedule_id
ไม่ถูกต้องหรือไม่ใช่ ID ที่ถูกต้อง:
HTTP/1.0 404 Not Found
Content-Type: application/json
- หากการดำเนินการอัปเดตไม่ถูกต้อง:
HTTP/1.0 400 BAD REQUEST
Content-Type: application/json
ลบงานที่กำหนดเวลาไว้
API
DELETE v4/schedules/{schedule_id}
schedule_id
คือ ID ของงานที่กำหนดเวลาที่มีอยู่ หากschedule_id
ไม่ถูกต้องหรือไม่ใช่ ID ที่ถูกต้อง ผลลัพธ์จะเป็นข้อผิดพลาด 404
ตัวอย่างคำขอ
DELETE /v4/schedules/{schedule_id}
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
ตัวอย่างการตอบกลับ
การตอบกลับสำเร็จ
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 0
การตอบกลับล้มเหลว
HTTP/1.0 404 Not Found
Content-Type: application/json
Content-Length: 0
{
"error": {
"code": 28404,
"message": "error message"
}
}
รหัสข้อผิดพลาด
ด้านล่างคือตารางรหัสข้อผิดพลาดที่อาจพบเมื่อใช้ API งานที่กำหนดเวลา
รหัส | HTTP | คำอธิบาย | ข้อความข้อผิดพลาด | รายละเอียด |
---|---|---|---|---|
28000 | 200 | การตอบกลับถูกต้อง | nil | รหัสสถานะสำเร็จ |
28100 | 400 | พารามิเตอร์ไม่ถูกต้อง | The schedule-task is invalid: section is invalid; has been at term; expired; request data is not json; update target task; delete target task; schedule request does not exist | พารามิเตอร์ไม่ถูกต้องหรือไม่ถูกต้อง หรือการส่งเกินขีดจำกัด |
28101 | 401 | การยืนยันตัวตนล้มเหลว | Basic authentication failed. | Appkey และ master secret ไม่ตรงกัน |
28104 | 404 | งานที่กำหนดเวลาที่ร้องขอไม่มีอยู่ | Requested schedule operation doesn't exist | งานถูกส่งแล้วหรือ ID งานไม่ถูกต้อง |
28105 | 404 | ไม่มีเป้าหมายการส่งในเวลาที่กำหนด | The push task is invalid. There is no push target for the scheduledtime | พารามิเตอร์เวลาส่งไม่ถูกต้อง |
28200 | 500 | ข้อผิดพลาดภายในเซิร์ฟเวอร์ | Server Internal error. | เกิดข้อผิดพลาดที่ไม่คาดคิด |
28203 | 503 | ข้อผิดพลาดภายในเซิร์ฟเวอร์ โปรดลองอีกครั้งในภายหลัง | Execute action timeout, please try later again | ข้อผิดพลาดในการสื่อสารกับเซิร์ฟเวอร์งานที่กำหนดเวลา |