API การจัดการเทมเพลต

ภาพรวม

Template Management API ช่วยให้คุณสร้าง อ่าน อัปเดต และลบเทมเพลตของ WABA ได้ รวมถึงจัดกลุ่มเทมเพลตด้วยแท็กที่กำหนดเอง เอกสารนี้ครอบคลุม endpoint สองกลุ่ม ได้แก่

การยืนยันตัวตน

EngageLab REST API ใช้ HTTP Basic Authentication สำหรับการตรวจสอบ: เพิ่ม Authorization ใน HTTP Header:

Authorization: Basic ${base64_auth_string}
              
              Authorization: Basic ${base64_auth_string}

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

base64_auth_string ถูกสร้างดังนี้: base64(dev_key:dev_secret)

  • ชื่อ header คือ "Authorization" และค่าคือคู่ "username:password" ที่เข้ารหัส base64 (มีเครื่องหมายโคลอนคั่นกลาง)
  • ในบริบทของ WhatsApp API, username คือ DevKey และ password คือ DevSecret กรุณารับข้อมูลนี้จากหน้า Console - การจัดการการตั้งค่า - API Keys

ดึงรายการเทมเพลต

Endpoint

GET https://wa.api.engagelab.cc/v1/templates

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

พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
name String ไม่บังคับ ชื่อเทมเพลต โปรดทราบว่าฟิลด์นี้ใช้การจับคู่แบบบางส่วน
language_code String ไม่บังคับ ภาษาของเทมเพลต ดูที่ รหัสภาษา
category String ไม่บังคับ หมวดหมู่ของเทมเพลต
● AUTHENTICATION: รหัสยืนยัน
● MARKETING: การตลาด
● UTILITY: การแจ้งเตือนบริการ
status String ไม่บังคับ สถานะของเทมเพลต:
  • APPROVED - อนุมัติแล้ว
  • PENDING - อยู่ระหว่างตรวจสอบ
  • REJECTED - ถูกปฏิเสธ
  • PENDING_DELETION - กำลังลบ
  • DELETED - ลบแล้ว
  • DISABLED - ปิดใช้งาน (ถูกระงับ)
  • IN_APPEAL - อยู่ระหว่างอุทธรณ์
  • PAUSED - หยุดใช้งานชั่วคราว
    สถานะที่นักพัฒนาควรให้ความสำคัญเป็นหลักคือ APPROVED/PENDING/REJECTED/DISABLED
  • tag_id String ไม่บังคับ รหัสแท็ก ใช้สำหรับกรองเทมเพลตตามแท็ก ค่าที่รองรับ:
  • ไม่ส่งหรือส่งสตริงว่าง - ไม่กรองตามแท็ก
  • ส่งรหัสแท็ก - คืนเฉพาะเทมเพลตที่กำหนดแท็กนั้นไว้
  • ส่ง ungrouped - คืนเฉพาะเทมเพลตที่ยังไม่ได้กำหนดแท็กใด ๆ โดยไม่แยกตัวพิมพ์ใหญ่-เล็ก
  • tag_id มีความสัมพันธ์แบบ AND กับเงื่อนไขการค้นหาอื่น ๆ เช่น name, language_code, category และ status ปัจจุบันยังไม่รองรับการส่งหลายแท็กพร้อมกัน หากรูปแบบ tag_id ไม่ถูกต้อง จะคืนรหัสข้อผิดพลาด 3002 และหากไม่พบแท็กหรือแท็กไม่ได้อยู่ใน WABA ปัจจุบัน จะคืนรหัสข้อผิดพลาด 4001

    หมายเหตุ: หากใน WABA มีแท็กชื่อ "ungrouped" (หรือคำแปลที่เทียบเท่า) การกรองตามแท็กนั้นต้องส่งรหัสแท็กที่เป็นตัวเลข การส่ง ungrouped โดยตรงจะถูกตีความว่า "กรองเทมเพลตที่ยังไม่ได้กำหนดแท็ก" เสมอ

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

    กรองตามแท็ก:

    GET https://wa.api.engagelab.cc/v1/templates?tag_id=101
                  
                  GET https://wa.api.engagelab.cc/v1/templates?tag_id=101
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    กรองเทมเพลตที่ยังไม่ได้กำหนดแท็ก:

    GET https://wa.api.engagelab.cc/v1/templates?tag_id=ungrouped
                  
                  GET https://wa.api.engagelab.cc/v1/templates?tag_id=ungrouped
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

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

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    id String จำเป็น รหัสเทมเพลต
    name String จำเป็น ชื่อเทมเพลต
    language String จำเป็น ภาษาของเทมเพลต ดูที่ รหัสภาษา
    category String จำเป็น หมวดหมู่ของเทมเพลต
  • AUTHENTICATION
  • MARKETING
  • UTILITY
  • components Object Array จำเป็น องค์ประกอบของเนื้อหาเทมเพลต ดูที่ ออบเจ็กต์ components ในหัวข้อสร้างเทมเพลต
    status String จำเป็น สถานะของเทมเพลต:
  • APPROVED - อนุมัติแล้ว
  • PENDING - อยู่ระหว่างตรวจสอบ
  • REJECTED - ถูกปฏิเสธ
  • PENDING_DELETION - กำลังลบ
  • DELETED - ลบแล้ว
  • DISABLED - ปิดใช้งาน (ถูกระงับ)
  • IN_APPEAL - อยู่ระหว่างอุทธรณ์
  • PAUSED - หยุดใช้งานชั่วคราว
    สถานะที่นักพัฒนาควรให้ความสำคัญเป็นหลักคือ APPROVED/PENDING/REJECTED/DISABLED
  • tags Object Array จำเป็น แท็กที่กำหนดให้เทมเพลตนี้ในปัจจุบัน หากยังไม่ได้กำหนดแท็กจะคืนอาร์เรย์ว่าง
  • tags[].id - String, รหัสแท็ก
  • tags[].name - String, ชื่อแท็ก
  • ตัวอย่างการตอบกลับ

    // อาร์เรย์ JSON ที่แต่ละออบเจ็กต์คือข้อมูลของเทมเพลตหนึ่งรายการ [ { "id": "406979728071589", // รหัสเทมเพลต "name": "code", // ชื่อเทมเพลต "language": "zh_CN", // ภาษาของเทมเพลต "status": "APPROVED", // สถานะ; APPROVED หมายถึงอนุมัติแล้วและใช้งานได้ "category": "OTP", // หมวดหมู่; ปัจจุบันรองรับ OTP/TRANSACTIONAL/MARKETING "components": [ // เนื้อหาเทมเพลต; อาจมี HEADER/BODY/FOOTER/BUTTON { "type": "HEADER", "format": "text", // รูปแบบ; รองรับ text/image/location/video/document ค่าเริ่มต้นคือ TEXT "text": "รหัสยืนยันการลงทะเบียน" // เนื้อหาข้อความ; จำเป็นเมื่อ format เป็น text }, { "type": "BODY", "text": "รหัสยืนยันของคุณคือ {{1}} กรุณากรอกภายใน 5 นาที" // ข้อความที่อยู่ในวงเล็บปีกกาคู่ {{}} คือตัวแปรของเทมเพลต } ], "tags": [ // แท็กที่กำหนดให้เทมเพลตนี้; อาร์เรย์ว่างหากยังไม่ได้กำหนดแท็ก { "id": "101", "name": "แจ้งเตือนการจัดส่ง" } ] }, ...... ]
                  
                  // อาร์เรย์ JSON ที่แต่ละออบเจ็กต์คือข้อมูลของเทมเพลตหนึ่งรายการ
    [
        {
            "id": "406979728071589", // รหัสเทมเพลต
            "name": "code", // ชื่อเทมเพลต
            "language": "zh_CN", // ภาษาของเทมเพลต
            "status": "APPROVED", // สถานะ; APPROVED หมายถึงอนุมัติแล้วและใช้งานได้
            "category": "OTP", // หมวดหมู่; ปัจจุบันรองรับ OTP/TRANSACTIONAL/MARKETING
            "components": [ // เนื้อหาเทมเพลต; อาจมี HEADER/BODY/FOOTER/BUTTON
                {
                    "type": "HEADER",
                    "format": "text", // รูปแบบ; รองรับ text/image/location/video/document ค่าเริ่มต้นคือ TEXT
                    "text": "รหัสยืนยันการลงทะเบียน" // เนื้อหาข้อความ; จำเป็นเมื่อ format เป็น text
                },
                {
                    "type": "BODY",
                    "text": "รหัสยืนยันของคุณคือ {{1}} กรุณากรอกภายใน 5 นาที" // ข้อความที่อยู่ในวงเล็บปีกกาคู่ {{}} คือตัวแปรของเทมเพลต
                }
            ],
            "tags": [ // แท็กที่กำหนดให้เทมเพลตนี้; อาร์เรย์ว่างหากยังไม่ได้กำหนดแท็ก
                {
                    "id": "101",
                    "name": "แจ้งเตือนการจัดส่ง"
                }
            ]
        },
        ......
    ]
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    ดูข้อมูลเทมเพลต

    Endpoint

    GET https://wa.api.engagelab.cc/v1/templates/{template_id}

    โดย {template_id} คือรหัสของเทมเพลตที่ต้องการดู

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

    NULL

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

    GET https://wa.api.engagelab.cc/v1/templates/406979728071589
                  
                  GET https://wa.api.engagelab.cc/v1/templates/406979728071589
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

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

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    id String จำเป็น รหัสเทมเพลต
    name String จำเป็น ชื่อเทมเพลต
    language String จำเป็น ภาษาของเทมเพลต ดูที่ รหัสภาษา
    category String จำเป็น หมวดหมู่ของเทมเพลต
  • OTP: รหัสผ่านแบบใช้ครั้งเดียว
  • MARKETING: การตลาด
  • TRANSACTIONAL: ธุรกรรม
    หมายเหตุ: หมวดหมู่เทมเพลตได้รับการปรับปรุงอย่างช้าที่สุดในวันที่ 1 พฤษภาคม 2023 เป็น:
  • AUTHENTICATION
  • MARKETING
  • UTILITY
  • components Object Array จำเป็น องค์ประกอบของเนื้อหาเทมเพลต ดูที่ ออบเจ็กต์ components ในหัวข้อสร้างเทมเพลต
    status String จำเป็น สถานะของเทมเพลต:
    APPROVED, IN_APPEAL, PENDING, REJECTED, PENDING_DELETION, DELETED, DISABLED, PAUSED, LIMIT_EXCEEDED
    tags Object Array จำเป็น แท็กที่กำหนดให้เทมเพลตนี้ในปัจจุบัน หากยังไม่ได้กำหนดแท็กจะคืนอาร์เรย์ว่าง
  • tags[].id - String, รหัสแท็ก
  • tags[].name - String, ชื่อแท็ก
  • ตัวอย่างการตอบกลับ

    { "id": "406979728071589", // รหัสเทมเพลต "name": "code", // ชื่อเทมเพลต "language": "zh_CN", // ภาษาของเทมเพลต "status": "APPROVED", // สถานะ; APPROVED หมายถึงอนุมัติแล้วและใช้งานได้ "category": "OTP", // หมวดหมู่; ปัจจุบันรองรับ OTP/TRANSACTIONAL/MARKETING "components": [ // เนื้อหาเทมเพลต; อาจมี HEADER/BODY/FOOTER/BUTTON { "type": "HEADER", "format": "text", // รูปแบบ; รองรับ text/image/location/video/document ค่าเริ่มต้นคือ TEXT "text": "รหัสยืนยันการลงทะเบียน" // เนื้อหาข้อความ; จำเป็นเมื่อ format เป็น text }, { "type": "BODY", "text": "รหัสยืนยันของคุณคือ {{1}} กรุณากรอกภายใน 5 นาที" // ข้อความที่อยู่ในวงเล็บปีกกาคู่ {{}} คือตัวแปรของเทมเพลต } ], "tags": [ // แท็กที่กำหนดให้เทมเพลตนี้; อาร์เรย์ว่างหากยังไม่ได้กำหนดแท็ก { "id": "101", "name": "แจ้งเตือนการจัดส่ง" } ] }
                  
                  {
        "id": "406979728071589", // รหัสเทมเพลต
        "name": "code", // ชื่อเทมเพลต
        "language": "zh_CN", // ภาษาของเทมเพลต
        "status": "APPROVED", // สถานะ; APPROVED หมายถึงอนุมัติแล้วและใช้งานได้
        "category": "OTP", // หมวดหมู่; ปัจจุบันรองรับ OTP/TRANSACTIONAL/MARKETING
        "components": [ // เนื้อหาเทมเพลต; อาจมี HEADER/BODY/FOOTER/BUTTON
            {
                "type": "HEADER",
                "format": "text", // รูปแบบ; รองรับ text/image/location/video/document ค่าเริ่มต้นคือ TEXT
                "text": "รหัสยืนยันการลงทะเบียน" // เนื้อหาข้อความ; จำเป็นเมื่อ format เป็น text
            },
            {
                "type": "BODY",
                "text": "รหัสยืนยันของคุณคือ {{1}} กรุณากรอกภายใน 5 นาที" // ข้อความที่อยู่ในวงเล็บปีกกาคู่ {{}} คือตัวแปรของเทมเพลต
            }
        ],
        "tags": [ // แท็กที่กำหนดให้เทมเพลตนี้; อาร์เรย์ว่างหากยังไม่ได้กำหนดแท็ก
            {
                "id": "101",
                "name": "แจ้งเตือนการจัดส่ง"
            }
        ]
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    อัปโหลดไฟล์สื่อตัวอย่าง

    เมื่อสร้างหรือแก้ไขเทมเพลตที่มีส่วนหัวเป็นสื่อ (image, video, document) Meta กำหนดให้ต้องอัปโหลดไฟล์สื่อไปยังเซิร์ฟเวอร์ของ Meta ก่อน API นี้ทำหน้าที่อัปโหลดไฟล์ตัวอย่างของเทมเพลตและคืนค่า handle_id ซึ่งต้องนำไปกรอกในฟิลด์ header_handle ของ endpoint สร้าง/แก้ไขเทมเพลต

    Endpoint

    POST https://wa.api.engagelab.cc/v1/media/handles

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

    Content-Type: multipart/form-data

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    file file จำเป็น ไฟล์สื่อตัวอย่าง ขนาดสูงสุด 20 MB สำหรับข้อกำหนดด้านรูปแบบ ดูที่ ข้อกำหนดรูปแบบข้อความสื่อ

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

    POST '/v1/media/handles' --header 'Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0' --form 'file=@"/Users/demo/files/demopic.jpeg"'
                  
                  POST '/v1/media/handles' 
    --header 'Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0' 
    --form 'file=@"/Users/demo/files/demopic.jpeg"'
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

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

    การตอบกลับเมื่อสำเร็จ

    ฟิลด์ ประเภท ตัวเลือก คำอธิบาย
    handle_id String จำเป็น ตัวระบุไฟล์ที่ Meta คืนกลับมา ใช้กรอกในฟิลด์ example.header_handle เมื่อสร้างหรือแก้ไขเทมเพลต

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

    { "handle_id": "4::aW1hZ2UvanBlZw==:ARb2JGd8LbvJbfmpMASFAlczcn4hxLC6tkwjasjD4WL6_i34tIisq0IdWNFFFj1KwJMRXPU4xwygHSJd4DHu1f19LcBBl2qeb8EuEcgnIUPYIQ:e:1682169041:4985146461608173:100084026087657:ARazr9kxfzKshJE4WpY" }
                  
                  {
        "handle_id": "4::aW1hZ2UvanBlZw==:ARb2JGd8LbvJbfmpMASFAlczcn4hxLC6tkwjasjD4WL6_i34tIisq0IdWNFFFj1KwJMRXPU4xwygHSJd4DHu1f19LcBBl2qeb8EuEcgnIUPYIQ:e:1682169041:4985146461608173:100084026087657:ARazr9kxfzKshJE4WpY"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    การตอบกลับเมื่อล้มเหลว

    รหัสสถานะ HTTP เป็น 4xx หรือ 5xx และเนื้อหาการตอบกลับประกอบด้วยฟิลด์ต่อไปนี้:

    ฟิลด์ ประเภท ตัวเลือก คำอธิบาย
    code int จำเป็น รหัสข้อผิดพลาด
    message String จำเป็น รายละเอียดข้อผิดพลาด

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

    { "code": 3002, "message": "whatsapp.template field must be set correctly when type is template" }
                  
                  {
        "code": 3002,
        "message": "whatsapp.template field must be set correctly when type is template"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    สร้างเทมเพลต

    Endpoint

    POST https://wa.api.engagelab.cc/v1/templates

    ตัวอย่างการเรียกใช้

    { "name": "template_name", // ชื่อเทมเพลต; อนุญาตให้ใช้ชื่อซ้ำได้; รองรับเฉพาะตัวพิมพ์เล็ก ตัวเลข และขีดล่าง "language": "zh_CN", // ภาษาของเทมเพลต; เทมเพลตชื่อเดียวกันห้ามใช้ภาษาซ้ำกัน "category": "OTP", // หมวดหมู่; ปัจจุบันรองรับ OTP/TRANSACTIONAL/MARKETING "components": [ { // เนื้อหาเทมเพลต "type": "BODY", // บล็อกเนื้อหา; ปัจจุบันรองรับ HEADER/BODY/FOOTER/BUTTONS "text": "define var as {{1}}" // ตัวข้อความ; ไม่ต้องส่งฟิลด์ format เมื่อ body เป็นข้อความ "example": { "body_text": [ [ "var1" ] ] } }, { "type": "HEADER", "format": "image", // ประเภทเนื้อหา; รองรับ text/image/video/document/location "example": { "header_handle": [ "https://jiguang.cn/demopic.jpg" ] } }, { "type": "FOOTER", "text": "footer only support text without variable" }, { "type": "BUTTONS", "buttons": [ { "type": "PHONE_NUMBER", // ประเภทปุ่ม; รองรับ PHONE_NUMBER/URL/QUICK_REPLY "text": "this is a phone number", "phone_number": "8613800138000" } ] } ] }
                  
                  {
        "name": "template_name", // ชื่อเทมเพลต; อนุญาตให้ใช้ชื่อซ้ำได้; รองรับเฉพาะตัวพิมพ์เล็ก ตัวเลข และขีดล่าง
        "language": "zh_CN", // ภาษาของเทมเพลต; เทมเพลตชื่อเดียวกันห้ามใช้ภาษาซ้ำกัน
        "category": "OTP", // หมวดหมู่; ปัจจุบันรองรับ OTP/TRANSACTIONAL/MARKETING
        "components": [
            { // เนื้อหาเทมเพลต
                "type": "BODY", // บล็อกเนื้อหา; ปัจจุบันรองรับ HEADER/BODY/FOOTER/BUTTONS
                "text": "define var as {{1}}" // ตัวข้อความ; ไม่ต้องส่งฟิลด์ format เมื่อ body เป็นข้อความ
              "example": {
                    "body_text": [
                        [
                            "var1"
                        ]
                    ]
                }
            },
            {
                "type": "HEADER",
                "format": "image", // ประเภทเนื้อหา; รองรับ text/image/video/document/location
                "example": {
                    "header_handle": [
                        "https://jiguang.cn/demopic.jpg"
                    ]
                }
            },
            {
                "type": "FOOTER",
                "text": "footer only support text without variable"
            },
            {
                "type": "BUTTONS",
                "buttons": [
                    {
                        "type": "PHONE_NUMBER", // ประเภทปุ่ม; รองรับ PHONE_NUMBER/URL/QUICK_REPLY              
                        "text": "this is a phone number",
                        "phone_number": "8613800138000"
                    }
                ]
            }
        ]
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

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

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    name String จำเป็น ชื่อเทมเพลต รองรับเฉพาะตัวพิมพ์เล็ก ตัวเลข และขีดล่าง ไม่เกิน 512 อักขระ
    language String จำเป็น ภาษาของเทมเพลต ดูที่ รหัสภาษา
    category String จำเป็น หมวดหมู่ของเทมเพลต
  • OTP: รหัสผ่านแบบใช้ครั้งเดียว
  • MARKETING: การตลาด
  • TRANSACTIONAL: ธุรกรรม
    หมายเหตุ: หมวดหมู่เทมเพลตได้รับการปรับปรุงอย่างช้าที่สุดในวันที่ 1 พฤษภาคม 2023 เป็น:
  • AUTHENTICATION
  • MARKETING
  • UTILITY
  • components Object Array จำเป็น องค์ประกอบที่อธิบายเนื้อหาเทมเพลต ดูคำอธิบายที่ ออบเจ็กต์ components โปรดทราบว่าต้องมี components ที่มี type=BODY เสมอ

    ออบเจ็กต์ components

    ออบเจ็กต์นี้ใช้อธิบายเนื้อหาเทมเพลต เทมเพลตแบ่งออกเป็นองค์ประกอบ "ส่วนหัว HEADER" "เนื้อความ BODY" "ส่วนท้าย FOOTER" และ "ปุ่ม BUTTONS" โดยระบุด้วย type องค์ประกอบแต่ละประเภทรองรับพารามิเตอร์ต่างกัน ดังนี้

    องค์ประกอบ header (ส่วนหัว)

    องค์ประกอบ header เป็นตัวเลือกทั้งหมด หากไม่ต้องการส่วนหัว ก็ไม่ต้องกำหนดองค์ประกอบนี้

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    type String จำเป็น ประเภทองค์ประกอบ ค่าคือ HEADER
    format String จำเป็น รูปแบบของส่วนหัว ค่าที่ใช้ได้: text, image, video, document ซึ่งหมายถึงข้อความ รูปภาพ วิดีโอ และไฟล์ ตามลำดับ
    text String ไม่บังคับ เนื้อหาข้อความของส่วนหัว ต้องกำหนดฟิลด์นี้เมื่อ format=text ข้อความส่วนหัวสามารถมีตัวแปรได้ แต่รองรับเพียง 1 ตัวแปร เขียนแทนด้วย {{1}}
    example JSON Object ไม่บังคับ ตัวอย่างส่วนหัว จำเป็นเมื่อ text มีตัวแปร หรือ format เป็นประเภทสื่อ ดูที่ คำอธิบายออบเจ็กต์ example
    คำอธิบายออบเจ็กต์ example
    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    header_handle String Array ไม่บังคับ จำเป็นเมื่อ format เป็น image, video หรือ document ฟิลด์นี้ไม่รองรับการส่ง URL ของสื่ออีกต่อไป ต้องส่ง handle_id ที่ได้จาก API อัปโหลดไฟล์สื่อตัวอย่าง
    header_text String Array ไม่บังคับ เมื่อ format เป็น text และมีตัวแปร ให้ส่งค่าแทนที่ของตัวแปรนั้นในฟิลด์นี้ เช่น "header_text": ["var1"]
    องค์ประกอบ body (เนื้อความ)

    องค์ประกอบ body เป็นสิ่งจำเป็น ต้องกำหนดเนื้อหาของเนื้อความ

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    type String จำเป็น ประเภทองค์ประกอบ ค่าคือ BODY
    text String จำเป็น เนื้อหาของเนื้อความ ยาวไม่เกิน 1024 อักขระ รองรับการกำหนดหลายตัวแปร ตัวแปรประกอบด้วยวงเล็บปีกกาคู่และหมายเลขตัวแปร โดยหมายเลขต้องเริ่มจาก 1 และเรียงเพิ่มขึ้น เช่น {{1}} และ {{2}}
    example JSON Object ไม่บังคับ ตัวอย่างเนื้อความ ผู้ตรวจสอบของ Meta จะใช้ตัวอย่างนี้พิจารณาว่าข้อความของคุณเป็นไปตามข้อกำหนดหรือไม่ ดูที่ คำอธิบายออบเจ็กต์ example จำเป็นเมื่อ text มีตัวแปร
    คำอธิบายออบเจ็กต์ example
    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    body_text String Array ไม่บังคับ เมื่อ text มีตัวแปร ต้องส่งค่าแทนที่ของตัวแปรทั้งหมดในฟิลด์นี้ ตามลำดับหมายเลขตัวแปร เช่น "body_text": [["var1","var2","var3"]]

    องค์ประกอบ footer เป็นตัวเลือกทั้งหมด หากไม่ต้องการส่วนท้าย ก็ไม่ต้องกำหนดองค์ประกอบนี้

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    type String จำเป็น ประเภทองค์ประกอบ ค่าคือ FOOTER
    text String จำเป็น เนื้อหาส่วนท้าย กำหนดได้เฉพาะข้อความล้วน ไม่สามารถกำหนดตัวแปรได้
    องค์ประกอบ buttons (ปุ่ม)

    องค์ประกอบ buttons เป็นตัวเลือกทั้งหมด หากไม่ต้องการปุ่ม ก็ไม่ต้องกำหนดองค์ประกอบนี้

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    type String จำเป็น ประเภทองค์ประกอบ ค่าคือ BUTTONS
    buttons Object Array จำเป็น ข้อมูลของปุ่ม ดูที่ คำอธิบายออบเจ็กต์ buttons
    คำอธิบายออบเจ็กต์ buttons
    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    type String จำเป็น ประเภทปุ่ม ค่าที่ใช้ได้: QUICK_REPLY, URL, PHONE_NUMBER ซึ่งหมายถึงตอบกลับด่วน เปิดเว็บไซต์ และโทรออก ตามลำดับ
    text String จำเป็น ข้อความที่แสดงบนปุ่ม ห้ามมีตัวแปร ต้องเป็นข้อความล้วน ยาวไม่เกิน 25 อักขระ
    url String ไม่บังคับ จำเป็นเมื่อ type=URL สามารถใส่ตัวแปรไว้ท้าย URL ได้ แต่รองรับเพียง 1 ตัวแปร เขียนแทนด้วย {{1}}
    phone_number String ไม่บังคับ จำเป็นเมื่อ type=PHONE_NUMBER ห้ามมีตัวแปร เนื้อหาคือหมายเลขโทรศัพท์ที่มีรหัสประเทศ
    example String Array ไม่บังคับ จำเป็นเมื่อ type=QUICK_REPLY และ type=URL
    เช่น "example": ["https://www.website.com/dynamic-url-example"]

    ข้อควรทราบเฉพาะสำหรับเทมเพลตยืนยันตัวตน

    ข้อควรระวัง

    สำหรับเทมเพลตในหมวดหมู่การยืนยันตัวตน (คือ AUTHENTICATION):

    1. อย่ากำหนดองค์ประกอบ HEADER ใน Components
    2. ข้อความเนื้อหาของเทมเพลตจะถูกแปลตามท้องถิ่นโดยอัตโนมัติตามฟิลด์ language ของเทมเพลต
    3. สำหรับโหมด ONE_TAP ที่เปิดแอป ปัจจุบันรองรับเฉพาะแอปพลิเคชัน Android และ คุณต้องดำเนินการ handshake ที่เกี่ยวข้องในแอปของคุณ ดูคู่มือการใช้งานโดยละเอียดได้ที่เอกสารทางการ - เทมเพลตยืนยันตัวตน
    4. ฟิลด์พารามิเตอร์ที่ส่งตอนสร้างเทมเพลตจะไม่ตรงกับฟิลด์เทมเพลตที่บันทึกไว้ฝั่ง WhatsApp หลังสร้างสำเร็จ โดยพื้นฐานแล้วฝั่ง WhatsApp จะแทนที่ BODY, FOOTER และ BUTTONS ของเทมเพลตหมวดหมู่นี้ ดังนั้นเมื่อส่งข้อความเทมเพลตโปรดระมัดระวังเป็นพิเศษ คุณต้องเพิ่มตัวแปรของปุ่ม รายละเอียดดูที่ เอกสาร API ส่งข้อความ
    ตัวอย่าง COPY_CODE

    ข้อมูลที่ส่ง:

    { "name": "copycodetmpl", "language": "zh_CN", "category": "AUTHENTICATION", "components": [ { // body เป็นสิ่งจำเป็น "type": "BODY", "add_security_recommendation": true // จะเพิ่มข้อความแนะนำด้านความปลอดภัยหรือไม่ }, { // footer เป็นตัวเลือก "type": "FOOTER", "code_expiration_minutes": 2 // เพิ่มการแสดงเวลาหมดอายุ ช่วง [1,90]; หากไม่ต้องการก็ไม่ต้องส่งฟิลด์นี้ }, { "type": "BUTTONS", "buttons": [ { "type": "OTP", "otp_type": "copy_code", "text": "copy it" // จำกัดความยาว 25 อักขระ } ] } ] }
                  
                  {
        "name": "copycodetmpl",
        "language": "zh_CN",
        "category": "AUTHENTICATION",
        "components": [
            {
                // body เป็นสิ่งจำเป็น
                "type": "BODY",
                "add_security_recommendation": true  // จะเพิ่มข้อความแนะนำด้านความปลอดภัยหรือไม่
                
            },
            {
                // footer เป็นตัวเลือก
                "type": "FOOTER",		
                "code_expiration_minutes": 2    // เพิ่มการแสดงเวลาหมดอายุ ช่วง [1,90]; หากไม่ต้องการก็ไม่ต้องส่งฟิลด์นี้
            },
            {
                "type": "BUTTONS",          
                "buttons": [
                    {
                        "type": "OTP",
                        "otp_type": "copy_code",
                        "text": "copy it"      // จำกัดความยาว 25 อักขระ
                    }
                ]
            }
        ]
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    เนื้อหาเทมเพลตที่ฝั่ง WhatsApp ได้รับจริงหลังสร้างสำเร็จ:

    { "name": "copycodetmpl", "language": "zh_CN", "category": "AUTHENTICATION", "components": [ { "type": "BODY", "text": "*{{1}}* คือรหัสยืนยันของคุณ เพื่อความปลอดภัย กรุณาอย่าแชร์รหัสนี้", "example": { "body_text": [ ["123456"] ] } }, { "type": "FOOTER", "text": "รหัสนี้จะหมดอายุใน 2 นาที" }, { "type": "BUTTONS", "buttons": [{ "type": "URL", "text": "Copy code", "url": "https://www.whatsapp.com/otp/code/?otp_type=COPY_CODE&code=otp{{1}}", "example": [ "https://www.whatsapp.com/otp/code/?otp_type=COPY_CODE&code=otp123456" ] }] } ] }
                  
                  {
        "name": "copycodetmpl",
        "language": "zh_CN",
        "category": "AUTHENTICATION",
        "components": [
            {
                "type": "BODY",
                "text": "*{{1}}* คือรหัสยืนยันของคุณ เพื่อความปลอดภัย กรุณาอย่าแชร์รหัสนี้",
                "example": {
                    "body_text": [
                        ["123456"]
                    ]
                }
            },
            {
                "type": "FOOTER",
                "text": "รหัสนี้จะหมดอายุใน 2 นาที"
            },
            {
                "type": "BUTTONS",
                "buttons": [{
                  "type": "URL",
                  "text": "Copy code",
                  "url": "https://www.whatsapp.com/otp/code/?otp_type=COPY_CODE&code=otp{{1}}",
                  "example": [
                      "https://www.whatsapp.com/otp/code/?otp_type=COPY_CODE&code=otp123456"
                  ]
              }]
            }
        ]
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย
    ตัวอย่าง ONE_TAP

    ข้อมูลที่ส่ง:

    { "name": "copycodetmpl", "language": "zh_CN", "category": "AUTHENTICATION", "components": [ { // body เป็นสิ่งจำเป็น "type": "BODY", "add_security_recommendation": true // จะเพิ่มข้อความแนะนำด้านความปลอดภัยหรือไม่ }, { // footer เป็นตัวเลือก "type": "FOOTER", "code_expiration_minutes": 2 // เพิ่มการแสดงเวลาหมดอายุ ช่วง [1,90]; หากไม่ต้องการก็ไม่ต้องส่งฟิลด์นี้ }, { "type": "BUTTONS", "buttons": [ { "type": "OTP", "otp_type": "one_tap", "text": "auto1", // จำกัดความยาว 25 อักขระ "autofill_text": "auto1", // จำกัดความยาว 25 อักขระ "package_name": "ppssd", "signature_hash": "asds" } ] } ] }
                  
                  {
        "name": "copycodetmpl",
        "language": "zh_CN",
        "category": "AUTHENTICATION",
        "components": [
            {
                // body เป็นสิ่งจำเป็น
                "type": "BODY",
                "add_security_recommendation": true  // จะเพิ่มข้อความแนะนำด้านความปลอดภัยหรือไม่
                
            },
            {
                // footer เป็นตัวเลือก
                "type": "FOOTER",		
                "code_expiration_minutes": 2    // เพิ่มการแสดงเวลาหมดอายุ ช่วง [1,90]; หากไม่ต้องการก็ไม่ต้องส่งฟิลด์นี้
            },
            {
                "type": "BUTTONS",          
                "buttons": [
                    {
                        "type": "OTP",
                        "otp_type": "one_tap",
                        "text": "auto1",      // จำกัดความยาว 25 อักขระ
                        "autofill_text": "auto1",      // จำกัดความยาว 25 อักขระ
                        "package_name": "ppssd",    
                        "signature_hash": "asds"  
                    }
                ]
            }
        ]
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    เนื้อหาเทมเพลตที่ฝั่ง WhatsApp ได้รับจริงหลังสร้างสำเร็จ:

    { "name": "copycodetmpl", "language": "zh_CN", "category": "AUTHENTICATION", "components": [ { "type": "BODY", "text": "*{{1}}* คือรหัสยืนยันของคุณ เพื่อความปลอดภัย กรุณาอย่าแชร์รหัสนี้", "example": { "body_text": [ ["123456"] ] } }, { "type": "FOOTER", "text": "รหัสนี้จะหมดอายุใน 2 นาที" }, { "type": "BUTTONS", "buttons": [{ "type": "URL", "text": "copy1", "url": "https://www.whatsapp.com/otp/code/?otp_type=ONE_TAP&cta_display_name=auto1&package_name=ppssd&signature_hash=asds&code=otp{{1}}", "example": ["https://www.whatsapp.com/otp/code/?otp_type=ONE_TAP&cta_display_name=auto1&package_name=ppssd&signature_hash=asds&code=otp123456"] }] } ] }
                  
                  {
        "name": "copycodetmpl",
        "language": "zh_CN",
        "category": "AUTHENTICATION",
        "components": [
            {
                "type": "BODY",
                "text": "*{{1}}* คือรหัสยืนยันของคุณ เพื่อความปลอดภัย กรุณาอย่าแชร์รหัสนี้",
                "example": {
                    "body_text": [
                        ["123456"]
                    ]
                }
            },
            {
                "type": "FOOTER",
                "text": "รหัสนี้จะหมดอายุใน 2 นาที"
            },
            {
                "type": "BUTTONS",
                "buttons": [{
                    "type": "URL",
                    "text": "copy1",
                    "url": "https://www.whatsapp.com/otp/code/?otp_type=ONE_TAP&cta_display_name=auto1&package_name=ppssd&signature_hash=asds&code=otp{{1}}",
                    "example": ["https://www.whatsapp.com/otp/code/?otp_type=ONE_TAP&cta_display_name=auto1&package_name=ppssd&signature_hash=asds&code=otp123456"]
                }]
            }
        ]
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

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

    การตอบกลับเมื่อสำเร็จ

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    template_id String จำเป็น รหัสเทมเพลต คืนค่าเมื่อสำเร็จ
    { "template_id": "1275172986566180" // รหัสเทมเพลต }
                  
                  {
        "template_id": "1275172986566180"		// รหัสเทมเพลต
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    การตอบกลับเมื่อล้มเหลว

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    code int จำเป็น รหัสข้อผิดพลาด คืนค่าเมื่อล้มเหลว
    message String จำเป็น ข้อความแสดงข้อผิดพลาด คืนค่าเมื่อล้มเหลว
    { "code": 5002, "message": "Invalid parameter. code:100:2388042" }
                  
                  {
        "code": 5002,
        "message": "Invalid parameter. code:100:2388042"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    อัปเดตเทมเพลต

    Endpoint

    PUT https://wa.api.engagelab.cc/v1/templates/{templateId}

    ตัวอย่างการเรียกใช้

    { "components": [{ // เนื้อหาเทมเพลต "type": "BODY", // บล็อกเนื้อหา "text": "define var as {{1}}", "example": { "body_text": [["var1"]] } },{ "type": "HEADER", "format": "image", // ประเภทเนื้อหา: image/video/document "example": { // หมายเหตุ: ตรงนี้ต้องกรอก handle_id ที่ได้จาก endpoint อัปโหลด ไม่รองรับการกรอก URL รูปภาพโดยตรงอีกต่อไป "header_handle": ["4::aW1hZ2UvanBlZw==:ARb2JGd8LbvJbfmpMASFAlcz..."] } },{ "type": "FOOTER", "text": "footer only support text without variable" },{ "type": "BUTTONS", "buttons": [{ "type": "PHONE_NUMBER", "text": "this is a phone number", "phone_number": "8613800138000" }] }] }
                  
                  {
        "components": [{                        // เนื้อหาเทมเพลต
            "type": "BODY",                     // บล็อกเนื้อหา
            "text": "define var as {{1}}", 
            "example": {
                "body_text": [["var1"]]
            }
        },{
            "type": "HEADER",
            "format": "image",                  // ประเภทเนื้อหา: image/video/document
            "example": {
                // หมายเหตุ: ตรงนี้ต้องกรอก handle_id ที่ได้จาก endpoint อัปโหลด ไม่รองรับการกรอก URL รูปภาพโดยตรงอีกต่อไป
                "header_handle": ["4::aW1hZ2UvanBlZw==:ARb2JGd8LbvJbfmpMASFAlcz..."]
            }
        },{
            "type": "FOOTER",
            "text": "footer only support text without variable"
        },{
            "type": "BUTTONS",
            "buttons": [{                                     
                "type": "PHONE_NUMBER",              
                "text": "this is a phone number",              
                "phone_number": "8613800138000"
            }]
        }]
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

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

    เหมือนกับ พารามิเตอร์คำขอ ของ endpoint สร้างเทมเพลต

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

    การตอบกลับเมื่อสำเร็จ

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    code int จำเป็น รหัสตอบกลับ คงที่เป็น 0
    message String จำเป็น ข้อความตอบกลับ คงที่เป็น success
    { "code": 0, "message": "success" }
                  
                  {
        "code": 0,
        "message": "success"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    การตอบกลับเมื่อล้มเหลว

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    code int จำเป็น รหัสข้อผิดพลาด คืนค่าเมื่อล้มเหลว
    message String จำเป็น ข้อความแสดงข้อผิดพลาด คืนค่าเมื่อล้มเหลว
    { "code": 5002, "message": "Invalid parameter. code:100:2593002" }
                  
                  {
        "code": 5002,
        "message": "Invalid parameter. code:100:2593002"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    ลบเทมเพลต

    Endpoint

    DELETE https://wa.api.engagelab.cc/v1/templates/{template_name}
    หมายเหตุ: ค่าที่ส่งตรงนี้คือชื่อเทมเพลต ไม่ใช่รหัสเทมเพลต ระบบจะลบเนื้อหาเทมเพลตของทุกภาษาที่ใช้ชื่อนี้

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

    การตอบกลับเมื่อสำเร็จ

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    code int จำเป็น รหัสตอบกลับ คงที่เป็น 0
    message String จำเป็น ข้อความตอบกลับ คงที่เป็น success
    { "code": 0, "message": "success" }
                  
                  {
        "code": 0,
        "message": "success"
    }
    
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    การตอบกลับเมื่อล้มเหลว

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    code int จำเป็น รหัสข้อผิดพลาด คืนค่าเมื่อล้มเหลว
    message String จำเป็น ข้อความแสดงข้อผิดพลาด คืนค่าเมื่อล้มเหลว
    { "code": 2004, "message": "something error" }
                  
                  {
        "code": 2004,
        "message": "something error"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    ดึงรายการแท็กเทมเพลต

    คืนค่าแท็กทั้งหมดภายใต้ WABA ที่ API key ปัจจุบันสังกัดอยู่ โดยไม่แบ่งหน้า

    Endpoint

    GET https://wa.api.engagelab.cc/v1/template-tags

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

    NULL

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

    GET https://wa.api.engagelab.cc/v1/template-tags
                  
                  GET https://wa.api.engagelab.cc/v1/template-tags
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

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

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    id String จำเป็น รหัสแท็ก
    name String จำเป็น ชื่อแท็ก
    template_count Integer จำเป็น จำนวนเทมเพลตใน WABA ปัจจุบันที่กำหนดแท็กนี้ไว้ เทมเพลตชื่อเดียวกันที่มีหลายภาษาจะนับแยกตามรหัสเทมเพลต

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

    [ { "id": "101", "name": "แจ้งเตือนการจัดส่ง", "template_count": 3 }, { "id": "102", "name": "บริการหลังการขาย", "template_count": 0 } ]
                  
                  [
        {
            "id": "101",
            "name": "แจ้งเตือนการจัดส่ง",
            "template_count": 3
        },
        {
            "id": "102",
            "name": "บริการหลังการขาย",
            "template_count": 0
        }
    ]
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    หาก WABA ยังไม่มีแท็ก จะคืนอาร์เรย์ว่าง []

    สร้างแท็กเทมเพลต

    Endpoint

    POST https://wa.api.engagelab.cc/v1/template-tags

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

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    name String จำเป็น ชื่อแท็ก ความยาว 1–64 อักขระ ดูข้อกำหนดการตั้งชื่อที่ กฎการตั้งชื่อแท็ก

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

    { "name": "แจ้งเตือนการจัดส่ง" }
                  
                  {
        "name": "แจ้งเตือนการจัดส่ง"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

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

    การตอบกลับเมื่อสำเร็จ

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    id String จำเป็น รหัสแท็ก
    name String จำเป็น ชื่อแท็กหลังผ่านการทำให้เป็นมาตรฐาน
    { "id": "101", "name": "แจ้งเตือนการจัดส่ง" }
                  
                  {
        "id": "101",
        "name": "แจ้งเตือนการจัดส่ง"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    การตอบกลับเมื่อล้มเหลว

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    code int จำเป็น รหัสข้อผิดพลาด คืนค่าเมื่อล้มเหลว
    message String จำเป็น ข้อความแสดงข้อผิดพลาด คืนค่าเมื่อล้มเหลว
    { "code": 3003, "message": "template tag name already exists" }
                  
                  {
        "code": 3003,
        "message": "template tag name already exists"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    แก้ไขแท็กเทมเพลต

    Endpoint

    PUT https://wa.api.engagelab.cc/v1/template-tags/{tag_id}

    โดย {tag_id} คือรหัสของแท็กที่ต้องการแก้ไข

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

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    name String จำเป็น ชื่อแท็กใหม่ ความยาว 1–64 อักขระ ดูข้อกำหนดการตั้งชื่อที่ กฎการตั้งชื่อแท็ก

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

    { "name": "บริการหลังการขาย" }
                  
                  {
        "name": "บริการหลังการขาย"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

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

    การตอบกลับเมื่อสำเร็จ

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    id String จำเป็น รหัสแท็ก
    name String จำเป็น ชื่อแท็กหลังแก้ไข
    { "id": "101", "name": "บริการหลังการขาย" }
                  
                  {
        "id": "101",
        "name": "บริการหลังการขาย"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    การตอบกลับเมื่อล้มเหลว

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    code int จำเป็น รหัสข้อผิดพลาด คืนค่าเมื่อล้มเหลว
    message String จำเป็น ข้อความแสดงข้อผิดพลาด คืนค่าเมื่อล้มเหลว
    { "code": 4001, "message": "template tag not found" }
                  
                  {
        "code": 4001,
        "message": "template tag not found"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    ลบแท็กเทมเพลต

    Endpoint

    DELETE https://wa.api.engagelab.cc/v1/template-tags/{tag_id}
    หมายเหตุ: การลบแท็กเป็นเพียงการยกเลิกความเชื่อมโยงระหว่างเทมเพลตกับแท็กนั้น ไม่ได้ลบเทมเพลต และไม่กระทบต่อการส่งเทมเพลต

    โดย {tag_id} คือรหัสของแท็กที่ต้องการลบ

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

    NULL

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

    DELETE https://wa.api.engagelab.cc/v1/template-tags/101
                  
                  DELETE https://wa.api.engagelab.cc/v1/template-tags/101
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

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

    การตอบกลับเมื่อสำเร็จ

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    affected_template_count Integer จำเป็น จำนวนเทมเพลตที่ถูกยกเลิกความเชื่อมโยงในครั้งนี้ เทมเพลตชื่อเดียวกันที่มีหลายภาษาจะนับแยกตามรหัสเทมเพลต
    { "affected_template_count": 3 }
                  
                  {
        "affected_template_count": 3
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    การตอบกลับเมื่อล้มเหลว

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    code int จำเป็น รหัสข้อผิดพลาด คืนค่าเมื่อล้มเหลว
    message String จำเป็น ข้อความแสดงข้อผิดพลาด คืนค่าเมื่อล้มเหลว
    { "code": 4001, "message": "template tag not found" }
                  
                  {
        "code": 4001,
        "message": "template tag not found"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    กำหนดแท็กให้เทมเพลต

    Endpoint

    PUT https://wa.api.engagelab.cc/v1/templates/{template_id}/tags
    หมายเหตุ: endpoint นี้เป็นการเขียนทับทั้งหมด ค่า tag_ids ที่ส่งคือชุดแท็กทั้งหมดของเทมเพลตหลังบันทึก แท็กเดิมที่ไม่ได้รวมอยู่ในชุดนี้จะถูกยกเลิกความเชื่อมโยง

    โดย {template_id} คือรหัสของเทมเพลตที่ต้องการกำหนดแท็ก

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

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    tag_ids String Array จำเป็น ชุดรหัสแท็กทั้งหมดของเทมเพลตหลังบันทึก ต้องส่งอย่างชัดเจนและต้องไม่เป็น null รหัสทั้งหมดต้องอยู่ใน WABA ปัจจุบัน รหัสที่ซ้ำกันจะถูกตัดออกโดยอัตโนมัติ

    คำอธิบายค่า tag_ids:

    • ส่ง [] หมายถึงล้างแท็กทั้งหมดของเทมเพลตนั้น
    • หากไม่ส่ง tag_ids หรือส่งค่า null คำขอจะล้มเหลว และจะไม่ล้างแท็กเดิม
    • เมื่อคำขอล้มเหลว ชุดแท็กของเทมเพลตจะไม่เปลี่ยนแปลง จึงสามารถลองใหม่ได้ทันที
    • ไม่จำกัดจำนวนแท็กต่อเทมเพลต สามารถส่งแท็กทั้งหมดของ WABA ปัจจุบันได้

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

    { "tag_ids": ["101", "102"] }
                  
                  {
        "tag_ids": ["101", "102"]
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

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

    การตอบกลับเมื่อสำเร็จ

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    code int จำเป็น รหัสตอบกลับ คงที่เป็น 0
    message String จำเป็น ข้อความตอบกลับ คงที่เป็น success
    { "code": 0, "message": "success" }
                  
                  {
        "code": 0,
        "message": "success"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    การตอบกลับเมื่อล้มเหลว

    พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
    code int จำเป็น รหัสข้อผิดพลาด คืนค่าเมื่อล้มเหลว
    message String จำเป็น ข้อความแสดงข้อผิดพลาด คืนค่าเมื่อล้มเหลว

    ไม่พบเทมเพลตหรือเทมเพลตไม่ได้อยู่ใน WABA ปัจจุบัน:

    { "code": 4001, "message": "template not found" }
                  
                  {
        "code": 4001,
        "message": "template not found"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    ไม่พบแท็กหรือแท็กไม่ได้อยู่ใน WABA ปัจจุบัน:

    { "code": 4001, "message": "template tag not found" }
                  
                  {
        "code": 4001,
        "message": "template tag not found"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

    ไม่ได้ส่ง tag_ids หรือส่งค่า null:

    { "code": 3002, "message": "template tag IDs must be provided as an array" }
                  
                  {
        "code": 3002,
        "message": "template tag IDs must be provided as an array"
    }
    
                
    โค้ดนี้โชว์เป็นหน้าต่างลอย

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

    "Endpoint ของแท็ก" ในตารางด้านล่างหมายถึง endpoint ของแท็กทั้งห้ารายการที่ระบุไว้ใน ภาพรวม และรวมถึงกรณีการกรองด้วย tag_id ในการดึงรายการเทมเพลตด้วย

    รหัสข้อผิดพลาด รหัส HTTP Endpoint ที่เกี่ยวข้อง คำอธิบาย
    1000 500 ทุก endpoint ข้อผิดพลาดภายใน
    2001 401 ทุก endpoint การยืนยันตัวตนฝั่ง EngageLab ล้มเหลว ไม่ได้แนบ token ที่มีรูปแบบข้อมูลถูกต้อง
    2002 401 ทุก endpoint การยืนยันตัวตนฝั่ง EngageLab ล้มเหลว token หมดอายุหรือถูกปิดใช้งาน
    2003 400 ทุก endpoint การยืนยันตัวตนฝั่ง WhatsApp ล้มเหลว กรุณาติดต่อฝ่ายบริการลูกค้าของ EngageLab
    2004 403 ทุก endpoint ไม่มีสิทธิ์เรียกใช้ API นี้ หรือบัญชีหรือ WABA ที่เกี่ยวข้องถูกปิดใช้งาน
    3001 400 ทุก endpoint รูปแบบพารามิเตอร์คำขอไม่ถูกต้อง กรุณาตรวจสอบว่าใช้รูปแบบ JSON และประเภทของฟิลด์เป็นไปตามข้อกำหนด
    3002 400 ทุก endpoint พารามิเตอร์คำขอไม่ถูกต้อง กรุณาตรวจสอบว่าพารามิเตอร์เป็นไปตามข้อกำหนด
    3002 400 Endpoint ของแท็ก ชื่อแท็กว่างเปล่า
    3002 400 Endpoint ของแท็ก ชื่อแท็กเกิน 64 อักขระ ดูที่ กฎการตั้งชื่อแท็ก
    3002 400 Endpoint ของแท็ก ชื่อแท็กมีอักขระที่ไม่อนุญาต ดูที่ กฎการตั้งชื่อแท็ก
    3002 400 Endpoint ของแท็ก รูปแบบรหัสแท็กไม่ถูกต้อง ต้องเป็นสตริงของจำนวนเต็มบวก
    3002 400 Endpoint ของแท็ก ไม่ได้ส่ง tag_ids ตอนกำหนดแท็กให้เทมเพลต หรือค่าเป็น null
    3003 400 ทุก endpoint พารามิเตอร์คำขอไม่ถูกต้อง การตรวจสอบเชิงธุรกิจที่เกี่ยวข้องล้มเหลว
    3003 400 Endpoint ของแท็ก มีชื่อแท็กเดียวกันอยู่แล้วใน WABA เดียวกัน การตรวจสอบความซ้ำจะไม่แยกตัวพิมพ์ใหญ่-เล็กและเครื่องหมายเสียง
    3003 400 Endpoint ของแท็ก จำนวนแท็กของ WABA เดียวถึงขีดจำกัด 20 รายการแล้ว
    3003 400 Endpoint ของแท็ก การดำเนินการกับแท็กกำลังไม่ว่าง ลองใหม่ในภายหลังได้ การลองใหม่จะไม่ทำให้เกิดข้อมูลซ้ำ
    4001 400 ทุก endpoint ไม่พบเทมเพลตหรือเทมเพลตไม่ได้อยู่ใน WABA ปัจจุบัน
    4001 400 Endpoint ของแท็ก ไม่พบแท็กหรือแท็กไม่ได้อยู่ใน WABA ปัจจุบัน
    5002 400 ทุก endpoint คำขอเทมเพลตประมวลผลล้มเหลวที่ฝั่ง Meta ดูรายละเอียดได้จากคำอธิบายข้อผิดพลาดในฟิลด์ message

    หมายเหตุ

    ข้อกำหนดรูปแบบข้อความสื่อ

    ประเภทสื่อ Content-Type ที่รองรับ ขีดจำกัดขนาด
    image image/jpeg, image/png ไม่รองรับพื้นหลังโปร่งใส 5 MB
    video video/mp4 16MB
    document รองรับเฉพาะรูปแบบ PDF 100 MB

    กฎการตั้งชื่อแท็ก

    เมื่อสร้างและแก้ไขแท็ก ฝั่งเซิร์ฟเวอร์จะทำให้ชื่อเป็นมาตรฐานก่อน แล้วจึงตรวจสอบความยาวและความซ้ำ

    การทำให้เป็นมาตรฐาน: ตัดช่องว่างหน้า-หลังออก และรวมอักขระช่องว่างที่ติดกันภายในชื่อให้เหลือช่องว่างเดียว เช่น หากส่ง " แจ้งเตือน การจัดส่ง " ชื่อที่บันทึกและคืนค่าจริงจะเป็น "แจ้งเตือน การจัดส่ง"

    ข้อจำกัดของอักขระ: อนุญาตช่องว่าง ขีดล่าง ขีดกลาง อักขระที่มองเห็นได้ของทุกภาษา และอิโมจิ ไม่อนุญาตอักขระขึ้นบรรทัดใหม่ แท็บ อักขระควบคุม และอักขระจัดรูปแบบที่มองไม่เห็น

    ความยาว: หลังทำให้เป็นมาตรฐานแล้วต้องมีความยาว 1–64 อักขระ โดยนับตามจุดรหัส Unicode และอิโมจิหนึ่งตัวอาจใช้หลายจุดรหัส

    การตรวจสอบความซ้ำ: ชื่อต้องไม่ซ้ำกันภายใน WABA เดียวกัน การตรวจสอบไม่แยกตัวพิมพ์ใหญ่-เล็กและเครื่องหมายเสียง เช่น Logistics, logistics และ Logístics ถือเป็นชื่อเดียวกัน ไม่มีข้อจำกัดเรื่องคำสงวน

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

    • WABA หนึ่งบัญชีสร้างแท็กได้สูงสุด 20 รายการ
    • ไม่จำกัดจำนวนแท็กต่อเทมเพลต สามารถกำหนดแท็กทั้งหมดที่มีอยู่ใน WABA ปัจจุบันได้ ดังนั้นขีดจำกัดที่แท้จริงคือ 20 รายการ
    • รหัสแท็กเป็นสตริงทั้งในคำขอและการตอบกลับ (เช่น "101") กรุณาอย่าตีความเป็นชนิดตัวเลข
    • เทมเพลตชื่อเดียวกันที่มีหลายภาษาจะกำหนดแท็กแยกกันตามรหัสเทมเพลตของแต่ละรายการ เช่น เทมเพลตเดียวกันฉบับภาษาไทยและภาษาอังกฤษต้องกำหนดแยกกัน
    • แท็กไม่ถูกเขียนไปยัง Meta ไม่แก้ไขสถานะและคะแนนคุณภาพของเทมเพลต และไม่ทำให้เกิดการตรวจสอบใหม่

    รหัสภาษา

    ภาษา Code
    แอฟริกานส์ af
    แอลเบเนีย sq
    อาหรับ ar
    อาเซอร์ไบจาน az
    เบงกาลี bn
    บัลแกเรีย bg
    กาตาลัน ca
    จีน (จีนแผ่นดินใหญ่) zh_CN
    จีน (ฮ่องกง) zh_HK
    จีน (ไต้หวัน) zh_TW
    โครเอเชีย hr
    เช็ก cs
    เดนมาร์ก da
    ดัตช์ nl
    อังกฤษ en
    อังกฤษ (สหราชอาณาจักร) en_GB
    อังกฤษ (สหรัฐอเมริกา) en_US
    เอสโตเนีย et
    ฟิลิปิโน fil
    ฟินแลนด์ fi
    ฝรั่งเศส fr
    จอร์เจีย ka
    เยอรมัน de
    กรีก el
    คุชราต gu
    เฮาซา ha
    ฮีบรู he
    ฮินดี hi
    ฮังการี hu
    อินโดนีเซีย id
    ไอริช ga
    อิตาลี it
    ญี่ปุ่น ja
    กันนาดา kn
    คาซัค kk
    คินยาร์วันดา rw_RW
    เกาหลี ko
    คีร์กีซ ky_KG
    ลาว lo
    ลัตเวีย lv
    ลิทัวเนีย lt
    มาซิโดเนีย mk
    มาเลย์ ms
    มาลายาลัม ml
    มราฐี mr
    นอร์เวย์ nb
    เปอร์เซีย fa
    โปแลนด์ pl
    โปรตุเกส (บราซิล) pt_BR
    โปรตุเกส (โปรตุเกส) pt_PT
    ปัญจาบ pa
    โรมาเนีย ro
    รัสเซีย ru
    เซอร์เบีย sr
    สโลวัก sk
    สโลวีเนีย sl
    สเปน es
    สเปน (อาร์เจนตินา) es_AR
    สเปน (สเปน) es_ES
    สเปน (เม็กซิโก) es_MX
    สวาฮีลี sw
    สวีเดน sv
    ทมิฬ ta
    เตลูกู te
    ไทย th
    ตุรกี tr
    ยูเครน uk
    อูรดู ur
    อุซเบก uz
    เวียดนาม vi
    ซูลู zu

    ความสัมพันธ์ระหว่างภาษาและรหัสที่เกี่ยวข้อง สามารถดาวน์โหลดไฟล์นี้เพื่อดูได้เช่นกัน:
    รหัสภาษาของเทมเพลต.xlsx

    Icon Solid Transparent White Qiyu
    ติดต่อฝ่ายขาย