Поръчване от префикс
Използвайте тази операция, когато каталогът на префиксите ви насочва да поръчате определено количество номера от префикс, вместо да избирате отделни налични номера. Започнете с държави, области или щати и префикси. Запазете идентификатора на префикса и тарифния план от един и същ актуален резултат. За конкретен номер, избран от списък с налични номера, използвайте Закупуване на избран телефонен номер.
Тази заявка може да закупи номера и да доведе до начисляване на такси. Тя не е ценова оферта, резервация или пробно изпълнение. Преди да я изпратите, прегледайте еднократните и месечните такси, тарифите за минута входящ разговор, включените минути, каналите, изискванията за регистрация и ограниченията за покупки на акаунта. Резултатът от каталога не резервира наличност и не фиксира цените. Проверките за захранване на акаунта със средства може да се извършат преди изпълнението; сама по себе си грешката не доказва, че не е извършена покупка или захранване на акаунта.
Изпращане на заявката за покупка
Използвайте активиран 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 имат предимство пред съответстващите полета във формуляра/заявката. Използвайте последователно един формат за кодиране; не изпращайте противоречащи си стойности в параметрите на URL заявката и в тялото.
| Параметър | Значение |
|---|---|
| идентификатор на префикса в пътя | UUID на префикса, върнат от каталога. Идентификатор на държава, област, цена или отделен номер не може да го замени. |
| quantity | Изпратете цяло число от 1 до 100. Стойността по подразбиране е 1. Стойностите под 1 се преобразуват принудително в 1; това не е заявка само за проверка на валидността. Стойностите над 100 предизвикват изключение преди обичайната обработка на отговора от този координатор, затова не разчитайте на обичайната му JSON структура при такъв невалиден вход. |
| price_id | Публичният идентификатор на цената за избрания план. priceid е остаряло алтернативно име. Несъвпадащ идентификатор може без предупреждение да доведе до избор на друг план; това поле не фиксира строго цената. Потвърдете ценовите тавани на акаунта преди покупката и след това проверете върнатата цена. |
| channels | Броят канали от избрания план. Когато не се използва точно съвпадение на цената, съвпадащият брой канали може да повлияе на резервния избор. Сам по себе си той не гарантира, че ще бъде закупен конкретен план. |
| reference | Вашият етикет за покупката или партидата. Използвайте кратка ASCII стойност с дължина най-много 255 байта; по-дългите стойности се отрязват. Когато е подадена, тя се запазва с успешните покупки и се включва в обратните известия. Различни поръчки може да имат една и съща референция. Това не е ключ за идемпотентност: повторното изпращане на тази операция може да закупи допълнителни номера и да начисли такси за тях дори при същата референция и еднакви полета. |
| webhook_url | Незадължителен URL адрес за обратни известия. Използвайте HTTPS крайна точка под ваш контрол. HTTP и HTTPS адресите преминават текущата основна проверка за валидност; невалидният URL адрес се игнорира, вместо покупката да бъде отхвърлена. Обратното известие е допълнително уведомление, а не доказателство, че заявката може безопасно да бъде повторена. |
Настройки за доставяне и подновяване
Изберете същите настройки за доставяне, които бихте използвали за номера в портала. Това са разширени конфигурационни стойности, а не инструкции за създаване на хоствана 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 или приемане на факсове. Проверете запазените настройки за доставяне и извършете подходящия тест на услугата, когато номерът е активен.
Обратни известия за поръчки
Обратните известия изпращат чрез POST JSON, съдържащ статуса на поръчката и отговора, като добавят вашата референция, когато е подадена. Те се изпращат за отчетени покупки, включително частични резултати. Неуспешното обратно известие не отменя покупката. Доставянето може да бъде повторено, затова обработвайте дублиращите се известия по идентификатор на поръчката и сверявайте номерата, вместо да изпращате нова заявка за покупка.
Този маршрут не добавя криптографски подпис към обратното известие. Третирайте обратното известие като уведомление, което да сверите с наличните си номера чрез удостоверен достъп, а не като самостоятелно разрешение за начисляване на такси, предоставяне на услуги или даване на достъп. Не поставяйте данни за удостоверяване за API в URL адреса за обратни известия. Изпращането на друга заявка за покупка с различен URL адрес за обратни известия не актуализира първоначалната поръчка; то създава отделен опит за покупка. Запазете идентификатора на първоначалната поръчка, когато молите поддръжката да проучи нейното обратно известие.
Неуспехи, които трябва да обработвате
| Резултат | Какво да направите |
|---|---|
| 400 и съобщение за невалиден префикс | Прочетете отново каталога на префиксите и използвайте актуалния идентификатор. Разграничавайте това от съобщение, че първоначална поръчка все още е в процес на потвърждаване. |
| 403 или неуспех, свързан с правилата/салдото на акаунта | Прегледайте разрешението за покупки, ценовите тавани на акаунта, количествените ограничения и захранването със средства. От тези проверки може да бъдат препратени и други кодове на приложението; запазете действителното съобщение. |
| 404 или липса на налични номера | Обновете информацията за наличността. Не изпращайте многократно заявки за покупка от префикс с изчерпана наличност. |
| 409 и съобщение за потвърждаване на покупката, отказ от доставчика или отменена поръчка | Запазете върнатия идентификатор на поръчката и действителното съобщение. Сверете заявката с наличните номера, транзакциите по акаунта и поддръжката, преди да изпратите друга заявка за покупка. Повторното използване на същата референция не прави новата заявка безопасна. |
| 200 с предупреждения или по-малко номера | Някои номера са закупени. Сверете върнатото разпределение на номерата и транзакциите, преди да поръчате още. |
| Неуспех на сървъра/транспорта или нечетим отговор | Третирайте резултата като потенциално неясен, докато наличните номера и транзакциите не установят какво се е случило. |