Формат общения
Установите ActiveTag чтобы распознавать активные теги повсюду
для смартфона
для браузера
для мессенджера
Плагины для сайтов чтобы показывать активные теги
Предыдущее: архитектура взаимодействия.
В процессе работы потребителя с тегом обмен данными в обе стороны происходит по протоколу https в формате json. Давайте разберемся с запросами в каждом направлении и посмотрим примеры.
Запрос к бекенду
Формат запроса к бекенду регламентируется данной схемой, где обязательными полями являются:
$schema
(string) - версия JSON-схемы;client
(object) - информация о клиенте (тип, версия);activetag
(string) - активный тег;userID
(int) - идентификатор пользователя.
{ "$schema": "http://theactivetag.com/schemas/backend-request-1.0.schema.json", "client": { "name": "Browser", "version": "1.0.0" }, "language": "ru", "activetag": "activetag-hello", "userID": 1 }
Получив подобное сообщение, бекенду следует изучить его содержимое (в первую очередь поле activetag
) и дать ответ - предложить потребителю информацию о товаре, услуге или ином объекте.
Подробнее о назначении каждого поля запроса смотрите в справке по json-запросам.
Ответ бекенда
Отвечать следует в соответствие с этой схемой, где обязательными полями являются:
$schema
(string) - версия JSON-схемы;result
(array) - содержимое ответа.
Поле result
представляет собой массив элементов, среди которых могут быть:
markdown
- форматированный текст;text
- неформатированный текст;imgURL
- ссылка на изображение;videoURL
- ссылка на видео Youtube или Vimeo;- и другие.
Эти поля можно повторять и чередовать любое количество раз в одном ответе. Но следует помнить: чем короче и яснее содержание, тем быстрее потребитель доберется до желаемых действий.
Запрос на действия
А действия предлагаются потребителю в ответе бекенда через необязательный объект menu
. Это список элементов меню (кнопок) и прикрепленные к этим кнопкам поля для заполнения пользователем.
Названия элементов меню - произвольные. Набор связанных с ними полей для заполнения - тоже.
Однако, при выборе полей важно правильно указывать их тип, поскольку он определяет поведение данного поля на стороне клиента и он же учитывается в биллинге транзакций.
Пример ответа бекенда:{ "$schema": "http://theactivetag.com/schemas/backend-response-1.0.schema.json", "result": [ { "imgURL": "http://example.com/activetag.png" }, { "text": "Привет, я Активный тег!" "markdown": "Привет, я *Активный тег*!" } ], "menu": { "items": [ { "name": "Познакомиться", "url": "http://example.com/backend/hello", "req": [ { "type": "name", "name": "first_name", "title": "Ваше имя", "desc": "Как вас зовут?" } ] } ] } }
Подробнее о назначении каждого поля ответа и о типах полей - смотрите в справке по json-ответам.
Тег без артикула
На бекенд может поступить запрос с тегом, состоящим из одного основания, без артикула (adidas
или prodam
). Технически это обыкновенный тег, который ничем не отличается от тега с артикулом (adidas-ball
или prodam-avto
). В ответ на такие запросы принято сообщать информацию о компании, бренде или владельце основания.
Идемпотентность
Бекенд не обязан одинаково реагировать и давать одинаковый ответ на одинаковые запросы. Поведение бекенда диктуется исключительно интересами его владельца.
Ошибки
В случае возникновения ошибок на бекенде, следует возвращать их в ответе. Для этого в схеме предусмотрено поле error
, куда помещается код ошибки и текстовое ее описание. А отображаемое сообщение для потребителя размещаем в поле result
.
{ "$schema": "http://theactivetag.com/schemas/backend-response-1.0.schema.json", "error": { "code": 404, "desc": "Article not found" }, "result": [ { "text": "Артикул не найден." } ] }
Далее: json-запрос...