Как встроить в Web-приложение мобильные текстовые сообщения

Отправка и получение текстовых сообщений через Web-сервер

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

Майкл Юань, автор, аналитик и разработчик, независимый

Профессор Майкл Джуньтао Юань - автор, аналитик и разработчик бесчисленных решений для мобильных телефонов. Он обладает огромным опытом работы с технологиями J2ME, J2EE и .Net, опубликовал более 30 статей о мобильных телефонах на страницах ведущих технических и научных журналов. Он также является автором двух книг: Enterprise J2ME (Prentice Hall, 2003 г.) и Developing Scalable Series 40 Applications (Разработка масштабируемых приложений для Series 40) (Addison-Wesley и Nokia, 2004 г.) По техническим вопросам и за комментариями к данному руководству обращайтесь к автору, Майклу Джуньтао Юаню (Michael J. Yuan) по электронной почте michael.yuan@enterprisej2me.com



10.08.2012

Барьер для разработки приложений с использованием мобильных сообщений

"Закрытый" характер служб обмена мобильными сообщениями представляет собой существенный барьер для разработчиков. Однако этот барьер делает приложения, которые могут управлять обменом мобильными сообщениями, особенно привлекательными. Например, Twitter начинал как компания, специализирующаяся на текстовых сообщениях — отсюда и ограничение на твиты в 140 символов, – а затем, воспользовавшись достигнутым успехом, превратился в сегодняшнюю гигантскую платформу общения. Еще одним примером служит Facebook, который также в самом начале использовал активную SMS-программу (отправка текста на FBOOK с мобильного телефона).

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

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

Основы системы мобильных сообщений

Push-уведомления

С ростом числа смартфонов, таких как iPhone и Android, появилась возможность отправлять сообщения непосредственно на эти телефоны через стандартную сеть TCP/IP, в обход операторов связи. Такие сообщения называются push-сообщениями. Push-сообщения передаются через интернет-серверы, контролируемые Apple и Google. Push-сообщения изначально предназначены для взаимодействия с приложениями. Они позволяют передавать текст, медиа-файлы и данные приложений, например, мелодии звонка и изображения для отображения в качестве значка приложения. Push-уведомления хороши для смартфонов, но они гораздо менее широко распространены и менее надежны, чем мобильные сообщения, передаваемые операторами связи.

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

Служба мультимедийных сообщений (MMS) представляет собой расширение SMS, которое позволяет отправлять и принимать на телефон фотографии и короткие видеоклипы. Размер сообщения обычно ограничен 300 КБ. На самом деле для уведомления пользователя MMS используется SMS, и когда тот открывает сообщение, телефон извлекает мультимедийный контент посредством стандартного протокола электронной почты. Обмен MMS очень популярен среди молодежи, но его общее рыночное проникновение пока еще относительно мало, отчасти из-за несовместимых форматов контента у разных операторов.

SMS и MMS используются главным образом для прямой связи, позволяя пользователям отправлять сообщения друг другу. Разработчиков же приложений в первую очередь интересует возможность отправки и приема сообщений из приложений и их получения приложениями. На отраслевом жаргоне, нас интересуют сообщения типа Mobile Terminated (MT) ― отправленные из приложения на мобильное устройство – и Mobile Originated (MO) – из мобильного устройства в приложение. Чтобы отправлять и принимать сообщения от мобильных телефонов, приложение должно взаимодействовать с серверами шлюзов, находящихся в ведении операторов связи.


Бесплатная отправка SMS и MMS

Отправить МТ-сообщение SMS или MMS на номер телефона на самом деле довольно легко - если знать номер телефона получателя и оператора связи. Почти все операторы мобильной связи имеют шлюзы, которые принимают сообщения электронной почты и передают их на телефоны как SMS- или MMS-сообщения. Например, абоненту АТ&T можно отправлять SMS-сообщения через адрес электронной почты number@txt.att.net. AT&T усечет сообщение до 140 символов и першлет его на телефон. Рисунок 1 иллюстрирует, как такое сообщение отображается на экране телефона.

Рисунок 1. SMS-сообщение, переданное через шлюз электронной почты оператора связи
SMS-сообщение, переданное через шлюз электронной почты оператора связи's email gateway

Аналогично, сообщения email с вложенными фотографиями можно передавать на телефон через шлюз электронной почты MMS оператора связи как MMS-сообщения. В таблице 1 приведены адреса электронной почты для SMS- и MMS-сообщений крупных операторов связи США. Замените слово number в адресе электронной почты 10-значным номером телефона получателя (например, 5125551234@txt.att.net).

