API / HTTP/HTTPS протокол / Ответ сервера и коды ошибок – SMS-центр

community Новости

1с-битрикс разработчикам – сообщения

Всем привет!

В маркетплейсе 1С-Битрикс доступно обновление модуля «». Сегодня я расскажу вам о новом функционале в версии 1.8.2.

Кратко о новом функционале модуля:

  1. Отправка SMS на агентах.
  2. Отправка отложенных рассылок.
  3. Загрузка статусов отправленных SMS.
  4. Загрузка входящих SMS.
  5. Компонент «Контакты по SMS».
  6. События модуля:
    • загружен финальный статус — FinalStatus;
    • загружена входящая SMS — LoadIncoming;
    • до принятия SMS на отправку — BeforeSmsSend;
    • после принятия SMS на отправку — AfterSmsSend.

Изменения в отправке SMS

В модуле отправка SMS выполняется двумя способами:

  • на хите;
  • на агентах (рекомендуется).

Чтобы отправку SMS перевести на агенты в настройках модуля SMS4B необходимо:

  1. Указать «Отправлять SMS на агентах». Если агенты работают на хитах, тогда необходимо перевести агенты на cron ().
  2. Задать параметр «Количество передаваемых сообщений за один запуск агента». Параметр необходимо подбирать исходя из объема отправляемых SMS. Агент запускается каждые 5 минут.

Nastroyki-Otpravka na agentakh.png

Добавлена возможность отправлять отложенные SMS. Дата старта рассылки не ограничена.

Для дополнения функционала модуля используйте методы для отправки SMS доступные в классе Csms4b:

  • отправить одиночную SMS – sendSingleSms;
  • отправить массовую рассылку – sendMultiSms;
  • отправить отложенную рассылку – sendDelayedSms.

Ниже описание и примеры методов отправки SMS.

Отправить одиночную SMS
sendSingleSms(string $message, string $to, string $sender): void

Список параметров
message – текст SMS.
to – номер телефона получателя.
sender – символьное имя, заказанное в личном кабинете на сайте .

Ошибки
В случае ошибки выбрасывает исключение Sms4bException.

Пример


Отправить массовую рассылку

sendMultiSms(array $arPhonesMessages, string $sender): void

Список параметров
arPhonesMessages – массив c телефонами и текстами SMS вида array(“номер телефона” => “текст”).
sender – символьное имя, заказанное в личном кабинете на сайте .

Ошибки
В случае ошибки выбрасывает исключение Sms4bException.

Пример

Отправить отложенную рассылку

sendDelayedSms(array $arPhonesMessages, string $sender, DateTime $dateStart, DateTime $dateActual): void

Список параметров
arPhonesMessages – массив c телефонами и текстами SMS вида array(“номер телефона”=>”текст”).
sender – символьное имя, заказанное в личном кабинете на сайте .
dateStart – дата старта рассылки.
dateActual – дата актуальности рассылки (момент прекращения попыток доставки).

Ошибки
В случае ошибки выбрасывает исключение Sms4bException.

Пример

Статусы отправленных SMS

Для отправленных SMS добавлены статусы. SMS может находится в статусе:

  • создана — SMS еще не передана на сервис;
  • отправляется — SMS передана на сервис;
  • доставлено — SMS доставлена абоненту;
  • не доставлено — SMS не доставлена абоненту;
  • отвергнуто — сервис не принял SMS, причина указывается в столбце результат отправки.

Otpravlennye SMS.png

Загрузка входящих SMS

Для приема входящих SMS необходимо арендовать цифровой номер в . Поступившие на номер входящие SMS загружаются на сайт крон-скриптом каждые 15 минут.

Изменения в событиях модуля

Обработчики для событий OnBeforeSmsSend и OnAfterSmsSend будут выполнятся если в настройках модуля SMS4B указано «Обрабатывать старые события модуля».

sobytiya starogo yadra.png

В новой версии модуля добавлены события:

  • FinalStatus — загружен финальный статус SMS;
  • LoadIncoming — загружено входящее SMS;
  • BeforeSmsSend — до принятия SMS на отправку;
  • AfterSmsSend — после принятия SMS на отправку.

Событие FinalStatus

Модуль запускает обработчики события FinalStatus после изменения статуса SMS на «доставлено» или «не доставлено». Событие FinalStatus может быть использовано:

  • для уведомления менеджера о недоставленной SMS;
  • если SMS не доставлена, то отправить клиенту email.

Пример

Событие LoadIncoming

Обработчики события LoadIncoming запускаются после загрузки входящего SMS. Событие может быть использовано для информирования менеджеров о входящем SMS.

Пример

Событие BeforeSmsSend

Обработчики события BeforeSmsSend запускаются до принятия SMS на отправку. Событие BeforeSmsSend может быть использовано для изменения параметров рассылки: номер телефона, текст SMS, отправитель.

Обработчик должен возвращать массив вида array(“номер телефона” => “текст”). Если обработчик ничего не возвращает, то SMS не будет отправлена.

Пример

Событие AfterSmsSend

Событие вызывается после того как рассылка принята на отправку. Событие AfterSmsSend может быть использовано для проверки параметров принятой SMS.

Пример

Компонент «Контакты по SMS»

Компонент позволяет посетителю сайта отправить себе SMS с контактной информацией сайта, на котором он находится. Компонент можно разместить в разделе «Контакты». Посетитель вводит свой мобильный номер и нажимает кнопку «Получить контакты по SMS» и получает SMS с контактами. В результате клиент всегда может связаться с вами и поделится контактами с друзьями.

Komponent Kontakty po SMS.png

Чтобы настроить компонент перейдите в настройки модуля SMS4B и укажите:

  • текст SMS-сообщения;
  • ограничение количества отправок SMS на один номер. (для предотвращения СПАМа);
  • номера на которые не распространяется ограничение на количество отправок (опционально).

Nastroyka komponenta.png

Sent-to-sim

Бззззз. Карман завибрировал. Уведомление даёт понять, что SMS прибыло на карту nano-SIM, микросхему размером с мизинец. Как Бильбо Бэггинс или любой хороший искатель приключений, оно немного изменилось по пути туда и обратно.

API / HTTP/HTTPS протокол / Ответ сервера и коды ошибок – SMS-центр
Рис. 8. Полученное сообщение отличается от отправленного (рис. 3)

На рисунке 8 показана структура полученного сообщения «Люблю тебя». Сравнивая рисунки 3 и 8, мы видим несколько различий. SCA (номер SMS-центра), PDU (некоторое механическое наведение порядка), PID («с телефона на телефон», а не «с телефона на факс»)

