Анализируем эмоциональную окраску SMS с помощью Twilio, Bluemix и AlchemyAPI

Автор: | 01.08.2026

Платформа IBM Bluemix предоставляет разработчикам всё больше когнитивных сервисов, которые можно использовать в приложениях для более глубокого анализа данных. Ранее в этом году Рики показал, как объединить API вопросов и ответов Watson, Twilio и Node.js для получения ответов на медицинские вопросы. Под эгидой Watson также работает AlchemyAPI — набор сервисов для анализа контента и контекста в текстах и изображениях.

Теперь о моей неудачной шутке в заголовке. Речь не о ностальгии по отправке сокращённых SMS с Nokia 3310. Сегодня мы рассмотрим, как анализировать эмоциональную окраску текстовых сообщений с помощью одного из сервисов AlchemyAPI, размещённых на Bluemix. Мы создадим приложение, которое принимает SMS и обрабатывает их по-разному в зависимости от настроения сообщения.

Если вы предпочитаете видеоурок, вам повезло: ранее в этом году я в прямом эфире написал это приложение в рамках вебинара IBM Bluemix.

Чтобы сразу увидеть, как работает приложение, отправьте SMS на мою линию поддержки: +44 7903 596047 (для Великобритании) или +1 (415) 214-9793 (для США). Похвалите или покритикуйте сервис и посмотрите на реакцию.

Прежде чем начать, подготовьте необходимые инструменты:

— Аккаунт Twilio (зарегистрируйтесь бесплатно здесь)

— Аккаунт Bluemix (доступна бесплатная пробная версия)

Для запуска приложения также потребуется:

— Номер Twilio для отправки и приёма SMS

— Установленные Ruby и Bundler

— Интерфейс командной строки Cloud Foundry (для взаимодействия с Bluemix)

Когда Рики создавал своё приложение на базе Watson, он начинал с командной строки. Я же пойду другим путём и начну с Bluemix, где доступны готовые стартовые проекты. Войдите в Bluemix и создайте приложение Cloud Foundry. Выберите «Веб-приложение», затем нажмите «Обзор шаблонов» и выберите пакет Ruby Sinatra. Задайте имя приложению и нажмите «Создать».

Ваше приложение уже запускается на Bluemix, и мы ещё не написали ни строчки кода! После запуска вы сможете открыть его, например, по адресу: http://sentiment-analysis.eu-gb.mybluemix.net/.

Пока приложение мало что умеет. Чтобы продолжить, нужно написать код, поэтому скачаем стартовый проект с Bluemix.

Сейчас самое время связать скачанный проект с Bluemix через инструмент командной строки Cloud Foundry. Следуйте инструкциям на странице, и всё должно настроиться правильно. Если всё прошло успешно, вы сможете загрузить локальную копию приложения на сервер и увидеть его работу через терминал.

Откройте проект и изучите код шаблона. Теперь пришло время доработать приложение.

Откройте проект в текстовом редакторе. В файле helloWorld.rb вы увидите приложение на Sinatra, которое сейчас работает в Bluemix. Нам не нужно менять корневой путь, отображающий заглушку. Вместо этого создадим обработчик для входящих SMS.

Нам понадобится endpoint, на который мы направим вебхук номера Twilio. Этот endpoint должен возвращать TwiML — набор инструкций в формате XML, которые сообщают Twilio, что делать с сообщением или звонком. В данном случае достаточно вернуть простой ответ, чтобы Twilio отправил сообщение. Добавьте этот код после строк с require в файле helloWorld.rb:

Отлично, пока этого достаточно. Сохраните файл и загрузите его в Bluemix.

Теперь перейдите в панель управления Twilio. У вас должен быть номер для отправки и приёма SMS. Если его нет — купите! Отредактируйте номер и найдите поле URL запроса. Введите туда http://ваше_приложение.eu-gb.mybluemix.net/messages и сохраните.

Отправьте сообщение на свой номер Twilio и дождитесь ответа от Bluemix.

Теперь, когда отправка сообщений работает, перейдём ко второй части: сделаем ответы умнее с помощью анализа эмоциональной окраски от AlchemyAPI.

Вернитесь в панель Bluemix и добавьте сервис AlchemyAPI к нашему приложению. На странице обзора приложения нажмите «Добавить сервис или API», найдите AlchemyAPI и нажмите «Создать».

Сервис AlchemyAPI предоставляет API-ключ. Посмотреть учётные данные можно в разделе «Переменные окружения» вашего приложения.

Вернёмся к коду. Добавим новую gem для удобной работы с AlchemyAPI. Откройте Gemfile и добавьте в конец:

Откройте helloWorld.rb и подключите gem в начале файла:

Теперь получим API-ключ из переменных окружения Bluemix. Переменные окружения, включая ключ AlchemyAPI, хранятся в формате JSON в переменной VCAP_SERVICES. Добавим вспомогательную функцию для доступа к этим данным.

Затем используем эту функцию, чтобы задать API-ключ для библиотеки AlchemyAPI:

Теперь вызовем API анализа эмоциональной окраски AlchemyAPI, передав ему текст для анализа. Вот пример:

Как видите, результат содержит оценку и тип. Негативное высказывание вернёт отрицательную оценку и тип:

Иногда AlchemyAPI не распознаёт текст, и gem возвращает nil. Будьте готовы обработать этот сценарий.

Теперь свяжем код анализа с обработкой входящих SMS, чтобы ответ зависел от эмоциональной окраски. Нам нужно получить текст сообщения. В Sinatra он доступен в объекте params как params[«Body»]. Передадим текст в AlchemyAPI и получим эмоциональную окраску.

Представьте, что мы создаём канал обратной связи по SMS. Можно сделать так:

Замените старый код обработчика сообщений на приведённый выше. Выберите свои ответы. После этого загрузите код в Bluemix с помощью Cloud Foundry.

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

Если сейчас у вас нет возможности протестировать это самостоятельно, попробуйте отправить разные сообщения на мою линию поддержки: +44 7903 596047 (Великобритания) или +1 (415) 214-9793 (США). Также можно ознакомиться с финальным кодом приложения на GitHub.

Теперь, когда вы увидели, как начать работу с Bluemix, AlchemyAPI и Twilio, возможностей ещё больше.

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

Меня искренне восхищают такие API, как AlchemyAPI и Watson, и я буду рад узнать, если вы что-то создадите с их помощью. Делитесь в комментариях, по электронной почте или в Twitter!