Scegli insieme il numero e il prezzo
Acquista un singolo numero specifico selezionato da una nuova ricerca di numeri disponibili. Usa il valore info.uuid della voce selezionata come ID del numero e uno dei valori price[].uuid della stessa voce come ID del prezzo. La rotta accetta anche il numero completo memorizzato, ma l’ID di un paese, di un’area o di un prefisso non sostituisce la selezione di un numero.
La ricerca o la consultazione dei prezzi salvati non riserva un numero né ne blocca il prezzo. Conferma il costo di attivazione, il canone mensile, la tariffa al minuto in entrata, i minuti e i canali inclusi dell’opzione selezionata, oltre alle autorizzazioni di acquisto dell’account e ai requisiti di registrazione. Nella funzione ausiliaria esaminata, l’importo base iniziale è la somma del costo di attivazione e del canone mensile; occorre confermare tutti gli addebiti e le condizioni specifici del fornitore per il piano selezionato.
POST per inviare una richiesta di acquisto con controlli di protezione
Usa un account API abilitato tramite HTTPS da un indirizzo IP di origine consentito. Il comando seguente effettua un acquisto, non un preventivo o una simulazione. Imposta tutte le variabili a partire dalla stessa nuova selezione di numero e prezzo. I campi dei limiti massimi mantengono il prefisso storico restore_quote_; anche il portale attuale li usa per gli acquisti di numeri specifici con controlli di protezione.
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"Usa POST con dati di modulo come mostrato. La funzione ausiliaria supporta anche l’analisi di JSON e di un involucro di opzioni, ma questa revisione non ne dimostra la piena equivalenza per tutti i percorsi relativi a preventivi e fornitori. Non usare GET per gli acquisti, anche se questo coordinatore preesistente non dispone di un controllo esplicito sul metodo.
| Campo | Significato |
|---|---|
| NUMBER_ID | UUID del numero selezionato nella ricerca oppure numero completo memorizzato. Un solo numero per richiesta. |
| PRICE_ID | UUID del prezzo associato al numero selezionato e al tuo account. Forniscilo sempre esplicitamente. |
| restore_quote_price_id | Deve corrispondere all’ID del prezzo risolto. Fornire questo campo abilita i controlli sul preventivo; non è una chiave di idempotenza. |
| restore_quote_setup | Costo di attivazione massimo accettato, espresso come valore numerico finito non negativo. |
| restore_quote_monthly | Canone mensile massimo accettato, espresso come valore numerico finito non negativo. |
| restore_quote_per_minute | Tariffa massima accettata al minuto in entrata, espressa come valore numerico finito non negativo. |
| restore_quote_channels | Il numero intero esatto di canali dell’opzione di prezzo selezionata, non una richiesta di un piano con un numero diverso di canali. |
Fornisci tutti i campi numerici del preventivo ogni volta che fornisci l’ID del prezzo del preventivo. Un ID modificato, un prezzo superiore a un limite massimo, un limite mancante o non valido, un numero di canali modificato o un blocco del preventivo occupato restituisce il codice API 409 prima che la richiesta di noleggio venga inoltrata al fornitore selezionato. I confronti ammettono una piccola tolleranza in virgola mobile; usa i valori effettivi visualizzati per il piano anziché un prezzo arrotondato manualmente.
I controlli di protezione non trasformano l’intero flusso in una simulazione o in una transazione. La ricerca dei profili di registrazione, il provisioning delle identità o altre attività della funzione ausiliaria possono avvenire prima di questi controlli. Inoltre, non bloccano la disponibilità dei numeri presso fornitori esterni né sostituiscono le restrizioni di acquisto a livello di account.
Registrazione e attivazione
Quando richiesto, aggiungi il campo del modulo RegistrationID contenente l’UUID del profilo di registrazione appartenente al cliente. Non è l’ID di un documento giustificativo caricato, di un indirizzo del fornitore o di un’entità di identità separata. La funzione ausiliaria risolve il profilo rispetto all’account autenticato e rifiuta i profili mancanti o non disponibili.
Alcuni numeri tra quelli supportati possono essere acquistati prima che la registrazione sia completa; altri richiedono un profilo prima dell’acquisto. Potrebbero comunque essere necessari una convalida o un provisioning specifici dell’operatore. Non interpretare un acquisto riuscito o l’assenza di un controllo preliminare come un’esenzione dalla registrazione o un’attivazione immediata.
Quando presente, il campo della risposta registration_requirements identifica la ricerca strutturata dei requisiti in base al paese e al tipo di numero. Usa il catalogo di registrazione e il flusso di presentazione dei documenti giustificativi per soddisfare i requisiti applicabili. Il testo e i metadati restituiti non costituiscono di per sé l’approvazione di un profilo.
Evita la sostituzione del piano senza preavviso
Il coordinatore preesistente può dedurre un prezzo omesso dai dati del numero memorizzati nella cache. Può anche ripiegare sul prezzo più recente dell’account per un prefisso memorizzato nella cache quando un ID di prezzo fornito esplicitamente non esiste più, e aggiornare la selezione dei prezzi consentiti nella cache. Non affidarti a questi meccanismi di ripiego per selezionare il piano approvato dal cliente.
Fornisci esplicitamente il prezzo selezionato e i corrispondenti campi di protezione del preventivo. Il controllo sull’ID del preventivo rifiuta il ripiego su un altro ID prima dell’inoltro della richiesta di noleggio. Dopo un conflitto dovuto a un prezzo non più aggiornato, aggiorna la ricerca e ottieni l’approvazione di una nuova selezione, anziché rimuovere i controlli per forzare l’acquisto.
Non esiste un periodo di prenotazione garantito né una durata della cache applicata universalmente a tutti i percorsi. La disponibilità del numero, i limiti di prezzo dell’account e le politiche di acquisto vengono ricontrollati durante il flusso, ma il comportamento completo specifico di ciascun fornitore è ancora in fase di revisione.
Avanzate: impostazioni di instradamento predefinite dell’account
Un acquisto può ereditare le destinazioni voce, le destinazioni di failover, la destinazione SMS e la preferenza per il trunk di origine già presenti nell’account. Esamina queste impostazioni predefinite prima di ordinare; omettere le opzioni di instradamento non garantisce che il numero sia privo di configurazione. La funzione ausiliaria esaminata abilita il rinnovo automatico per impostazione predefinita.
| Opzione | Comportamento di risoluzione |
|---|---|
| uri, uri2, uri3 | I valori omessi ereditano le corrispondenti impostazioni predefinite dell’account. I valori esplicitamente vuoti cancellano il valore della funzione ausiliaria invece di ereditarlo. Usa destinazioni valide adatte alla modalità di instradamento selezionata. |
| smsuri | Un valore omesso eredita la destinazione SMS dell’account; un valore esplicitamente vuoto la cancella nella funzione ausiliaria. |
| origintrunk | Un ID di trunk esplicito riconosciuto ha la precedenza. Un valore non risolto può comportare il ripiego sulla preferenza dell’account o sull’impostazione predefinita preesistente anziché generare un errore. |
| forward_destination, forwarding_destination, type | Alias non vuoti della modalità di instradamento, in questo ordine di precedenza. Usa valori supportati dalla configurazione di instradamento dell’account, non una modalità numerica ipotizzata. |
| RegistrationID | Ricerca del profilo di registrazione limitata al cliente; è distinta dalle destinazioni di instradamento. |
| autorenew | Il valore predefinito è 1. La funzione ausiliaria controlla che il valore non sia vuoto, quindi 0 non disabilita in modo affidabile il rinnovo tramite questo campo di acquisto. Usa le funzionalità supportate per la gestione dei rinnovi dell’account e verifica l’impostazione salvata. |
Queste regole descrivono il comportamento della funzione ausiliaria condivisa e non garantiscono che tutti i fornitori salvino ogni impostazione facoltativa allo stesso modo. Esistono altri campi preesistenti per voce, segreteria telefonica, fax e SMS, ma richiedono ancora una revisione completa specifica per ciascun fornitore. Verifica la configurazione salvata del numero acquistato tramite il flusso dell’account prima di fare affidamento su chiamate o messaggi.
Risposta
Esempio fittizio di un acquisto senza complicazioni; i valori e le funzionalità variano in base al piano selezionato.
{
"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
}
}Il coordinatore usa i propri campi status.code/status.msg e l’involucro response, senza garantire la presenza del campo status.results. In caso di errore, l’elenco della risposta è generalmente vuoto. In caso di successo, esamina il numero e il prezzo restituiti, quindi verifica che l’inventario dell’account e lo stato di registrazione siano coerenti con l’acquisto. L’accettazione da parte del fornitore non costituisce un test reale di voce, SMS o fax.
Errori e risultati incerti
| Codice API | Significato |
|---|---|
| 403 | Le restrizioni di prezzo o di acquisto dell’account, una selezione di prezzo non disponibile o un profilo di registrazione inaccessibile possono bloccare l’elaborazione. |
| 404 | Selezione di numero, prezzo o prefisso mancante o non disponibile. |
| 409 | Il numero è già attivo, un controllo di protezione del preventivo non trova più corrispondenza oppure un’altra operazione protetta detiene il blocco. |
| 422 | Le informazioni di registrazione sono obbligatorie, incomplete oppure non possono essere predisposte tramite provisioning nei percorsi di registrazione esaminati. |
| 500 e altri codici del fornitore o dell’account | Errore del fornitore, dell’elaborazione locale o relativo alle politiche. Questi codici non dimostrano in tutti i casi che non sia avvenuto alcun acquisto o addebito. |
Leggi il corpo effettivo della risposta API oltre allo stato HTTP. Un fornitore esterno può accettare un noleggio prima che la notifica locale, la registrazione o un’altra elaborazione non vadano a buon fine. Alcune assegnazioni di numeri dall’inventario locale usano transazioni del database, ma non esiste un annullamento universale degli ordini presso fornitori esterni. Questo coordinatore non dispone di una chiave di idempotenza del client.
Verifica la situazione prima di riprovare
- Conserva il numero, il prezzo e i limiti massimi del preventivo approvati nel record dell’ordine della tua applicazione prima di inviare la richiesta una sola volta.
- Dopo la richiesta, consulta l’inventario dei numeri acquistati e i dettagli del numero per lo stesso account, anche in caso di timeout o errore.
- Se il numero è presente, verificane il prezzo, il rinnovo, l’instradamento e lo stato di registrazione invece di inviare un’altra richiesta di acquisto.
- Se il risultato è ancora incerto, chiedi all’assistenza di verificare la corrispondenza tra l’ordine presso il fornitore e la fatturazione dell’account prima di riprovare. Un messaggio di errore o un indicatore di successo nei registri del sistema preesistente, da solo, non costituisce una prova sufficiente.
- Dopo aver confermato la titolarità e l’attivazione, completa i normali controlli di instradamento e i test del servizio previsti per l’account.