Вместо них на телефоне появились два новых информационных блока: OA (исходный номер телефона жены) и SCTS (отметка времени SMS-центра. то есть когда жена отправила сообщение).

Номер телефона моей жены хранится в той же раздражающей обратной нотации (типа дислексии, только у компьютеров), в которой мой номер сохранялся на её телефоне, а метка времени в том же формате, что и дата истечения срока действия, сохранённая на её телефоне.

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

Автоматическая отправка смс по расписанию

Автоматическая отправка смс по расписанию

Иногда возникает потребность в отправке смс в определенный день и время суток. И происходить это должно в автоматическом режиме. Однажды настроил и можно заниматься другими делами. На форумах часто можно прочитать от многих пользователей вопрос: «А зачем?»

Например, начальник требует отчета до 700 (для примера) и позволяет отчитаться в смс сообщении. Отправить отчет утром можно просто забыть. Если ваше приложение для смс поддерживает отправку по расписанию, то можно вечером подготовить отчет и указать время, когда он автоматически будет отправлен. Например, в 6 часов и 50 минут. А если стандартное приложение этого не умеет – можно просто установить аналогичное с маркета.

Покажу, как автоматизировать отправку смс сообщений с помощью приложения Pulse SMS и напишу список приложений, которые имеют функционал, позволяющий отправлять запланированные смс.

Для отправки смс по расписанию в приложении Pulse SMS выполняем такие действия:

1. Находим контакт, для которого адресуется смс.

Pulse SMS

2. Пишем текст смс.

3. Нажимаем на меню (три точки) и выбираем «Отложить сообщение».

Pulse SMS

4. В следующем окне указываем дату, после этого время, когда смс сообщение должно отправиться.

Pulse SMS

Pulse SMS

5. Если нужно только один раз отправить сообщение, то можно нажимать на кнопку «Сохранить».

Pulse SMS

6. Но можно создать расписание с повтором. Тогда ваше сообщение может отправляться в указанное на предыдущих настройках время: каждый день, неделю, месяц или год. По умолчанию выбрано «Do not repeat» (не повторять). Если необходимо расписание – просто выберите из списка соответствующее значение.

Pulse SMS

Увидеть список запланированных на отправку сообщений можно, открыв меню программы «Отложенные диалоги».

Pulse SMS

Pulse SMS

Ничего сложного, все работает, проверено лично. После отправки сообщения в указанное вами время программа Pulse SMS выведет соответствующее оповещение (см. снимок экрана снизу).

Pulse SMS

Вас может заинтересовать статья:«Как читать смс на рабочем столе Windows?»

На отложенной отправке сообщений возможности Pulse SMS не заканчиваются. В программе можно управлять черным списком, есть возможность добавлять сообщения от нужных адресатов в личную папку «Личные сообщения» (для нее перед этим нужно задать пароль) и никто без пароля или вашего отпечатка пальца не сможет посмотреть их.

Pulse SMS

Также сообщения можно экспортировать и при необходимости импортировать, программой поддерживается 2 SIM-карты.

Для использования на смартфоне программа абсолютно бесплатна и не содержит рекламы. Но если вы хотите синхронизировать сообщения и пользоваться программой на других платформах, то нужна платная подписка (цена невысока). Поддерживаются такие платформы: MacOS, Windows, Wear OS, часы Samsung Galaxy Gear, Google Chrome, Firefox, Linux и даже Android TV .

Рекомендую.

Pulse SMS в маркете

Как установить время отправки SMS-сообщений на Android

Список других приложений для ОС Андроид, которые имеют функцию отложенной отправки сообщений по расписанию:

Pulse SMS

Do It Later (автоматизированные задачи для различных приложений)

Как установить время отправки SMS-сообщений на Android

Pulse SMS

Textra SMS

Как установить время отправки SMS-сообщений на Android

Pulse SMS

chomp SMS

Как установить время отправки SMS-сообщений на Android

Pulse SMS

Mood Messenger

Как установить время отправки SMS-сообщений на Android

Pulse SMS

IFTTT

Как установить время отправки SMS-сообщений на Android

Волны в эфире

Теперь SMS должно каким-то образом начать свой трудный путь от SIM-карты до ближайшей базовой станции. Для этого телефон жены должен преобразовать строку из 176 в 279 байт для сигнального протокола SS7, преобразовать эти цифровые байты в аналоговый радиосигнал, а затем отправить сигналы в эфир с частотой где-то между 800 и 2000 МГц. Это означает, что между пиками волн расстояние от 15 до 37 см.

API / HTTP/HTTPS протокол / Ответ сервера и коды ошибок – SMS-центр
Рис. 6. Длина волны

Для эффективной передачи и приёма сигналов антенна должна быть не меньше половины длины волны. Если волны сотовой связи от 15 до 37 см, то антенны должны иметь размер примерно 7−19 см. Теперь остановитесь и подумайте о средней высоте мобильного телефона, и почему она никогда не уменьшается.

Через определённую цифровую гимнастику, объяснение которой займёт слишком много времени, внезапно телефон моей жены выстреливает 279-байтовый информационный пакет с текстом «Люблю тебя» со скоростью света во всех направлениях, который в конечном итоге угасает и растворяется в радиошуме примерно через 50 километров.

Задолго до этого сигнал попадает на базовую станцию AT&T HSPA ID199694204 LAC21767. Эта базовая приёмопередающая станция (BTS) находится примерно в пяти кварталах от моей любимой пекарни La Gourmandine в Хейзелвуде, и хотя я нашёл её координаты с помощью Android-приложения OpenSignal, антенна хорошо спрятана от посторонних глаз.

Здесь самое удивительное, что BTS вообще принимает этот сигнал, учитывая всё остальное. Мало того, что моя жена отправляет «Люблю тебя» в тысячном участке диапазона электромагнитного спектра, но десятки тысяч других людей в радиусе 50 километров в это время говорят по телефону или пишут сообщения.

Как красноречиво выразился Ричард Фейнман в 1983 году, вышка сотовой связи словно маленький слепой жук, лежащий в воде на краю бассейна: только по высоте и направлению волн он определяет, кто и где плавает.

Фейнман обсуждает волны

Отчасти из-за сложной интерференции сигналов каждая базовая станция приёмопередатчика обычно не может обрабатывать более 200 активных пользователей (голос или данные) одновременно. Итак, «Люблю тебя» пингует местную базовую станцию примерно в полумиле отсюда, а затем кричит в пустоту во всех направлениях, пока не исчезает в общем шуме.

Дополнение 1. форма для опроса владельцев дисконтных карт

