Pilih nomor beserta harganya
Beli satu nomor tertentu yang dipilih dari pencarian terbaru atas nomor yang tersedia. Gunakan info.uuid dari entri yang dipilih sebagai ID nomor dan salah satu nilai price[].uuid dari entri yang sama sebagai ID harga. Rute ini juga menerima nomor lengkap yang tersimpan, tetapi ID negara, wilayah, atau prefiks tidak dapat menggantikan pemilihan nomor.
Mencari atau membaca harga yang tersimpan tidak mereservasi nomor atau mengunci harganya. Konfirmasikan biaya penyiapan, biaya bulanan, tarif per menit panggilan masuk, serta menit dan kanal yang termasuk dalam pilihan tersebut, juga izin pembelian akun dan persyaratan registrasinya. Jumlah dasar awal dalam fungsi pembantu yang ditinjau adalah biaya penyiapan ditambah biaya bulanan; seluruh biaya dan ketentuan khusus penyedia harus dikonfirmasikan untuk paket yang dipilih.
Kirim permintaan pembelian dengan pengaman melalui POST
Gunakan akun API yang diaktifkan melalui HTTPS dari alamat IP sumber yang diizinkan. Perintah berikut melakukan pembelian, bukan meminta penawaran harga atau menjalankan simulasi. Tetapkan setiap variabel dari pilihan nomor/harga terbaru yang sama. Kolom batas maksimum tetap menggunakan prefiks lama restore_quote_; portal saat ini juga menggunakannya untuk pembelian nomor tertentu dengan pengaman.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--data-urlencode "restore_quote_price_id=$PRICE_ID" \
--data-urlencode "restore_quote_setup=$SETUP_PRICE" \
--data-urlencode "restore_quote_monthly=$MONTHLY_PRICE" \
--data-urlencode "restore_quote_per_minute=$PER_MINUTE_PRICE" \
--data-urlencode "restore_quote_channels=$CHANNELS" \
"https://api.multitel.net/v3/rentnumber/$NUMBER_ID/$PRICE_ID"Gunakan formulir POST seperti yang ditunjukkan. Fungsi pembantu juga memiliki kemampuan penguraian JSON/pembungkus opsi, tetapi tinjauan ini belum memastikan kesetaraan penuh untuk semua jalur penawaran harga dan penyedia. Jangan gunakan GET untuk pembelian meskipun koordinator lama ini tidak memiliki pengaman metode yang eksplisit.
| Kolom | Arti |
|---|---|
| NUMBER_ID | UUID nomor yang dipilih dari hasil pencarian, atau nomor lengkap yang tersimpan. Satu nomor per permintaan. |
| PRICE_ID | UUID harga yang terkait dengan nomor yang dipilih tersebut dan akun Anda. Selalu sertakan secara eksplisit. |
| restore_quote_price_id | Harus cocok dengan ID harga yang ditentukan oleh sistem. Menyertakan kolom ini mengaktifkan pemeriksaan penawaran harga; kolom ini bukan kunci idempotensi. |
| restore_quote_setup | Biaya penyiapan maksimum yang diterima, berupa nilai numerik berhingga yang tidak negatif. |
| restore_quote_monthly | Biaya bulanan maksimum yang diterima, berupa nilai numerik berhingga yang tidak negatif. |
| restore_quote_per_minute | Tarif per menit panggilan masuk maksimum yang diterima, berupa nilai numerik berhingga yang tidak negatif. |
| restore_quote_channels | Jumlah kanal berupa bilangan bulat yang harus sama persis dengan opsi harga yang dipilih, bukan permintaan untuk paket kanal yang berbeda. |
Sertakan semua kolom numerik penawaran harga setiap kali Anda menyertakan ID harga penawaran. ID yang berubah, harga di atas batas maksimum, batas maksimum yang tidak disertakan/tidak valid, jumlah kanal yang berubah, atau kunci penawaran harga yang sedang digunakan akan menghasilkan kode API 409 sebelum permintaan diteruskan ke penyedia penyewaan yang dipilih. Perbandingan mengizinkan sedikit toleransi bilangan titik mengambang; gunakan nilai paket yang sebenarnya ditampilkan, bukan harga yang dibulatkan secara manual.
Pengaman tersebut tidak menjadikan keseluruhan alur kerja sebagai simulasi atau transaksi. Pencarian data registrasi, penyediaan identitas, atau pekerjaan fungsi pembantu lainnya dapat berlangsung sebelum pemeriksaan ini. Pengaman tersebut juga tidak mengunci ketersediaan nomor eksternal atau menggantikan pembatasan pembelian pada tingkat akun.
Registrasi dan aktivasi
Bila diperlukan, tambahkan RegistrationID sebagai kolom formulir yang berisi UUID profil registrasi milik pelanggan. Ini bukan ID bukti yang diunggah, alamat pemasok, atau entitas identitas terpisah. Fungsi pembantu mencari profil berdasarkan akun yang terautentikasi dan menolak profil yang tidak disertakan atau tidak tersedia.
Sebagian persediaan nomor yang didukung mengizinkan pembelian sebelum registrasi selesai; persediaan lainnya memerlukan profil sebelum pembelian. Validasi atau penyediaan khusus operator mungkin masih diperlukan. Jangan mengartikan pembelian yang berhasil atau tidak dilakukannya pemeriksaan awal sebagai pengecualian registrasi atau aktivasi langsung.
Jika ada, kolom respons registration_requirements mengidentifikasi pencarian persyaratan terstruktur berdasarkan negara dan jenis nomor. Gunakan katalog registrasi dan alur kerja bukti untuk memenuhi persyaratan yang berlaku. Teks dan metadata yang dikembalikan tidak dengan sendirinya menyetujui suatu profil.
Hindari penggantian paket tanpa pemberitahuan
Koordinator lama dapat menyimpulkan harga yang tidak disertakan dari data nomor dalam cache. Koordinator juga dapat beralih ke harga akun terbaru untuk prefiks dalam cache ketika ID harga yang disertakan secara eksplisit sudah tidak ada, serta memperbarui pilihan harga yang diizinkan dalam cache. Jangan mengandalkan mekanisme pengganti ini untuk memilih paket yang telah disetujui pelanggan.
Sertakan harga yang dipilih secara eksplisit beserta kolom pengaman penawaran harga yang cocok. Pengaman ID penawaran menolak peralihan ke ID lain sebelum permintaan penyewaan diteruskan. Perbarui pencarian dan dapatkan pilihan baru yang disetujui setelah konflik akibat harga kedaluwarsa, alih-alih menghapus pengaman untuk memaksakan pembelian.
Tidak ada masa reservasi yang dijamin atau masa berlaku cache yang diberlakukan secara universal untuk setiap jalur. Ketersediaan nomor, batas harga akun, dan kebijakan pembelian diperiksa kembali dalam alur kerja, tetapi keseluruhan perilaku khusus penyedia masih dalam peninjauan.
Lanjutan: pengaturan perutean bawaan akun
Pembelian dapat mewarisi tujuan panggilan suara, tujuan cadangan saat terjadi kegagalan, tujuan SMS, dan preferensi trunk asal yang sudah ada pada akun. Tinjau pengaturan bawaan tersebut sebelum memesan; tidak menyertakan opsi perutean tidak menjamin nomor akan tanpa konfigurasi. Fungsi pembantu yang ditinjau mengaktifkan perpanjangan otomatis secara bawaan.
| Opsi | Perilaku penentuan nilai |
|---|---|
| uri, uri2, uri3 | Nilai yang tidak disertakan mewarisi pengaturan bawaan akun yang bersesuaian. Nilai kosong yang disertakan secara eksplisit mengosongkan nilai pada fungsi pembantu, alih-alih mewarisinya. Gunakan tujuan valid yang sesuai dengan mode perutean yang dipilih. |
| smsuri | Nilai yang tidak disertakan mewarisi tujuan SMS akun; nilai kosong yang disertakan secara eksplisit mengosongkannya pada fungsi pembantu. |
| origintrunk | ID trunk eksplisit yang dikenali diprioritaskan. Nilai yang tidak dapat ditentukan dapat beralih ke preferensi akun atau pengaturan bawaan lama, alih-alih menghasilkan kesalahan. |
| forward_destination, forwarding_destination, type | Alias mode perutean yang tidak kosong, dengan urutan prioritas tersebut. Gunakan nilai yang didukung dari konfigurasi perutean akun, bukan mode numerik hasil tebakan. |
| RegistrationID | Pencarian profil registrasi yang dibatasi pada pelanggan terkait; ini terpisah dari tujuan perutean. |
| autorenew | Nilai bawaannya adalah 1. Fungsi pembantu menggunakan pemeriksaan nilai tidak kosong, sehingga 0 tidak dapat diandalkan untuk menonaktifkan perpanjangan melalui kolom pembelian ini. Gunakan pengelolaan perpanjangan akun yang didukung dan verifikasi pengaturan yang tersimpan. |
Ini adalah semantik fungsi pembantu bersama, bukan jaminan bahwa setiap pemasok menyimpan setiap pengaturan opsional dengan cara yang sama. Kolom lama lainnya untuk panggilan suara, pesan suara, faks, dan SMS tersedia, tetapi masih memerlukan peninjauan menyeluruh untuk tiap penyedia. Verifikasi konfigurasi nomor yang dibeli dan tersimpan melalui alur kerja akun sebelum mengandalkan panggilan atau pesan.
Respons
Contoh fiktif untuk pembelian sederhana; nilai dan fitur berbeda-beda sesuai paket yang dipilih.
{
"status": {
"code": 200,
"msg": ""
},
"response": {
"number": "12025550123",
"price": {
"per_minute": "0.0100",
"free_minutes": "100",
"setup_price": "2.00",
"monthly_price": "4.00",
"channels": "2",
"overflow": "0"
},
"features": [
"voice"
],
"needs_registration": 0,
"registration_requirements": null
}
}Koordinator menggunakan status.code/status.msg miliknya sendiri dan response sebagai pembungkus, tanpa jaminan adanya kolom status.results. Kesalahan umumnya disertai daftar respons kosong. Jika berhasil, periksa nomor dan harga yang dikembalikan, lalu rekonsiliasi persediaan nomor akun dan status registrasi. Penerimaan oleh penyedia bukanlah pengujian langsung atas panggilan suara, SMS, atau faks.
Kesalahan dan hasil yang belum pasti
| Kode API | Arti |
|---|---|
| 403 | Pembatasan harga/pembelian akun, pilihan harga yang tidak tersedia, atau profil registrasi yang tidak dapat diakses dapat menghalangi pemrosesan. |
| 404 | Pilihan nomor, harga, atau prefiks tidak disertakan atau tidak tersedia. |
| 409 | Nomor sudah aktif, pengaman penawaran harga tidak lagi cocok, atau kunci sedang dipegang oleh operasi lain yang menggunakan pengaman. |
| 422 | Informasi registrasi diperlukan, tidak lengkap, atau tidak dapat disediakan dalam jalur registrasi yang ditinjau. |
| 500 dan kode penyedia/akun lainnya | Kegagalan penyedia, pemrosesan lokal, atau kebijakan. Kode-kode ini bukan bukti yang berlaku untuk semua kasus bahwa tidak terjadi pembelian atau pembebanan biaya. |
Baca isi respons API yang sebenarnya serta status HTTP. Penyedia eksternal mungkin menerima penyewaan sebelum pemberitahuan lokal, registrasi, atau pemrosesan lainnya gagal. Sebagian alokasi persediaan nomor lokal menggunakan transaksi basis data, tetapi tidak ada mekanisme pembatalan yang berlaku universal untuk pesanan penyedia eksternal. Koordinator ini tidak memiliki kunci idempotensi klien.
Lakukan rekonsiliasi sebelum mencoba kembali
- Simpan nomor, harga, dan batas maksimum penawaran harga yang telah disetujui dalam catatan pesanan aplikasi Anda sebelum mengirimkan permintaan satu kali.
- Baca persediaan nomor yang telah dibeli dan detail nomor untuk akun yang sama setelah permintaan, termasuk setelah batas waktu terlampaui atau terjadi kesalahan.
- Jika nomor tersebut ada, verifikasi harga, perpanjangan, perutean, dan status registrasinya, alih-alih mengajukan permintaan pembelian lagi.
- Jika hasilnya masih belum pasti, minta tim dukungan merekonsiliasi pesanan penyedia dan penagihan akun sebelum mencoba kembali. Pesan kesalahan atau penanda keberhasilan pada log lama saja tidak cukup sebagai bukti.
- Setelah kepemilikan dan aktivasi dikonfirmasikan, selesaikan pemeriksaan perutean dan pengujian layanan yang biasa dilakukan untuk akun tersebut.