Разрабатываем погодного бота в среде IBM Bluemix на основе Facebook

На что обратить внимание в первую очередь при разработке собственного бота?

18053c56fd9846a999866e30a0db9f8f.png

Чат-ботами сейчас никого не удивишь. Они стали массово появляться в различных сервисах и мессенджерах. Основные социальные платформы постепенно вводят возможность разработки собственных ботов, что стимулирует сторонних разработчиков. Они предлагают все больше ботов, полезных и разных. Некоторые боты позволяют проверять баланс своего счета в банке, другие — помогают совершить покупку или заказать столик в ресторане.

Почему боты стали такими популярными? Это довольно сложный вопрос. Вероятно, основная причина — огромное количество приложений в различных маркетах. Разработчик (частное лицо или компания) должны потратить множество времени и сил на раскрутку приложения. Их уже миллионы, приложений, и с каждым днем число программ увеличивается. Но выход есть — это как раз боты. Сейчас их гораздо меньше, чем мобильных приложений, и если создать интересного бота, он может стать популярным в считанные дни, если не часы. Пользователи любят ботов — ведь они очень удобны, в большинстве случаев. На что обратить внимание при создании собственного бота? Как выглядит процесс его создания? Обо всем этом давайте поговорим прямо сейчас.

Что нужно учитывать при создании своего бота?


• Качество взаимодействия– то, как происходит взаимодействие пользователя с ботом, определяет его успешность. Вариации диалога должны быть насыщенны и достаточно полезны. Бот, который не понимает немного перефразированный запрос, будет выглядеть нелепо. IBM Watson, например, доказал, что обучаемые чат-боты можно применить для победы над обычными участниками таких игровых шоу, как «Своя игра», основанных на знаниях. Так как естественный язык Watson и его вариации диалогов можно найти на платформе IBM Bluemix, вы можете использовать их для вашего бота. Вашему боту не обязательно проходить тест Тьюринга. Банковские приложения, например, имеют определённый набор вещей, которые они могут сделать. Так что не стоит создавать излишне перегруженный бот, который будет пытаться отвечать на открытые вопросы вроде «Как мне разбогатеть?»

• Независимость от платформ по обмену сообщениями — Эта область переменчива; сложно сказать, какими будут через год предпочтения вашей целевой аудитории в плане мессенджеров. По возможности, создавайте боты, не завязанные на конкретный мессенджер.

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

• Думайте стратегически — боты — это не просто ещё одна функция. У них есть потенциал для переосмысления существующей концепции мобильных технологий и начала новой эры — Эры после приложений the post-app era.

С чего начать?


Для того, чтобы показать, насколько прост процесс создания собственного бота на основе IBM Bluemix, мы предлагаем прямо сейчас заняться разработкой погодного бота для мессенджера Facebook. Учиться будем прямо в процессе создания бота.

Итак, наше приложение-бот будет модульным, и состоять из четырех блоков-модулей. Основной модуль — Broker, он обеспечивает взаимосвязь нашего бота с Messaging Platform. В нашем примере связь идет только с Facebook Messenger, но спектр взаимодействия бота с различными платформами можно и расширить.

64f5d7201e0d4cdbbdd7aad28c890025.png

Weather App — модуль, который отвечает за интерпретацию текстового запроса и формулирование ответа. Погода в нашем случае — просто пример. Информация может быть и финансовой, касаться шопинга, продуктов, и т.п.

Работу модуля Weather App обеспечивает облачная платформа Bluemix. Эта платформа — продукт нашей компании, это ясно. Но мы выбрали ее не только потому, что это разработка IBM, но и потому, что Bluemix — действительно позволяет много чего сделать. Вот основные достоинства системы:

Качество взаимодействия. Благодаря IBM Watson, Bluemix позволяет разработчику использовать инструмент анализа речи и формирования диалогов. Сейчас эти сервисы доступны в IBM Bluemix, так что они доступны всем без исключения пользователям платформы.

Независимость от платформы мессенджера. Если выбрать одну какую-то платформу (тот же Facebook) и создать бота на ее основе, то бот будет жестко привязан к этой платформе. А Bluemix позволяет создать независимый сервис, который не будет зависеть от капризов владельцев платформы мессенджера.

