Большинство людей знает лишь о трех параметрах sms - когда пришло, от кого пришло и с каким текстом. Иными словами, дату/время доставки, адрес отправителя и тело сообщения. Я расскажу об этих параметрах более подробно, а также и о других параметрах, которые обычно остаются за кадром.
Дата/время доставки - на самом деле почти все телефоны вместо этого показывают дату/время отправки, а не доставки. Иногда это совсем не одно и тоже. Во-первых, сообщения в любом случае доставляется не мгновенно, однако этот параметр проставляет сам SMS-центр, а для большинства сообщений задержка между отправкой и доставкой составляет несколько секунд. Однако если sms нельзя доставить сразу, SMS-центр будет пытаться доставлять сообщение в течение срока жизни сообщения (об этом параметре позже). Причин невозможности мгновенной доставки может быть несколько - телефон находится вне зоны действия сети, на балансе недостаточно средств (некоторые операторы не позволяют принимать входящие смс при отрицательном или нулевом балансе), переполнена память телефона и др. Но основной интерес этого параметра заключается в том, что дату/время проставляет не телефон, а SMS-центр по собственным часам. Таким образом, если Вы только что получили сообщение, а время отправки сдвинуто на 2 часа назад, то, вероятно, SMS-центр отправителя находится западнее Вас на 2 часовых пояса. Впрочем, время внутри sms может быть указано по Гринвичу - в этом случае телефон преобразует его в локальное время и Вы никакой разницы не увидите.
Адрес отправителя - интересен тем, что может не иметь никакого отношения к реальному отправителю sms. Не так давно пользователи мобильных телефонов пребывали в полной уверенности, что если им приходит sms от их знакомого Васи Пупкина, то отправил его именно Вася, или, во всяком случае, с Васиного телефона. На самом деле это верно только в том случае, если отправка производилась с мобильного телефона. При отправке через специальные каналы возможно указание совершенно произвольного номера, как существующего, так и вымышленного. Кроме того, вместо номера можно указывать небольшую строку текста латинскими буквами и/или цифрами (не более 11 символов). Как правило, при получении sms телефон пытается найти запись для этого номера во внутреннем справочнике. Если Вы добавляли в него этот номер, то Вы, скорее всего, увидите вместо номера имя или фамилию абонента. Даже зная о том, что номер отправителя можно подделать, люди автоматически доверяют подобной информации.
Тело сообщения - помимо содержания в себе текста или бинарных данных, тело смс может быть...пустым - и это может иметь смысл. Например, пользователи голосовой почты наверняка видели на экранах своих мобильников значок, означающий, что пришло новое голосовое сообщения. На самом деле этот значок появляется и исчезает при передаче на телефон смс специального типа. Тело такой смс пустое, а указание, какой именно значок нужно отобразить, задается параметром data_coding. Сообщение как таковое не отображается на экране телефона.
Reply Path - установка этого флага означает, что при ответе необходимо передавать sms через тот же СМС-центр, который отправил исходную смс. Использовать эту опцию, не имея собственного SMS-центра, довольно проблематично. Впрочем, возможно, у кого-то может возникнуть потребность в такой функциональности.
Schedule_delivery_time - позволяет указать SMS-центру время, когда должна быть произведена попытка доставить смс. При использовании этого параметра СМС-центр получит эту sms, но не будет отправлять ее до тех пор, пока не наступит час X. Используя schedule_delivery_time, можно организовать систему напоминаний через sms за счет ресурсов SMS-центра.
Registered_delivery - известный многим параметр, позволяет указать SMS-центру, что для этой sms требуется отчет о доставке. Если этот параметр указан, СМС-центр пришлет отчет о доставке, когда sms будет доставлено абоненту, или пришлет отчет о невозможности доставки, когда этот факт будет установлен (иногда это известно сразу, например, если номер абонента не существует, иногда отчет приходит через несколько суток, если, например, телефон абонента все это время был выключен).
Replace_if_present_flag - позволяет заменить одно сообщение другим, если оно еще не было отправлено SMS-центром (например, если использовался параметр schedule_delivery_time). Замена производится только для тех sms, которые еще не были отправлены. О том, как заменить уже отправленную sms, я расскажу в отдельной статье.
Data_coding - сообщает SMS-центру, каким образом кодировано тело sms. Помимо этого, управляет рядом других параметров, о чем будет отдельное повествование. Что касается самого кодирования, то наиболее часто встречаются две кодировки: default GSM и UCS2. Первая используется для передачи латинских символов, вторая для Unicode (в том числе русских букв).
Автор статьи Алексей Соколов.
  |