Ответы на вопросы о здоровье через SMS с помощью IBM Watson и Twilio

Автор: | 31.07.2026

В: «Объединение этих двух API позволит вам быстро запрашивать сложный набор данных о здоровье через SMS.»О: «Что такое IBM Watson и Twilio?»Вы, вероятно, помните, как IBM Watson сражался с людьми в шоу Jeopardy. Теперь разработчики могут получить доступ к этой же мощи через API вопросов и ответов Watson. В настоящее время IBM предоставила доступ к наборам данных о здоровье и путешествиях через API. Я хотел создать приложение, которое позволит мне отправлять вопрос о здоровье в SMS и получать ответ от Watson. Это приложение позволит мне обмануть друзей, впечатлив их своими обширными знаниями о здоровом образе жизни. Сегодня я покажу вам, как я это сделал, используя IBM Bluemix, API вопросов и ответов Watson, Node.js и Twilio. Вы можете попробовать готовый продукт, отправив вопрос о здоровье по SMS на номер: **(929) 242-6747**Мы будем использовать следующие технологии для создания нашего приложения:- IBM Bluemix — мы будем использовать Bluemix для размещения нашего приложения, если у вас нет аккаунта, вы можете зарегистрироваться бесплатно.- Cloud Foundry CLI — мы будем использовать Cloud Foundry CLI (cf) для взаимодействия с Bluemix из командной строки.- Node.js- Hapi.js — HTTP-серверный фреймворк для Node.js.- Twilio — зарегистрируйтесь бесплатно.Одна из моих любимых вещей при создании такого приложения — рассматривать это как возможность попробовать новые технологии, о которых я слышал. Я подумал, что это приложение будет отличным поводом использовать Hapi.js. Hapi.js — это HTTP-серверный фреймворк для Node.js, похожий на Express. Если вы хотите узнать больше о Hapi и Node.js, я настоятельно рекомендую отличную статью Мэтта Харрисона «Express to Hapi.js».Чтобы взаимодействовать с API вопросов и ответов Watson, нам нужно развернуть это приложение на IBM Bluemix. Для начала давайте просто создадим приложение Hapi.js «hello world» и развернем его на Bluemix, чтобы убедиться, что все настроено правильно. После этого мы интегрируем Watson и Twilio.Мы можем создать новый каталог на нашем локальном компьютере с именем twilio-watson, а затем инициализировать в нем новый проект Node.js:Теперь мы можем установить модуль Hapi:Нам нужно внести пару небольших изменений, чтобы иметь возможность развернуть это приложение на Bluemix. На Bluemix наше приложение не будет работать на порту 3000 localhost. К счастью, Bluemix предоставляет хост и порт, на которых работает наше приложение, в переменных среды. Давайте обновим наш код, чтобы использовать эти переменные, если они доступны:Нам нужно сделать еще одну последнюю вещь перед развертыванием — мы создадим manifest.yml. Мы используем этот файл, чтобы Bluemix знал, как запустить наше приложение:Обязательно замените [app-name] на уникальное имя вашего приложения. Теперь давайте подключим инструмент Cloud Foundry CLI к Bluemix:Теперь мы можем развернуть наше приложение на Bluemix:Убедитесь, что мы видим «hello world» по адресу [app-name].mybluemix.net/helloТеперь, когда мы развернули наше первое приложение на Bluemix, мы можем начать интеграцию с Watson. Чтобы использовать API Watson, нам нужно зарегистрироваться для использования сервиса с помощью Cloud Foundry. Мы можем увидеть все наши дополнительные сервисы:В каталоге Bluemix есть много дополнительных сервисов. Если вы прокрутите список, вы увидите сервис question_and_answer. Это тот, который мы хотим добавить. Мы можем добавить его так:Мы также обновим наш файл manifest.yml, чтобы указать, что мы используем qa-service:Мы можем получать ответы от API Watson, сделав простой POST-запрос. Мы будем использовать модуль request для Node.js, чтобы сделать этот запрос. Давайте установим его и убедимся, что он сохранен в нашем файле package.json:Теперь мы можем подключить его в нашем index.js:Как и в случае со значениями порта и хоста, Bluemix передаст нам учетные данные API Watson в переменных среды. Мы можем получить их с помощью следующего кода после того, как зададим переменные порта и хоста:Далее мы создадим новый маршрут с именем /question:В рамках этого маршрута мы сделаем запрос к Watson и выведем ответ. Начнем с получения нашего вопроса из данных POST и создания параметров для нашего запроса:Давайте немного разберем этот код. Сначала мы определяем, что делаем запрос к API вопросов о здравоохранении Watson и что этот запрос будет POST-запросом. Мы также передаем учетные данные авторизации, которые мы получили из Bluemix. Затем мы передаем JSON, указывающий, что мы хотим получить 1 элемент доказательства (который будет ответом) на наш вопрос.Теперь, когда у нас определены параметры, мы можем использовать библиотеку request для выполнения запроса и вывода нашего ответа в браузер:Давайте развернем новую версию нашего приложения, чтобы мы могли ее протестировать:Отличное время убедиться, что наш код работает правильно. Давайте быстро протестируем это с помощью curl:Чтобы ответить на SMS, нам нужно отправить ответ обратно с помощью TwiML. TwiML — это простой формат XML, который позволяет нам давать Twilio базовые инструкции о том, что делать, когда входящий телефонный звонок или текстовое сообщение поступает на наш номер Twilio. Мы будем использовать модуль Twilio для Node.js, чтобы помочь сгенерировать наш TwiML. Давайте установим его:Теперь давайте заменим код в обратном вызове нашего запроса, чтобы отвечать с помощью TwiML, а не просто текстом ответа:Вот и все! Теперь мы можем развернуть наше приложение на Bluemix в последний раз:Чтобы Twilio знал, что нужно отправлять POST-запросы на наш URL, нам нужно добавить его как URL запроса сообщений (Messaging Request URL) для нашего номера телефона Twilio:Теперь момент истины. Отправьте вопрос на свой номер. Не знаете, что спросить? Попробуйте вопрос — «Как часто мне следует мыть руки?». Победа!Если вы не получаете ответ, как ожидалось, этот пост в блоге об отладке ваших приложений Twilio может помочь. И вы всегда можете использовать команду cf logs для просмотра логов вашего приложения на Bluemix. Вы можете посмотреть финальный код на github.Благодаря Watson и Twilio мы теперь можем обманом заставить друзей думать, что у нас есть масса информации о здоровье. Если они спросят, почему вы постоянно проверяете телефон, просто скажите, что получаете текстовые сообщения от друга. Это приложение лишь поверхностно затрагивает то, что можно делать с API Watson. Хотите внести улучшения? Посмотрите, сможете ли вы заставить приложение работать на большем количестве языков. Есть вопросы или хотите показать свой крутой Twilio + Watson хак? Вы можете найти меня @rickyrobinett или ricky@twilio.com