สั่งซื้อจากรหัสนำหน้า
ใช้การดำเนินการนี้เมื่อแค็ตตาล็อกรหัสนำหน้าระบุให้สั่งซื้อตามจำนวนจากรหัสนำหน้า แทนการเลือกหมายเลขที่ว่างเป็นรายหมายเลข เริ่มจาก ประเทศ, พื้นที่หรือรัฐ และ รหัสนำหน้า เก็บตัวระบุรหัสนำหน้าและแผนราคาจากผลลัพธ์ล่าสุดชุดเดียวกัน สำหรับหมายเลขเฉพาะที่เลือกจากรายการหมายเลขที่ว่าง ให้ใช้ ซื้อหมายเลขโทรศัพท์ที่เลือก.
คำขอนี้สามารถซื้อหมายเลขและทำให้เกิดค่าใช้จ่ายได้ ไม่ใช่การขอใบเสนอราคา การจอง หรือการทดลองโดยไม่ดำเนินการจริง ตรวจสอบค่าติดตั้งและค่าบริการรายเดือน อัตราค่าโทรเข้าต่อนาที จำนวนนาทีที่รวมอยู่ ช่องสัญญาณ ข้อกำหนดการลงทะเบียน และขีดจำกัดการซื้อของบัญชีก่อนส่งคำขอ ผลลัพธ์จากแค็ตตาล็อกไม่ได้จองหมายเลขคงเหลือหรือตรึงราคา การตรวจสอบการเติมเงินเข้าบัญชีอาจเกิดขึ้นก่อนดำเนินการจัดหาให้เสร็จสิ้น ข้อผิดพลาดเพียงอย่างเดียวจึงไม่ได้พิสูจน์ว่าไม่มีการซื้อหรือการเติมเงินเข้าบัญชีเกิดขึ้น
ส่งคำขอซื้อ
ใช้บัญชี API ที่เปิดใช้งานแล้วผ่าน HTTPS จากที่อยู่ IP ต้นทางที่ได้รับอนุญาต กำหนดตัวแปรจากรายการที่คุณเลือกในแค็ตตาล็อกปัจจุบันและการกำหนดค่าการส่งต่อที่ได้รับอนุมัติ คำสั่งต่อไปนี้จะซื้อหนึ่งหมายเลข
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--data-urlencode 'quantity=1' \
--data-urlencode "price_id=$PRICE_ID" \
--data-urlencode "channels=$CHANNELS" \
--data-urlencode "reference=$ORDER_REFERENCE" \
--data-urlencode "uri=$VOICE_URI" \
"https://api.multitel.net/v3/order/$PREFIX_ID"ด้านบนแสดงการส่งฟอร์มด้วย POST ตัวประสานงานยังอ่านออบเจ็กต์ JSON เมื่อ Content-Type เป็น application/json ด้วย ฟิลด์ JSON จะทับค่าฟิลด์ฟอร์ม/คำขอที่ตรงกัน ใช้รูปแบบการเข้ารหัสเพียงแบบเดียวให้สอดคล้องกัน อย่าส่งค่าในส่วนคิวรีและเนื้อหาคำขอที่ขัดแย้งกัน
| พารามิเตอร์ | ความหมาย |
|---|---|
| ตัวระบุรหัสนำหน้าในพาธ | UUID ของรหัสนำหน้าที่แค็ตตาล็อกส่งกลับมา ไม่สามารถใช้ตัวระบุประเทศ พื้นที่ ราคา หรือหมายเลขรายตัวแทนได้ |
| quantity | ส่งจำนวนเต็มตั้งแต่ 1 ถึง 100 ค่าเริ่มต้นคือ 1 ค่าที่ต่ำกว่า 1 จะถูกปรับเป็น 1 คำขอนี้ไม่ได้มีไว้เพื่อตรวจสอบความถูกต้องเท่านั้น ค่าที่สูงกว่า 100 จะทำให้เกิดข้อยกเว้นก่อนขั้นตอนจัดการการตอบกลับตามปกติของตัวประสานงานนี้ จึงอย่าคาดหวังรูปแบบ JSON ตามปกติสำหรับข้อมูลนำเข้าที่ไม่ถูกต้องดังกล่าว |
| price_id | ตัวระบุราคาสาธารณะของแผนที่เลือก โดย priceid เป็นชื่อเรียกแทนแบบเดิม ตัวระบุที่ไม่ตรงกันอาจทำให้ระบบเลือกใช้แผนอื่นแทนโดยไม่แจ้งให้ทราบ ฟิลด์นี้ไม่ได้ล็อกราคาอย่างเคร่งครัด ยืนยันเพดานราคาของบัญชีก่อนซื้อ และตรวจสอบราคาที่ส่งกลับมาภายหลัง |
| channels | จำนวนช่องสัญญาณจากแผนที่เลือก เมื่อไม่ได้ใช้แผนที่ตรงกับราคาอย่างแน่นอน จำนวนช่องสัญญาณที่ตรงกันอาจมีผลต่อการเลือกแผนทดแทน ค่านี้เพียงอย่างเดียวไม่ได้รับประกันว่าจะซื้อแผนใดแผนหนึ่งโดยเฉพาะ |
| reference | ป้ายกำกับของคุณสำหรับการซื้อหรือชุดการซื้อ ใช้ค่า ASCII แบบสั้นที่มีความยาวไม่เกิน 255 ไบต์ ค่าที่ยาวกว่านี้จะถูกตัดทอน หากระบุค่านี้ ระบบจะเก็บไว้กับการซื้อที่สำเร็จและรวมไว้ในการเรียกกลับ คำสั่งซื้อแยกกันอาจใช้ข้อมูลอ้างอิงเดียวกันได้ ค่านี้ไม่ใช่คีย์ป้องกันการดำเนินการซ้ำ การส่งการดำเนินการนี้อีกครั้งอาจซื้อและเรียกเก็บเงินสำหรับหมายเลขเพิ่มเติม แม้จะใช้ข้อมูลอ้างอิงเดียวกันและค่าฟิลด์เหมือนกันทุกประการ |
| webhook_url | URL สำหรับการเรียกกลับที่ระบุหรือไม่ก็ได้ ใช้ปลายทาง HTTPS ที่คุณควบคุม URL ทั้ง HTTP และ HTTPS ผ่านตัวตรวจสอบพื้นฐานปัจจุบันได้ ส่วน URL ที่ไม่ถูกต้องจะถูกเพิกเฉยแทนการปฏิเสธการซื้อ การเรียกกลับเป็นการแจ้งเตือนเพิ่มเติม ไม่ใช่หลักฐานว่าสามารถส่งคำขอซ้ำได้อย่างปลอดภัย |
การตั้งค่าการส่งต่อและการต่ออายุ
เลือกการตั้งค่าการส่งต่อแบบเดียวกับที่คุณจะใช้กับหมายเลขในพอร์ทัล ค่าเหล่านี้เป็นการกำหนดค่าขั้นสูง ไม่ใช่คำสั่งสำหรับสร้าง Hosted PBX หรือทรังก์รับสายเข้า ใช้การกำหนดค่าบัญชีเดิมที่ทราบว่าใช้งานได้ และตรวจสอบหมายเลขที่บันทึกไว้หลังการซื้อ การซื้อที่ได้รับการยอมรับเพียงอย่างเดียวไม่ได้ยืนยันว่าการส่งต่อเสียงหรือ SMS ใช้งานได้
| ฟิลด์ | การใช้งานและความเข้ากันได้ |
|---|---|
| uri, uri2, uri3 | ปลายทางเสียงหลักและปลายทางเพิ่มเติม ระบุปลายทางที่เหมาะสมกับโหมดการโอนสายและโหมดการเรียกเข้าที่เลือก |
| forward_destination | โหมดการโอนสายเสียง โดย forwarding_destination และ type เป็นชื่อเรียกแทนแบบเดิม หากไม่ระบุจะใช้ค่าเริ่มต้นของขั้นตอนชำระเงินนั้น การส่งฟิลด์ว่างไม่ใช่วิธีที่เชื่อถือได้ในการล้างค่าที่ตั้งไว้เดิม |
| ring_type | โหมดการเรียกเข้าสำหรับเสียง โดย ringtype เป็นชื่อเรียกแทน ใช้ค่าที่รองรับจากการกำหนดค่าหมายเลขในบัญชีของคุณ |
| sms_forward_destination, sms_uri | โหมดและปลายทางการส่งต่อ SMS ชื่อเรียกแทนแบบเดิมคือ smsringtype และ smsuri ขั้นตอนชำระเงินบางแบบจะใช้ปลายทาง SMS เริ่มต้นของบัญชีเมื่อค่านี้ว่าง ความพร้อมใช้งานของ SMS ขึ้นอยู่กับหมายเลขที่เลือกและการเปิดใช้งาน/การลงทะเบียนของหมายเลขนั้น |
| overflow | การตั้งค่ารองรับสายส่วนเกินที่ร้องขอ การรองรับค่านี้ขึ้นอยู่กับความพร้อมใช้งานของแผนและขั้นตอนชำระเงินที่ใช้ |
| force_codec, force_dtmf | การตั้งค่าตัวแปลงสัญญาณและ DTMF ที่ร้องขอ ชื่อเรียกแทนแบบเดิมคือ forcecodec และ forcedtmf ตรวจสอบการกำหนดค่าที่บันทึกไว้สำหรับหมายเลขคงเหลือที่เลือก |
| origination_trunk_id | ตัวระบุการกำหนดค่าทรังก์ที่มีอยู่ ในกรณีที่เกี่ยวข้อง ค่านี้ไม่ได้สร้างทรังก์ หากไม่ระบุจะใช้ค่าเริ่มต้นของขั้นตอนชำระเงิน |
| autorenew | การตั้งค่าการต่ออายุที่ร้องขอ อย่าสันนิษฐานว่า 0 จะปิดการต่ออายุ ขั้นตอนชำระเงินบางแบบถือว่าค่าที่มีลักษณะเหมือนค่าว่าง รวมถึง 0 เป็นการใช้ค่าเริ่มต้นที่เปิดการต่ออายุไว้ ตรวจสอบและเปลี่ยนการต่ออายุของหมายเลขที่ซื้อในพอร์ทัลเมื่อจำเป็น |
ฟิลด์เหล่านี้จะถูกปรับให้อยู่ในรูปแบบมาตรฐานและส่งต่อไปยังขั้นตอนชำระเงิน แต่การบันทึกค่าถาวรแตกต่างกันไปตามเส้นทางการจัดหาหมายเลข เส้นทางคำสั่งซื้อปัจจุบันไม่ได้เปิดให้ใช้ฟิลด์จำกัดเพดานราคาเสนออย่างเคร่งครัดจากคู่มือการซื้อหมายเลขที่เลือกเพื่อเป็นมาตรการป้องกันที่เทียบเท่ากัน ใช้สิทธิ์การซื้อและขีดจำกัดราคาของบัญชี และตรวจสอบการกำหนดค่าหมายเลขที่ได้
อ่านผลลัพธ์ให้ครบถ้วน
แยกวิเคราะห์เนื้อหา JSON และตรวจสอบ status.code กับ status.msg แม้ว่าคำขอ HTTP จะสำเร็จก็ตาม เส้นทางนี้สร้างการตอบกลับ JSON ของตัวเอง และตัวช่วยการตอบกลับที่ใช้ร่วมกันก็ไม่ได้จับคู่รหัสระดับแอปพลิเคชันกับสถานะ HTTP เสมอไป รหัสระดับแอปพลิเคชันอาจเป็นตัวเลข JSON หรือสตริงตัวเลข อย่ากำหนดว่าต้องมี status.results เพราะฟิลด์นี้ไม่มีอยู่ในผลลัพธ์คำสั่งซื้อปกติ
{
"status": {"code": "200", "msg": ""},
"response": {
"id": "o_fictional_example",
"numbers": ["12025550123"],
"price": {
"per_minute": "0.01",
"free_minutes": 0,
"setup_price": "1.25",
"monthly_price": "2.50",
"channels": 2
},
"features": ["voice"],
"needs_registration": 0,
"restrictions": "",
"registration_requirements": null
}
}ตัวระบุ หมายเลข และราคาด้านบนเป็นข้อมูลสมมติ ให้ถือว่ารหัสคำสั่งซื้อเป็นค่าอ้างอิงที่ไม่ควรตีความโครงสร้างภายใน numbers แสดงรายการหมายเลขที่การตอบกลับนี้รายงานว่าซื้อแล้ว ให้เปรียบเทียบความยาวของรายการกับจำนวนที่คุณร้องขอ จำนวนเงินราคาเป็นสตริง และการตอบกลับนี้ปัดอัตราที่เป็นจำนวนเงินให้เหลือทศนิยมสองตำแหน่ง รวมถึง per_minute ให้ใช้แค็ตตาล็อกล่าสุดเพื่อดูความละเอียดของอัตราเดิม จำนวนนาทีที่รวมอยู่และจำนวนช่องสัญญาณอาจส่งมาเป็นค่าตัวเลขหรือสตริงตัวเลข
ส่วนข้อมูลราคาอธิบายแผนที่เลือกซึ่งใช้สร้างการตอบกลับ ไม่ใช่ใบแจ้งหนี้โดยละเอียดสำหรับทุกหมายเลขหรือยอดรวมของคำสั่งซื้อ หมายเลขคงเหลือหลายรายการที่อาจถูกเลือกอาจมีแผนต่างกัน ตรวจสอบกระทบยอดหมายเลขที่ซื้อแต่ละหมายเลขและธุรกรรมในบัญชี แทนการนำค่าจากส่วนข้อมูลนี้ไปคูณแล้วสันนิษฐานว่าเป็นหลักฐานยืนยันยอดรวมสุดท้าย
การซื้อได้บางส่วนและผลลัพธ์ที่ไม่แน่นอน
รหัสระดับแอปพลิเคชัน 200 อาจมาพร้อมคำเตือนและจำนวนหมายเลขที่น้อยกว่าที่ร้องขอ ความล้มเหลวในภายหลังไม่ได้ยกเลิกหมายเลขที่ซื้อไปแล้ว เก็บรหัสคำสั่งซื้อ หมายเลข และข้อความที่ส่งกลับมาไว้ ตรวจสอบกระทบยอดหมายเลขเหล่านั้นกับรายการหมายเลขของคุณและธุรกรรมในบัญชีก่อนตัดสินใจว่าจะสั่งซื้อจำนวนที่เหลือหรือไม่
การหมดเวลา คำขอที่การเชื่อมต่อขาดหาย การตอบกลับที่มีรูปแบบผิด หรือข้อผิดพลาดหลังส่งคำขอ ไม่ใช่หลักฐานว่าไม่มีอะไรเกิดขึ้น อย่าส่งคำขอซื้ออีกครั้งโดยอัตโนมัติ แม้จะใช้ข้อมูลอ้างอิงเดียวกัน เก็บคำขอเดิม ข้อมูลอ้างอิง และรหัสคำสั่งซื้อใด ๆ ที่ส่งกลับมาไว้ ตรวจสอบรายการหมายเลขและธุรกรรมในบัญชี และติดต่อฝ่ายสนับสนุนเมื่อผลลัพธ์ยังไม่แน่นอน
คำสั่งซื้อที่ยังไม่ได้รับการยืนยันอาจส่งรหัสระดับแอปพลิเคชัน 400 กลับมาพร้อมข้อความว่ากำลังอยู่ระหว่างการยืนยัน เก็บรหัสคำสั่งซื้อที่ส่งกลับมาและตรวจสอบกระทบยอดการซื้อนั้น ข้อความนี้ไม่ได้เป็นคำสั่งให้ส่งคำขออีกครั้ง กระบวนการกู้คืนคำสั่งซื้อที่บันทึกไว้จะติดตามคำสั่งซื้อเดิมภายในระบบ คำขอใหม่ที่ส่งมายังการดำเนินการนี้จะสร้างความพยายามซื้อแยกต่างหาก แทนการดำเนินคำสั่งซื้อเดิมต่อโดยอาศัยข้อมูลอ้างอิงของคุณ จึงอาจซื้อและเรียกเก็บเงินสำหรับหมายเลขเพิ่มได้ อย่าใช้การส่งคำขอซื้อซ้ำเพื่อตรวจสอบสถานะหรือค้นหาหมายเลขคงเหลือ
การลงทะเบียนและการเปิดใช้งาน
หมายเลขที่ซื้อหรือได้รับการจัดสรรแล้วอาจยังต้องลงทะเบียนหรือเปิดใช้งาน หาก needs_registration เป็น 1 ให้ตรวจสอบ restrictions และ registration_requirements ฟิลด์หลังอาจระบุ v3/get_requirements พร้อมค่า country และ number_type ดำเนินขั้นตอนยืนยันตัวตน/ที่อยู่ที่เกี่ยวข้องให้เสร็จสิ้น และยืนยันสถานะของหมายเลขก่อนนำไปใช้งานรับสายหรือรับส่งข้อความ
features อธิบายความสามารถที่ระบุไว้ในการเสนอขาย ไม่ได้ยืนยันการกำหนดเส้นทางที่ใช้งานจริง การอนุมัติแคมเปญ การส่ง SMS หรือการรับแฟกซ์ ตรวจสอบการตั้งค่าการส่งต่อที่บันทึกไว้ และทดสอบบริการอย่างเหมาะสมเมื่อหมายเลขเปิดใช้งานแล้ว
การเรียกกลับของคำสั่งซื้อ
การเรียกกลับส่ง JSON ด้วย POST ซึ่งประกอบด้วยสถานะคำสั่งซื้อและการตอบกลับ พร้อมเพิ่มข้อมูลอ้างอิงของคุณหากได้ระบุไว้ ระบบจะส่งการเรียกกลับสำหรับการซื้อที่รายงาน รวมถึงผลลัพธ์ที่ซื้อได้บางส่วน การเรียกกลับที่ล้มเหลวไม่ได้ย้อนกลับการซื้อ ระบบอาจลองส่งใหม่ จึงควรจัดการข้อมูลซ้ำโดยอิงรหัสคำสั่งซื้อและตรวจสอบกระทบยอดหมายเลข แทนการส่งคำขอซื้ออีกครั้ง
เส้นทางนี้ไม่ได้เพิ่มลายเซ็นเข้ารหัสลับให้การเรียกกลับ ให้ถือว่าการเรียกกลับเป็นการแจ้งเตือนเพื่อตรวจสอบกระทบยอดกับรายการหมายเลขที่คุณเข้าถึงผ่านการยืนยันตัวตน ไม่ใช่การอนุญาตโดยลำพังให้เรียกเก็บเงิน จัดเตรียมบริการ หรือให้สิทธิ์เข้าถึง อย่าใส่ข้อมูลรับรอง API ไว้ใน URL การเรียกกลับ การส่งคำขอซื้ออีกครั้งโดยใช้ URL การเรียกกลับอื่นไม่ได้อัปเดตคำสั่งซื้อเดิม แต่จะสร้างความพยายามซื้อแยกต่างหาก เก็บรหัสคำสั่งซื้อเดิมไว้เมื่อขอให้ฝ่ายสนับสนุนตรวจสอบการเรียกกลับของคำสั่งซื้อนั้น
ความล้มเหลวที่ต้องจัดการ
| ผลลัพธ์ | สิ่งที่ต้องทำ |
|---|---|
| 400 พร้อมข้อความว่ารหัสนำหน้าไม่ถูกต้อง | อ่านแค็ตตาล็อกรหัสนำหน้าอีกครั้งและใช้ตัวระบุปัจจุบัน แยกกรณีนี้ออกจากข้อความว่าคำสั่งซื้อเดิมยังอยู่ระหว่างการยืนยัน |
| 403 หรือความล้มเหลวเกี่ยวกับนโยบายบัญชี/ยอดเงินคงเหลือ | ตรวจสอบสิทธิ์การซื้อ เพดานราคาของบัญชี ขีดจำกัดจำนวน และการเติมเงิน การตรวจสอบเหล่านี้อาจส่งต่อรหัสระดับแอปพลิเคชันอื่นมาได้ ให้เก็บข้อความจริงที่ได้รับไว้ |
| 404 หรือไม่มีหมายเลขคงเหลือที่พร้อมจำหน่าย | เรียกดูข้อมูลความพร้อมจำหน่ายใหม่ อย่าส่งคำขอซื้อซ้ำสำหรับรหัสนำหน้าที่ไม่มีหมายเลขเหลือแล้ว |
| 409 พร้อมข้อความเกี่ยวกับการยืนยันการซื้อ การปฏิเสธจากผู้ให้บริการ หรือคำสั่งซื้อที่ถูกยกเลิก | เก็บรหัสคำสั่งซื้อที่ส่งกลับมาและข้อความจริงไว้ ตรวจสอบกระทบยอดคำขอกับรายการหมายเลข ธุรกรรมในบัญชี และฝ่ายสนับสนุนก่อนส่งคำขอซื้ออีกครั้ง การใช้ข้อมูลอ้างอิงเดิมซ้ำไม่ได้ทำให้คำขออีกครั้งปลอดภัย |
| 200 พร้อมคำเตือนหรือจำนวนหมายเลขที่น้อยกว่าที่ร้องขอ | มีการซื้อหมายเลขบางส่วนแล้ว ตรวจสอบกระทบยอดการจัดสรรที่ส่งกลับมาและธุรกรรมก่อนสั่งซื้อเพิ่ม |
| ความล้มเหลวของเซิร์ฟเวอร์/การรับส่งข้อมูล หรือการตอบกลับที่อ่านไม่ได้ | ให้ถือว่าผลลัพธ์อาจยังไม่แน่นอน จนกว่ารายการหมายเลขและธุรกรรมจะยืนยันได้ว่าเกิดอะไรขึ้น |