Содержание


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

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

Comments

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

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

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

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
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
Регистрация 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). Так как эти телефонные номера не связаны с физическими телефонами, их еще называют "виртуальными номерами". Через эти виртуальные номера можно отправлять и принимать мобильные сообщения.

Ведущий поставщик 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-службы.

Комментарии

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

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