CargoWise One เป็นระบบจัดการขนส่งสินค้าที่ใช้กันมากที่สุดในบรรดาตัวแทนขนส่งสินค้าไทยขนาดกลางถึงใหญ่ AWB Intelligence API ของ KabyTech ถูกออกแบบมาเพื่อส่งข้อมูล AWB ที่มีโครงสร้างเข้า CargoWise โดยตรง ไม่ต้องกรอกข้อมูลด้วยมือและลดข้อผิดพลาดในการประมวลผล คู่มือนี้แนะนำขั้นตอนการเชื่อมต่อทั้งหมด ตั้งแต่การสร้าง API key จนถึงท่อส่ง webhook สำหรับการใช้งานจริง
คู่มือนี้สมมติว่าคุณมี: บัญชี KabyTech ในแผน Professional ขึ้นไป, CargoWise One instance ที่มี eHub หรือ eAdapter access และความเข้าใจพื้นฐานเกี่ยวกับ webhook และ REST API หากการตั้งค่า CargoWise ของคุณใช้ middleware สำหรับการเชื่อมต่อจากบุคคลที่สาม (เช่น Chain.io หรือ Youredi) แนวคิดเหมือนกันแต่ขั้นตอนการกำหนดค่าเฉพาะจะแตกต่างกัน
เข้าสู่ระบบ Operations Portal ของ KabyTech ที่ portal.kabytech.ai ไปที่ Settings > API Keys > Create New Key ตั้งชื่อ key ให้สื่อความหมาย (เช่น "CargoWise Production") และเลือกขอบเขตต่อไปนี้:
awb:parse — จำเป็น อนุญาตให้ส่งเอกสารเพื่อแยกวิเคราะห์awb:read — จำเป็น อนุญาตให้ดึงผลลัพธ์ที่แยกวิเคราะห์แล้วwebhook:manage — จำเป็น อนุญาตให้ลงทะเบียนและจัดการ webhook endpointfield-map:read — ไม่บังคับแต่แนะนำ อนุญาตให้ดึงการกำหนดค่าการแมปฟิลด์ผ่าน APIคัดลอก API key และ secret ตัว secret จะแสดงเพียงครั้งเดียว เก็บไว้ในระบบจัดการความลับขององค์กรคุณ — ไม่ใช่ใน spreadsheet หรืออีเมลที่ใช้ร่วมกัน
KabyTech ใช้ webhook เพื่อส่งข้อมูล AWB ที่แยกวิเคราะห์แล้วไปยังระบบของคุณแบบเรียลไทม์ เมื่อเอกสารถูกแยกวิเคราะห์ ผลลัพธ์ JSON ที่มีโครงสร้างจะถูก POST ไปยัง endpoint ที่คุณกำหนด สำหรับการเชื่อมต่อ CargoWise endpoint นี้มักเป็น:
ตัวแทนขนส่งไทยส่วนใหญ่ใช้วิธี middleware เพราะให้การควบคุมมากขึ้นในการแมปฟิลด์และการจัดการข้อผิดพลาด นี่คือวิธีลงทะเบียน webhook ใน KabyTech:
POST https://api.kabytech.ai/v1/webhooks
Authorization: Bearer YOUR_API_KEY
{
"url": "https://your-middleware.example.com/kabytech-webhook",
"events": ["awb.parsed", "awb.validation_failed"],
"secret": "your-webhook-signing-secret",
"active": true
}
event awb.parsed จะทำงานเมื่อเอกสารถูกแยกวิเคราะห์สำเร็จ event awb.validation_failed จะทำงานเมื่อการแยกวิเคราะห์สำเร็จแต่การตรวจสอบข้ามตรวจพบความไม่สอดคล้อง (เช่น ยอดรวม RTD ไม่ตรงกับ PPD/COL) คุณควรจัดการทั้งสอง event — ความล้มเหลวในการตรวจสอบยังคงมีข้อมูลที่ดึงได้ แต่มีสัญญาณระบุว่าฟิลด์ใดต้องตรวจสอบ
นี่คือขั้นตอนที่ละเอียดที่สุด JSON output ของ KabyTech ประกอบด้วยทั้ง 29 ส่วน FWB เป็น object ที่มีโครงสร้าง CargoWise คาดหวังข้อมูลในรูปแบบ Universal Shipment XML ตารางด้านล่างแมปฟิลด์สำคัญ:
awb.prefix + awb.serial → Shipment/SubShipmentCollection/SubShipment/WaybillNumberrouting.origin → Shipment/OrganizationAddressCollection[AddressType="ConsignorPickupDeliveryAddress"]/Port/Coderouting.destination → Shipment/OrganizationAddressCollection[AddressType="ConsigneePickupDeliveryAddress"]/Port/Codeflight_bookings[0].flight_number → Shipment/SubShipmentCollection/SubShipment/TransportLegCollection/TransportLeg/VoyageFlightNoflight_bookings[0].date → TransportLeg/EstimatedDepartureshipper.name → OrganizationAddressCollection[AddressType="ConsignorDocumentaryAddress"]/CompanyNameshipper.address → .../Address1, .../Address2shipper.city → .../Cityshipper.country → .../Country/Codeshipper.contact.phone → .../Phoneshipper.contact.email → .../Emailconsignee.* → โครงสร้างเดียวกันด้วย AddressType="ConsigneeDocumentaryAddress"rate_description[n].pieces → PackingLineCollection/PackingLine/PackQtyrate_description[n].rate_class → PackingLine/RateClass/Coderate_description[n].commodity_code → PackingLine/Commodity/Coderate_description[n].chargeable_weight → PackingLine/ChargeableWeightrate_description[n].rate → PackingLine/RateChargerate_description[n].total → PackingLine/TotalChargerate_description[n].nature_of_goods → PackingLine/GoodsDescriptioncharge_declarations.prepaid_collect_indicator → Shipment/ChargeCollection/Charge/PrepaidCollectIndicatorcharge_declarations.declared_value_carriage → Shipment/DeclaredValueForCarriagecharge_declarations.declared_value_customs → Shipment/DeclaredValueForCustomsprepaid_summary.weight_charge → ChargeCollection/Charge[ChargeType="WeightCharge"]/Amountother_charges[n].code + .amount → ChargeCollection/Charge[ChargeType="OtherCharge"]/ChargeCode + /Amountspecial_handling_codes[] → Shipment/NoteCollection/Note[NoteType="SpecialHandling"]oci[n].country_code + oci[n].information_id + oci[n].data → Shipment/CustomsEntryCollection/CustomsEntry/CustomsReferenceCollectionhts_codes[] → CustomsEntry/TariffCollection/Tariff/TariffCodeagent.iata_code → Shipment/AgentReferenceบริการ middleware ต้องทำงาน 3 อย่าง:
เมื่อ KabyTech ส่ง webhook จะมี header X-KabyTech-Signature ที่ประกอบด้วย HMAC-SHA256 signature ของ request body ที่ลงนามด้วย webhook secret ของคุณ ตรวจสอบ signature นี้ทุกครั้งก่อนประมวลผล payload เพื่อป้องกัน request ปลอมจากการสร้างการขนส่งใน CargoWise instance ของคุณ
แมปฟิลด์ JSON ของ KabyTech ไปยัง CargoWise Universal Shipment XML โดยใช้ตารางการแมปฟิลด์ด้านบน ข้อพิจารณาสำคัญสำหรับตัวแทนขนส่งไทย:
2026-03-20T14:30:00+07:00) CargoWise คาดหวัง yyyy-MM-ddTHH:mm:ss ตัด timezone offset ออกระหว่างการแปลงPackingLine แยกกันใน Universal XML รักษาลำดับไว้ — CargoWise ใช้ packing line แรกเป็นคำอธิบายสินค้าหลักส่ง XML ที่แปลงแล้วไปยัง CargoWise eAdapter endpoint eAdapter จะสร้างหรืออัปเดตรายการการขนส่ง กำหนดค่า eAdapter ให้ส่งคืนหมายเลขอ้างอิงการขนส่ง CargoWise เมื่อสำเร็จ และบันทึกข้อมูลนี้ร่วมกับ KabyTech AWB ID สำหรับวัตถุประสงค์การตรวจสอบ
การเชื่อมต่อสำหรับการใช้งานจริงต้องมีการจัดการข้อผิดพลาดที่แข็งแกร่ง เราแนะนำสิ่งต่อไปนี้:
ก่อนเริ่มใช้งานจริง ให้ทดสอบท่อส่งทั้งหมดด้วยสถานการณ์ต่อไปนี้:
KabyTech จัดเตรียมสภาพแวดล้อม sandbox พร้อม API key ทดสอบเพื่อจุดประสงค์นี้ ผลลัพธ์ที่แยกวิเคราะห์ใน sandbox ใช้ JSON schema เดียวกับการใช้งานจริงแต่ไม่ถูกนับรวมในโควตารายเดือนของคุณ
ทีมเชื่อมต่อของเราได้ติดตั้ง KabyTech + CargoWise ที่ตัวแทนขนส่งสินค้าไทยกว่า 40 แห่ง เราช่วยได้