Анализируйте точный текст сообщения
Рассчитайте кодировку, длину в единицах кодирования и количество сегментов 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
}
}| Поле | Значение |
|---|---|
| charset | 0 для GSM-7 или 2 для UTF-16. |
| encoding | GSM-7 или UTF-16. |
| parts, count | Два названия для рассчитанного количества сегментов SMS. Для пустого текста оба значения равны нулю. |
| units, chars | Два названия для количества единиц кодирования. Оно не обязательно совпадает с количеством видимых символов. |
| single_limit | Предельное количество единиц кодирования для одного сегмента в выбранной кодировке. |
| multipart_limit | Предельное количество единиц кодирования для каждого сегмента с учётом места, занимаемого служебными данными объединения сегментов. |
Кодировки и ограничения сегментов
| Кодировка | Одиночный сегмент | Сегмент составного сообщения |
|---|---|---|
| GSM-7 | 160 септетов | 153 септета |
| UTF-16 | 70 кодовых единиц | 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; этот эндпоинт возвращает код в виде строки. Пустая строка допустима: для неё возвращаются ноль единиц и ноль сегментов.
Используйте результат перед отправкой
В проверенном калькуляторе нет отправки сообщений, обращений к оператору связи или списаний со счёта. Его результат представляет собой анализ переданного текста, а не гарантию доставки или окончательный счёт. При отправке могут применяться тарифы по направлениям, сборы операторов, требования к кампаниям и дополнительные преобразования текста. После изменения сообщения выполните расчёт заново, затем используйте утверждённый процесс отправки и актуальные тарифы вашей учётной записи.