Авторизация с помощью проверочного кода в email или sms

Последние изменения: 28.02.2023

Авторизация по коду используется для безопасного входа пользователей, и может использоваться как отдельно, так и как часть двухфакторной авторизации. В Sherlock Platform имеется возможность настроить авторизацию пользователя по коду, отправленному на email или по SMS.

Сценарий 1.0 Инициализация

________1______________.jpg


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

________1_______________________________.png


Далее с помощью команды «Переход к теме» необходимо перенаправить пользователя к следующему сценарию: «Авторизация».

Сценарий 1.1 Авторизация

_________1_1____________.jpg

В сценарии «Авторизация» с помощью команды «Сообщение клиенту» необходимо запросить у пользователя Email или телефон в зависимости от того, каким способом будет реализована авторизация.

После сообщения нужно добавить команду «Получение данных». Данная команда нужна для ожидания получения данных (клиент введёт свой номер телефона или же email). Внутри команды необходимо указать код переменной, в которую мы запишем номер телефона или Email клиента. Так же необходимо указать сценарий проверки полученных данных, к которому мы направим клиента.

________2_________________.png

Сценарий 1.2 Обработка полученных данных и отправка кода клиенту

_________1_2____________________________.jpg

В следующем сценарии нам необходимо проверить правильность введённого Email или телефона.

В случае, если номер или Email введен неверно, необходимо уведомить пользователя с помощью команды «Сообщение клиенту» и отправить его к предыдущему сценарию командой «Переход к теме» для повторного ввода данных.
В командах «Сообщение клиенту» и «Переход к теме» необходимо указать условие, по которому введённый телефон или Email будут считаться неправильными.

________3_________________.png

Более подробно о проверках ввода пользователя вы можете узнать в этой статье: Валидация и проверка введённых данных различного формата

После того, как убедились, что данные введены верно, в этом же сценарии необходимо сгенерировать проверочный код, который мы будем отправлять пользователю. Сделать это можно командой «Установка переменной контекста». Примерная настройка выглядит так:

________4_______________________________.png

Далее сгенерированный код необходимо отправить пользователю. В случае, если пользователь оставлял телефон, используем специальные сервисы для смс-рассылок. Для примера мы воспользовались сервисом rapporto.ru. Для отправки смс с кодом используется команда «Внешний запрос».
В запрос на отправку смс мы вставили 2 переменные:

  1. номер телефона клиента

  2. Проверочный код, который сгенерировали ранее.

________5_______________.jpg

 

Если для авторизации используется Email, то для отправки кода на почту используется команда
«Уведомление»

________6____________.jpg

Обратите внимание, для отправки сообщений на Email предварительно в системе должен быть настроен SMTP сервер!

Далее после отправки кода, в этом же сценарии, вне зависимости от способа авторизации (Телефон/Email), устанавливаем переменную счётчика и плюсуем 1. Также необходимо установить ещё одну переменную SmsSendDate, которая поможет нам отслеживать время с последней отправки кода клиенту и поможет предотвратить спам при запросе кода. И последняя переменная будет SmsCheckCode.

mceclip0.png


 

Далее, используя команду «Сообщение клиенту», просим пользователя ввести полученный код и запрашиваем код от клиента, используя команду «Получение данных»:

________7_________________.png

Также добавим кнопку для направления пользователю нового кода. Кнопка при нажатии будет перезапускать данный сценарий.

Сценарий 1.3 Проверка кода авторизации

_________1_3__________________________.jpg

Затем в новом сценарии необходимо проверить правильность введённого кода.

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

________8__________________________.jpg


Далее в этом же сценарии устанавливаем переменную SmsCheckCode и прибавляем к ней 1.

________9_______________________________.png

На правильный ввод кода пользователю даётся 3 попытки. Если пользователь все три раза ввёл неверный код, то данный код становится недействительным. Для этого очищаем переменную сгенерированного кода командой «Установка переменной контекста».

________10_______________________________.png

 

В команде «Получение данных» мы ждём повторного ввода кода пользователем 3 раза. В условиях команды сверяем сгенерированный код с кодом полученным от клиента.

________10_________________.png



Также в данном сценарии добавляем кнопку [Направить новый код], которая перенесёт пользователя к следующему сценарию «Повторная отправка кода».

Сценарий 1.4 Повторная отправка кода

_________1_4________________________.jpg

В сценарии повторной отправки кода первым делом устанавливаем переменную контекста.
Переменная SmsNextSendDate будет хранить в себе информацию о времени повторной отправки кода.

________12_______________________________.png

Далее, используя команду «Переход к теме», перенаправляем пользователя на сценарий с отправкой кода.

________13___________________.jpg

Затем, командой «Установка переменной контекста» форматируем дату и время к нужному нам виду:

________14_______________________________.png

Если пользователь будет пытаться выслать код повторно слишком часто, ему можно показать следующее сообщение:

________15__________________.png

В самом конце сценария необходимо добавить кнопку [Направить новый код], которая будет перезапускать данный сценарий.

Помогла ли вам статья?