В качестве номеров дисконтных карт использую номера телефона владельцев – это можно сделать без доработок, через Администрирование – Подключаемое оборудование – Шаблоны регистрации дисконтных карт.

То есть когда покупатель заводит дисконтную карту, он говорит свой номер телефона, его данные вносят в программу и НЕ выдают пластиковую карту – ибо зачем, у покупателя и так их полный кошелек, а для магазина это дополнительный расход.

В принципе уже можно работать без доработок, но посмотрите на эту форму опроса покупателя при регистрации бонусной карты:

Её проблема в том, что она содержит 6 страниц, которые нужно заполнить продавцу.

Большинство вопросов не нужны (мне), например, фактический адрес, год рождения, адрес электронной почты, фамилия, отчество. Да ещё и телефон автоматически не заполняется, хотя продавец его уже ввёл при нажатии на кнопку Штрихкод.

Решение:

Поэтому разработал расширение, которое изменяет форму опроса и вносит ещё пару полезных фишек.  Теперь форма опроса выглядит так:

Какой сценарий работы:

1. Создание бонусной карты

При создании бонусной карты продавец нажимает на кнопку Штрихкод, вводит номер телефона покупателя, затем узнает его имя без фамилии и отчества и день рождения без года – нам эти данные не нужны. После этого продавец нажимает сохранить. Обратите внимание, каким после записи становится имя карты (3).

2. Использование бонусов.

Когда покупатель хочет оплатить бонусами, то продавец нажимает кнопку Штрихкод, узнает у покупателя номер телефона, после чего спрашивает, как зовут покупателя и когда у него день рождения. Покупатель отвечает и продавец убеждается, что это скорее всего карта этого покупателя.

В конфигурации есть способ проверки владельца карты путем отправки на его номер СМС, но это деньги, которые тратить не хочется.

Зазеркалье

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

API / HTTP/HTTPS протокол / Ответ сервера и коды ошибок – SMS-центр
Рис. 0. Ёмкостный датчик прикосновения

Итак, она нажимает по экрану, набирая по одной букве.

I-пробел-l-o-v-e-пробел-y-o-u.

Она не пользуется свайпом (но почему-то всё равно печатает быстрее меня). Телефон надёжно регистрирует координаты (x,y) каждого нажатия и проверяет координаты каждой клавиши на экране. Это сложнее, чем вы думаете; иногда палец соскальзывает, но каким-то образом телефон понимает, что это не жест, а просто смазанное нажатие.

Глубоко в металлических кишках устройства алгоритм проверяет, что каждый раз изменение напряжения покрывает больше, чем определённое количество пикселей, которое называется touch slop. Если площадь небольшая, телефон регистрирует нажатие клавиши, а не свайп.

API / HTTP/HTTPS протокол / Ответ сервера и коды ошибок – SMS-центр
Рис. 1. Код Android для обнаружения touch slop. Обратите внимание, что разработчики знали пол моей жены

Она заканчивает сообщение, жалкие 10 символов из разрешённых 160.

160 символов — тщательно выверенное число. Если верить легенде, в 1984 году немецкий телефонный инженер Фридхельм Хиллебранд сел за пишущую машинку и написал столько случайных предложений, сколько ему пришло в голову. Затем его команда изучила почтовые карточки и сообщения по телетайпу — и обнаружила, что большинство из них не превышает 160 символов. «Эврика!» — видимо, закричали они по-немецки, прежде чем зафиксировать лимит символов в текстовых сообщениях на следующие три с лишним десятилетия.

Как отправить sms со смартфона хуавей и хонор

Новоиспеченные владельцы Андроид задаются вопросом как написать сообщение в телефоне Хонор и Хуавей? Пошаговая инструкция избавит вас от проблем.

  1. Внизу экрана на главном рабочем столе расположен значок письма. Это раздел сообщений. Он похож на бумажный конверт, но оформление индивидуальное, и зависит от темы. Нажимаете на него.

    как написать сообщение в телефоне хонор

  2. Справа внизу есть плюс, нажимая на него вы создаете новое сообщение.

    как отправить смс на хуавей

  3. Вверху вводите номер телефона получателя.

    как отправить смс с телефона хонор 7а

  4. В нижнем поле набираете текст, который хотите отправить.

    как на хоноре настроить отправку смс

  5. Правее от поля для ввода содержимого есть иконка в виде стрелки. Это значит «Отправить».

Как обновить смартфон Хонор и Хуавей до EMUI 10: список моделей 2021 года

Как правильно составить текст для sms-рассылки?

Прежде чем клиент решит, интересует ли его ваше предложение, он должен понять его суть.

  1. Сообщите суть предложения в первых двух строчках. Первая и вторая строка должны содержать главную выгоду вашего предложения. Как именно получить эту выгоду, адресат прочтёт дальше, узнает по телефону или перейдёт по ссылке на сайт.
  2. Используйте название компании или бренд. Получатель должен сразу понять от кого пришло сообщение. Даже самое выгодное предложение, полученное непонятно от кого, вызывает настороженность.
  3. Сокращайте! Шанс короткого сообщения быть прочитанным гораздо выше. Важно, чтобы его содержание было понятно без усилий.
  4. Поменьше креатива. Остроумные рекламные слоганы хорошо смотрятся на телевидении, в печати и на сайтах. Но в SMS для них слишком мало места – лучше напишите конкретику: что, почём, до какого числа.
  5. Не используйте транслит! Хотя этот приём делает рассылку дешевле, эффективность её снижается. В эпоху первых мобильных телефонов текст на кириллице часто был нечитаемым, в век смартфонов это неактуально. Разбирать непонятные знаки найдётся мало желающих.
  6. Используйте минимум сокращений, аббревиатур и слов капслоком. SMS-сообщение с сокращениями и аббревиатурами напоминает шпионский шифр, который совсем не хочется разгадывать. Текст, написанный заглавными буквами (Caps Lock), ассоциируется с повышением голоса. Большими буквами можно выделить 1-2 слова в сообщении, не больше. Сокращения и аббревиатуры используйте только общепонятные.

Повод для сообщения должен быть максимально конкретным. Акция, скидка, новый товар в магазине, сезонное предложение, эксклюзивная возможность по промокоду и другие подобные события.

Для компаний, работающих в сфере обучения – информация о презентациях, семинарах, конференциях. Не стоит просто писать о том, что у вас лучший или недорогой товар (без конкретных цифр) или без повода звать к себе в магазин.

Обратная связь.

Телефоны и ссылки – это обязательный элемент SMS. Самое интересное сообщение пройдёт мимо, если клиент не поймёт, что делать дальше. Наиболее естественный способ – кликабельный номер или адрес в сети. Номера лучше указывать с кодом оператора или города, чтобы звонок срабатывал по нажатию. В ссылках хорошо использовать очень короткие веб-адреса.

