Разработчикам

POST/v3/smslength

Расчёт кодировки и количества сегментов SMS

Анализ окончательного текста сообщения без его отправки и оценки стоимости доставки.

На этой странице
  1. Анализируйте точный текст сообщения
  2. Запрос
  3. Ответ
  4. Кодировки и ограничения сегментов
  5. Ошибки и пустой текст
  6. Используйте результат перед отправкой

Анализируйте точный текст сообщения

Рассчитайте кодировку, длину в единицах кодирования и количество сегментов SMS для текста, который собираетесь отправить. Этот эндпоинт не отправляет SMS, не резервирует маршрут и не возвращает предварительный расчёт стоимости доставки. Передайте полный окончательный текст, включая любые подписи, ссылки или формулировки отказа от рассылки, которые добавляются в процессе отправки.

Запрос

Пройдите аутентификацию с помощью включённой учётной записи API, отправляя запрос с разрешённого для неё исходного IP-адреса. Храните учётные данные в хранилище секретов на стороне сервера. Передайте строку в кодировке UTF-8 в поле text; в примере используются переменные окружения.

curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
  --data-urlencode 'text=Your message here' \
  https://api.multitel.net/v3/smslength

Поддерживаются входные данные в формате формы. Объект JSON, например {"text":"Your message here"}, также принимается, если поля формы и параметры строки запроса не переданы. Предпочитайте POST, чтобы текст сообщения не попадал в URL. Если одновременно переданы данные формы и параметры строки запроса, используются данные формы. Не смешивайте форматы запросов.

Ответ

{
  "status": {
    "code": "200",
    "msg": ""
  },
  "response": {
    "charset": 0,
    "encoding": "GSM-7",
    "count": 1,
    "parts": 1,
    "chars": 17,
    "units": 17,
    "single_limit": 160,
    "multipart_limit": 153
  }
}
Поля результата расчёта
ПолеЗначение
charset0 для GSM-7 или 2 для UTF-16.
encodingGSM-7 или UTF-16.
parts, countДва названия для рассчитанного количества сегментов SMS. Для пустого текста оба значения равны нулю.
units, charsДва названия для количества единиц кодирования. Оно не обязательно совпадает с количеством видимых символов.
single_limitПредельное количество единиц кодирования для одного сегмента в выбранной кодировке.
multipart_limitПредельное количество единиц кодирования для каждого сегмента с учётом места, занимаемого служебными данными объединения сегментов.

Кодировки и ограничения сегментов

Ограничения, используемые калькулятором
КодировкаОдиночный сегментСегмент составного сообщения
GSM-7160 септетов153 септета
UTF-1670 кодовых единиц67 кодовых единиц

Символы расширенного набора GSM-7, такие как ^, фигурные и квадратные скобки, обратная косая черта, вертикальная черта, тильда и знак евро, занимают по два септета. Символ, не входящий в GSM-7, переводит всё сообщение на подсчёт в UTF-16. Эмодзи за пределами основной многоязычной плоскости занимает две единицы UTF-16; видимая последовательность эмодзи может содержать несколько кодовых точек.

Например, 160 обычных букв GSM-7 помещаются в один сегмент, а 161 требуют двух. Восемьдесят символов ^ занимают 160 единиц и помещаются в один сегмент; восемьдесят один занимает 162 единицы и требует двух сегментов. Тридцать пять простых эмодзи за пределами основной многоязычной плоскости занимают 70 единиц UTF-16 и помещаются в один сегмент; тридцать шесть занимают 72 единицы и требуют двух сегментов. Комбинируемые знаки и соединённые эмодзи могут изменить эти значения.

Ошибки и пустой текст

Отсутствие поля text, массив или объект вместо скалярного значения либо некорректная кодировка UTF-8 приводят к возврату кода API 403. Читайте в JSON поля status.code и status.msg, а также статус HTTP; этот эндпоинт возвращает код в виде строки. Пустая строка допустима: для неё возвращаются ноль единиц и ноль сегментов.

Используйте результат перед отправкой

В проверенном калькуляторе нет отправки сообщений, обращений к оператору связи или списаний со счёта. Его результат представляет собой анализ переданного текста, а не гарантию доставки или окончательный счёт. При отправке могут применяться тарифы по направлениям, сборы операторов, требования к кампаниям и дополнительные преобразования текста. После изменения сообщения выполните расчёт заново, затем используйте утверждённый процесс отправки и актуальные тарифы вашей учётной записи.