История о том, как продакт-дизайнер Ник Брейвер научился кодить и создал чатбота для Facebook Messenger меньше чем за месяц.
В начале была мечта. Она была неразрывно связана с туториалом Джерри Ванга как создать бота за 15 минут.
Ханна и я начали с идеи создать бота, который поможет решить, где вам пообедать. Прочесть остальное можно здесь.
Как только у нас появилась идея, я решил отдохнуть от дизайна и попытаться действительно создать продукт.
Я стал искать информацию, как начать делать чатбота. Тогда я и нашел туториал Джерри Ванга, который оказался отличной отправной точкой для знакомства с чатботами. А затем нам нужно было найти процессор, который бы распознавал человеческую речь и передавал её чатботу.
Эксперименты с Wit
Ханна нашла нам Wit.ai для обработки естественного языка. Было неплохо только поначалу. После нескольких бесплодных попыток всё, что я получил, было эхо слов, сказанных пользователем.
Честно говоря, в своей среде бот вел себя неплохо. Но интеграция с Facebook Messenger просто не работала. Поэтому мы стали искать дальше. Мы ориентировались на интеграцию Facebook Messenger и нашли Api.ai. Попытка не пытка, попробуем.
Чтобы узнать больше о том, почему мы перешли с Wit.ai на Api.ai, читайте блог Ханны.
Жизнь с Api.ai
После перехода я нашел туториал Api.ai для интеграции погоды. Api.ai не только практически автоматизировал интеграцию Facebook Messenger, но и познакомил с тем, как задействовать еще один API. Было очень полезно для меня, так как требовалось подключиться к Google Places API. Это стало именно тем подспорьем, которое нужно дизайнеру, пытающемуся создать продукт.
Я начал с Node.js, потому что у Wit.ai была интеграция с Node. Неплохо, но туториал Api.ai для Python был лучше. Таким образом, пришлось перейти на Python. Почему? Ну потому что я понял, что могу использовать и Slimkrazy Google Places API Framework, разработанный на Python. Бегло просмотрев его git документацию, я знал, что это будет самым быстрым способом. Всё, что мне нужно было сделать, это установить Python оболочку на сервер Heroku, и вечеринка началась!
Мне пришлось создать несколько своих переменных для вызова нужных данных из Google… сначала я просмотрел попавшиеся Python туториалы. Самой большой проблемой было то, что я не был разработчиком по профессии…
Мы искали проблему не в том месте
Мы зашли довольно далеко. Казалось, бот работал. Но затем оказалось, что это не так. И мы понятия не имели почему. Я сто раз просмотрел код. Начал винить в этом Api.ai и Heroku. Но я кое о чем забыл.
…Python?
Табуляция имеет значение. Огромное…
Честно говоря, я искал проблему не там.
Видите?
Подсказка: это оператор «if» в 36 строке. Я тоже не увидел. Сначала.
В отчаянии я сравнил свой код с кодом из туториала Api.ai. А затем прозрел. Я ошибся в одном единственном месте в табуляции. Безумие, но это так. Моя нелепая ошибка просто насмехалась надо мной.
Проблема решена и что же теперь?
Я всегда уважал программистов, но теперь моё уважение выросло до нового уровня. Программирование сложнее, чем я думал. Оно требует терпения, сосредоточенности и умения искать в нужных местах.