Сделайте своего первого чат-бота даже без навыков программирования
Суперпростой способ создать бота, не зная программирования.
Материал рассчитан на тех, кто в жизни не написал ни строчки кода.
Многие слышали про чат-ботов и роботов для общения: им пишешь, они отвечают, получается диалог с машиной. Чат-бот может рассказать анекдот, поискать за вас в интернете, забронировать столик в ресторане и что угодно ещё, чему его обучат создатели.
Иногда общение с ботом выглядит как общение с человеком. Может даже показаться, что там работает искусственный интеллект — и иногда так действительно бывает. Но часто всё проще: это алгоритм, который умеет распознавать некоторые ваши слова и готовить ответы по заранее заготовленным шаблонам. Чем алгоритм более разветвлённый, тем естественнее и полезнее бот.
Давайте сделаем собственного чат-бота с очень простым алгоритмом. Позже вы сможете усложнить его, как захотите. Но сначала — самая база для тех, кто никогда не писал код.
На чём будем решать
Обычно, чтобы написать какую-то программу, нужно сделать несколько действий: например, скачать программу-обработчик языка, завести проект, написать программу, скомпилировать. И только потом ей можно пользоваться. Но мы пойдём по более простому пути: напишем программу, работающую прямо в браузере, через который вы читаете эту статью. Написать такую программу можно лишь на компьютере, на телефоне придётся пользоваться ботом.
Мы будем решать задачу на языке JavaScript — это язык программирования, который встроен в ваш браузер и на котором написать программу можно прямо сейчас, ничего не устанавливая.
Чтобы сделать что-то на JavaScript, нужно открыть консоль. Почти во всех современных браузерах это делается сочетанием клавиш Shift + Ctrl + J или Cmd + Alt + J. Справа или снизу появится дополнительное окно, в котором уже будет что-то происходить:
Если у вас не открылась консоль, зайдите в верхнее меню и поищите слово «Консоль». Обычно этот пункт меню прячется в разделе «Инструменты разработчика».
Когда вы открываете консоль, она сразу готова выполнять ваши команды. Если в неё вставить программу, написанную на JavaScript и нажать Enter, ваш браузер её выполнит. Если программа написана с ошибками, консоль сама подсветит их. Можно отправлять в консоль программу кусками или даже построчно: браузер будет помнить всё, что происходило в вашей программе, пока вы не перезагрузите страницу.
Первая строка
В консоли можно не только писать программы, но и выводить туда результаты. Давайте для начала сделаем самую простую программу, которая напишет в консоли слово «Привет!». Для этого используем команду
Вставим её в консоль и нажмём Enter:
Поздравляем, вы только что написали свою первую программу для компьютера! Она очень простая: компьютер просто говорит «Привет!». Но оцените момент: это вы его научили так говорить. Попробуйте научить его и другим словам.
Если написать несколько команд, получим сообщение из нескольких строк:
Вот мы и начали делать своего чат-бота, который нас уже поприветствовал в консоли. Теперь сделаем так, чтобы мы тоже могли ему что-нибудь ответить. Для этого нам понадобятся переменные.
Переменная — это ячейка в памяти компьютера, где можно что-то хранить и менять. Дело в том, что компьютеру для вычислений нужно сказать: «Вот тут данные у нас меняться не будут, а вот тут будут, выдели память». И компьютер выделит достаточно памяти, чтобы хранить всё, что будет лежать внутри переменной. В последнюю можно записать новое значение, а можно узнать, что уже лежит внутри неё.
Чтобы дать понять компьютеру, что у нас сейчас будет переменная, нужно сказать ему слово var, после которого вписать название переменной — так нам проще к ней обращаться. Например, следующая строка создаст переменную name и положит в неё слово «Код»:
Название переменной может быть практически любым, главное, чтобы оно начиналось с буквы. По-русски переменные называть нельзя, только буквами латинского алфавита. Можно было бы назвать переменную imya или zovut, но программисты считают, что чем проще название переменной, тем лучше.
Теперь посмотрим содержимое переменной. Следующая команда выведет то, что сейчас записано в переменной Name:
Можно посмотреть, какое сегодня число. Это внутренняя системная переменная. Строго говоря, это не совсем переменная, но для начала давайте считать так:
Но это мы всё смотрим во внутренности компьютера. А нам нужно спросить что-то у пользователя. Чтобы мы могли ввести новые данные в нашу программу, используем команду promt()
Вставьте в консоль команду var name = prompt(‘Как тебя зовут?’); и посмотрите, что произойдёт. Компьютер выведет окно, и будет ждать, пока вы введёте туда своё имя. Окно выглядит красиво: давайте в диалоге общаться с компьютером не через консоль, а через такие появляющиеся окошки. Для этого напишем новые команды:
Пусть компьютер проявит вежливость и скажет, что ему приятно с нами познакомиться. Чтобы он смог обратиться к нам по имени, используем переменную name — в ней как раз хранится то, что мы ответили компьютеру:
Чтобы вывести осмысленную фразу, мы взяли начало ‘Привет, ‘, затем с помощью плюсика соединили со значением переменной name, которая хранит наше имя, а потом ещё одним плюсиком добавили к фразе концовку. Чтобы компьютер знал, что мы хотим вывести на экран текст, а не числа, используются кавычки. Компьютер воспринимает как текст то, что внутри кавычек. И выводит точно в том виде, в котором написано.
Расчёт дня рождения
Давайте соединим все наши команды в одну программу и допишем несколько новых фраз:
Обратите внимание: у нас появился новый вопрос и новая переменная hobby , в которой хранится информация об увлечении. А ещё — комментарии, которых можно добавлять сколько угодно. JavaScript не обращает внимания на то, что написано после двух косых черт:
Что ещё посмотреть
Вот кое-что, что может вам пригодиться при создании первого чат-бота:
performance.now() — эта команда возвращает время в миллисекундах с момента открытия текущей страницы. Можно поделить на 1000, и вы узнаете, сколько секунд вы сидите на какой-то странице. Если поделить на 60000 — сколько минут.
setTimeout() — позволяет выполнить любой код через определённое время. Например, вы можете задать вопрос и дать ровно минуту на размышление, после чего появится окно для ответа.
setInterval() — то же самое, что и предыдущее, но выполнение кода повторяется с равномерным интервалом, например, раз в 5 минут. Если вы хотите научить чат-бота, чтобы он раз в час напоминал попить воды, эта команда — то, что нужно.
Как пользоваться этими штуками, мы расскажем в одной из будущих статей, но вы всегда можете самостоятельно поискать в интернете, как они работают. Пользуясь этими тремя возможностями JavaScript, можно создать неплохого бота, который будет следить за вашей продуктивностью и интервалами работы.
Подписывайтесь на «Код» , чтобы не пропустить новые разборы!
Источник статьи: http://zen.yandex.ru/media/code/sdelaite-svoego-pervogo-chatbota-daje-bez-navykov-programmirovaniia-5cb579ca80f66f00b3879178
Делаем своего первого чат-бота
Уровень: начинающий
Материал рассчитан на тех, кто в жизни не написал ни строчки кода. Если вы уже в курсе основ программирования, прочитайте лучше о чистых функциях.
Многие слышали про чат-ботов и роботов для общения: им пишешь, они отвечают, получается диалог с машиной. Чат-бот может рассказать анекдот, поискать за вас в интернете, забронировать столик в ресторане и что угодно ещё, чему его обучат создатели.
Иногда такое общение выглядит как общение с человеком. Может даже показаться, что там работает искусственный интеллект — и иногда так действительно бывает. Но часто всё проще: это алгоритм, который умеет распознавать некоторые ваши слова и давать ответы по заранее заготовленным шаблонам. Чем алгоритм более разветвлённый, тем естественнее и полезнее бот.
Давайте сделаем собственного чат-бота с очень простым алгоритмом. Позже вы сможете усложнить его, как захотите. Но сначала — самая база для тех, кто никогда не писал код.
Обычно, чтобы создать какую-то программу, нужно выполнить несколько действий: например, скачать программу-обработчик языка, завести проект, написать задуманную программу, скомпилировать. И только потом ей можно пользоваться. Но мы пойдём по более простому пути: напишем программу, работающую прямо в браузере, через который вы читаете эту статью. Сделать это можно лишь на компьютере, на телефоне придётся пользоваться ботом.
Мы будем решать задачу на языке JavaScript — это язык программирования, который встроен в ваш браузер и на котором написать код можно прямо сейчас, ничего не устанавливая.
Чтобы сделать что-то на JavaScript, нужно открыть консоль. Почти во всех современных браузерах это делается сочетанием клавиш Shift + Ctrl + J или Cmd + Alt + J. Справа или снизу появится дополнительное окно, в котором уже будет что-то происходить:
Если у вас не открылась консоль, зайдите в верхнее меню и поищите слово «Консоль». Обычно этот пункт прячется в разделе «Инструменты разработчика».
Когда вы открываете консоль, она сразу готова выполнять ваши команды. Если в неё вставить программу, написанную на JavaScript, и нажать Enter, ваш браузер её реализует. Если в коде есть ошибки, консоль сама подсветит их. Можно отправлять в неё программу кусками или даже построчно: браузер будет помнить всё, что происходило в вашей программе, пока вы не перезагрузите страницу.
Первая строка
В консоли можно не только писать код, но и выводить туда результаты. Давайте для начала сделаем самую простую программу, которая отобразит в консоли слово «Привет!». Для этого используем команду console.log(‘Привет!’);
Вставим её в консоль и нажмём Enter:
Поздравляем, вы только что написали свою первую программу для компьютера! Она очень простая: компьютер всего лишь говорит «Привет!». Но оцените момент: это вы его научили так говорить. Попробуйте научить его и другим словам.
Если написать несколько команд, получим сообщение из нескольких строк:
Вот мы и начали создавать своего чат-бота, который нас уже поприветствовал в консоли. Теперь сделаем так, чтобы мы тоже могли ему что-нибудь ответить. Для этого нам понадобятся переменные.
Переменные
Чтобы дать понять компьютеру, что у нас сейчас будет переменная, нужно сказать ему слово var, после которого вписать название переменной — так нам проще к ней обращаться. Например, следующая строка создаст переменную name и положит в неё слово «Код»:
Название тут может быть практически любым, главное, чтобы оно начиналось с буквы. По-русски переменные называть нельзя, только буквами латинского алфавита. Можно было бы использовать вариант imya или zovut, но программисты считают, что чем проще название переменной, тем лучше.
Теперь посмотрим содержимое элемента. Следующая команда выведет то, что сейчас записано в переменной name:
Можно посмотреть, какое сегодня число. Это внутренняя системная переменная. Строго говоря, это не совсем переменная, но для начала давайте считать так:
Но это мы всё смотрим во внутренности компьютера. А нам нужно спросить что-то у пользователя. Чтобы мы могли ввести новые данные в нашу программу, используем команду prompt()
Вставьте в консоль команду var name = prompt(‘Как вас зовут?’); и посмотрите, что произойдёт. Компьютер выведет окно и будет ждать, пока вы внесёте туда своё имя. Интерфейс выглядит красиво: давайте в диалоге общаться с компьютером не через консоль, а через такие появляющиеся окошки. Для этого напишем новые команды:
Пусть компьютер проявит вежливость и скажет, что ему приятно с нами познакомиться. Чтобы он смог обратиться к нам по имени, используем переменную name — в ней как раз хранится то, что мы ответили компьютеру:
Чтобы вывести осмысленную фразу, мы взяли начало ‘Привет, ‘, затем с помощью плюсика соединили со значением переменной name , которая хранит наше имя, а потом ещё одним плюсиком добавили к фразе концовку. Чтобы компьютер знал, что мы хотим вывести на экран текст, а не числа, используются кавычки. Компьютер воспринимает как текст то, что внутри кавычек. И выводит точно в том виде, в котором написано.
Расчёт дня рождения
Давайте соединим все наши команды в одну программу и допишем несколько новых фраз:
Обратите внимание: у нас появился новый вопрос и новая переменная hobby, в которой хранится информация об увлечении. А ещё — комментарии, которых можно добавлять сколько угодно. JavaScript не обращает внимания на то, что написано после двух косых черт:
Теперь у вас есть всё, что нужно, чтобы написать свою версию чат-бота для общения. Если продолжите решать наши задачки, то сможете научить компьютер по-разному реагировать на ваши ответы и даже вести осмысленный диалог.
Что ещё посмотреть
Вот кое-что, что может вам пригодиться при создании первого чат-бота.
performance.now() — эта команда возвращает время в миллисекундах с момента открытия текущей страницы. Можно поделить на 1 000, и вы узнаете, сколько секунд вы сидите на какой-то странице. Если поделить на 60 000 — сколько минут.
setTimeout() — позволяет выполнить любой код через определённое время. Например, вы можете задать вопрос и предоставить ровно минуту на размышление, после чего появится окно для ответа.
setInterval() — то же самое, что и предыдущее, но выполнение кода повторяется с равномерным интервалом, например раз в 5 минут. Если вы хотите научить чат-бота, чтобы он раз в час напоминал попить воды, эта команда — то, что нужно.
Как пользоваться этими штуками, мы расскажем в одной из будущих статей, но вы всегда можете самостоятельно поискать в интернете, как они работают. Пользуясь этими тремя возможностями JavaScript, получится создать неплохого бота, который будет следить за вашей продуктивностью и интервалами работы. Подписывайтесь на «Код», чтобы не пропустить новые разборы.
Источник статьи: http://thecode.media/chat-bot/
Чат-бот — как написать удобного и полезного?
Чат-боты — один из самых противоречивых трендов. Самых простых ботов можно написать и «пришить» к сайту за несколько часов, но насколько полезен этот сделанный на скорую руку продукт? Действительно ли он откроет новые возможности для аудитории и решит те проблемы, с которыми хуже справляются другие средства? Или приведет к очередному эпик фейлу? Я с некоторого времени интересуюсь этой темой и хочу поделиться своими наблюдениями о своих «хороших практиках» разработки чат-ботов. Надеюсь, эти наблюдения будут полезны как разработчикам, так и заказчикам чат-ботов.
При оценке ботов я использую две группы факторов:
- Юзабилити (удобство использования);
- Создание ценности для пользователя.
Далее в статье я расскажу, как я оцениваю чат-ботов по этим группам.
Юзабилити
С первой группой факторов помогает разобраться статья Кевина Скотта о применении эвристик юзабилити к интерфейсу ботов. Но с оговорками. Давайте немного покритикуем один из примеров авторов, который они считают образцовым. Например, старый-добрый Пончо:
Я вижу следующие улучшения:
- Если пользователь уже установил бота и запустил его, не нужно требовать дополнительных подтверждений («Let’s do it»). По возможности бот должен начинать предлагать свои услуги как можно раньше, избавляя пользователя от необходимости нажимать на экран.
Сейчас пользователь вынужден вводить свой адрес текстом — это долго и неудобно (не все используют голосовой ввод). Вместо этого рекомендую сделать процесс ввода более интерактивным (например, послать локацию, получить адрес из метаданных, дать выбрать из 7 самых популярных городов и т.д.).
После ввода имени города пользователю приходится потратить еще одно нажатие на подтверждение. Вместо этого, если адрес хорошо определился, можно сразу показать результат (ведь бедняга так трудился).
Из улучшений вырисовывается три правила:
Нажатие на вес золота
В этом правиле нет ничего нового для специалистов по удобству использования. Операция должна занимать минимальное количество нажатий / вводов информации. Чем дольше вы выполняете операцию, тем больше времени теряют пользователи и тем больше любви теряет ваш чат-бот. Взаимодействие с пользователем — это главное при очень ограниченном интерфейсе. Используйте весь имеющийся инструментарий для помощи пользователю: распознавание аудио, контекстные элементы управления, пользовательские меню и другие элементы.
Чем меньше сообщений — тем лучше
Это правило пересекается с предыдущим, но его часто игнорируют, в том числе и наш Пончо. Вместо того, чтобы пользователь скроллил вверх и вниз при совершении операции (а что же я ввел на пред-предыдущем шаге?), удобнее было бы одну операцию совершать в одном сообщении, меняя его текст и элементы управления. При этом, конечно, нужно держать в сообщении весь необходимый пользователю контекст, чтобы он уверенно принимал решения.
Предлагай решения
В идеальных условиях бот должен понимать пользователя без слов: анализировать операции пользователя, наблюдать за пользователем и помогать пользователю как раз тогда, когда это необходимо. Например, вместо уже известного сценария про покупку кроссовок, бот выскочит из ниоткуда в самый нужный момент и скажет: дружище, ну хватит уже искать кроссы, я все нашел за тебя: и по рейтингу, и по цене, и по удобству доставки, и комментарии все прочитал; вот тебе на выбор зеленые и синие (хотя я-то знаю, какие ты выберешь). Пока что мы далеки от идеала, но и в условиях реальной жизни бот все равно должен быть активен:
- Если пользователь ничего не делает, дать ему больше информации;
- Если пользователь начал что-то делать, попытаться помочь;
- Если пользователь ошибся, предложить корректировку;
- Если пользователь завершил операцию, предложить сопутствующие.
Фуф, с юзабилити разобрались, теперь пара слов про ценность для пользователя.
Создание ценности для пользователя
Techcrunch говорит, что цель чат-ботов — соединять бизнес и клиентов. Но так ли это сейчас? Если мы посмотрим в каталог Telegram ботов, то будем слегка удивлены, потому что на топовых позициях там:
- Заработок денег;
- Текстовый покер (текстовый, Карл!);
- Прогноз погоды;
- Виртуальный друг.
Я готов поверить, что заработок денег в любом своем проявлении может нести некоторую ценность для пользователей, но остальное? Гораздо удобнее играть в покер в мобильном приложении, прогнозов погоды 9000+ в любом магазине приложений, ну а виртуальный друг — не стоит вскрывать эту тему.
Моя гипотеза в том, что не у всякого бизнеса есть та ценность, которая была бы интересна пользователям. Но, на мой взгляд, никогда не поздно обрести эту ценность, если следовать таким вот нехитрым советам.
Используйте многошаговые сценарии
Не копируйте функционал мобильного приложения и сайта. Обычно веб-сайт или приложение оптимизируется под основные функции, которые выполняет пользователь. Если у вас есть мобильное приложение, на котором уже все хорошо с основными функциями, зачем копировать его функционал в чат-бота? Это скорее всего будет:
- Неудобно для пользователя — ведь интерфейс чат-ботов не настолько гибок, как интерфейс мобильного приложения.
- Непонятно для пользователя — раньше он успешно выполнял операции в приложении, зачем ему переучиваться?
Вместо этого постарайтесь покрыть многошаговые сценарии, которые предполагают альтернативы и ответвления. Их непросто уместить в мобильное приложение, но они буквально созданы для чат-ботов. Например, если вы банковский клиент, не дублируйте перевод с карты на карту. Вместо этого, пусть ваш чат-бот поможет вашим пользователям подключить автоматические платежи за ЖКХ.
Экономьте время пользователя
Недавно я из нескольких разных мест услышал об идее заменить IVR-меню (интерактивный автоответчик) на номерах 8800 чат-ботом. И действительно, IVR-меню построено так, что пользователь должен выслушать массу ненужной ему информации, чтобы, наконец, выбрать пункт. Если он не услышал нужный пункт или ошибся, то ему опять предстоит прослушать детали по каждому пункту. Вместо этого чат-бот предложит пользователю ту же информацию, но уже в текстовом виде, и поможет при необходимости. Результат: экономия времени и более высокое качество обслуживания. Прикиньте для своего бота, экономит ли он время пользователей по сравнению с альтернативами.
Присмотритесь к групповым возможностям
Пожалуй, самый непонятный совет, но тем не менее. Одной из главных вещей, которая отличает чат-ботов от мобильных приложений — это простота многопользовательского взаимодействия. Не ограничивайте опыт пользователя шаблоном пользователь-помощник, возможно, у вас есть сценарии, в которые вы можете вовлекать сразу нескольких пользователей. Один из таких примеров — чат-бот для фильтрации информации в группах: он вам и теги покажет, и контент по ним, а, может, и еще что-нибудь полезное придумает.
Если у ваш бот следует всем-всем этим советам, у него есть все шансы стать полезным и удобным. Если нет, не подходите к советам слишком строго, это мой личный взгляд на вектор развития чат-ботов. Удачи в бото-писании!
Источник статьи: http://habr.com/ru/post/311008/