เลือกรหัสนำหน้าเป็นรายรายการ
เรียกใช้คำสั่งค้นหาประเทศและพื้นที่ให้บริการ จากนั้นเรียก getprefixes โดยไม่จัดกลุ่ม คัดลอกค่าต่อไปนี้ของรหัสนำหน้าที่เลือก: uuid หาก returns_numbers มีค่าเป็น 0 รหัสนำหน้านั้นจะจัดสรรหมายเลขเมื่อสั่งซื้อ ให้ใช้ค่าที่ส่งกลับมาใน next_function แทนการกำหนดว่าต้องมีรายการหมายเลขแต่ละหมายเลข
เรียกดูผลลัพธ์เป็นชุดที่จำกัดขนาด
สำหรับการค้นหาทั่วไป ให้ใช้ compact=1 และระบุขนาดชุดที่ต้องการทั้งในพาธและในพารามิเตอร์คิวรี quantity ดังตัวอย่างด้านล่าง ไม่มีพารามิเตอร์หน้าเพจหรือเคอร์เซอร์ ผลลัพธ์แบบย่อเป็นเพียงตัวอย่าง การส่งคำขอซ้ำไม่ได้รับประกันว่าจะได้หน้าถัดไปที่ไม่มีรายการซ้ำ อย่าตีความว่าผลลัพธ์ที่ว่างหรือมีจำนวนน้อยคือจำนวนหมายเลขทั้งหมดที่มีอยู่
ค้นหารูปแบบตัวเลขที่จดจำง่าย
ระบุ number_filter_mode=contains หรือ ends_with พร้อมกับ number_filter_value ค่าต้องประกอบด้วยตัวเลข 1–15 หลัก การค้นหาอาจดึงชุดหมายเลขที่เป็นตัวเลือกมาในจำนวนจำกัดก่อนใช้ตัวกรอง จึงอาจพลาดหมายเลขอื่นที่ตรงเงื่อนไข หากต้องการใช้แหล่งหมายเลขที่รองรับการค้นหาตามเงื่อนไขที่บังคับ ให้ขอตัวเลือกแหล่งหมายเลข pid จาก MultiTEL และใช้ filter_required=1 หากไม่ได้ระบุแหล่งหมายเลขหรือแหล่งที่เลือกไม่รองรับ API จะส่งข้อผิดพลาดกลับมา
ตรวจสอบหมายเลขที่เลือก
อ่านค่า number, info.uuid, ค่าที่เลือกของ price[].uuid รวมถึงชื่อคุณสมบัติที่มีให้ใช้และข้อกำหนดการลงทะเบียนจากผลลัพธ์เดียวกัน อาร์เรย์ price อาจมีหลายแผนที่มีจำนวนช่องสัญญาณและอัตราค่าบริการแตกต่างกัน ฟิลด์จำนวนเงินและปริมาณอาจเข้ารหัสเป็นสตริงได้ เมทาดาทาที่เป็นตัวเลือก รวมถึง info.state จะแตกต่างกันตามแหล่งข้อมูล อย่ากำหนดว่าข้อมูลรัฐต้องมีโครงสร้างเดียวกันในทุกแหล่ง หรืออนุมานราคาจากรหัสระบุ
ในเส้นทางการทำงานที่ไม่ใช้การสตรีม ระบบจะตัดหมายเลขตัวเลือกที่ซ้ำกันและจัดสรรจำนวนจากแหล่งต่าง ๆ ก่อนเรียงลำดับชุดที่เลือกตามราคารายเดือนของแผนแรก เส้นทางอื่นอาจเริ่มสตรีมได้ก่อนหน้านั้น จึงไม่มีการรับประกันการเรียงลำดับโดยรวมหรือการตัดรายการซ้ำที่ใช้ได้กับทุกคำขอ อีกทั้งการเรียงลำดับไม่ได้พิสูจน์ว่าตัวอย่างที่ส่งกลับมีหมายเลขที่ถูกที่สุดในแค็ตตาล็อกทั้งหมด
สั่งซื้อแยกต่างหากและยืนยันผลลัพธ์
การค้นหาไม่ได้ซื้อหรือจองสิ่งใด ให้เก็บหมายเลขและรหัสระบุแผนที่ส่งกลับไว้สำหรับขั้นตอนการสั่งซื้อภายใต้บัญชีเดียวกัน ตรวจสอบแผน ข้อกำหนด และค่าใช้จ่ายจริงก่อนส่งคำสั่งซื้อ ข้อกำหนดการลงทะเบียนอาจทำให้การเปิดใช้งานล่าช้า ผลการค้นหาไม่ได้กำหนดเส้นตายที่แน่นอนในการเปิดใช้งาน
คำขอ
ใช้บัญชี MultiTEL API ที่เปิดใช้งานแล้ว โดยใช้ข้อมูลรับรอง HTTP Basic สำหรับบัญชีที่ใช้รหัสผ่าน หรือ Authorization: Bearer สำหรับบัญชีที่ใช้โทเค็น สิทธิ์ของบัญชีและข้อจำกัด IP ของบัญชียังคงมีผล ดูคำแนะนำทั่วไปเกี่ยวกับการยืนยันตัวตน
ใช้พารามิเตอร์พาธและพารามิเตอร์คิวรีใน URL ใช้ GET สำหรับขั้นตอนการค้นหาผ่าน API สาธารณะ ตัวจัดการยังรับค่าบางรายการจากแบบฟอร์มหรือคำขอด้วย แต่ไม่ใช่ API ค้นหาที่รับเนื้อหาคำขอเป็น JSON
curl --fail-with-body --get \
--user "${MULTITEL_API_USERNAME}:${MULTITEL_API_PASSWORD}" \
--data-urlencode "compact=1" \
--data-urlencode "quantity=10" \
"https://api.multitel.net/v3/getnumbers/${PREFIX_ID}/10"| ชื่อ | ชนิดข้อมูล | จำเป็นต้องระบุ | คำอธิบาย |
|---|---|---|---|
prefix_id | string | ใช่ | รหัสระบุรหัสนำหน้ารายรายการที่ส่งกลับจากผลตอบกลับของ getprefixes แบบไม่จัดกลุ่ม คัดลอกให้ตรงทุกอักขระ อย่าใช้รหัสระบุประเทศ พื้นที่ให้บริการ รหัสนำหน้าแบบจัดกลุ่ม หรือแผนราคาแทน |
quantity | integer | ไม่ | จำนวนเป้าหมายที่จะดึงข้อมูล ค่าเริ่มต้นคือ 1 ค่าที่ไม่เป็นบวกจะเปลี่ยนเป็น 1 การระบุ quantity ในพาธเพียงอย่างเดียวไม่ใช่วิธีจำกัดจำนวนผลลัพธ์โดยรวมที่เชื่อถือได้ การค้นหาที่ไม่เจาะจงแหล่งหมายเลขและไม่มีพารามิเตอร์คิวรี quantity อาจขยายการดึงข้อมูลและส่งกลับได้สูงสุด 50 รายการต่อแหล่งก่อนการประมวลผลอื่น สำหรับการเรียกดูทั่วไปที่ต้องการจำกัดขนาด ให้ใช้ compact=1 และระบุจำนวนที่ต้องการซ้ำในคิวรีดังตัวอย่าง |
| ชื่อ | ชนิดข้อมูล | จำเป็นต้องระบุ | คำอธิบาย |
|---|---|---|---|
quantity | integer | ไม่ | ขนาดชุดผลลัพธ์สุดท้ายที่ร้องขอ ค่าที่ไม่ว่างจะถูกแปลงเป็นจำนวนเต็ม โดยมีค่าต่ำสุดเป็น 1 ในเส้นทางที่ไม่ใช้การสตรีมและไม่เจาะจงแหล่งหมายเลข ค่านี้จะจำกัดการจัดสรรขั้นสุดท้าย แต่ไม่ได้บังคับให้บริการค้นหาหมายเลขให้ได้ครบตามจำนวนนั้น การค้นหาแบบย่อที่เจาะจงแหล่งหมายเลขอาจส่งกลับชุดผลลัพธ์แบบย่อของแหล่งนั้นแทนการใช้ขีดจำกัดนี้ |
compact | string | ไม่ | ใช้ 1, true หรือ on เพื่อรับผลตอบกลับขนาดเล็กลงแบบไม่สตรีม โดยมีสูงสุด 10 รายการต่อแหล่งก่อนการจัดสรรขั้นสุดท้าย ผลลัพธ์เป็นเพียงตัวอย่างของหมายเลขที่ดึงมาในขณะนั้น ไม่ใช่แค็ตตาล็อกทั้งหมด |
number_filter_mode | string | ไม่ | โหมดรูปแบบตัวเลขที่เลือกใช้ได้: contains หรือ ends_with ต้องระบุ number_filter_value ด้วย ระบบจะตรวจสอบผลลัพธ์เทียบกับตัวเลขของหมายเลขโทรศัพท์ที่ปรับรูปแบบให้เป็นมาตรฐานแล้ว การค้นหาไม่ได้ไล่ตรวจหมายเลขทั้งหมดที่มีอยู่เพื่อรับประกันว่าจะพบทุกหมายเลขที่อาจตรงเงื่อนไข |
number_filter_value | string | ไม่ | ตัวเลขระหว่าง 1 ถึง 15 หลัก โดยไม่มีช่องว่าง + หรือเครื่องหมายวรรคตอน เลขศูนย์นำหน้ามีความสำคัญ ให้ส่งค่าเป็นข้อความ |
filter_required | string | ไม่ | ขั้นสูง: ค่า 1, true, yes หรือ on กำหนดให้ต้องเลือกแหล่งหมายเลขอย่างชัดเจนและแหล่งนั้นต้องรองรับโหมดตัวกรอง มิฉะนั้น API จะส่งกลับ status.code เป็น 422 ไม่จำเป็นต้องใช้ตัวเลือกนี้สำหรับการเรียกดูแค็ตตาล็อกทั่วไป |
pid | string | ไม่ | ตัวเลือกแหล่งหมายเลขขั้นสูงที่ MultiTEL จัดให้ ยอมรับรูปแบบตัวเลขและรูปแบบเลขฐานสิบหกความยาว 32 อักขระที่รองรับ ค่าที่ระบบไม่รู้จักจะถูกละเว้นโดยไม่มีการแจ้งเตือน ไม่ต้องระบุสำหรับการใช้งานทั่วไป อย่าสร้างตัวเลือกจากรหัสระบุราคา หรือสันนิษฐานว่าตัวเลือกใด ๆ จะจำกัดผลลัพธ์ให้อยู่เฉพาะแหล่งหมายเลขนั้นเท่านั้น |
ผลตอบกลับ
ออบเจ็กต์ JSON หนึ่งออบเจ็กต์ที่มี status และ response เมื่อสำเร็จ status.code จะเป็น 200 และ response จะเป็นอาร์เรย์ของรายการหมายเลข ส่วน status.results คือจำนวนรายการในอาร์เรย์ที่ส่งกลับ และ status.msg อาจเป็น Results: N หรือ OK สำหรับผลตอบกลับแบบสตรีม หากไม่ใช้ compact=1 การค้นหาบางแบบจะทยอยเขียนอาร์เรย์ response และจบด้วย status จึงต้องรอให้ได้รับเนื้อหา JSON ครบถ้วน นี่ไม่ใช่ JSON แบบคั่นแต่ละรายการด้วยการขึ้นบรรทัดใหม่ ให้ตรวจสอบ status.code แม้ว่าการรับส่งผ่าน HTTP จะสำเร็จก็ตาม ฟิลด์ทั่วไปแสดงไว้ด้านล่าง เมทาดาทาเฉพาะแหล่งข้อมูลและฟิลด์ที่เป็นตัวเลือกอาจแตกต่างกัน ให้ถือว่ารหัสระบุทั้งหมดเป็นค่าที่ไม่ควรตีความโครงสร้างภายใน และเก็บหมายเลขไว้คู่กับค่า price[].uuid ที่เลือกสำหรับหมายเลขนั้น
ตัวอย่างประกอบโครงสร้างผลตอบกลับ ไม่ใช่ข้อมูลบัญชีจริงหรือใบเสนอราคาปัจจุบัน
{
"status": {
"code": 200,
"msg": "Results: 1",
"results": 1
},
"response": [
{
"number": "12125550123",
"info": {
"uuid": "NUMBER_ID_FROM_RESPONSE",
"prefix_uuid": "PREFIX_ID_FROM_RESPONSE",
"area_uuid": "AREA_ID_FROM_RESPONSE",
"country_uuid": "COUNTRY_ID_FROM_RESPONSE",
"country_iso": "US",
"prefix": "+1212",
"name": "Example area",
"state": "US"
},
"price": [
{
"uuid": "PRICE_PLAN_ID_FROM_RESPONSE",
"per_minute": "0.01",
"per_sms": "0",
"per_mms": "0",
"free_minutes": "0",
"setup_price": "1.00",
"monthly_price": "2.00",
"yearly_price": "0",
"channels": "2"
}
],
"contract": {
"term": "1 month",
"renewal": "monthly",
"notice": "none"
},
"restrictions": {
"needs_registration": "0",
"restrictions": ""
},
"features": [
"voice"
],
"overflow": "0"
}
]
}ข้อผิดพลาด
- 401: การยืนยันตัวตนล้มเหลว หากข้อมูลรับรองไม่ถูกต้องหรือขาดหายไป หรือการเข้าถึงบัญชี API ถูกปฏิเสธ จะไม่มีผลการค้นหา
- 404: Invalid prefix ID, Invalid country, Invalid area หรือ No numbers found ให้อ่าน status.msg ผลตอบกลับข้อผิดพลาดไม่ใช่อาร์เรย์ของหมายเลข
- 400: NUMBER_FILTER_INVALID ใน response.code: โหมดไม่ถูกต้อง ค่าไม่ได้เป็นตัวเลข 1–15 หลัก หรือใช้ filter_required โดยไม่ได้ระบุทั้งโหมดและค่าให้ครบ
- 422: NUMBER_FILTER_UNSUPPORTED ใน response.code: รหัสนำหน้านั้นจัดสรรหมายเลขในเวลาสั่งซื้อ (reason=order_only_prefix และ next_function ระบุเส้นทางสำหรับสั่งซื้อ) หรือแหล่งหมายเลขที่เลือกอย่างชัดเจนไม่สามารถรองรับตัวกรองที่บังคับใช้ได้
ความพร้อมให้บริการและผลกระทบข้างเคียง
- ตัวจัดการนี้ค้นหาและจัดเตรียมใบเสนอราคา ไม่ได้ส่งคำสั่งซื้อหมายเลขหรือหักเงินค่าซื้อหมายเลข แต่อาจปรับปรุงแคชแค็ตตาล็อก ลบรายการหมายเลขในแคชที่ล้าสมัย บันทึกแผนราคาที่ใช้เฉพาะบัญชี และบันทึกประวัติการค้นหา
- ความพร้อมให้บริการเป็นผล ณ เวลาหนึ่ง ไม่ใช่การจอง การสั่งซื้อภายหลังอาจล้มเหลวหรือแสดงความพร้อมให้บริการที่ต่างออกไป ตรวจสอบและปรับข้อมูลให้สอดคล้องกับผลการสั่งซื้อก่อนลองซื้ออีกครั้ง
- ราคาเป็นราคาเฉพาะบัญชี เก็บรหัสระบุแผนที่เลือกไว้ใช้กับบัญชีเดิม และตรวจสอบเงื่อนไขการสั่งซื้อกับค่าใช้จ่ายแยกต่างหาก เอนด์พอยต์นี้เพียงอย่างเดียวไม่ได้ยืนยันว่าราคาจะยังมีผลจนถึงเวลาที่สั่งซื้อภายหลัง
- หมายเลขและราคาในตัวอย่างเป็นข้อมูลสมมติเพื่อแสดงโครงสร้างผลตอบกลับ ไม่ใช่ใบเสนอราคาจริงในขณะนั้น ต้องอ่านความสามารถ จำนวนช่องสัญญาณ ระยะสัญญา และข้อมูลการลงทะเบียนจากผลลัพธ์จริงที่เลือก
- คำอธิบายการลงทะเบียนบางรายการมีข้อความที่จัดรูปแบบหรือลิงก์ เมื่อแสดงผลในแอปพลิเคชันของคุณ ให้ถือว่าสตริงที่ส่งกลับเป็นข้อมูลที่ยังไม่น่าเชื่อถือ
- ความพร้อมให้บริการโทรศัพท์เคลื่อนที่และค่าแฟล็กขึ้นอยู่กับสิทธิ์ของบัญชีและหมายเลขที่มีอยู่ รหัสนำหน้าในแค็ตตาล็อกหรือแฟล็ก is_mobile เพียงอย่างเดียวไม่ได้ยืนยันความสามารถด้านโทรศัพท์เคลื่อนที่ของหมายเลขใดหมายเลขหนึ่ง