Расширение функций бота

Добавление новой команды

Очень часто для разграничения доступа к данным/функционалу бота необходимо получить личные данные пользователя и подтвердить личность (провести авторизацию пользователя). Чаще всего для этого используется номер телефона пользователя и одноразовый пароль, который отправляется в SMS.

Дополним стандартный функционал бота новой командой: авторизация по номеру телефона.

Для этого перейдите в папку Sample Bots и создайте новый процесс с названием /auth. Новый процесс пока что содержит 2 стандартных узла, позднее мы наполним его логикой.

Работа с конфигурацией в Bot Platform

Для добавления логики авторизации, нам необходимо произвести ряд изменений в стандартных процессах Bot Platform. Общий алгоритм работы процесса авторизации представлен на схеме:

img

Commands

Каждый бот состоит из совокупности функций. В парадигме Bot Platform 2.0, каждая функция - это отдельный процесс, который вызывается с помощью команды. Формат команды имеет конструкцию: “/” + название команды. Вызов необходимого процесса происходит с помощью стандартного процесса Router, который обращается в диаграмму состояний Commands для получения связки данных “команда: process_id”, где process_id - ID процесса, который необходимо вызвать.

Согласно этой конструкции, команда для запуска функции (процесса) авторизации будет называться /auth.

Для того, чтобы команда /auth запустила процесс авторизации, нам необходимо добавить в диаграмму состояний Commands заявку, которая будет хранить связку “название команды: ID процесса”.

Для этого нужно добавить конфигурационную заявку:

  1. Откройте диаграмму состояний Commands (в папке Config).
  2. Переведите процесс в режим View.
  3. Нажмите “+ New task” и заполните данные заявки: img

где:

REF - название процесса/команды (в данном случае: /auth).

process_id - ID процесса: /auth

Нажмите Add task.

Теперь если отправить боту команду “/auth”, процесс Router будет получать идентификатор процесса из диаграммы состояний Commands и запускать процесс /auth.

Localization

Общение с ботом происходит в формате “вопрос-ответ”. Для того, чтобы получить номер телефона пользователя, бот должен запросить номер у пользователя, а пользователь отправить свой номер телефона.

Отредактируйте заявку с текстами в диаграмме состояний Localization, добавив в нее текст сообщения и подпись для кнопки запроса телефона:

    {
        "askPhone": {
            "ru": "Пожалуйста, нажмите кнопку для отправки номера телефона",
            "ua": "Будь ласка, натисніть кнопку для відправки номера телефону",
            "en": "Please press the button to share your phone number"
        },
        "sharePhone": {
            "ru": "Отправить мой номер телефона",
            "ua": "Надіслати мій номер телефону",
            "en": "Share my phone number"
        }
    }

Attachments

Мессенджеры предоставляют возможность получить номер телефона, если пользователь нажмет на специальную кнопку:

Мессенджер Параметр Пример кнопки
Viber "ActionType":"share-phone" {"Columns": 6,"Rows": 1,"BgColor": "#F3F3F3","Text": "","ActionType": "share-phone","ActionBody": "phone"}
Telegram "request_contact":true {"request_contact": true,"text": ""}
Facebook Messenger "content_type":"user_phone_number" {"content_type": "user_phone_number"}

Для этого вам необходимо добавить в диаграмму состояний Attachments шаблон приложения, в котором будет 2 кнопки:

  • для отправки номера телефона;
  • для выхода в главное меню.

Добавьте новую заявку со следующим содержанием:

REF: sharePhone

    {
        "facebook": {
            "type": "quick_replies",
            "buttons": [{
                    "content_type": "user_phone_number"
                },
                {
                    "content_type": "text",
                    "title": "{{t'/exit}}",
                    "payload": "/exit"
                }
            ]
        },
        "telegram": {
            "type": "keyboard",
            "buttons": [
                [{
                    "request_contact": true,
                    "text": "{{t'sharePhone}}"
                }],
                [{
                    "text": "{{t'/exit}}"
                }]
            ]
        },
        "viber": {
            "type": "keyboard",
            "buttons": [{
                    "Columns": 6,
                    "Rows": 1,
                    "BgColor": "#F3F3F3",
                    "Text": "{{t'sharePhone}}",
                    "ActionType": "share-phone",
                    "ActionBody": "phone"
                },
                {
                    "Columns": 6,
                    "Rows": 1,
                    "BgColor": "#F3F3F3"
                    "Text": "{{t'/exit}}",
                    "ActionType": "reply",
                    "ActionBody": "/exit"
                }
            ]
        }
    }

Обратите внимание! Ранее в диаграмме Localization был добавлен текст кнопки для отправки номера телефона в ключе локализации "sharePhone". Этот ключ мы будем использовать для подстановки локализированных текстов в наши кнопки:

"Text": "{{t'sharePhone}}" и "Text": "{{t'/exit}}"

Когда пользователь нажмет эту кнопку, в процесс Receiver соответствующего мессенджера поступит объект с номером телефона пользователя, который в дальнейшем можно использовать для авторизации пользователя или других бизнес-процессов.

Авторизация пользователей по номеру телефона

Найдено совпадений ""

    Не найдено ""

    Вы бы порекомендовали Вашим коллегам документацию Corezoid.com для изучения?
    Введите, пожалуйста, Ваш email для обратной связи
    Спасибо!