Связность с другими облачными платформами и сервисами. Bluemix предлагает возможность связать бота с другими облачными сервисами — было бы желание.

А теперь — приступаем к разработке


Что требуется?
• Аккаунт Bluemix для разработчика;
• Аккаунт Facebook для бота;

Конфигурируем страницу Facebook и приложение
• Со страницы выбранного аккаунта выбираем в меню «Create a New Page»;
• Выбираем «Cause or Community», вводим имя и кликаем «Get Started»;
• Со своей страницы Facebook for Developers выбираем My Apps / Create a New App и нажимаем «basic setup»;
• Вводим нужные данные и нажимаем «Create App ID»;

С Facebook пока все — приступаем к настройке аккаунта в Bluemix.
• Из панели Bluemix выбираем «Cloud Foundry App» → «Create App»;
• Выбираем «Web»→«SDK for Node.JS»;
• Нажимаем «Continue» и вводим название приложения;
• Выбираем «Download Starter Code» и указываем место для загрузки;
• Открываем файл app.js и заменяем дефолтный код вот этим кодом с GitHub;
• Открываем файл package.json и под dependencies вносим следующие изменения:
«body-parser»:»^1.15,0»,
«express»:»^4.13.4»,
«request»:»2.72.0»
• Для запуска Broker App to Bluemix используем следующую команду: «cf push using manifest file path/manifest.yml, заменив «path» путем к нашему файлу.

Подключаем приложение Facebook к своему приложению Broker App:
• На странице Facebook Developer под «Webhooks» выбираем New Subscription / Page;
• Под «Callback URL» заполняем Broker App URL. Найти это можно сразу под названием приложения

a98b691d11ce445b9bb3bfafd124d375.png

• Затем в «Verify Token» заполняем токен, заданный в Broker App (в нашем примере это «mySecretAccessToken»);
• В «Subscription Fields», выбираем messages, message_deliveries, messaging_options и messaging_postbacks;
• Для получения токена доступа Facebook нажимаем «Messenger» и «Get Started». Выбираем созданную ранее страницу, «okay», копируем сгенерированный Page Access Token;
• Теперь используем Terminal и выполняем следующую команду: curl -ik -X POST «Facebook_access_token_goes_here»;
• Снова открываем app.js и применяем токе Facebook в token var;
• Запускаем Broker App в Bluemix, как было указано выше.

Создаем Weather App в Bluemix
• В среде Bluemix выбираем AlchemyAPI, Insights for Weather, и Natural Language Classifier, которые необходимо привязать к нашему приложению;
• Мы уже научили Watson Natural Language Classifier понимать вопросы о погоде. Он может отличить вопрос о самой погоде от простого вопроса о температуре. Вот здесь рассказывается, как можно обучить собственный классификатор;
• После того, как вы обработали собственный классификатор, должен появиться id;
• Теперь качаем начальный код для своего приложения Node.js;
• Открываем файл app.js и заменяем пример кода вот этим примером с GitHub;
• Вставляем свой id, полученный пару пунктов выше;
• Открываем package.json и в dependencies вносим следующие изменения:
«JSON»:»^1.0.0»,
«body-parser»:»^1.15.0»,
«cfenv»:»^1.0.3»,
«express»:»^4.13.4»,
«node-geocoder»:»^3.9.1»,
«request»:»^2.71.0»,
«watson-developer-cloud»:»^1.4.1»

Запускаем Weather App в Bluemix

Подключаем Broker App к Weather App


• Открываем app.js приложения Broker;
• Ищем вот такой код:
request («whatistheweather.mybluemix.net/getWeather? text=» + text, function (error, response, body)
• Заменяем URL на URl своего Weather app;
• Запускаем Weather App в Bluemix.

Заработало? Отлично. Если хотите больше информации по этой тематике, то обратите внимание: 23 июня пройдет бесплатный онлайн-семинар по Bluemix, на котором наш специалист Тимур Маркунин покажет, как создать ботов-переводчиков и ответит на самые насущные вопросы. Зарегистрироваться можно здесь.

© Habrahabr.ru