Урок 7: Регистрация в боте
В данном уроке вы узнаете как реализовать регистрацию и авторизацию в боте на платформе Metabot.
Мы создадим бот, который будет собирать данные пользователя и создавать для него персону. С помощью функционала персон он будет определять регистрировался пользователь в данном боте или нет. Уже зарегистрированные пользователи будут проходить через процесс авторизации.
Подробнее изучить работу бота вы можете с помощью нашего примера — бота в Telegram: @RegistrationMetabot
В этом уроке вы познакомитесь с таким функционалом платформы как Персоны.
Перед началом следует ознакомиться с предыдущими уроками Hello Humans: ваше руководство по быстрому старту и Metabot 101: Вывод фото в боте по REST API
Инструкция по разработке: Создание скриптов
1. Чтобы не отвлекаться на это в будущем, сразу создадим стартовый скрипт с приветствием, маршрут связанный с ним и канал Телеграм, при помощи которого будем тестировать бота, как мы делали это в предыдущих уроках.
Нам потребуются следующие скрипты:
- Стартовый скрипт;
- Меню;
- Fallback;
- Скрипт с выбором регистрации\авторизации;
- Скрипты регистрации;
- Скрипты авторизации.
Перейдем к их созданию.
Стартовый скрипт и скрипт с выбором регистрации\авторизации
Стартовый скрипт будет активироваться всего раз после начала лидом диалога с ботом. В нем должно быть всего две команды: отправка сообщения с приветствием и переход на следующий скрипт. Переход можно сделать так же при помощи кнопки.
Скрипт с выбором регистрации\авторизации нужен для того чтобы пользователь не проходил лишний раз процесс регистрации. Если он уверен что уже регистрировался в боте с этого или другого лида, то он может сразу перейти к процессу авторизации.
2. Для данного скрипта нам нужно добавить команду Отправить текст с объяснением, что пользователю делать дальше, и две кнопки меню: одна с переходом к регистрации, другая с переходом к авторизации.
Скрипт меню и Fallback
Скрипт меню — это скрипт в который будет попадать пользователь после авторизации. После этого скрипта можно сделать для бота любой функционал, исходя из ваших потребностей.
3. Мы рекомендуем создать в данном скрипте кнопку с выходом из аккаунта в Скрипт с выбором, чтобы пользователь мог зарегистрироваться в боте по другой почте.
Скрипт Fallback — это скрипт, который будет выполняться в том случае, если пользователь ввел вопрос/намерение или фразу не заложенные в базе знаний вашего бота.
4. В свойствах данного скрипта следует установить тип Fallback:
В данном уроке мы попробуем интересный способ реализации данного скрипта.
При помощи JS скрипта можно сделать бота более живым и дать ему несколько вариантов ответа на нестандартную реакцию пользователя:
var randomStrings = [
"Извините, я Вас не понял. Следуйте указаниям меню.",
"Попробуйте воспользоваться разделами меню.",
"Можете выбрать один из предложенных вариантов ответов."
];
randomIndex = Math.ceil((Math.random()*randomStrings.length-1));
lead.setAttr('randomAnswer', randomStrings[randomIndex]);
5. В скрипте случайным образом выбирается индекс для массива ответов, тем самым выбирается случайный ответ. Далее полученный ответ выводится лиду в команде Отправить текст.
6. Затем нужно добавить команду Повторить вопрос, чтобы бот мог вернуться к последнему сообщению отправленному пользователю перед переходом в данный скрипт.
Основные скрипты для работы бота созданы. Перейдем к созданию регистрации и авторизации.
Скрипты регистрации
В процессе регистрации бот будет собирать данные у пользователя, затем проверять почту пользователя на занятость и создавать персону с собранными данными.
Нам потребуются следующие скрипты:
- Скрипты сбора данных;
- Скрипт проверки;
- Скрипт проверки почты;
- Скрипт "Почта занята";
- Создание персоны.
Перейдем к их созданию.
Скрипты сбора данных
Данные скрипты предназначены для того, чтобы узнать информацию о пользователе. Это может быть имя, дата рождения, пол и т.д.
1. В таком скрипте нужно создать команду Запросить значение, команду перехода на следующий скрипт и команду перехода на скрипт проверки.
Для примера разберем скрипт сбора информации об имени:
- Первым делом бот запрашивает имя пользователя.
- Затем происходит проверка: если пользователь передумал и ввел одно из ключевых слов, указанных в условии, то регистрация прерывается и бот переходит к Скрипту выбора. Данную проверку можно добавлять после каждой команды Запросить значение.
- Далее бот запрашивает фамилию пользователя и снова выполняет проверку.
- Затем бот проверяет существует ли тег исправление. Если его нет, то происходит переход к следующему скрипту сбора данных.
- Если же тег был найден, то бот переходит к скрипту проверки.
Проверка на прерывание регистрации:
if (['отмена','назад','выход','стоп'].indexOf(lead.getAttr('lead_name').toLowerCase()) >= 0) {
return true;
}
Данные скрипты необязательны и их может быть как много, так и вообще не быть.
Скрипт проверки
Данный скрипт нужен для того, чтобы удостовериться, что пользователь ввел все данные верно. Если пользователь найдет ошибку, то он сможет исправить ее, в ином случае регистрация продолжится.
2. В скрипте проверки нужно создать две команды: команду Добавить тег исправление и Отправить текст со всеми ранее собранными данными.
3. Для всех данных нужно добавить в меню кнопку с переходом на скрипт запроса этих данных. Так же в меню должна быть кнопка перехода на скрипт ввода почты.
Скрипт проверки почты
В данном скрипте бот будет узнавать почту пользователя и проверять ее на занятость.
4. Первым делом нужно добавить команду Удалить теги и удалить тег исправление.
5. Затем запрашиваем почту у пользователя со следующим регулярным выражением: (отмена|[^@\s]+@[^@\s]+\.[^@\s]+).
6. Далее выполняем проверку на прерывание регистрации.
7. После этого создаем JS скрипт с проверкой на существование персоны с такой почтой и, в зависимости от ответа, выполняем скрипт завершения регистрации или Почта занята.
//Проверяем есть ли зарегистрованная почта
let lead_email = lead.getAttr('lead_email');
let persons = bot.findPersons([["email", lead_email]]);
if (persons.length == 0){
lead.setAttr('email', null);
}
Этот код ищет персону с заданным email в боте, и если не находит, то возвращает null.
Скрипт "Почта занята"
8. Этот скрипт должен содержать всего две команды: отправка текста с оповещением и переход к скрипту запроса почты.
Скрипт создания персоны
В данном скрипте происходит создание персоны с заданной почтой и переход к авторизации.
9. Для создания команды с созданием персоны используйте данный код:
//Создаем для лида персону
lead.createPersonForCurrentLead({
'is_external' : 1,
'firstname' : lead.getAttr('lead_name'),
'lastname' : lead.getAttr('lead_surname'),
'email' : lead.getAttr('lead_email'),
'comment' : lead.getAttr('lead_birthday') + ', ' + lead.getAttr('lead_gender')
});
В этот скрипт так же можно добавить тег зарегистрировался.
10. Затем отправляем текст с оповещением пользователя о завершении регистрации и добавляем в меню кнопку с переходом к авторизации.
Скрипты авторизации
В процессе авторизации бот будет узнавать почту у пользователя, затем проверять ее на занятость и отправлять PIN на нее для авторизации.
Нам потребуются следующие скрипты:
- Скрипт запроса почты;
- Скрипт проверки почты;
- Скрипт отправки PIN;
- Скрипт ввода PIN;
- Скрипт проверки PIN.
Перейдем к их созданию.
Скрипт запроса почты
В этот скрипт пользователь попадает из Скрипта выбора.
Тут повторяются команды из скрипта запроса почты для регистрации.
1. Запрашиваем почту у пользователя со следующим регулярным выражением: (отмена|[^@\s]+@[^@\s]+\.[^@\s]+).
2. Далее выполняем проверку на прерывание регистрации.
3. Последней командой добавляем вывод почты для проверки пользователю.
5. В меню данного скрипта добавляем кнопки перехода к следующему скрипту авторизации, замены почты и Скрипту выбора.
Для исправления почты нужно добавить еще один скрипт, в котором будет находиться только команда перехода к скрипту ввода почты.
Скрипт проверки почты
Данный скрипт так же повторяет команды регистрации.
6. Создаем JS скрипт с проверкой на существование персоны с такой почтой и, в зависимости от ответа, выполняем скрипт отправки PIN или запроса почты.
//Проверяем есть ли зарегистрованная почта
let lead_email = lead.getAttr('lead_email');
let persons = bot.findPersons([["email", lead_email]]);
if (persons.length == 0){
lead.setAttr('email', null);
}
Скрипт отправки PIN
7. В данном скрипте следует создать генератор PIN-кода и команду отправки письма на почту.
//Генерируем временный пароль------------------------------------------------------------
let password = String(Math.floor(Math.random() * (100000 - 10000 + 1) + 10000));
//---------------------------------------------------------------------------------------
lead.setAttr('password', password);
8. В меню добавляем кнопки перехода к следующему скрипту авторизации, повторной отправки PIN и Скрипту выбора.
Для повторной отправки PIN нужно добавить еще один скрипт, в котором будет находиться только команда перехода к скрипту отправки PIN.
Скрипт ввода PIN
9. В данном скрипте нужны команды запроса PIN и перехода к скрипту проверки PIN.
Скрипт проверки PIN и "Неверный PIN"
В скрипте проверки сравниваются отправленный на почту PIN и PIN введенный пользователем.
10. Для проверки добавляем команду с условием при выполнении которого будет вызываться скрипт "Неверный PIN".
Можно так же добавить тег авторизовался.
11. Последним делом добавляем команду перехода в меню.
12. В скрипте "Неверный PIN" добавляем команду отправки текста с оповещением о неправильном PIN-коде.
13. В меню добавляем следующие кнопки:
- Запрос PIN;
- Отправка PIN;
- Запрос почты;
- Скрипт выбора регистрации\авторизации.
Бот завершен! Теперь при регистрации в нем на вкладке Персоны платформы будут создаваться персоны:
Поздравляем вас с прохождением урока!
Нет комментариев