Подключите ваш текущий API к BroadNet
Большинство SMS API используют одни и те же несколько концепций под разными названиями. Найдите концепцию в первом столбце, независимо от того, как её называет ваш провайдер, и используйте эквивалент BroadNet. Названия полей точно такие же, как в спецификации OpenAPI.
| Концепция | Типичная форма у других поставщиков услуг | BroadNet |
|---|---|---|
| Хост API | Региональный API хост для вашей учетной записи | https://api.broadnet.meТестовые учётные данные и адрес для отправки тестового трафика вы получите вместе с тестовым доступом: запросите его на /signup, мы ответим в течение одного рабочего дня. |
| Аутентификация | Идентификатор учетной записи и секретный ключ в рамках базовой аутентификации или заголовок ключа API. | Authorization: Bearer <token>Один токен доступа на один аккаунт. |
| Отправьте одно сообщение | HTTP POST-запрос к конечной точке сообщений | POST /sms/sendSmsТело запроса имеет JSON. |
| Отправитель | from, sender, originator | senderIdБуквенно-цифровой идентификатор отправителя или номер, зарегистрированный в каждой стране. |
| Получатель | to, destination, msisdn | destinationNumberМеждународный формат, как в примере спецификации |
| Текст сообщения | body, text, content | messageТекст сообщения в том виде, в котором его увидит получатель. |
| Кодировка символов и части сообщения | Рассчитывается поставщиком услуг или возвращается отдельным вызовом API | messageType
|
| Запланированная отправка | Поле send_at или поле расписания времени | isSchedule · gmt · timeЧтобы отправить сообщение немедленно, эти поля можно не заполнять. |
| Идентификатор сообщения | Поле ID в JSON ответе | 200 OK → 2603121407537573731В теле ответа |
| Несколько получателей | Конечная точка пакетной обработки или цикл | POST /sms/sendSmsGroupDataВ теле запроса используется массив |
| Webhook статуса доставки | URL-адрес обратного вызова для каждого запроса или для каждой учетной записи. | Webhook URL on your accountСтатус доставки передается на URL-адрес webhook, настроенный в вашей учетной записи. |
| Запрос статуса доставки | GET-запрос для получения сообщения по его идентификатору. | GET /websmpp/websmsstatusУстаревший HTTP API. Передайте идентификатор сообщения как |
| Экспорт отчета о доставке | Экспорт в CSV-файл в консоли | /websmpp/api/dlrreportУстаревший HTTP API. Отчет о доставке в формате XLSX за определенный период времени. |
| Ответы об ошибках | Статус HTTP плюс код ошибки поставщика. | 400 · 401 · 500400: ошибка проверки или отсутствует поле. 401: недействительный или отсутствующий токен Bearer. 500: непредвиденная ошибка сервера. |
| SMPP | Сессии SMPP (привязываются) к SMSC провайдера. | bind · submit_sm · deliver_smСессии SMPP v3.4 используются в качестве передатчика, приемника или трансивера. Подтверждения доставки приходят в формате |
| Отправка с использованием HTTP GET URL | URL-адрес для GET-запроса с учетными данными в параметрах. | GET /websmpp/websmsУстаревший HTTP API. |
| SDK | Библиотека для каждого языка | @broadnet/cpaas-sdkОдин официальный SDK для TypeScript и Node.js. Для других языков сгенерируйте клиент на основе спецификации OpenAPI. |
Вот пример отправки в виде одного запроса. Замените поля отправителя, получателя и текста вашего провайдера на senderId, destinationNumber и message :
curl -X POST https://api.broadnet.me/sms/sendSms \
-H "Authorization: Bearer $BROADNET_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"senderId": "ACME",
"destinationNumber": "447700900101",
"message": "Your code is 8123",
"messageType": "TEXT"
}'
# 200 OK — the response body is the message ID, e.g. 2603121407537573731Чтобы проверить статус сообщения, запросите его состояние, используя идентификатор сообщения, возвращенный запросом на отправку:
# Status lookup on the legacy HTTP API (/websmpp), by message ID
curl "https://api.broadnet.me/websmpp/websmsstatus?respid=2603121407537573731&format=json" \
-H "Authorization: Bearer $BROADNET_TOKEN"
# "status": "DELIVRD" (or UNDELIV, EXPIRED, REJECTD)Переместите свои идентификаторы отправителя
Буквенно-цифровые идентификаторы отправителя и короткие коды, как правило, переносимы и регулируются правилами регистрации каждого оператора и регулирующего органа. Регистрация относится к маршруту, по которому проходит ваш трафик, поэтому планируйте ее до того, как любое сообщение в рабочую сеть будет отправлено в BroadNet.
- 1
Перечислите все идентификаторы отправителей, страны, в которые они отправляют сообщения, и тип передаваемого трафика: OTP, транзакционный или маркетинговый.
- 2
Проверьте правила каждой страны. В ОАЭ идентификаторы отправителей регистрируются в соответствии с правилами TDRA через оператора, один идентификатор на юридическое лицо на один случай использования. В Саудовской Аравии для этого требуется одобрение CST и оператора, а иностранные отправители привязываются через местного агрегатора, имеющего лицензию CST.
- 3
Ваш инженер по миграции отправляет заявки на регистрацию маршрутов BroadNet, а группа контроля соответствия BroadNet отслеживает каждую из них до момента утверждения.
- 4
Начинайте параллельную отправку в стране только после того, как идентификатор отправителя будет одобрен там для маршрутов BroadNet. До тех пор продолжайте отправлять сообщения через своего текущего провайдера.
Правила для каждого рынка указаны на страницах с нормативными актами. Правила использования SMS в разных странах
Запустите оба провайдера параллельно
Оставьте текущего провайдера активным и добавьте BroadNet в качестве второго маршрута за коммутатором в вашем собственном коде. Сначала отправьте трафик на свои проверенные номера, затем небольшую часть реального трафика и сравните оба маршрута по одним и тем же адресам.
Сравнение по странам и операторам:
- Сочетание статусов доставки: доставлено, недоставлено, истек срок действия и отклонено.
- Время от отправки сообщения до получения подтверждения о его доставке.
- Отправитель отображается на экране телефона.
- Количество сегментов для того же текста, начиная с
POST /sms/identify.
Выбирайте маршрут для каждого получателя, а не для каждого сообщения, чтобы все повторные попытки отправки OTP для одного пользователя проходили через одного и того же поставщика. Минимальный переключатель маршрутизации:
// Send a share of recipients through BroadNet; the rest stay on your
// current provider. BROADNET_SHARE is a percentage (0-100) you control.
const BROADNET_SHARE = Number(process.env.BROADNET_SHARE ?? "0");
// Same recipient -> same bucket, so OTP retries stay on one provider.
function bucket(to: string): number {
let h = 0;
for (const c of to) h = (h * 31 + c.charCodeAt(0)) >>> 0;
return h % 100;
}
export async function sendSms(to: string, text: string, senderId: string) {
if (bucket(to) < BROADNET_SHARE) return sendViaBroadNet(to, text, senderId);
return sendViaCurrentProvider(to, text, senderId); // your existing code
}
async function sendViaBroadNet(to: string, text: string, senderId: string) {
const res = await fetch("https://api.broadnet.me/sms/sendSms", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BROADNET_TOKEN}`,
"Content-Type": "application/json",
},
// Use UNICODE for non-GSM text; POST /sms/identify tells you which.
body: JSON.stringify({ senderId, destinationNumber: to, message: text, messageType: "TEXT" }),
});
if (!res.ok) throw new Error(`BroadNet send failed: ${res.status}`);
return { provider: "broadnet", messageId: await res.text() };
}Постепенное увеличение трафика
Перемещайте производственные объемы в BroadNet поэтапно, выбирая одну страну или один сценарий использования за раз. Оставайтесь на каждом этапе, пока подтверждения доставки не совпадут с отправленными данными, затем переходите к следующему.
- Тестирование
Только ваши собственные подтвержденные номера. Подтвердите идентификатор отправителя, текст сообщения и отчёты о доставке.
- 5%
Небольшая доля реального трафика. Трафик OTP в одну страну обеспечивает быструю и понятную доставку.
- 25%
Достаточный объем данных для сравнения тарифов на доставку и сроков получения с вашим текущим поставщиком.
- 100%
Весь трафик для данной страны или сценария использования. Ваш текущий провайдер остается активным до тех пор, пока подтверждения доставки не совпадут с отправленными вами данными.
Сколько времени это займет
Увеличение трафика занимает столько времени, сколько вы выберете. Процесс внедрения проходит по одному пути: мы отвечаем на запрос о тестовом доступе в течение одного рабочего дня, техническая интеграция занимает 2–5 рабочих дней, а проверка маршрута с подтверждением идентификатора отправителя — 3–10 рабочих дней. На большинстве рынков от этапа обнаружения до запуска проходит 5–15 рабочих дней; на рынках, где регулирующие органы дольше утверждают идентификаторы отправителей, этот процесс занимает больше времени. Ознакомьтесь с этапами адаптации.
Возврат к текущему провайдеру без перебоев в работе
Для отката используйте тот же переключатель в обратном порядке: уменьшите процент трафика, отправляемого через BroadNet, до последнего успешно выполненного шага или до нуля. Ваша текущая интеграция и регистрация идентификаторов отправителей остаются активными все время, поэтому достаточно уменьшить процент. Ничего не нужно перестраивать.
- Поддерживайте активность учетных данных вашего текущего провайдера, регистраций идентификатора отправителя и конечной точки webhook до тех пор, пока весь трафик не будет перенаправлен и подтверждения доставки не будут соответствовать отправленным вами данным.
- Прежде чем начать, согласуйте, что именно послужит основанием для отмены изменений, например, снижение доли сообщений, доставленных в одной стране, и кто имеет право принимать такое решение.
- После отката обработчик webhook должен оставаться запущенным: уведомления о доставке сообщений, уже отправленных через BroadNet, по-прежнему могут поступать.
- Отключайте старый маршрут только после того, как весь трафик будет корректно проходить через BroadNet, а подтверждения доставки будут соответствовать отправленным вами данным.
Кто за что несёт ответственность
Миграция затрагивает ваш код, регистрацию отправителей и реальный трафик. Вот как распределяется работа.
| Задача | Ваша команда | BroadNet |
|---|---|---|
| Сопоставление полей и изменения кода | Внесите изменения в код и получите контроль над коммутатором маршрутизации. | Ваш инженер по миграции сопоставляет ваши текущие данные, идентификаторы отправителей и отчёты о доставке с API BroadNet. |
| Реквизиты для входа | Храните токен доступа в безопасном месте и не допускайте его попадания в систему контроля версий. | Выдает токен доступа и, для SMPP, учетные данные для входа. |
| Регистрация идентификатора отправителя | Предоставьте компании документы, запрашиваемые каждым регулирующим органом. | Подает заявки на регистрацию своих маршрутов и отслеживает каждую из них до момента утверждения. |
| Проверка маршрута | Подтвердите результаты теста, используя свои собственные телефонные номера. | Перед запуском серийного производства проводится тестирование доставки на каждом рынке. |
| Увеличение трафика и откат | Определите каждый шаг, что запускает откат и кто принимает это решение. | В процессе параллельного выполнения и переключения можно связаться с назначенным инженером по миграции. |
| Доставка после принятия сообщения сетью BroadNet | Отслеживайте отчёты о доставке в своих собственных системах. | Перенаправляет каждое сообщение со своей платформы оператору и сообщает о получении. |
| Инциденты в рабочей среде | Сообщите о них по адресу developers@broadnet.me. | Круглосуточная техническая поддержка для производственных учетных записей, с ответом на инциденты P1 в течение 15 минут. |
| Вывод старого маршрута из эксплуатации | Закройте счет у предыдущего провайдера. | Подтверждает, что идентификаторы отправителя, пропускная способность и отчёты о доставке урегулированы, прежде чем вы закроете аккаунт. |
Соответствующая документация
Часто задаваемые вопросы
Нужно ли мне переписывать интеграцию для перехода на BroadNet ?
Обычно нет. Вы меняете хост, заголовок аутентификации и несколько имен полей: поле отправителя становится senderId, поле получателя — destinationNumber, а текстовое поле — message. Интеграция SMPP перенаправляет существующее соединение на BroadNet с новыми учетными данными.
Могу ли я сохранить свои идентификаторы отправителя?
В целом, да, при условии соблюдения правил регистрации каждого оператора и регулирующего органа. Регистрация осуществляется на маршрутах BroadNet до начала работы сети: в ОАЭ — в соответствии с правилами TDRA, а в Саудовской Аравии — с одобрения CST и оператора.
Сколько времени занимает миграция?
На большинстве рынков процесс от обнаружения до запуска занимает 5–15 рабочих дней; на рынках, где регулирующие органы дольше утверждают идентификаторы отправителей, этот процесс занимает больше времени. После этого наращивание трафика занимает столько времени, сколько вы выберете.
Что произойдет, если количество доставок снизится, а трафик увеличится?
Снизьте процент трафика, отправляемого через BroadNet, до уровня последнего успешного шага или до нуля. Ваш текущий провайдер по-прежнему работает, поэтому трафик продолжает поступать. Затем перед повторной попыткой проверьте отчёты о доставке для затронутой страны вместе с вашим инженером по миграции.
Взимается ли плата за поддержку при миграции?
Нет. Поддержка миграции и окно параллельного выполнения включены в ваш аккаунт. Вы платите только за отправленные сообщения.
Запросить тестовый доступ · ответим в течение одного рабочего дня
Получите учетные данные, отправьте тестовые сообщения на свой подтвержденный номер и сопоставьте вашу текущую интеграцию с инженером телекоммуникационной компании BroadNet прежде чем передавать какой-либо рабочий трафик.