Перейти к основному контенту

Урок 6: Регистрация в боте

В данном уроке вы узнаете как реализовать регистрацию и авторизацию в боте на платформе Metabot.

Мы создадим бот, который будет собирать данные пользователя и создавать для него персону. С помощью функционала персон он будет определять регистрировался пользователь в данном боте или нет. Уже зарегистрированные пользователи будут проходить через процесс авторизации.

Подробнее изучить работу бота вы можете с помощью нашего примера — бота в Telegram: @RegistrationMetabot

В этом уроке вы познакомитесь с таким функционалом платформы как Персоны.

 

Перед началом следует ознакомиться с предыдущими уроками Hello Humans: ваше руководство по быстрому старту и Metabot 101: Вывод фото в боте по REST API

Инструкция по разработке: Создание скриптов

1. Чтобы не отвлекаться на это в будущем, сразу создадим стартовый скрипт с приветствием, маршрут связанный с ним и канал Телеграм, при помощи которого будем тестировать бота, как мы делали это в предыдущих уроках.

Нам потребуются следующие скрипты:

    Стартовый скрипт; Меню; Fallback; Скрипт с выбором регистрации\авторизации; Скрипты регистрации; Скрипты авторизации.
     

    Перейдем к их созданию.

    Стартовый скрипт и скрипт с выбором регистрации\авторизации

    Стартовый скрипт будет активироваться всего раз после начала лидом диалога с ботом. В нем должно быть всего две команды: отправка сообщения с приветствием и переход на следующий скрипт. Переход можно сделать так же при помощи кнопки.

    image.png

    Скрипт с выбором регистрации\авторизации нужен для того чтобы пользователь не проходил лишний раз процесс регистрации. Если он уверен что уже регистрировался в боте с этого или другого лида, то он может сразу перейти к процессу авторизации.

    2. Для данного скрипта нам нужно добавить команду Отправить текст с объяснением, что пользователю делать дальше, и две кнопки меню: одна с переходом к регистрации, другая с переходом к авторизации.

    image.png

    Скрипт меню и Fallback

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

    3. Мы рекомендуем создать в данном скрипте кнопку с выходом из аккаунта в Скрипт с выбором, чтобы пользователь мог зарегистрироваться в боте по другой почте.

    image.png

    Скрипт Fallback — это скрипт, который будет выполняться в том случае, если пользователь ввел вопрос/намерение или фразу не заложенные в базе знаний вашего бота.

    4. В свойствах данного скрипта следует установить тип Fallback:

    image.png

    В данном уроке мы попробуем интересный способ реализации данного скрипта.

    image.png

    При помощи JS скрипта можно сделать бота более живым и дать ему несколько вариантов ответа на нестандартную реакцию пользователя:

    var randomStrings = [
            "Извините, я Вас не понял. Следуйте указаниям меню.",
            "Попробуйте воспользоваться разделами меню.",
            "Можете выбрать один из предложенных вариантов ответов."
        ];
    
    randomIndex = Math.ceil((Math.random()*randomStrings.length-1));
    
    lead.setAttr('randomAnswer', randomStrings[randomIndex]);

    5. В скрипте случайным образом выбирается индекс для массива ответов, тем самым выбирается случайный ответ. Далее полученный ответ выводится лиду в команде Отправить текст.

    6. Затем нужно добавить команду Повторить вопрос, чтобы бот мог вернуться к последнему сообщению отправленному пользователю перед переходом в данный скрипт.

    Основные скрипты для работы бота созданы. Перейдем к созданию регистрации и авторизации.

    Скрипты регистрации

    В процессе регистрации бот будет собирать данные у пользователя, затем проверять почту пользователя на занятость и создавать персону с собранными данными.

    Нам потребуются следующие скрипты:

      Скрипты сбора данных; Скрипт проверки; Скрипт проверки почты; Скрипт "Почта занята"; Создание персоны.

      Перейдем к их созданию.

      Скрипты сбора данных

      Данные скрипты предназначены для того, чтобы узнать информацию о пользователе. Это может быть имя, дата рождения, пол и т.д.

      1. В таком скрипте нужно создать команду Запросить значение, команду перехода на следующий скрипт и команду перехода на скрипт проверки.

      Для примера разберем скрипт сбора информации об имени:

      image.png

        Первым делом бот запрашивает имя пользователя. Затем происходит проверка: если пользователь передумал и ввел одно из ключевых слов, указанных в условии, то регистрация прерывается и бот переходит к Скрипту выбора. Данную проверку можно добавлять после каждой команды Запросить значение. Далее бот запрашивает фамилию пользователя и снова выполняет проверку. Затем бот проверяет существует ли тег исправление. Если его нет, то происходит переход к следующему скрипту сбора данных. Если же тег был найден, то бот переходит к скрипту проверки.

        Проверка на прерывание регистрации:

        if (['отмена','назад','выход','стоп'].indexOf(lead.getAttr('lead_name').toLowerCase()) >= 0) {
        return true;
        }

        Данные скрипты необязательны и их может быть как много, так и вообще не быть.

        Скрипт проверки

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

        2. В скрипте проверки нужно создать две команды: команду Добавить тег исправление и Отправить текст со всеми ранее собранными данными.

        image.png

        3. Для всех данных нужно добавить в меню кнопку с переходом на скрипт запроса этих данных. Так же в меню должна быть кнопка перехода на скрипт ввода почты.

        image.png

        Скрипт проверки почты

        В данном скрипте бот будет узнавать почту пользователя и проверять ее на занятость.

        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.

        image.png

        Скрипт "Почта занята"

        8. Этот скрипт должен содержать всего две команды: отправка текста с оповещением и переход к скрипту запроса почты.

        image.png

        Скрипт создания персоны

        В данном скрипте происходит создание персоны с заданной почтой и переход к авторизации.

        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. Затем отправляем текст с оповещением пользователя о завершении регистрации и добавляем в меню кнопку с переходом к авторизации.

        image.png

        Скрипты авторизации

        В процессе авторизации бот будет узнавать почту у пользователя, затем проверять ее на занятость и отправлять PIN на нее для авторизации.

        Нам потребуются следующие скрипты:

          Скрипт запроса почты;
          Скрипт проверки почты; Скрипт отправки PIN; Скрипт ввода PIN; Скрипт проверки PIN.

          Перейдем к их созданию.

          Скрипт запроса почты

          В этот скрипт пользователь попадает из Скрипта выбора.

          Тут повторяются команды из скрипта запроса почты для регистрации.

          1. Запрашиваем почту у пользователя со следующим регулярным выражением: (отмена|[^@\s]+@[^@\s]+\.[^@\s]+).

          2. Далее выполняем проверку на прерывание регистрации.

          3. Последней командой добавляем вывод почты для проверки пользователю.

          image.png

          5. В меню данного скрипта добавляем кнопки перехода к следующему скрипту авторизации, замены почты и Скрипту выбора.

          image.png

          Для исправления почты нужно добавить еще один скрипт, в котором будет находиться только команда перехода к скрипту ввода почты.

          Скрипт проверки почты

          Данный скрипт так же повторяет команды регистрации.

          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);
          }

          image.png

          Скрипт отправки PIN

          7. В данном скрипте следует создать генератор PIN-кода и команду отправки письма на почту.

          //Генерируем временный пароль------------------------------------------------------------
          
          let password = String(Math.floor(Math.random() * (100000 - 10000 + 1) + 10000));
          
          //---------------------------------------------------------------------------------------
          
          lead.setAttr('password', password);

          image.png

          8. В меню добавляем кнопки перехода к следующему скрипту авторизации, повторной отправки PIN и Скрипту выбора.

          image.png

          Для повторной отправки PIN нужно добавить еще один скрипт, в котором будет находиться только команда перехода к скрипту отправки PIN.

          Скрипт ввода PIN

          9. В данном скрипте нужны команды запроса PIN и перехода к скрипту проверки PIN.

          image.png

          Скрипт проверки PIN и "Неверный PIN"

          В скрипте проверки сравниваются отправленный на почту PIN и PIN введенный пользователем.

          10. Для проверки добавляем команду с условием при выполнении которого будет вызываться скрипт "Неверный PIN".

          Можно так же добавить тег авторизовался.

          11. Последним делом добавляем команду перехода в меню.

          image.png

          12. В скрипте "Неверный PIN" добавляем команду отправки текста с оповещением о неправильном PIN-коде.

          13. В меню добавляем следующие кнопки:

            Запрос PIN; Отправка PIN; Запрос почты; Скрипт выбора регистрации\авторизации.

            image.png

            Бот завершен! Теперь при регистрации в нем на вкладке Персоны платформы будут создаваться персоны:

            image.png

            Поздравляем вас с прохождением урока!