Коммутация

Учитывая все обстоятельства, мне очень повезло. Если бы мы с женой обслуживались у разных операторов сотовой связи или были в разных городах, маршрут её сообщения стал бы гораздо длиннее.

Сообщение SS7 размером 279 байт приходит на местную BTS рядом с пекарней. Оттуда поступает в контроллер базовой станции (BSC), который является мозгом не только нашей, но и нескольких других местных антенн. BSC перебрасывает текст в центр коммутации мобильной связи AT&

Эту тарабарщину легче понять с помощью диаграммы на рисунке 7; я только что описал шаги 1 и 3. Если бы жена была у другого оператора, мы бы перешли к шагам 4−7, потому что именно там мобильные операторы разговаривают друг с другом. SMS должно поступить от SMSC к глобальному коммутатору, а затем потенциально будет прыгать по всему миру, прежде чем найти путь к моему телефону.

API / HTTP/HTTPS протокол / Ответ сервера и коды ошибок – SMS-центр
Рис. 7. Маршрутизация SMS по сети GSM

Но она тоже сидит на AT&T, и наши телефоны подключены к одной и той же соте, поэтому после третьего шага 279-байтовый пакет любви просто разворачивается и возвращается через тот же SMS-центр, через ту же базовую станцию, но теперь на мой телефон вместо её. Путешествие в несколько десятков километров в мгновение ока.

Обмениваемся sms между виртуальными устройствами на эмуляторе

Вы можете обмениваться SMS между виртуальными устройствами. Для этого вам сначала нужно их запустить. Если у вас одно устройство, то создайте еще через Android Virtual Device Manager (меню Window | AVD Manager). Например, у меня было два устройства для Android 2.3.3 и Android 4.0.

У каждого устройства в заголовке есть четырёхзначное число, типа 5554 или 5556. Запускаем программу «Сообщения» (Messages), набираем это число и вводим нужный текст для сообщения. Отправляем сообщение и на другом устройстве сразу появляется уведомление о пришедшем сообщениии. Открываем и отвечаем. Вот так всё просто

Единственная проблема — некорректная работа с русскими буквами. Я попытался ответить на русском, а на устройстве пришло сообщение с кракозябрами.

Можно запустить и одно устройство и отсылать сообщения самому себе. Процесс отправки сообщения на эмулятор описан здесь.

Ограничения по символам и легенды

Легенды редко рассказывают всю историю целиком, и SMS не исключение. Хиллебранд и его команда надеялись передать сообщения по дополнительному каналу, который телефоны уже использовали для обмена информацией с базовой станцией.

Сигнальная система SS7 представляет собой набор протоколов, используемых сотовыми телефонами, чтобы оставаться в постоянном контакте с базовой станцией; им нужно постоянное соединение, чтобы получать вызов и передавать своё местоположение, проверять голосовую почту и т. д.

Обычно 279 байт равно 279 символам. В байте 8 бит, а в общих кодировках один символ соответствует одному байту.

0100 0001

0100 0010

0100 0011

и так далее.

К сожалению, для передачи сообщения по протоколу SS7 нельзя просто отправить 2232 нуля и единицы (279 байт по 8 бит) радиосигналом с одного телефона на другой. В это сообщение нужно включить номера отправителя и получателя, а также служебное сообщение для базовой станции «Эй, это сообщение, а не звонок, не отправляй сигнал вызова!»

К тому времени, когда Хиллебранд с коллегами сумели запихать все необходимые биты контекста в 279-байтовый сигнал, у них осталось только 140 байт или 1120 бит.

Но что, если кодировать символ только в 7 битах? Тогда можно втиснуть в каждое сообщение 160 (1120 / 7 = 160) символов, но такое сокращение требует жертв: меньше возможных символов.

Восьмибитная кодировка допускает 256 возможных символов: одно место занимает строчная ‘a’, одно — прописная ‘A’, свои места у пробела и символа ‘@’, разрыва строки и так далее, до 256. Чтобы ужать алфавит до семи бит, необходимо удалить некоторые символы:

символ 1/2 (½), символ градуса (°), символ числа пи (π) и так далее. Но предположив, что люди никогда не используют эти символы в тексте (плохое предположение, конечно), Гиллебранд с коллегами сумели поместить 160 символов в 140 байт. В свою очередь, этот объём точно уместился в 279 байт сигнала SS7: именно то количество символов, какое раньше определили как идеальную длину сообщения.

API / HTTP/HTTPS протокол / Ответ сервера и коды ошибок – SMS-центр
Рис. 2. Набор символов GSM-7

И вот жена набирает «Люблю тебя», а телефон преобразует буквы в 7-битную схему кодирования, которая называется GSM-7.

“I” (пересечении четвёртого столбца и девятой строки в таблице):

Пробел (пересечение второго столбца и нулевой строки):

“l” =

“o” =

и так далее по очереди.

В общем, её послание превращается в такую последовательность:

49 20 6C 6F 76 65 20 79 6F 75

(всего 10 байт). Каждый двухсимвольный код, называемый шестнадцатеричным кодом (hex), представляет собой один восьмибитный фрагмент, а всё вместе звучит как «Люблю тебя».

Но на самом деле сообщение не так хранится в телефоне. Он должен преобразовать 8-битный текст в 7-битный код. В результате преобразования сообщение начинает изменяется до такого:

49 10 FB 6D 2F 83 F2 EF 3A

(9 байт) в её телефоне.

Когда жена, наконец, заканчивает свое сообщение (это занимает всего несколько секунд), она нажимает «Отправить» — и множество крошечных ангелов получают закодированное сообщение, трепещут своими невидимыми крыльями на 10 метров до моего кабинета и аккуратно переносят его в мой телефон. Процесс не очень лёгкий, вот почему мой телефон слегка вибрирует при доставке.

Так называемые «инженеры связи» расскажут вам другую историю, и для полноты картины я перескажу её, но на вашем месте я бы не слишком доверял этим людям.

Особенности новых телефонов huawei

Если конструкция телефона Huawei не подразумевает монолитный, не разбираемый корпус, то следует открепить тыльную крышку для установки карты SIM и microSD, затем зафиксировать крышку на своем месте, предварительно убедившись в целости проводных соединений и аккумулятора.

В случаях, когда корпус Хуавей монолитный и не подразумевает разборки без вспомогательных инструментов, устанавливать необходимые карты нужно во внешний модуль, который, как правило, расположен в области левого ребра телефона. Обычно, производитель комплектует подобные модели булавкой, предназначенной для извлечения съемного модуля под карты.

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

  • Почему не приходят уведомления на Huawei Watch GT/GT 2 и Honor Watch Magic – как настроить?

