SMS
Toplu mesaj gönderimini fiyatlandıran, yapan ve geçmişini veren beş uç.
Genel Bakış
Müşteri kendi cüzdanından ödeyerek toplu mesaj gönderebilir. Akış üç adımdır: bir başlık seçin, fiyat alın, gönderin.
Fiyat hedef ülkeye ve mesajın parça sayısına göre değişir. Metin uzadıkça ya da alfabe dışına çıktıkça parça sayısı artar ve tutar onunla birlikte büyür.
Bazı ülkeler başlığın önceden kayıtlı olmasını ister. Kaydı olmayan bir ülkeye giden numaralar sessizce düşmez: elenenler listesinde gerekçesiyle görünür.
Referans
Başlıkları Listeleme
Gönderimde kullanılabilecek başlıkları ve ülke kayıtlarını döndürür.
curl 'https://panel.ornek.com/api/v1/client/sms/senders' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch('https://panel.ornek.com/api/v1/client/sms/senders', {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
const preferred = data.find((s) => s.is_default) ?? data[0];$ch = curl_init('https://panel.ornek.com/api/v1/client/sms/senders');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bos ulke listesi ENGEL DEGILDIR: cogu ulke on kayit istemez ve baslik oralarda dogrudan calisir.
$senders = Kernel::internal('client:Sms/GetSmsSenders', ['owner_id' => $uid])['data'];
$name = $senders[0]['name'] ?? null;Fiyat Alma
Gönderimin ne kadar tutacağını ve neyin eleneceğini söyler.
curl -X POST 'https://panel.ornek.com/api/v1/client/sms/quote' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"sender":"TESTBRAND","message":"Your code is 482913","numbers":["+15551112233"]}'const res = await fetch('https://panel.ornek.com/api/v1/client/sms/quote', {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ sender, message, numbers }),
});
const { data } = await res.json();
if (data.skipped.total) reviewSkipped(data.skipped);$ch = curl_init('https://panel.ornek.com/api/v1/client/sms/quote');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(compact('sender', 'message', 'numbers')),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Elenen hedefler HATA DEGIL: teklif her zaman basarili doner, kaybi skipped blogundan okuyun.
$q = Kernel::internal('client:Sms/QuoteSms',
['owner_id' => $uid, 'sender' => $sender, 'message' => $text, 'numbers' => $nums])['data'];
$willCost = $q['total']['amount'];
$willDrop = $q['skipped']['total'];Toplu Gönderim
Mesajı gönderir ve tutarı cüzdandan keser.
curl -X POST 'https://panel.ornek.com/api/v1/client/sms/send' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"sender":"TESTBRAND","message":"Your code is 482913","numbers":["+15551112233"]}'const res = await fetch('https://panel.ornek.com/api/v1/client/sms/send', {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ sender, message, numbers }),
});
const { data } = await res.json();
console.log(data.accepted, data.total, data.balance);$ch = curl_init('https://panel.ornek.com/api/v1/client/sms/send');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(compact('sender', 'message', 'numbers')),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Tutari SUNUCU yeniden hesaplar: teklifte gordugunuz rakam bir soz degil, gonderim kendi fiyatini bilir.
$r = Kernel::internal('client:Sms/SendSms',
['owner_id' => $uid, 'sender' => $sender, 'message' => $text, 'numbers' => $nums])['data'];
$charged = $r['total']['amount'];Gönderim Geçmişi
Yapılmış gönderimleri en yeniden başlayarak döndürür.
curl 'https://panel.ornek.com/api/v1/client/sms/messages' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch('https://panel.ornek.com/api/v1/client/sms/messages', {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data, meta } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/sms/messages');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Gecmiste ALICI NUMARALARI yoktur: numaralar yalniz tek gonderim ucunda gelir.
$rows = Kernel::internal('client:Sms/GetSmsMessages', ['owner_id' => $uid])['data'];
$one = Kernel::internal('client:Sms/GetSmsMessage',
['owner_id' => $uid, 'id' => $rows[0]['message_id']])['data'];Tek Gönderimi Okuma
Bir gönderimi alıcı numaralarıyla birlikte döndürür.
curl 'https://panel.ornek.com/api/v1/client/sms/messages/4520' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/sms/messages/${id}`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
console.log(data.numbers.length, data.report_id);$ch = curl_init('https://panel.ornek.com/api/v1/client/sms/messages/' . $id);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Alici bazli TESLIM RAPORU burada YOK: saglayici-canli rapor panel gorunumunde kalir.
$m = Kernel::internal('client:Sms/GetSmsMessage', ['owner_id' => $uid, 'id' => $id])['data'];
$sentTo = $m['numbers'];Tuzaklar
Fiyat ve gönderim uçları geçersiz numaraları, fiyatlanmamış ülkeleri ve başlığın kaydı olmayan ülkeleri sessizce elemez, ama gönderimi de durdurmaz: kalan küme gider ve elenenler yanıtta listelenir. Bu bloğu okumazsanız mesajın bir bölümünün hiç gitmediğini fark etmezsiniz.
Gönderim ucu tutarı kendisi yeniden hesaplar ve istemcinin gönderdiği bir rakama asla güvenmez. Teklif ile gönderim arasında fiyat ya da başlık kaydı değişirse kesilen tutar farklı olabilir. Kesin rakamı gönderim yanıtından okuyun.
Cüzdan tek bir koşullu güncellemeyle kesilir: eşzamanlı iki gönderim bakiyeyi eksiye düşüremez. Sağlayıcı gönderimi reddederse kesilen tutar tamamen iade edilir ve hiçbir mesaj gitmez. Yani başarısız bir gönderim para kaybettirmez.
Mesaj temel alfabede yazılmışsa bir parçaya daha çok karakter sığar; alfabe dışı tek bir harf bile metni diğer kodlamaya düşürür ve parça başına kapasite yarıdan aza iner. Tutar parça üzerinden hesaplandığı için maliyet birden büyür. Teklif ucundaki kodlama alanını okuyun.
Gönderim geçmişi özet satırlar verir; alıcı numaraları yalnız tek gönderimi okuduğunuzda gelir. Alıcı bazlı teslim raporu ise API'de hiç yoktur ve panelde kalır, çünkü sağlayıcıdan canlı çekilir.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.