Таблица 1. Адреса шлюзов электронной почты крупных операторов связи США для передачи сообщений SMS и MMS.
ОператорШлюз SMSШлюз MMS
AT&Tnumber@txt.att.netnumber@mms.att.net
Verizonnumber@vtext.comnumber@vzwpix.com
T-Mobilenumber@tmomail.netnumber@tmomail.net
Sprintnumber@messaging.sprintpcs.comnumber@pm.sprint.com
Virgin Mobilenumber@vmobl.comnumber@vmpix.com

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

  • сообщение приходит от произвольных телефонных номеров и плохо отформатировано. Оно выглядит непрофессионально;
  • пользователь не может ответить на сообщение или возвратить в приложение какую-либо информацию. Это исключает целые категории приложений, в том числе наиболее популярные SMS-приложения, такие как Twitter и American Idol;
  • поскольку каждое сообщение приходит с нового номера телефона, пользователь не может установить закладку, чтобы связать этот номер с приложением;
  • чтобы правильно выбрать шлюз электронной почты, при регистрации пользователя придется просить его указать своего оператора мобильной связи.

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


Использование короткого номера

Каждый из нас, скорее всего, ежедневно сталкивается с короткими номерами. Это 5-значные номера, которые можно увидеть в ресторанах, на спортивных мероприятиях или на объявлениях о продаже недвижимости. Вам предлагают отправить текстовое сообщение по номеру 12345, чтобы получить дополнительную информацию или купон и т.п. Короткие номера находятся в ведении "агрегаторов сообщений", которые действуют от имени операторов связи. В число основных агрегаторов в США входят mblox, Sybase 365 и др. Можно зарегистрировать короткий номер у одного из этих агрегаторов, и тот предоставит вам API Web-службы на основе HTTP, который позволяет отправлять сообщения с этого короткого номера на любой номер телефона (MT) и получать ответ, если кто-то пришлет на него сообщение (MO). Кажется, что все просто, но у такого использования коротких номеров есть серьезные недостатки:

  • во-первых, за специальный короткий номер нужно очень дорого заплатить. Он стоит несколько тысяч долларов в месяц, плюс высокая начальная цена и плата за сообщения;
  • во-вторых, короткие номера регулируются Ассоциацией мобильного маркетинга (ММА). ММА требует, чтобы все заявители предварительно утверждались каждым из операторов связи. Это длительный и дорогостоящий процесс.

К счастью, существуют компании, которые предоставляют короткие номера общего пользования за умеренную плату. Ведущий поставщик услуг этого типа - TextMarks. Короткий номер TextMarks очень легко запомнить: 41411. Поскольку его используют многие приложения, каждому приложению присваивается свое ключевое слово. Например, я зарегистрировал в TextMarks ключевое слово conf и организовал URL обратного вызова для этого ключевого слова (см. рисунок 2). URL обратного вызова может содержать шаблоны со ссылками на отдельные части входящего SMS. Например, \p указывает на номер телефона отправителя входящего сообщения, а \0 ― на текст сообщения, следующий за ключевым словом.

Рисунок 2. Регистрация URL обратного вызова и ключевого слова в TextMarks
Регистрация URL обратного вызова и ключевого слова в TextMarks

Теперь TextMarks будет перенаправлять на URL обратного вызова каждое сообщение, которое начинается словом CONF. Например, если кто-то пришлет на номер 41411 сообщение "conf Michael Jack" со своего мобильного телефона 5125551234, на мой URL обратного вызова придет запрос GET, показанный в листинге 1:

Листинг 1. Пример запроса GET
http://app.ringful.com/conf?
    attendees=Michael+Jack&
    phonenumber=15125551234

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

Когда пользователь набирает ваше ключевое слово, он регистрируется как абонент этого ключевого слова. TextMarks предоставляет также API разработчика, позволяющий отправлять SMS-сообщения абонентам в любое время, каждому отдельно или всем сразу. Вызов API, приведенный в листинге 2, отправляет сообщение всем абонентам ключевого слова:

Листинг 2. Вызов API для отправки сообщения всем абонентам ключевого слова
POST TO: http://dev1.api2.textmarks.com/GroupLeader/broadcast_message/
Parameters:
    auth_user=YOUR_USERNAME
    auth_pass=YOUR_PASSWORD
    api_key=API_KEY_FROM_TEXTMARKS
    tm=YOUR_KEYWORD
    msg=The+message+to+send+out

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

Листинг 3. Вызов API для отправки сообщения отдельному абоненту ключевого слова
POST TO: http://dev1.api2.textmarks.com/GroupLeader/send_one_message/
Parameters:
    auth_user=YOUR_USERNAME
    auth_pass=YOUR_PASSWORD
    api_key=API_KEY_FROM_TEXTMARKS
    tm=YOUR_KEYWORD
    to=RECIPIENT_PHONE_NUMBER
    msg=The+message+to+send+out

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