Ответ сервера и коды ошибок

Сервер отправляет ответ в виде строки:

Если произошла ошибка, то ответ будет одним из следующих:

При fmt = 0:

    ERROR = N (описание) – для ошибок 1,2,4,5,9;
  • ERROR = N (описание), ID — <id сообщения> – для ошибок 3,6,7,8.
  • При fmt = 1:

    • 0,-N – для ошибок 1,2,4,5,9;
    • <id сообщения>,-N – для ошибок 3,6,7,8.

    При fmt = 2:

  • Для ошибок 3,6,7,8:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    <id>id сообщения</id>
    </result>
  • При fmt = 3:

    • Для ошибок 1,2,4,5,9:
      <
      “error”: “описание”,
      “error_code”: N
      >
    • Для ошибок 3,6,7,8:
      <
      “error”: “описание”,
      “error_code”: N,
      “id”: &LT;id сообщения>
      >

    N – номер ошибки, может принимать следующие значения:

    В случае успешной обработки запроса возвращается строка следующего вида:

      при cost = 0 и fmt = 0: OK — &LT;n> SMS, ID — &LT;id>

    при cost = 1 и fmt = 0: &LT;cost> (&LT;n> SMS)

    при cost = 2 и fmt = 0: OK — &LT;n> SMS, ID — &LT;id>, COST — &LT;cost>

    при cost = 3 и fmt = 0: OK — &LT;n> SMS, ID — &LT;id>, COST — &LT;cost>, BALANCE — &LT;balance>

    при cost = 0 и fmt = 1: &LT;id>,&LT;n>

    при cost = 1 и fmt = 1: &LT;cost>,&LT;n>

    при cost = 2 и fmt = 1: &LT;id>,&LT;n>,&LT;cost>

    при cost = 3 и fmt = 1: &LT;id>,&LT;n>,&LT;cost>,&LT;balance>

  • при cost = 0 и fmt = 2:
    &LT;result>
    &LT;id>id&LT;/id>
    &LT;cnt>n&LT;/cnt>
    &LT;/result>
  • при cost = 1 и fmt = 2:
    &LT;result>
    &LT;cost>cost&LT;/cost>
    &LT;cnt>n&LT;/cnt>
    &LT;/result>
  • при cost = 2 и fmt = 2:
    &LT;result>
    &LT;id>id&LT;/id>
    &LT;cnt>n&LT;/cnt>
    &LT;cost>cost&LT;/cost>
    &LT;/result>
  • при cost = 3 и fmt = 2:
    &LT;result>
    &LT;id>id&LT;/id>
    &LT;cnt>n&LT;/cnt>
    &LT;cost>cost&LT;/cost>
    &LT;balance>balance&LT;/balance>
    &LT;/result>
  • при cost = 0 и fmt = 3:
    <
    “id”: &LT;id>,
    “cnt”: &LT;n>
    >
  • при cost = 1 и fmt = 3:
    <
    “cost”: “&LT;cost>”,
    “cnt”: &LT;n>
    >
  • при cost = 2 и fmt = 3:
    <
    “id”: &LT;id>,
    “cnt”: &LT;n>,
    “cost”: “&LT;cost>”
    >
  • при cost = 3 и fmt = 3:
    <
    “id”: &LT;id>,
    “cnt”: &LT;n>,
    “cost”: “&LT;cost>”,
    “balance”: “&LT;balance>”
    >
  • при op = 1 и fmt = 0 или 1, информация добавляется в конец обычного вывода с новой строки:
    &LT;phone>,&LT;mccmnc>,&LT;cost>,&LT;status>,&LT;error>
  • при op = 1 и fmt = 2, в ответ добавляется массив:
    &LT;phones>
    &LT;phone mccmnc=”mccmnc” cost=”cost” status=”status” error=”error”>phone&LT;/phone>
    .
    &LT;/phones>
  • при op = 1 и fmt = 3, в ответ добавляется массив:
    “phones”: [ <
    “phone”: “&LT;phone>”,
    “mccmnc”: “&LT;mccmnc>”,
    “cost”: “&LT;cost>”,
    “status”: “&LT;status>”,
    “error”: “&LT;error>”
    >,
    .
    ]
  • Где: – это количество отправленных SMS, вычисляемое как количество SMS в сообщении, умноженное на количество получателей. – идентификатор сообщения, переданный Клиентом или назначенный Сервером автоматически. – количество частей (при отправке SMS-сообщения) либо 5-секундных блоков (при голосовом сообщении (звонке)). – новый баланс Клиента.

    – номер телефона. – числовой код страны абонента плюс числовой код оператора абонента. – стоимость SMS-сообщения. – код статуса SMS-сообщения. – код ошибки в статусе.

    Сервер не принимает более одного одинакового запроса на отправку SMS-сообщений в течение минуты для защиты от ошибок и зацикливаний в программе на стороне Клиента для того, чтобы снизить нагрузку и не расходовать средства Клиента, а также не допустить многократной отправки сообщения одному абоненту.

    Сервер также блокирует отправку более 50 сообщений одному абоненту, которые были отправлены с перерывом между сообщениями менее 60-ти секунд, для защиты от флуда и лишнего списания средств со счета Клиента, так как многие операторы не пропускают большое количество сообщений одному абоненту за короткий промежуток времени.

    Настраиваем API и отправляем SMS с помощью браузера

    Метод, получивший название SMS-рассылки по API, позволяет передавать SMS-сообщения через интернет, а также создавать недорогие программы для работы с SMS-трафиком.

    Отправка смс голосом при помощи штатных средств

    Сразу стоит отметить, что речь идет не о голосовых сообщениях. В данном случае нужно именно текстовое сообщение, содержание которого будет произнесено вслух и конвертировано в текстовый формат.

    На самом деле это довольно просто. Каждое Android устройство оборудовано клавиатурой Gboard, которая поддерживает голосовой ввод. При вводе сообщения на экране появляется клавиатура. Среди букв, цифр и символов нужно найти иконку микрофона и нажать её.

    Gboard попросит разрешение на запись аудио, если такового нет. Далее нужно нажать «Разрешить», после чего произойдет инициализация, приложение оповестит пользователя звуковым сигналом и текстовой командой «Говорите!». Теперь голосовой ввод доступен и можно набирать текст посредством своего голоса.

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

    Пример. Чтобы набрать текст «Привет. Я сейчас немного занят, перезвоню позже.» нужно проговорить следующую фразу: привет точка я сейчас немного занят запятая перезвоню позже точка.

    Для использования данной функции необходимо подключение к сети интернет, так как голос расшифровывает не сам телефон, а облачный сервис Google. Производительности смартфона попросту не хватит хранить такой объем данных.

    Параметры

    ПараметрОбязательныйОписание
    toдаНомер телефона получателя (либо несколько номеров, через запятую — до 100 штук за один запрос). Вы также можете указать номера в виде массива to[номер получателя]=текст&to[номер получателя]=текст. Если вы указываете несколько номеров и один из них указан неверно, то вместо идентификатора сообщения в выдаче вы получите трехзначный код ошибки. Если вы отправляете более, чем на 10 номеров за раз, то рекомендуем параметр to передавать в теле запроса методом POST, а не в адресной строке.
    msgдаТекст сообщения в кодировке UTF-8
    json=1рекомендуетсяДанный параметр вызывает ответ сервера в формате JSON, в котором предоставлено больше данных об отправленных сообщениях
    fromИмя отправителя (должно быть согласовано с администрацией). Если не заполнено, в качестве отправителя будет указан ваш отправитель по умолчанию.
    timeЕсли вам нужна отложенная отправка, то укажите время отправки. Указывается в формате UNIX TIME (пример: 1280307978). Должно быть не больше 2 месяцев с момента подачи запроса. Если время меньше текущего времени, сообщение отправляется моментально.
    ttlСрок жизни сообщения в минутах (от 1 до 1440). Если сообщение не доставится за этот период (к примеру, телефон абонента не в сети), то оно будет уничтожено оператором. Если используется этот параметр, то стоимость недоставленного сообщения не компенсируется.
    daytime=1Учитывает часовой пояс получателя. Если у получателя сейчас ночь (уже наступило время 20:00), то откладывает отправку до 10 часов утра. Если указан этот параметр, то параметр time игнорируется.
    translit=1Переводит все русские символы в латинские.
    test=1Имитирует отправку сообщения для тестирования ваших программ на правильность обработки ответов сервера. При этом само сообщение не отправляется и баланс не расходуется.
    partner_ >Если вы участвуете в партнерской программе, укажите этот параметр в запросе и получайте проценты от стоимости отправленных сообщений. Ваш уникальный идентификатор — — уже указан в параметре.

    Авторизация осуществляется при помощи:

    ПараметрОбязательныйОписание
    api_idдаАвторизацию по вашему уникальному ключу (api_id). Этот способ авторизации — самый удобный и приведен в примере выше. Ваш api_id вы можете найти на главной странице личного кабинета: [зарегистрируйтесь, чтобы получить api_id]

    Проблемы при отказе центра смс

    Нижеприведенное руководство предназначено для тех, кто не знает, что нужно делать, если устройство Android не может отправлять и получать послания. Устранить эту проблему на смартфоне или планшете просто, но для этого нужно последовательно выполнить определенные действия.

    Может ли номер центра измениться так, что пользователь ничего не заметит? На самом деле получить доступ на сервер сообщений очень просто, и это вполне может сделать другой человек, к которому телефон ненадолго попал в руки. Нужно соблюдать осторожность и не давать свое устройство посторонним, а также внимательно относиться к настройкам и не вносить изменения в параметры, предназначение которых непонятно.

    Не рекомендуется доверять гаджет детям, которые могут случайно изменить настройки по приему СМС. Они могут невольно установить другой номер центра, в результате чего устройство не будет обрабатывать SMS.

    Вышеуказанную проблему можно устранить в короткие сроки на любом смартфоне под управлением Android. После восстановления настроек получится вернуться к своей переписке. Этот процесс будет похож на удаление данных с помощью Factory Reset. Чтобы убедиться в работоспособности системы, нужно будет получить отчет о доставке СМС.

    Работа с телефонными настройками

    Если описанные выше действия не дали положительного итога, то переходим к корректировке и проверки параметров, установленных для мобильника:

    • Через настройки заходим в раздел «Приложения». В нем в «приложения по умолчанию». Выбираем подраздел, отвечающий за сообщение. Активируем приложение, которое изначально входит в стандартный набор вашего мобильника;
    • Возвращаемся через настройки в приложения. Заходим в раздел с аналогичным названием. Выбираем «Сообщения», затем «Память», кликаем на сброс;
    • При использовании одновременно двух симок и попыток отправить или принять СМС именно на вторую, заходим в настройки первой и деактивируем функцию VoLTE. Она может вызывать конфликт между двумя активными карточками;

      Не отправляются СМС с телефона Honor, Huawei

    • Попробовать отправить СМС-сообщение повторно. Но не нужно пытаться сделать это с уже созданным. Рекомендуется полностью его удалить и создать новое;
    • Если ошибка возникает в процессе отправки, то необходимо зажать на нем пальцем, пока не высветится меню «Еще». В нем перейти в подробности. Узнать код ошибки. После этого можно позвонить представителям оператора, передать информацию и действовать на основе полученных рекомендаций;
    • Связаться с оператором и получить корректные данные про номер так называемого СМС-центра. После этого через настройки зайти в «Система». Нажать на «О телефоне». Через меню общей информации перейти в «Сеть» и проверить – правильно ли выставлен номер SMS-центра. Если нет, то откорректировать его.

    Шаг 1. настройка автоматического начисления бонусов на день рождения

    Здесь никаких доработок не нужно делать. Нужно просто выполнить настройку, чтобы автоматически создавался документ НачислениеИСписаниеБонусныхБаллов по владельцам дисконтных карт, у которых сегодня день рождения.

    Как это сделать можно прочитать в руководстве пользователя, но на всякий случай кратко опишу:

    Администрирование – Маркетинг – Бонусные программы лояльности – Установить флаг.

    Маркетинг – Бонусные программы – Создать бонусную программу.

    Маркетинг – Правила расчета баллов – Создать правило расчета – здесь есть два момента:

    Момент 1:

    Нужно указать, чтобы эти бонусы начислялись по расписанию. Именно один раз в день. Потому что иначе конфигурация создаст несколько документов “Начисление и списание баллов” с одинаковыми начислениями именинникам.

    Момент 2:

    Если Вам нужно, чтобы бонусные баллы на день рождение начислялись заранее, например, за день, то указываете значение в поле “Количество периодов” и всё ОК.

    Но если Вам нужно, чтобы бонусные баллы на день рождение начислялись день в день, то программа Вам не даст этого сделать, потому-что поле “Количество периодов” обязательное для заполнения. Решение есть – открываем программу в режиме “Толстый клиент” и нажимаем на кнопку “Редактировать схему компановки данных”, там у параметра “Количество периодов” снимаем галочку “Обязательный”, смотрите картинку ниже:

    Всё, теперь можно указать количество периодов равным нулю и бонусы на день рождения будут автоматически начисляться день в день.

    На всякий случай перейдите в раздел: Администрирование – Обслуживание – Регламентные и фоновые задания и убедитесь, что у Вас создалось задание по начислению бонусов и оно активно.

    Шаг 2. обработка для автоматической отправки sms

    Теперь, когда автоматически создаются документы Маркетинг – Начисление и списание баллов, нужно на основе них автоматически создавать документы Маркетинг – Информационные рассылки. 

    Для этого потребуется создать дополнительную обработку. Так как нужно отправлять SMS автоматически, то хорошо было бы подключить эту обработку к уже существующему механизму БСП “Администрирование – Обслуживание – Регламентные и фоновые задания”.

    Для этого создадим внешнюю обработку по технологии БСП, которую будем подключать через Администрирование – Печатные формы, отчеты и обработки – Дополнительные отчеты и обработки.

    Какой должна быть такая обработка подробно описано на ИТС, например здесь: 

    Главная – Инструкции по разработке на 1С – Библиотека стандартных подсистем 2.4.6. Документация – Глава 3. Настройка и использование подсистем при разработке конфигурации – 3.16. Дополнительные отчеты и обработки

    Если у Вас нет постоянного доступа на ИТС, то можно использовать пробный доступ на 7 дней.

    Там много и подробно написано про программный интерфейс обработки, для нашей простой задачи можно не читать, а просто сделать так:

    То есть нужно просто создать пустую внешнюю обработку, вставить в неё этот код, сохранить её и затем подключить к Администрирование – Печатные формы, отчеты и обработки – Дополнительные отчеты и обработки, в итоге это будет выглядеть вот так:

    Понятно, что пока обработка ничего делать не будет, потому-что у неё еще не написан обработчик.

    Но уже сейчас можно установить расписание. У себя поставил расписание Каждый день, каждый час, потому-что регламентное задание по созданию документов “Начисление и списание баллов” выполняется раз в день, но когда точно неизвестно, поэтому обработка по отправке SMS должна запускаться через промежутки времени и проверять, а не появился ли документ “Начисление и списание баллов” для отправки SMS’ок именинникам.

    Яркий свет экрана

    Как любой компьютер переводит поток байтов в серию координат (x,y) для пикселей определённых цветов, телефон получает команду вывести на экран

    49 10 FB 6D 2F 83 F2 EF 3A

    чтобы я увидел на экране текст «Люблю тебя» в чёрно-белых светящихся точках. Это интересный процесс, но он не особенно уникален для смартфонов, так что придётся искать в другом месте. Сосредоточимся на том, как эти инструкции превращаются в световые точки.

    Дружелюбные маркетологи в Samsung называют мой экран Super AMOLED (Active Matrix Organic Light-Emitting Diode) — активная матрица на органических светодиодах, что как-то избыточно и не особенно информативно, поэтому проигнорируем расшифровку аббревиатуры как ещё один отвлекающий фактор и погрузимся прямо в технологию.

    На каждом из 83 квадратных сантиметров экрана в моём телефоне помещается около 50 000 крошечных пикселей. Чтобы такое количество поместилось, каждый пиксель должен быть шириной около 45 мкм (микрометров): тоньше, чем человеческий волос. Четыре миллиона световых элементов на площади размером с ладонь.

    Но вы уже знаете, как работают экраны. Вы знаете, что каждая точка света, как христианский Бог или мушкетёры (минус д’Артаньян) — это всегда «три в одном». Красный, зелёный и синий образуют белый свет одного пикселя. Если изменять яркость каждого канала, то можно получить любой цвет RGB.

    API / HTTP/HTTPS протокол / Ответ сервера и коды ошибок – SMS-центр
    Рис. 9. Субпиксельный массив OLED-дисплея Samsung

    Как следует из аббревиатуры, каждый пиксель представляет собой органический светодиод. Это непонятный технический жаргон для простого электрического бутерброда:

    API / HTTP/HTTPS протокол / Ответ сервера и коды ошибок – SMS-центр
    Рис. 10. Электрический бутерброд

    Изучать предназначение каждого слоя необязательно, важно только знать, что катод (отрицательно заряженная пластина) располагается под слоем органических молекул (просто некие молекулы с углеродом), а сверху накрывается анодом (положительно заряженной пластиной).

    Когда телефон хочет включить экран, он посылает электроны от катода к аноду. Молекулы в середине получают заряд и начинают излучать видимый свет — фотоны, вверх через прозрачный анод, экран в мои открытые глаза.

    Поскольку каждый пиксель — это три световые точки (красная, зелёная и синяя), на самом деле на пиксель приходится три бутерброда. Они все по существу одинаковы, за исключением органической молекулы: поли-пара-фенилен для синего света, политиофен для красного и поли-пара-фенилен-винилен для зелёного. Поскольку каждый из них немного отличается, то они светятся разными цветами при пропускании тока.

    (Забавный факт: синие субпиксели выгорают намного быстрее из-за процесса под названием «экситон-поляронная аннигиляция», что звучит действительно захватывающе, не так ли?)

    Sim-to-send

    Инженер скажет, что когда телефон воспринимает изменение напряжения по координатам на экране, которые совпадают с координатами размещения графического элемента с кнопкой «Отправить», то он отправляет кодированное сообщение на SIM-карту, а в процессе передачи добавляет различные контекстные данные. Когда сообщение достигает SIM-карты моей жены, то там уже не 140, а 176 байт (текст  контекст).

    Дополнительные 36 байт используются для кодирования другой информации, как показано ниже.

    API / HTTP/HTTPS протокол / Ответ сервера и коды ошибок – SMS-центр
    Рис. 3. Здесь байты называются октетами (8 бит). Подсчёт всех даёт 174 октета (10 1 1 12 1 1 7 1 140). Остальные два байта зарезервированы для учёта SIM-карт

    Первые десять байт зарезервированы для телефонного номера (SCA) SMS-центра (SMSC), который отвечает за приём, хранение, пересылку и доставку текстовых сообщений. По сути, это коммутатор: телефон жены посылает сигнал на местную вышку сотовой связи, которая отсылает текстовое сообщение на SMSC.

    API / HTTP/HTTPS протокол / Ответ сервера и коды ошибок – SMS-центр
    Рис. 4. Сотовая сеть SMS

    Следующий байт (PDU-type) кодирует базовую информацию о том, как телефон должен интерпретировать сообщение: было ли оно успешно отправлено, нужно ли сообщение о доставке и (важно) является ли оно одиночным текстом или частью цепочки связанных сообщений.

    Байт после PDU-type является ссылкой на сообщение (MR). Это число от 1 до 255, по сути, используется как краткосрочный ID, чтобы телефон и оператор распознавали сообщение. В сообщении от жены установлен номер 0, потому что в её телефоне собственная система идентификации сообщений, независимая от этого конкретного файла.

    Следующие двенадцать байт зарезервированы для номера телефона получателя, который называется адресом назначения (DA). За исключением 7-битной кодировки текста, которая помогает втиснуть 160 букв в 140 символов, кодировка номера телефона — самая глупая и запутанная вещь в этом SMS.

    Мой номер 1-352-537-8376 в телефоне жены регистрируется как:

    3125358773f6

    1-3 превращается в

    52 превращается в

    53 превращается в

    7-8 превращается в

    37 превращается в

    И последняя 6 превращается в…

    Какого хрена взялась эта шестёрка? Ну, она означает конец номера, но по какой-то ужасной причине (опять же, обратная нотация) это один символ перед последней цифрой.

    Это как «поросячья латынь», только для чисел.

    Усу посопаса бысыласа сособасакаса, осон есеёсё люсюбисил. Осонаса съеселаса кусусосок мясясаса, осон есеёсё усубисил.

    Но я не издеваюсь.

    [UPD: Шон Гис указал, что обратная запись нибблов является неизбежным артефактом представления 4-битных чисел от младшего к старшему (little-endian) 8-битными фрагментами. Это не отменяет приведённое выше описание, но добавляет некоторый контекст для понимающих и делает решение более разумным].

    Байт идентификатора протокола (PID) сейчас, по большому счёту, потраченное впустую место. Он принимает около 40 возможных значений и сообщает провайдеру, как направить сообщение. Значение

    означает, что жена отправляет «Люблю тебя» на факс, а значение

    значит, что она каким-то образом отправляет его на голосовую линию. Поскольку это сообщение в виде SMS на телефон, PID установлен на

    (Как и любой другой текст, отправляемый в современном мире).

    API / HTTP/HTTPS протокол / Ответ сервера и коды ошибок – SMS-центр
    Рис. 5. Возможные значения PID

    Следующий байт является схемой кодирования данных (DCS, см. документацию), которая сообщает оператору и телефону адресата, какая использовалась схема кодирования символов. Жена отправляла текст в GSM-7, но легко представить, что текст могли набрать кириллицей, иероглифами или сложными математическими уравнениями (ладно, может это и не легко представить, но каждый имеет право на мечту, верно?).

    В тексте жены байт DCS установлен на

    что соответствует 7-битному алфавиту, но значение можно изменить на 8- или 16-битный алфавит, хотя так останется гораздо меньше места для символов. Кстати, именно поэтому ваши эмодзи сокращают доступное количество символов.

    В байте DCS есть ещё небольшой флаг, который говорит телефону, нужно ли самоуничтожать сообщение после отправки, как в фильме «Миссия невыполнима», так что это очень круто.

    Период действия (VP) занимает до семи байт и даёт нам возможность познакомиться с другим аспектом, как в реальности работает система переадчи SMS. Взгляните ещё раз на рисунок 4 вверху. Всё в порядке, я подожду.

    Итак, когда жена, наконец, нажимает кнопку «Отправить», текст отправляется в SMS-центр (SMSC), который затем направляет сообщение мне. Я сижу на втором этаже, и мой телефон включен, поэтому я получаю сообщение через несколько секунд, но что если телефон выключен? Конечно, тогда он не может принять сообщение, поэтому SMSC должен что-то сделать с текстом.

    Если SMSC не может найти мой телефон, то сообщение от жены будет просто прыгать в системе, пока мой телефон не подключится — и тогда SMS-центр немедленно отправит текст. Мне нравится представлять, как SMSC постоянно проверяет каждый телефон в сети, чтобы проверить, это мой телефон или нет: как щенок, ожидающий хозяина у двери принюхивается к каждому прохожему: это запах моего человека? Нет. Может, это запах моего человека? Нет. Это запах моего человека? ДАДАПРЫГАТЬУРА!!!

    Байты периода действия (VP) говорят системе, сколько времени щенок будет ждать, прежде чем ему надоест и он найдёт новый дом. Это либо метка времени, либо промежуток, и она по сути говорит: «Если вы не нашли телефон получателя в ближайшие дни, просто не беспокойтесь об отправке сообщения».

    Поскольку в SMS часто остаётся много пустого места, несколько битов посвящены тому, чтобы телефон и оператор точно знали, какие байты не используются. SIM-карта жены ожидает 176-байтовое SMS, но она написала очень короткое сообщение, так что если SIM-карта получит лишь 45 байт, то может запутаться и предположить некий сбой. Байт длины пользовательских данных (UDL) решает эту проблему: он точно указывает, сколько байт в текстовом сообщении.

    В случае “I love you” UDL укажет, что в сообщении 9 байт. Вы могли бы ожидать, что значение будет 10 байт, по одному байту для каждого из десяти символов:

    I-spacebar-l-o-v-e-spacebar-y-o-u

    но поскольку каждый символ состоит из семи бит, а не из восьми (полный байт), можно сбросить дополнительный байт при переводе: 7 бит * 10 символов = 70 бит, делим на 8 (количество битов в байте) = 8,75 байт, округлённых до 9 байт.

    Мы подошли к последней части SMS: это само сообщение или UD (пользовательские данные). Сообщение может занять до 140 байт, хотя, как я только что упомянул, «Люблю тебя» займёт жалкие 9. Удивительно, сколько упаковано в эти 9 байт: не только сообщение (предполагаемая любовь моей жены ко мне, которую уже достаточно сложно сжать в нули и единицы), но и сам смысл (нужно спуститься вниз и пожелать ей спокойной ночи). Вот эти байты:

    49 10 FB 6D 2F 83 F2 EF 3A

    В целом, вот такое сообщение сохраняется на SIM-карте моей жены:

    SCA[1-10]-PDU[1]-MR[1]-DA[1-12]-DCS[1]-VP[0, 1, or 7]-UDL[1]-UD[0-140]

    00 – 11 – 00 – 07 31 25 35 87 73 F6 – ?? 00 ?? – ?? – 09 – 49 10 FB 6D 2F 83 F2 EF 3A

    (Примечание: чтобы получить полное сообщение, нужно ещё немного покопаться. Увы, здесь видна только часть сообщения из-за неотображаемых символов, знаки вопроса)

    Оцените статью
    Huawei Devices
    Добавить комментарий