Cascade မက်ဆေ့ခ်ျများပို့ပါ။
API တောင်းဆိုချက်တစ်ခုတည်းဖြင့် ချန်နယ်များစွာတွင် စာတိုပေးပို့ပါ။ Cascade သည် သင့်စာကို Telegram Bot၊ Viber Bot၊ Viber Business Messages၊ RCS နှင့် SMS တို့မှ အလိုအလျောက် ပို့ဆောင်ပေးပါသည်။
အဆုံးမှတ်များ
Standard Cascade
ရနိုင်သော ချန်နယ်များအားလုံးမှတဆင့် မက်ဆေ့ချ်များကို ဆက်တိုက်လမ်းကြောင်းပေးသည်။
Telegram-Viber ဦးစားပေး
ပိုမိုမြန်ဆန်စွာ ပေးပို့နိုင်ရန် Telegram နှင့် Viber ချန်နယ်များကို ဦးစားပေးပါသည်။
စစ်မှန်ကြောင်းအထောက်အထားပြခြင်း။
Cascade API သည် authentication headers သုံးခုကို ပံ့ပိုးပေးသည်။ အနည်းဆုံးတစ်ခု ပါဝင်ပါ-
| ခေါင်းစီး | ဖော်ပြချက် |
|---|---|
X-Authorization-Key |
SMSBAT API သော့ (အကြံပြုထားသည်) |
X-Viber-Auth-Token |
Viber bot အထောက်အထားများ |
X-Tg-Bot-Key |
Telegram bot သော့ |
တောင်းဆိုဖွဲ့စည်းပုံ
ခေါင်းစီးများ
Content-Type: application/json
X-Authorization-Key: your-smsbat-api-key
X-Viber-Auth-Token: your-viber-token
X-Tg-Bot-Key: your-telegram-key
တောင်းခံလွှာ
မက်ဆေ့ချ်အရာဝတ္ထုတစ်ခု၏ အခင်းအကျင်းတစ်ခုကို ပို့ပါ-
[
{
"id": "unique-tracking-id",
"fromName": "YourBrand",
"toPhone": "+380XXXXXXXXX",
"messageType": "transaction",
"text": "Your order #12345 has been confirmed",
"ttl": 3600,
"scheduledSent": "2025-01-25T10:00:00Z"
}
]
ကန့်သတ်ချက်များ
| ကန့်သတ်ချက် | ရိုက် | လိုအပ်သည် | ဖော်ပြချက် |
|---|---|---|---|
id |
string | ဟုတ်တယ် | သင်၏ခြေရာခံအမှတ်အသား |
fromName |
string | ဟုတ်တယ် | ပေးပို့သူအမည် |
toPhone |
string | ဟုတ်တယ် | လက်ခံသူဖုန်းနံပါတ် (E.164 ဖော်မတ်) |
messageType |
string | ဟုတ်တယ် | မက်ဆေ့ဂျ်အမျိုးအစား- ငွေပေးငွေယူ၊ ပရိုမိုရှင်း၊ viber_survey၊ flashcall |
စာသား |
string | ဟုတ်တယ်* | မက်ဆေ့ခ်ျအကြောင်းအရာ (အမျိုးအစားအများစုအတွက် * လိုအပ်သည်) |
ttl |
ကိန်းပြည့် | မရှိ | Time-to-s live in စက္ကန့် |
schedledSent |
string | မရှိ | စီစဉ်ထားသောပေးပို့မှုအတွက် ISO 8601 ရက်စွဲအချိန် |
မက်ဆေ့ခ်ျအမျိုးအစားများ
ငွေလွှဲစာတိုများ
မှာယူမှုအတည်ပြုချက်များနှင့် အကောင့်အပ်ဒိတ်များကဲ့သို့ အရေးကြီးသော သတိပေးချက်များ-
{
"id": "order-12345",
"fromName": "YourStore",
"toPhone": "+380XXXXXXXXX",
"messageType": "transaction",
"text": "Your order #12345 has been confirmed and will arrive tomorrow.",
"ttl": 86400
}
ပရိုမိုးရှင်း မက်ဆေ့ခ်ျ
ကြွယ်ဝသောမီဒီယာများဖြင့် စျေးကွက်ရှာဖွေရေး ကမ်ပိန်းများ-
{
"id": "promo-summer-sale",
"fromName": "YourBrand",
"toPhone": "+380XXXXXXXXX",
"messageType": "promo",
"text": "Summer Sale! Up to 50% off. Shop now: https://example.com/sale",
"ttl": 259200
}
Viber Survey
တုံ့ပြန်မှုရွေးချယ်စရာ 2-5 ခုပါသော အပြန်အလှန်တုံ့ပြန်မှုစစ်တမ်းများ
{
"id": "survey-satisfaction",
"fromName": "YourBrand",
"toPhone": "+380XXXXXXXXX",
"messageType": "viber_survey",
"text": "How satisfied are you with our service?",
"surveyOptions": [
"Very Satisfied",
"Satisfied",
"Neutral",
"Dissatisfied",
"Very Dissatisfied"
],
"ttl": 604800
}
စစ်တမ်းစာသား အများဆုံး- စာလုံးရေ ၈၅ လုံး
Flash Call
အလိုအလျောက်ခေါ်ဆိုမှုမှတစ်ဆင့် ဖုန်းအတည်ပြုခြင်း-
{
"id": "verify-user-123",
"fromName": "YourApp",
"toPhone": "+380XXXXXXXXX",
"messageType": "flashcall",
"ttl": 300
}
ဥပမာများ
အခြေခံငွေလွှဲခြင်း။
curl -X POST https://restapi.smsbat.com/api/CascadeMessage/send_message/async \
-H "Content-Type: application/json" \
-H "X-Authorization-Key: your-api-key" \
-d '[
{
"id": "tx-001",
"fromName": "YourBank",
"toPhone": "+380XXXXXXXXX",
"messageType": "transaction",
"text": "Payment of $100 was successful. Transaction ID: ABC123"
}
]'
စီစဉ်ထားသော ပရိုမိုးရှင်း
curl -X POST https://restapi.smsbat.com/api/CascadeMessage/send_message/async \
-H "Content-Type: application/json" \
-H "X-Authorization-Key: your-api-key" \
-d '[
{
"id": "promo-001",
"fromName": "YourStore",
"toPhone": "+380XXXXXXXXX",
"messageType": "promo",
"text": "Flash Sale starts in 1 hour! Visit: https://example.com",
"scheduledSent": "2025-01-25T09:00:00Z",
"ttl": 3600
}
]'
အစုလိုက် မက်ဆေ့ချ်များ
curl -X POST https://restapi.smsbat.com/api/CascadeMessage/send_message/async \
-H "Content-Type: application/json" \
-H "X-Authorization-Key: your-api-key" \
-d '[
{
"id": "bulk-001",
"fromName": "YourBrand",
"toPhone": "+380111111111",
"messageType": "transaction",
"text": "Message 1"
},
{
"id": "bulk-002",
"fromName": "YourBrand",
"toPhone": "+380222222222",
"messageType": "transaction",
"text": "Message 2"
},
{
"id": "bulk-003",
"fromName": "YourBrand",
"toPhone": "+380333333333",
"messageType": "transaction",
"text": "Message 3"
}
]'
တုံ့ပြန်မှု
အောင်မြင်မှုတုံ့ပြန်ခြင်း။
[
{
"messageId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"trackinId": "tx-001"
},
{
"messageId": "8b2f1e9a-4c6d-4e2a-9f8b-1a3d5c7e9f0b",
"trackinId": "tx-002"
}
]
တုံ့ပြန်မှုနယ်ပယ်များ
| လယ် | ရိုက် | ဖော်ပြချက် |
|---|---|---|
messageId |
string (UUID) | စနစ်မက်ဆေ့ချ် သတ်မှတ်သူ |
trackinId |
string | သင်၏ခြေရာခံအမှတ်အသား (တောင်းဆိုမှုမှ) |
အခြေအနေခြေရာခံခြင်းအတွက် messageId နှင့် သင့်စနစ်နှင့်ဆက်စပ်ရန်အတွက် trackinId ကိုသုံးပါ။
အကောင်အထည်ဖော်မှု ဥပမာများ
Python
import requests
from datetime import datetime, timedelta
class CascadeMessenger:
def __init__(self, api_key):
self.base_url = 'https://restapi.smsbat.com'
self.headers = {
'Content-Type': 'application/json',
'X-Authorization-Key': api_key
}
def send_message(self, tracking_id, from_name, to_phone,
message_type, text, ttl=None, scheduled=None):
"""Send single cascade message"""
message = {
'id': tracking_id,
'fromName': from_name,
'toPhone': to_phone,
'messageType': message_type,
'text': text
}
if ttl:
message['ttl'] = ttl
if scheduled:
message['scheduledSent'] = scheduled.isoformat()
response = requests.post(
f'{self.base_url}/api/CascadeMessage/send_message/async',
headers=self.headers,
json=[message]
)
response.raise_for_status()
return response.json()[0]
def send_bulk(self, messages):
"""Send multiple messages"""
response = requests.post(
f'{self.base_url}/api/CascadeMessage/send_message/async',
headers=self.headers,
json=messages
)
response.raise_for_status()
return response.json()
# Usage
messenger = CascadeMessenger('your-api-key')
# Send single message
result = messenger.send_message(
tracking_id='order-12345',
from_name='YourStore',
to_phone='+380XXXXXXXXX',
message_type='transaction',
text='Your order has been confirmed',
ttl=86400
)
print(f"Message ID: {result['messageId']}")
# Send scheduled message
scheduled_time = datetime.now() + timedelta(hours=2)
result = messenger.send_message(
tracking_id='promo-001',
from_name='YourBrand',
to_phone='+380XXXXXXXXX',
message_type='promo',
text='Sale starts now!',
scheduled=scheduled_time
)
# Bulk send
messages = [
{
'id': f'bulk-{i}',
'fromName': 'YourBrand',
'toPhone': f'+38011111111{i}',
'messageType': 'transaction',
'text': f'Message {i}'
}
for i in range(100)
]
results = messenger.send_bulk(messages)
print(f"Sent {len(results)} messages")
JavaScript (Node.js)
const axios = require('axios');
class CascadeMessenger {
constructor(apiKey) {
this.baseUrl = 'https://restapi.smsbat.com';
this.headers = {
'Content-Type': 'application/json',
'X-Authorization-Key': apiKey
};
}
async sendMessage({ id, fromName, toPhone, messageType, text, ttl, scheduledSent }) {
const message = {
id,
fromName,
toPhone,
messageType,
text
};
if (ttl) message.ttl = ttl;
if (scheduledSent) message.scheduledSent = scheduledSent;
const response = await axios.post(
`${this.baseUrl}/api/CascadeMessage/send_message/async`,
[message],
{ headers: this.headers }
);
return response.data[0];
}
async sendBulk(messages) {
const response = await axios.post(
`${this.baseUrl}/api/CascadeMessage/send_message/async`,
messages,
{ headers: this.headers }
);
return response.data;
}
async sendTelegramViber({ id, fromName, toPhone, messageType, text }) {
const response = await axios.post(
`${this.baseUrl}/api/CascadeMessage/send_message/tg-viber/async`,
[{
id,
fromName,
toPhone,
messageType,
text
}],
{ headers: this.headers }
);
return response.data[0];
}
}
// Usage
const messenger = new CascadeMessenger('your-api-key');
// Send single message
const result = await messenger.sendMessage({
id: 'order-12345',
fromName: 'YourStore',
toPhone: '+380XXXXXXXXX',
messageType: 'transaction',
text: 'Your order has been confirmed',
ttl: 86400
});
console.log('Message ID:', result.messageId);
// Send scheduled message
const scheduledTime = new Date(Date.now() + 2 * 60 * 60 * 1000);
await messenger.sendMessage({
id: 'promo-001',
fromName: 'YourBrand',
toPhone: '+380XXXXXXXXX',
messageType: 'promo',
text: 'Sale starts now!',
scheduledSent: scheduledTime.toISOString()
});
// Bulk send
const messages = Array.from({ length: 100 }, (_, i) => ({
id: `bulk-${i}`,
fromName: 'YourBrand',
toPhone: `+38011111111${i}`,
messageType: 'transaction',
text: `Message ${i}`
}));
const results = await messenger.sendBulk(messages);
console.log(`Sent ${results.length} messages`);
PHP
<?php
class CascadeMessenger {
private $baseUrl = 'https://restapi.smsbat.com';
private $apiKey;
public function __construct($apiKey) {
$this->apiKey = $apiKey;
}
public function sendMessage($id, $fromName, $toPhone, $messageType,
$text, $ttl = null, $scheduledSent = null) {
$message = [
'id' => $id,
'fromName' => $fromName,
'toPhone' => $toPhone,
'messageType' => $messageType,
'text' => $text
];
if ($ttl !== null) {
$message['ttl'] = $ttl;
}
if ($scheduledSent !== null) {
$message['scheduledSent'] = $scheduledSent;
}
$ch = curl_init($this->baseUrl . '/api/CascadeMessage/send_message/async');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'X-Authorization-Key: ' . $this->apiKey
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([$message]));
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
return $result[0];
}
public function sendBulk($messages) {
$ch = curl_init($this->baseUrl . '/api/CascadeMessage/send_message/async');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'X-Authorization-Key: ' . $this->apiKey
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($messages));
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
}
// Usage
$messenger = new CascadeMessenger('your-api-key');
// Send single message
$result = $messenger->sendMessage(
'order-12345',
'YourStore',
'+380XXXXXXXXX',
'transaction',
'Your order has been confirmed',
86400
);
echo "Message ID: " . $result['messageId'] . "\n";
// Bulk send
$messages = [];
for ($i = 0; $i < 100; $i++) {
$messages[] = [
'id' => "bulk-$i",
'fromName' => 'YourBrand',
'toPhone' => "+38011111111$i",
'messageType' => 'transaction',
'text' => "Message $i"
];
}
$results = $messenger->sendBulk($messages);
echo "Sent " . count($results) . " messages\n";
အကောင်းဆုံးအလေ့အကျင့်များ
ဖုန်းနံပါတ်များ
E.164 ဖော်မတ်ကို အမြဲသုံးပါ-
- ✅ +380XXXXXXXXX
- ❌ 380XXXXXXXXX
- ❌ 0XXXXXXXXX
ခြေရာခံ ID များ
- မက်ဆေ့ဂျ်တစ်ခုစီအတွက် သီးသန့် ID များကို အသုံးပြုပါ။
- ID တွင် အကြောင်းအရာကို ထည့်သွင်းပါ (ဥပမာ၊
order-12345၊promo-summer-2025) - ID များကို စာလုံး 255 လုံးအောက်တွင်ထားပါ။
- အထူးဇာတ်ကောင်များကိုရှောင်ပါ။
TTL (အချိန်မှ တိုက်ရိုက်ထုတ်လွှင့်သည်)
အကြံပြုထားသည့် TTL တန်ဖိုးများ-
- OTP/Verification: 300-600 စက္ကန့် (5-10 မိနစ်)
- အရောင်းအ၀ယ်: 3600-86400 စက္ကန့် (1-24 နာရီ)
- ပရိုမိုးရှင်း: 86400-259200 စက္ကန့် (1-3 ရက်)
- စစ်တမ်းများ: 604800 စက္ကန့် (7 ရက်)
စီစဉ်ထားသော မက်ဆေ့ချ်များ
schedledSentအတွက် UTC အချိန်ဇုန်ကိုသုံးပါ။- ရက် 30 ထက်ပို၍ ကြိုတင်စီစဉ်မထားပါနှင့်
- အချိန်ဇုန်ကွဲပြားမှုအတွက်အကောင့်
- မကြာမီအချိန်ဇယားများဖြင့် ဦးစွာစမ်းသပ်ပါ။
အစုလိုက်ပို့ခြင်း။
- မက်ဆေ့ခ်ျ 100-1000 အတွဲလိုက်ပို့ပါ။
- နှုန်းကန့်သတ်ချက်ကိုအကောင်အထည်ဖော်ပါ။
- အမှားများကို သပ်ရပ်စွာ ကိုင်တွယ်ပါ။
- မအောင်မြင်သောမက်ဆေ့ဂျ်များကို ထပ်စမ်းကြည့်ပါ။
ကိုင်တွယ်မှုအမှား
HTTP အခြေအနေကုဒ်များ
| ကုတ် | ဖော်ပြချက် |
|---|---|
| 200 | အောင်မြင်မှု |
| 400 | တောင်းဆိုမှု မမှန် - မမှန်ကန်သော ဘောင်များ |
| 401 | ခွင့်ပြုချက်မရှိဘဲ - မမှန်ကန်သော API သော့ |
| 429 | တောင်းဆိုမှုများ |
| 500 | ဆာဗာ အမှားအယွင်း |
အမှားတုံ့ပြန်မှု
{
"error": {
"code": "INVALID_PHONE",
"message": "Invalid phone number format",
"field": "toPhone"
}
}
လော့ဂျစ်ကို ပြန်စမ်းကြည့်ပါ။
async function sendWithRetry(message, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await messenger.sendMessage(message);
} catch (error) {
if (error.response?.status === 400) {
// Don't retry validation errors
throw error;
}
if (i === maxRetries - 1) throw error;
// Exponential backoff
await new Promise(resolve =>
setTimeout(resolve, Math.pow(2, i) * 1000)
);
}
}
}
နောက်အဆင့်များ
- Message Variables - ပြောင်းလဲနေသော အကြောင်းအရာများကို အသုံးပြုပါ။
- Message Types - မက်ဆေ့ခ်ျအမျိုးအစားများကို စူးစမ်းပါ။
- ပေးပို့မှုအခြေအနေ - ပေးပို့မှုကို ခြေရာခံပါ။