Press "Enter" to skip to content

Обработка коротких текстовых сообщений в R

При проведении exit poll Институтом регионального развития возникла задача по приёму коротких сообщений от ста с лишним интервьюеров, разбросанных по всей Псковской области.

По приёму сообщений я рассмотрел три варианта: получение сообщений на телефон с Android, на телефон любой марки с экспортом sms с помощью программы Gammu и c использованием аутсорс-решения на основе стороннего поставщика услуг по приёму и отправки массовых сообщений. Помимо приёма сообщений также рассматривался вопрос по отправке – с целью организации обратной связи с интервьюерами.

Резюме

Если кратко, то в результате был выбран вариант с аутсорсингом – агентство мобильного маркетинга и рекламы Смстауэр. За 3500 рублей в месяц сервис предлагает принять до 20 тысяч входящих sms-сообщений на федеральный номер, а отправлять по 40 копеек за одно сообщение. Доступ к системе осуществляется через браузер, т.е. через http-запросы.

Вариант с Android остался в качестве резервного: входящие sms принимаются хорошо, а по автоматической отправке сообщений решения найти не удалось.

От Gammu пришлось отказаться полностью в силу нестабильности.

Андроид

Телефон, вооружённый операционной системой Android, хранит все текстовые сообщения в отдельном файле формата sqlite. Добраться до этого файла можно с помощью утилиты командной строки adb, входящей в набор разбработчика Android. Телефон подключается к компьютеру с помощью USB-кабеля, на компьютер устанавливается Android SDK версии, соответствующей версии операционной системы телефона. Ещё одна проблема – это права суперпользователя в телефоне. Скорее всего, в вашем телефоне возможность работы с правами администратора отключена, а включить эту возможность можно перепрошивкой операционной системы. В моём случае перепрошивку телефона пришлось делать два раза, т.к. первый вариант прошивки не дал нужного эффекта. После перепрошивки мне пришлось воспользоваться специальным Android-приложением, дающим разрешение той или иной программе работать с правами суперпользователя.

После этих операций утилита adb способна копировать из телефона в компьютер файл, содержащий sms-сообщения. Далее дело техники преобразовать этот sqlite-файл в нужный формат. Для среды статистической обработки R обнаружилось две библиотеки, позволяющих импортировать данные из файла sqlite в data.frame.

Что вызвало опасения в данном варианте? Во-первых, выдержит ли телефон массового наплыва sms-сообщений. Теоретически, должен, но на практике так и не проверил. Во-вторых, перепрошивка операционки телефона на неофициальный вариант попахивает нарушением лицензионного договора (хотя не факт, конечно), что для серьёзных задачек не подходит. В-третьих, автоматическая отправка сообщений из Android-телефона невозможна (по крайней мере, мне не удалось найти ни одного способа), поэтому пришлось бы еще какой-то велосипед изобретать.

[GW]ammu

Я возлагал большие надежды на этот проект свободного программного обеспечения и даже распечатал два больших куска из руководства пользователя, но это не помогло. Я пробовал несколько моделей телефонов, но не один из них не показал стабильной работы. Больше всего я провозился со своим Samsung. Например, получение входящих сообщений упёрлось в такую проблему: программа вытягивает из телефона сообщения, хранящиеся на sim-карте, при этом она утверждает, что берёт сообщения из памяти телефона. Все танцы с бубном по обходу этой проблемы к результату не привели. Пробы с другими телефонами давали каждый раз какие-то другие проблемы, но такие же, по ощущениям, непроходимые.

Еще один момент – через USB-кабель Gammu не умеет работать под Windows – остаются варианты com-порта или bluetooth. С com-портом всё понятно, а доверять bluetooth передачу/получение массы сообщений я не решился, тем более чтобы его настроить, надо тоже попотеть.

Отправка и получение sms через провайдера

Интернет предложил много сервисов, позволяющих отправлять массовые sms-сообщения. Выбор пал на питерскую Smstower, позволяющую в реальном времени получать входищие sms, а не раз в час, или раз в сутки, как у некоторых других.

Smstower обладает хорошим api по отправке sms и отслеживанию статуса их доставки, реализованным через http/https. Вопрос возник с получением, т.к. для этой операции api у smstower не предусмотрен. Поэтому пришлось думать по поводу двух моментов – автоматическая авторизация в клиентской части smstower и преобразование html-таблицы, в которой представлены данные sms-сообщений, в более подходящую для работы в R форму.

Для всех работ по созданию http-запросов и получению ответов я выбрал программу curl. Программа curl распространяется под собственной свободной лицензией, производной от MIT/X. Это позволяет бесплатно использовать её в том числе в коммерческих целях. Интерфейс curl – командная строка, что позволяет легко встраивать её в свои скрипты.

Авторизация была решена двумя строками bat-скрипта, отправлявшего в curl параметры подключения к smstower; спасибо netmas за помощь.

Вопрос с вытягиванием данных из html-таблиц отпал сам собой, т.к. ребята из smstower оперативно добавили возможность скачивать данные полученных sms в формате csv-файла. Спасибо команде smstower!

Нужно ли продолжение?

Leave a Reply

Your email address will not be published. Required fields are marked *

Защита от спама *