Использование длинного номера

Под "длинным номером" понимается обычный 10-значный номер телефона. Вместо аренды коротких номеров за тысячи долларов в месяц, можно арендовать обычные телефонные номера всего за 1 доллар в месяц (или даже получить их бесплатно, как в случае использования Google Voice). Так как эти телефонные номера не связаны с физическими телефонами, их еще называют "виртуальными номерами". Через эти виртуальные номера можно отправлять и принимать мобильные сообщения.

Twilio ― не только служба мобильных сообщений

API Twilio позволяет совершать голосовые телефонные звонки и принимать их от виртуальных номеров, поддерживая VoIP-вызовы наподобие Skype. Подробнее об этом можно узнать на Web-сайте Twilio и в документации API (см. раздел Ресурсы).

Ведущий поставщик Web-услуг, работающих с длинными номерами — Twilio. Используя API Twilio, можно получить любое сообщение, отправленное на этот номер телефона, и отправлять сообщения на любые номера мобильных телефонов, даже международные.

Twilio предоставляет консоль администрирования, которая позволяет управлять несколькими виртуальными номерами. Поскольку эти номера стоят всего 1 доллар в месяц, можно получить по номеру на каждое из своих приложений, и пользователю не придется вводить никаких ключевых слов. За каждое SMS, отправленное или полученное через его API, Twilio берет 1 цент.

API Web-службы Twilio хорошо продуман и прост в применении. Еще больше упрощает задачу то, что Twilio предоставляет разработчикам SDK для разных языков программирования. Ниже приведены некоторые примеры, основанные на SDK для Java. В листинге 4 показано, как отправить сообщение на номер мобильного телефона.

Листинг 4. Отправка SMS на любой номер мобильного телефона через API Twilio
public static void sendSms (String from, String to, 
        String msg) throws Exception {
    TwilioRestClient client = 
        new TwilioRestClient YOUR_API_KEY, null);
    String path = "/2010-04-01/Accounts/"+
        client.getAccountSid()+"/SMS/Messages";

    Map<String, String> vars = 
        new HashMap <String, String> ();
    vars.put("From", from);
    vars.put("To", to);
    vars.put("Body", msg);

    TwilioRestResponse tresp = 
        client.request(path, "POST", vars);
    if (tresp.isError()) {
        throw new Exception ("Twilio response error: " 
            + tresp.getResponseText());
    }
}

Для сообщений типа MO Twilio работает так же, как TextMarks: они перенаправляются на URL обратного вызова, зарегистрированный в консоли администрирования, откуда пользователь получает ответ в формате HTTP. Например, если пользователь отправляет на мой виртуальный номер сообщение Hello World, то на мой зарегистрированный URL обратного вызова придет запрос HTTP GET следующего содержания:

http://my.callback.com/process?
    From=5125551234&To=3215554567&Body=Hello+World

Обратите внимание, что в вызове Twilio есть параметр To, который определяет виртуальный номер получателя сообщения. Это необходимо потому, что на одну учетную запись Twilio можно зарегистрировать несколько виртуальных номеров. Мой сервлет, находящийся по URL обратного вызова, может обработать входящее сообщение и сгенерировать ответ.


А как насчет MMS?

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

Даже Twitter начал поддерживать MMS для отдельных операторов в США лишь в сентябре 2011 – спустя годы после того, как SMS-сервис этой компании приобрел всемирную популярность.

К счастью, новые компании, такие как Hook Mobile, разрабатывают и продвигают новые Web-службы, поддерживающие MMS-сообщения между разными операторами связи. API MMS от Hook Mobile пока не открыт для широкой публики (нужно зарегистрироваться в качестве партнера), но это, безусловно, интересное направление!

Для пользователей смартфонов push- сообщения составляют привлекательную альтернативу MMS, поэтому в следующей статье я остановлюсь на методе push.

Ресурсы

Научиться

  • Оригинал статьи
  • CTIA: авторитетный источник статистики по использованию и проникновению услуг передачи мобильных сообщений.
  • MMA Mobile Advertising Guidelines: руководство по допустимым подходам и процессам привлечения потребителей посредством кампаний, основанных на мобильных сообщениях.
  • TextMarks: ведущий поставщик недорогих SMS-решений, основанных на его коротком номере 41411.
  • Hook Mobile: ведущий поставщик MMS-решений, не зависящих от оператора связи.

Получить продукты и технологии

  • Twilio обеспечивает API на базе длинных номеров для SMS и голосовых звонков посредством простой в применении Web-службы.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Мобильные приложения, Open source
ArticleID=830037
ArticleTitle=Как встроить в Web-приложение мобильные текстовые сообщения
publish-date=08102012