Bir ön ekten sipariş verin
Ön ek kataloğu sizi kullanılabilir numaraları tek tek seçmek yerine bir ön ekten belirli sayıda numara sipariş etmeye yönlendirdiğinde bu işlemi kullanın. Başlangıç için şunlara bakın: ülkeler, bölgeler veya eyaletler ve ön ekler. Ön ek tanımlayıcısını ve fiyat planını aynı güncel sonuçtan alın ve saklayın. Kullanılabilir numaralar listesinden seçtiğiniz belirli bir numara için şu işlemi kullanın: Seçilen bir telefon numarasını satın alın.
Bu istek numara satın alabilir ve ücret doğurabilir. Bir fiyat teklifi, rezervasyon veya deneme işlemi değildir. Göndermeden önce kurulum ve aylık ücretleri, gelen aramaların dakika ücretlerini, pakete dâhil dakikaları, kanalları, kayıt gerekliliklerini ve hesabın satın alma sınırlarını inceleyin. Katalog sonucu envanteri rezerve etmez veya fiyatları sabitlemez. Hesaba bakiye yükleme kontrolleri sipariş karşılanmadan önce yapılabilir; bir hata, tek başına hiçbir satın alma veya hesaba bakiye yükleme işlemi gerçekleşmediğini kanıtlamaz.
Satın alma isteğini gönderin
İzin verilen bir kaynak IP adresinden HTTPS üzerinden etkin bir API hesabı kullanın. Değişkenleri güncel katalog seçiminize ve onaylanmış iletim yapılandırmanıza göre ayarlayın. Aşağıdaki komut bir numara satın alır.
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"Yukarıda form verileriyle POST kullanımı gösterilmiştir. Koordinatör, Content-Type değeri application/json olduğunda bir JSON nesnesini de okur. JSON alanları, eşleşen form/istek alanlarının üzerine yazılır. Tutarlı biçimde tek bir kodlama kullanın; birbiriyle çelişen sorgu ve gövde değerleri göndermeyin.
| Parametre | Anlamı |
|---|---|
| yoldaki ön ek tanımlayıcısı | Katalog tarafından döndürülen ön ek UUID'si. Ülke, bölge, fiyat veya tek bir numaraya ait tanımlayıcı bunun yerine kullanılamaz. |
| quantity | 1 ile 100 arasında bir tam sayı gönderin. Varsayılan değer 1'dir. 1 altındaki değerler 1 olarak değiştirilir; bu, yalnızca doğrulama yapan bir istek değildir. 100 üzerindeki değerler, bu koordinatörün normal yanıt işleme aşamasından önce istisna oluşturur; dolayısıyla bu geçersiz girdi için alışılmış JSON yapısına güvenmeyin. |
| price_id | Seçilen planın herkese açık fiyat tanımlayıcısı. priceid eski bir alternatif addır. Eşleşmeyen bir tanımlayıcı, herhangi bir uyarı olmadan farklı bir planın seçilmesine yol açabilir; bu alan kesin bir fiyat kilidi değildir. Satın almadan önce hesabın fiyat üst sınırlarını doğrulayın ve sonrasında döndürülen fiyatı inceleyin. |
| channels | Seçilen plandaki kanal sayısı. Tam bir fiyat eşleşmesi kullanılmadığında, eşleşen kanal sayısı alternatif plan seçimini etkileyebilir. Tek başına belirli bir planın satın alınacağını garanti etmez. |
| reference | Satın alma veya toplu işlem için belirlediğiniz etiket. En fazla 255 bayt uzunluğunda kısa bir ASCII değeri kullanın; daha uzun değerler kesilir. Başarılı satın almalarla birlikte saklanır ve sağlandığında geri çağrı bildirimlerine eklenir. Ayrı siparişler aynı referansı paylaşabilir. Bu bir idempotans anahtarı değildir: bu işlemin yeniden gönderilmesi, aynı referans ve aynı alanlar kullanılsa bile ek numaraların satın alınmasına ve ücretlendirilmesine yol açabilir. |
| webhook_url | İsteğe bağlı geri çağrı URL'si. Kontrolünüzde olan bir HTTPS uç noktası kullanın. HTTP ve HTTPS URL'leri mevcut temel doğrulayıcıdan geçer; geçersiz bir URL, satın almanın reddedilmesi yerine yok sayılır. Geri çağrı, ek bir bildirimdir; isteğin güvenle tekrarlanabileceğinin kanıtı değildir. |
İletim ve yenileme ayarları
Numara için portalda kullanacağınız iletim ayarlarının aynısını seçin. Bunlar gelişmiş yapılandırma değerleridir; barındırılan bir PBX veya gelen arama trunk'ı oluşturma talimatları değildir. Çalıştığı bilinen bir hesap yapılandırmasını yeniden kullanın ve satın alma sonrasında kaydedilen numarayı doğrulayın. Satın almanın kabul edilmiş olması tek başına ses veya SMS iletiminin çalıştığını doğrulamaz.
| Alan | Kullanım ve uyumluluk |
|---|---|
| uri, uri2, uri3 | Birincil ve ek ses hedefleri. Seçilen yönlendirme ve çaldırma modlarına uygun hedefler sağlayın. |
| forward_destination | Ses yönlendirme modu. forwarding_destination ve type eski alternatif adlardır. Alan gönderilmezse satın alma akışının varsayılanı kullanılır; boş bir alan, mevcut bir tercihi temizlemek için güvenilir bir yöntem değildir. |
| ring_type | Sesli arama çaldırma modu; ringtype alternatif adıdır. Hesabınızın numara yapılandırmasında desteklenen bir değer kullanın. |
| sms_forward_destination, sms_uri | SMS iletim modu ve hedefi. Eski alternatif adlar smsringtype ve smsuri şeklindedir. Bazı satın alma akışları, bu alan boş olduğunda hesabın varsayılan SMS hedefini uygular. SMS kullanılabilirliği, seçilen numaraya ve numaranın etkinleştirme/kayıt durumuna bağlıdır. |
| overflow | İstenen taşma ayarı. Bu ayarın desteklenip desteklenmediğini planın kullanılabilirliği ve satın alma akışı etkiler. |
| force_codec, force_dtmf | İstenen kodek ve DTMF ayarları. Eski alternatif adlar forcecodec ve forcedtmf şeklindedir. Seçilen envanter için kaydedilen yapılandırmayı doğrulayın. |
| origination_trunk_id | Uygulanabildiği durumlarda, mevcut bir trunk yapılandırmasının tanımlayıcısı. Bu alan bir trunk oluşturmaz. Gönderilmezse satın alma akışının varsayılanı kullanılır. |
| autorenew | İstenen yenileme ayarı. 0 değerinin yenilemeyi devre dışı bıraktığını varsaymayın: bazı satın alma akışları, 0 dâhil boş olarak değerlendirilen değerleri varsayılan etkin ayar olarak ele alır. Satın alınan numaranın yenileme ayarını portalda kontrol edin ve gerektiğinde değiştirin. |
Bu alanlar standart biçime dönüştürülerek satın alma işlemine aktarılır, ancak kalıcı olarak kaydedilmeleri envanter akışına göre değişir. Mevcut sipariş rotası, seçilen numarayı satın alma kılavuzundaki kesin teklif üst sınırı alanlarını eşdeğer korumalar olarak sunmaz. Hesabın satın alma izinlerini ve fiyat sınırlarını kullanın ve oluşan numara yapılandırmasını inceleyin.
Sonucun tamamını okuyun
HTTP isteği başarılı olsa bile JSON gövdesini ayrıştırın ve status.code ile status.msg alanlarını inceleyin. Bu rota kendi JSON yanıtını yazar; ortak yanıt yardımcısı da uygulama kodunu HTTP durumuna her zaman eşlemez. Uygulama kodları JSON sayıları veya sayısal dizeler olabilir. status.results alanını zorunlu tutmayın; normal sipariş sonucunda bulunmaz.
{
"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
}
}Yukarıdaki tanımlayıcı, numara ve fiyatlar kurgusaldır. Sipariş kimliğinin iç yapısına anlam yüklemeyin. numbers, bu yanıtta satın alındığı bildirilen numaraları listeler; listenin uzunluğunu istediğiniz adetle karşılaştırın. Fiyat tutarları dize biçimindedir ve bu yanıt, per_minute dâhil parasal ücretleri iki ondalık basamağa yuvarlar; ücretlerin özgün hassasiyeti için güncel kataloğu kullanın. Pakete dâhil dakikalar ve kanallar, sayısal değerler veya sayısal dizeler olarak gelebilir.
Fiyat bloğu, her numaranın ayrıntılı faturasını veya sipariş toplamını değil, yanıtı oluşturmak için kullanılan seçili planı açıklar. Envanterdeki farklı adayların planları farklı olabilir. Bu bloktaki tutarları çarparak nihai toplamı kanıtladığını varsaymak yerine, satın alınan numaraları tek tek ve hesap işlemlerini karşılaştırarak mutabakat sağlayın.
Kısmi satın almalar ve belirsiz sonuçlar
200 uygulama koduna bir uyarı ve istenenden daha az numara eşlik edebilir. Daha sonra oluşan bir hata, önceden satın alınmış numaraları geri almaz. Döndürülen sipariş kimliğini, numaraları ve mesajı saklayın. Kalan adet için sipariş verip vermemeye karar vermeden önce bu numaraları envanterinizdeki kayıtlarla ve hesap işlemleriyle karşılaştırarak mutabakat sağlayın.
İstek gönderildikten sonra zaman aşımı, bağlantının kesilmesi, bozuk yanıt veya hata oluşması, hiçbir şey gerçekleşmediğinin kanıtı değildir. Aynı referansla bile olsa otomatik olarak başka bir satın alma isteği göndermeyin. İlk isteği, referansı ve döndürülmüşse sipariş kimliğini saklayın, envanteri ve hesap işlemlerini kontrol edin ve sonuç belirsiz kalıyorsa destek ekibiyle iletişime geçin.
Henüz onaylanmamış bir sipariş, onaylama işleminin sürdüğünü belirten bir mesajla 400 uygulama kodunu döndürebilir. Döndürülen sipariş kimliğini saklayın ve bu satın almayı kayıtlarla karşılaştırarak mutabakat sağlayın; bu, isteği yeniden gönderme talimatı değildir. Kayıtlı siparişleri kurtarma mekanizması, ilk siparişi sistem içinde izler. Bu işleme gönderilen yeni bir istek, referansınıza göre bir siparişi sürdürmek yerine ayrı bir satın alma girişimi oluşturur; dolayısıyla daha fazla numara satın alabilir ve bunlar için ücret doğurabilir. Durumu kontrol etmek veya envanterde arama yapmak için tekrarlanan satın alma istekleri kullanmayın.
Kayıt ve etkinleştirme
Satın alınan veya tahsis edilen bir numara için hâlâ kayıt veya etkinleştirme gerekebilir. needs_registration değeri 1 ise restrictions ve registration_requirements alanlarını inceleyin. Sonuncusu şu uç noktayı belirtebilir: v3/get_requirements; beraberinde country ve number_type değerlerini de sağlayabilir. Gelen aramalara veya mesajlaşmaya güvenmeden önce ilgili kimlik/adres iş akışını tamamlayın ve numaranın durumunu doğrulayın.
features, sunulduğu belirtilen özellikleri açıklar; canlı yönlendirmeyi, kampanya onayını, SMS iletimini veya faks alımını doğrulamaz. Kaydedilmiş iletim ayarlarını kontrol edin ve numara etkin olduğunda uygun hizmet testini yapın.
Sipariş geri çağrıları
Geri çağrılar, sipariş durumunu ve yanıtını içeren JSON verisini POST yöntemiyle gönderir; sağlanmışsa referansınız da eklenir. Kısmi sonuçlar dâhil, bildirilen satın almalar için gönderilirler. Başarısız bir geri çağrı, satın almayı geri almaz. İletim yeniden denenebilir; bu nedenle başka bir satın alma isteği göndermek yerine yinelenen bildirimleri sipariş kimliğine göre işleyin ve numaraları kayıtlarla karşılaştırarak mutabakat sağlayın.
Bu rota kriptografik bir geri çağrı imzası eklemez. Geri çağrıyı, ücretlendirme, hizmet tahsisi veya erişim izni verme için bağımsız bir yetkilendirme olarak değil, kimlik doğrulamasıyla eriştiğiniz envanterle karşılaştırıp mutabakat sağlamak için bir bildirim olarak değerlendirin. API kimlik bilgilerini geri çağrı URL'sine koymayın. Farklı bir geri çağrı URL'siyle başka bir satın alma isteği göndermek ilk siparişi güncellemez; ayrı bir satın alma girişimi oluşturur. Destek ekibinden geri çağrıyı incelemesini isterken ilk siparişin kimliğini saklayın.
Ele alınması gereken hatalar
| Sonuç | Yapılması gerekenler |
|---|---|
| 400 ve ön ekin geçersiz olduğunu belirten mesaj | Ön ek kataloğunu yeniden okuyun ve güncel tanımlayıcısını kullanın. Bunu, ilk siparişin hâlâ onaylanmakta olduğunu belirten mesajdan ayırt edin. |
| 403 veya hesap politikası/bakiye hatası | Satın alma iznini, hesabın fiyat üst sınırlarını, adet sınırlarını ve bakiye yükleme durumunu inceleyin. Bu kontrollerden başka uygulama kodları da iletilebilir; döndürülen asıl mesajı saklayın. |
| 404 veya kullanılabilir envanter bulunmaması | Kullanılabilirlik bilgisini yenileyin. Envanteri tükenmiş bir ön ekten tekrar tekrar satın alma isteği göndermeyin. |
| 409 ve satın alma onayı, sağlayıcı reddi veya sipariş iptalini belirten mesaj | Döndürülen sipariş kimliğini ve asıl mesajı saklayın. Başka bir satın alma isteği göndermeden önce isteği envanterle ve hesap işlemleriyle karşılaştırın, destek ekibiyle görüşerek mutabakat sağlayın. Aynı referansı yeniden kullanmak başka bir isteği güvenli hâle getirmez. |
| 200 ile birlikte uyarılar veya daha az numara | Bazı numaralar satın alınmıştır. Daha fazla sipariş vermeden önce döndürülen tahsisi ve işlemleri kayıtlarla karşılaştırarak mutabakat sağlayın. |
| Sunucu/iletişim hatası veya okunamayan yanıt | Envanter ve işlem kayıtları ne olduğunu ortaya koyana kadar sonucu belirsiz olabilecek bir durum olarak değerlendirin. |