Изберете номера и цената заедно
Закупете един конкретен номер, избран от ново търсене на налични номера. Използвайте полето на избрания запис info.uuid като идентификатор на номера и една от стойностите на същия запис в price[].uuid като идентификатор на цената. Маршрутът приема и пълния съхранен номер, но идентификатор на държава, област или префикс не замества избора на номер.
Търсенето или прочитането на запазени цени не резервира номер и не фиксира цената му. Потвърдете избраната цена за първоначално свързване, месечната цена, тарифата за входяща минута, включените минути и канали, както и разрешенията за покупки и изискванията за регистрация за акаунта. В прегледаната помощна функция първоначалната базова сума е сборът от цената за първоначално свързване и месечната цена; за избрания план трябва да бъдат потвърдени всички специфични за доставчика такси и условия.
Изпратете защитена заявка за покупка с POST
Използвайте активиран API акаунт през HTTPS от разрешен изходен IP адрес. Следващата команда извършва покупка, а не изготвя оферта или пробно изпълнение. Задайте всяка променлива от един и същ актуален избор на номер и цена. Полетата за горни граници запазват стария префикс restore_quote_; текущият портал също ги използва за защитени покупки на конкретни номера.
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"Използвайте POST с данни от формуляр, както е показано. Помощната функция поддържа и разбор на JSON и на обвивка с опции, но този преглед не установява пълна равностойност за всички пътища за обработка на оферти и доставчици. Не използвайте GET за покупки, въпреки че този стар координатор няма изрична проверка на метода.
| Поле | Значение |
|---|---|
| NUMBER_ID | UUID на избрания номер от търсенето или пълният съхранен номер. Един номер на заявка. |
| PRICE_ID | UUID на цената, свързана с избрания номер и вашия акаунт. Винаги го подавайте изрично. |
| restore_quote_price_id | Трябва да съвпада с определения идентификатор на цената. Подаването на това поле включва проверките на офертата; то не е ключ за идемпотентност. |
| restore_quote_setup | Максимално приемлива цена за първоначално свързване, зададена като крайна неотрицателна числова стойност. |
| restore_quote_monthly | Максимално приемлива месечна цена, зададена като крайна неотрицателна числова стойност. |
| restore_quote_per_minute | Максимално приемлива тарифа за входяща минута, зададена като крайна неотрицателна числова стойност. |
| restore_quote_channels | Точният целочислен брой канали на избраната ценова опция, а не заявка за друг план с различен брой канали. |
Подавайте всички числови полета на офертата винаги когато подавате идентификатора на цената на офертата. Променен идентификатор, цена над горна граница, липсваща или невалидна горна граница, променен брой канали или заето заключване на офертата води до връщане на API код 409, преди да бъде извикан избраният доставчик за наемане. Сравненията допускат малък толеранс при числа с плаваща запетая; използвайте действително показаните стойности на плана, а не ръчно закръглена цена.
Защитните проверки не превръщат целия работен процес в пробно изпълнение или транзакция. Справки за регистрация, създаване и настройване на обекти за самоличност или друга работа на помощната функция могат да се извършат преди тези проверки. Те също така не фиксират външните наличности и не заместват ограниченията за покупки на ниво акаунт.
Регистрация и активиране
Когато е необходимо, добавете полето във формуляра RegistrationID, съдържащо UUID на регистрационния профил, принадлежащ на клиента. Това не е идентификатор на качен удостоверителен документ, адрес на доставчик или отделен обект за самоличност. Помощната функция намира профила в контекста на удостоверения акаунт и отхвърля липсващи или недостъпни профили.
За някои от поддържаните налични номера е разрешена покупка преди приключване на регистрацията; за други се изисква профил преди покупката. Все пак може да е необходима специфична за оператора проверка или настройване на услугата. Не тълкувайте успешната покупка или пропуснатата предварителна проверка като освобождаване от регистрация или незабавно активиране.
Когато присъства в отговора, полето registration_requirements указва структурираната справка за изискванията по държава и тип номер. Използвайте каталога за регистрация и процеса за подаване на удостоверителни документи, за да изпълните приложимите изисквания. Върнатите текст и метаданни сами по себе си не одобряват профил.
Избягвайте незабелязана подмяна на плана
Старият координатор може да определи пропусната цена от кешираните данни за номера. Той може също да премине към най-новата цена за акаунта за кеширан префикс, когато изрично подаденият идентификатор на цена вече не съществува, и да актуализира кеширания избор на разрешена цена. Не разчитайте на тези резервни механизми за избор на плана, одобрен от клиента.
Подайте изрично избраната цена и съответстващите полета за защитни проверки на офертата. Проверката на идентификатора на офертата отхвърля преминаване към друг идентификатор преди изпращането на заявката за наемане. При конфликт поради остаряла цена обновете търсенето и получете ново одобрение за избора, вместо да премахвате защитните проверки, за да наложите покупката.
Няма гарантиран период на резервация или срок на валидност на кеша, който да се прилага задължително за всички пътища на обработка. В работния процес се проверяват повторно наличността на номера, ценовите ограничения на акаунта и правилата за покупки, но пълното специфично за всеки доставчик поведение все още се преглежда.
Разширени настройки: маршрутизиране по подразбиране за акаунта
При покупка могат да бъдат наследени съществуващите дестинации за гласови повиквания, резервните дестинации при отказ, SMS дестинацията и предпочитаният транк за входящи повиквания на акаунта. Прегледайте тези настройки по подразбиране преди поръчка; пропускането на опциите за маршрутизиране не гарантира номер без конфигурация. Прегледаната помощна функция включва автоматичното подновяване по подразбиране.
| Опция | Поведение при определяне на стойността |
|---|---|
| uri, uri2, uri3 | При пропуснати стойности се наследяват съответните настройки по подразбиране на акаунта. Изрично подадените празни стойности изчистват стойността в помощната функция, вместо тя да бъде наследена. Използвайте валидни дестинации, подходящи за избрания режим на маршрутизиране. |
| smsuri | При пропусната стойност се наследява SMS дестинацията на акаунта; изрично подадена празна стойност я изчиства в помощната функция. |
| origintrunk | Разпознатият изрично подаден идентификатор на транк има предимство. Ако стойността не може да бъде определена, може да се използва предпочитанието на акаунта или старата стойност по подразбиране, вместо да се върне грешка. |
| forward_destination, forwarding_destination, type | Непразни алтернативни имена за режима на маршрутизиране, с предимство в посочения ред. Използвайте поддържани стойности от конфигурацията за маршрутизиране на акаунта, а не предполагаема числова стойност за режима. |
| RegistrationID | Справка за регистрационен профил, ограничена до съответния клиент; тя е отделна от дестинациите за маршрутизиране. |
| autorenew | Стойността по подразбиране е 1. Помощната функция проверява дали стойността е непразна, затова 0 не изключва надеждно подновяването чрез това поле за покупка. Използвайте поддържаните средства за управление на подновяването в акаунта и проверете запазената настройка. |
Това описва поведението на споделената помощна функция, а не гарантира, че всеки доставчик запазва всяка незадължителна настройка по един и същ начин. Съществуват и други стари полета за гласови повиквания, гласова поща, факс и SMS, но за тях все още е необходим пълен преглед за всеки доставчик. Проверете запазената конфигурация на закупения номер чрез работния процес на акаунта, преди да разчитате на повиквания или съобщения.
Отговор
Измислен пример за покупка без усложнения; стойностите и възможностите зависят от избрания план.
{
"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
}
}Координаторът използва собствени status.code/status.msg и обвивка response, без да гарантира наличието на поле status.results. При грешка списъкът с отговора обикновено е празен. При успех прегледайте върнатите номер и цена, след което сверете наличните номера в акаунта и състоянието на регистрацията. Приемането от доставчика не е реален тест на гласова връзка, SMS или факс.
Грешки и неясни резултати
| API код | Значение |
|---|---|
| 403 | Ценови ограничения или ограничения за покупки на акаунта, недостъпен избор на цена или недостъпен регистрационен профил могат да блокират обработката. |
| 404 | Липсващ или недостъпен избор на номер, цена или префикс. |
| 409 | Номерът вече е активен, защитна проверка на офертата вече не установява съответствие или друга защитена операция държи заключването. |
| 422 | Информацията за регистрация е задължителна, непълна е или не може да бъде въведена и настроена по прегледаните пътища за регистрация. |
| 500 и други кодове на доставчика или акаунта | Неуспех при доставчика, при локалната обработка или поради приложимите правила. Тези кодове не са универсално доказателство, че не е извършена покупка или начисляване на такса. |
Прочетете действителното тяло на API отговора, както и HTTP статуса. Външен доставчик може да приеме наемането, преди локалното уведомяване, регистрацията или друга обработка да завърши с неуспех. Някои операции по разпределяне на номера от локалните наличности използват транзакции в базата данни, но няма универсален механизъм за отмяна на поръчките към външни доставчици. Този координатор няма клиентски ключ за идемпотентност.
Сверете състоянието, преди да опитате отново
- Запазете одобрените номер, цена и горни граници на офертата в записа за поръчката във вашето приложение, преди да подадете заявката еднократно.
- След заявката прочетете списъка със закупените номера и подробностите за номера за същия акаунт, включително след изтичане на времето за изчакване или грешка.
- Ако номерът съществува, проверете цената му, подновяването, маршрутизирането и състоянието на регистрацията, вместо да подавате нова заявка за покупка.
- Ако резултатът все още е неясен, поискайте от екипа по поддръжката да свери поръчката при доставчика и начисленията по акаунта, преди да опитате отново. Само съобщение за грешка или флаг за успех в стария журнал не е достатъчно доказателство.
- След като собствеността и активирането бъдат потвърдени, извършете обичайните проверки на маршрутизирането и тестове на услугите за акаунта.