Wiki

Интерактивные действия

Как это работает

Например, при нажатии на кнопку, прикрепленную ботом к комментарию, на сконфигурированный вами URL будет отправлен HTTPS POST запрос с информацией о том, на какую конкретно кнопку нажал пользователь. Вы, как разработчик, можете обработать этот запрос и: либо вернуть обновленный комментарий, в котором была нажата кнопка, либо вернуть пустой ответ с HTTP STATUS 200, если обновление комментария не требуется. С личными сообщениями и событиями - аналогично.

Как задать URL обработки интерактивных действий

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

Для того чтобы защитить данные, URL для интерактивных действий должен использовать HTTPS с валидным сертификатом.
Как только вы введете URL, мы отправим запрос с параметром challenge, и ваш сервер должен будет ответить отправленным нами значением.
Пример запроса:

{"requestType":4,"request":{"challenge":"***"},"lng":null,"token":"***"}

Пример ответа:
{token:"***", response:{challenge:"***"}}

Как только вы увидите, что Url провалидирован, можете включать интерактивные действия и нажимать кнопку "Сохранить".

Как бот может добавить кнопки

Необходимо просто создать комментарий (https://events-api.webmoney.ru/Help/Api/POST-Discuss-BotPost), событие (https://events-api.webmoney.ru/Help/Api/POST-Event-BotPost) или личное сообщение (https://events2-api.webmoney.ru/Help/Api/POST-Message-BotPost), заполнив поле attachedActions.
Пример такого комментария в интерфейсе Events Webmoney:

Запросы по нажатию на кнопку

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

Пример 1. Кнопка в комментарии

{"attachmentUid":"0","actionUid":"3","userWmid":"***","request":{ *** },"lng":"ru-RU","token":"***","requestType":"3"}

"attachmentUid": идентификатор блока интерактивных действий (заданный вами при создании комментария);
"actionUid": идентификатор действия (заданный вами при создании комментария);
"userWmid" - wmid пользователя, которой инициировал действие;
"Id" - идентификатор комментария;
"parentId" - идентификатор родительского комментария (может быть null);
"eventId" - идентификатор события, в котором был создан комментарий;
"groupUid" - идентификатор группы;
"dateCreated" - дата создания события;
"dateLastUpdated" - дата последнего редактирования события;
"lng" - язык пользователя на сайте в момент вызова команды ("ru-RU" или "en-US");
"token" - токен, выданный при создании бота;
"requestType":"3" - тип запроса "интерактивные действия".
"request" - описание (json)

Пример 2. Кнопка в событии

{"attachmentUid":"0","actionUid":"3","userWmid":"***","request":{ *** },"lng":"ru-RU","token":"***","requestType":"3"}

"eventId" - идентификатор события;
"groupUid" - идентификатор группы;
"request" - описание (json)
остальные поля - см. в примере 1.

Пример 3. Кнопка в личном сообщении

{"attachmentUid":"0","actionUid":"3","userWmid":"***","request":{ *** },"lng":"ru-RU","token":"***","requestType":"3"}

"Id" - идентификатор личного сообщения;
"request" - описание (json)
остальные поля - см. в примерах выше.

Мгновенная реакция на нажатие кнопки пользователем

По нажатию на кнопку у вас, как у разработчика бота, есть возможность обновить комментарий, событие или личное сообщение, ответив на запрос-уведомление о нажатии кнопки (см. выше). Это необходимо для того, чтобы показать результат нажатия на кнопку пользователем. Если реакции не последует, пользователь может не понять, например, нажал он на кнопку или промахнулся. Поэтому мы рекомендуем не оставлять действие пользователя без реакции.
Важно! Ответ должен последовать в течении 3 секунд, иначе никакой реакции не последует.

Описание ответов

1. Клик по кнопке в комментарии

{"attachmentUid":"Uid","actionUid":"uid_accept","response":{"attachedActions":[{"actions":[
    {"data":{"text":"Yes","style":1},"uid":"uid_accept","type":0},
    {"data":{"text":"Not now","style":0},"uid":"uid_cancel","type":0}
   ],"uid":"Uid","title":"Хотите получать от бота новости?","type":0}],
 "attachments":null,"share":null,"message":"Принято","cleanWmid":false},
"token":"***"}

описание объекта response (исключая параметры discussId и groupUid)

2. Клик по кнопке в событии

{"attachmentUid":"Uid","actionUid":"uid_cancel","response":{"attachedActions":[{"actions":[
    {"data":{"text":"Yes","style":1},"uid":"uid_accept","type":0},
    {"data":{"text":"Not now","style":0},"uid":"uid_cancel","type":0}
  ],"uid":"Uid","title":"Хотите получать от бота новости?","type":0}],
 "message":"Принято","attachments":null,"share":null,"cleanWmid":false,"feed":0,"groupUid":null},
 "token":"***"}

описание объекта response (исключая параметр eventId)

3. Клик по кнопке в личном сообщении

{"attachmentUid":"Uid","actionUid":"1","response":{
    "postText":"Принято","attachedActions":[{"actions":[
        {"data": {"text":"Yes","style":1},"uid":"uid_accept","type":0},
        {"data":{"text":"Not now","style":0},"uid":"uid_cancel","type":0}
     ],"uid":"Uid","title":"Хотите получать от бота новости?","type":0}],
  "attachments":null,"share":null},"token":"***"}

описание объекта response (исключая параметр messageId)