События

Список событий

  • Личное сообщение боту
  • Сообщение в групповом чате
  • Создание события в группе
  • Редактирование события в группе
  • Создание события с задачей
  • Редактирование события с задачей
  • Создание комментария в группе
  • Редактирование комментария в группе
  • Создание комментария к событию с задачей
  • Редактирование комментария к событию с задачей

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

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

Как задать URL для событий

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

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

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

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

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

Запросы при возникновении событий:

Пример 1. Личное сообщение:

{"botEvent":9,"request":{
     "author" : {"wmid":"***"},"Id":***,"dateCreated":"2017-10-06T13:50:56.153",
     "message":"string", "parentMessageId": 12
},"lng":"ru-RU","token":"***","requestType":"1"}

где "botEvent" - событие, на которое подписан бот ; "author" - информация об авторе; "Id" - идентификатор сообщения; "DateCreated" - дата создания личного сообщения; "message": текст личного сообщения; "parentMessageId" - идентификатор сообщения, на который был ответ (может быть null); "lng" - язык пользователя на сайте в момент вызова команды ("ru-RU" или "en-US"); "token" - токен, выданный при создании бота;"requestType":"1" - тип запроса "интерактивные действия".

Пример 2. Сообщение в групповом чате:

{"botEvent":9,"request":{
     "author" : {"wmid":"***"},"Id":***,"dateCreated":"2017-10-06T13:50:56.153",
     "message":"string", "parentMessageId": 12, chatUid: "uid" 
},"lng":"ru-RU","token":"***","requestType":"1"}

где "chatUid" - идентификатор группового чата, остальные поля см. в Примере 1.

Пример 3. Создание и редактирования события в группе:

{"botEvent":5,"request":{
     "id":***,"groupUid":"***","message":"string","dateCreated":"2017-10-06T14:27:18.324",
     "dateLastUpdated":"2017-10-06T14:27:18.328","author" : {"wmid":"***"}
},"lng":"ru-RU","token":"***","requestType":"1"}

где "Id" - идентификатор события; "groupUid" - идентификатор группы; "dateCreated" - дата создания события; "dateLastUpdated" - дата последнего редактирования события; "message": текст события; остальные поля см. в Примере 1.

Пример 4. Создание и редактирования события с задачей:

{"botEvent":6,"request": {
     "task":{
        "repeatOptions":null,"group":null,"author":"attestat":"персональный","bl":2,"tl":0,
        "cl":1,"Gender":1,"GenderStr":"male","lastLoginDate":"вчера",
        "lastLoginDateUtc":"2017-11-02T12:09:29+00:00","lastOnlineDate":"34 минуты назад",
        "lastOnlineDateUtc":"2017-11-03T08:57:52+00:00","status":0,"statusStr":"active","interactOpportunity":true,
        "userType":0,"icon":{
              "id":"2529607178060d362ff09a82f03b1631.png","isactive":true,"isDefault":false,
              "smallest":"https://img1-events.webmoney.ru/userpics/***/***/smallest.png",
              "tiny":"https://img2-events.webmoney.ru/userpics/***/***/tiny.png",
              "mini":"https://img1-events.webmoney.ru/userpics/***/***/mini.png",
              "small":"https://img1-events.webmoney.ru/userpics/***/***/small.png",
              "normal":"https://img2-events.webmoney.ru/userpics/***/***/normal.png",
              "large":"https://img1-events.webmoney.ru/userpics/***/***/large.png",
              "big":"https://img1-events.webmoney.ru/userpics/***/***/big.png",
              "original":"https://img2-events.webmoney.ru/userpics/***/***/original.png" 
       },"nickname":"***","wmid":"***"},
       "datecreated":"2017-11-03T09:32:31+00:00","dateend":null,"dateendutc":null,"datefinish":null,
       "executers":[
             {"taskStatus":2,"taskStatusStr":"confirmed","attestat":"персональный","bl":2,"tl":0,"cl":1,"Gender":1, 
               "GenderStr":"male", "lastLoginDate":"02.11.2017 15:09","lastLoginDateUtc":null,
               "lastOnlineDate":"03.11.2017 11:57", "lastOnlineDateUtc":null,
               "status":0,"statusStr":"active","interactOpportunity":true,"userType":0,"icon":null,"nickname":"***","wmid":"***"}
       ],
       "controllers":[
            {"taskStatus":2,"taskStatusStr":"confirmed","attestat":"персональный","bl":5,"tl":0,"cl":1,"Gender":1,
              "GenderStr":"male","lastLoginDate":"02.11.2017 15:09","lastLoginDateUtc":null,
              "lastOnlineDate":"03.11.2017 11:57","lastOnlineDateUtc":null,
              "status":0,"statusStr":"active","interactOpportunity":true,"userType":0,"icon":null,"nickname":"***","wmid":"***"}
        ],
       "status":{"value":1,"valueStr":"launched","name":"Задача выполняется","procent":0.0},
        "type":0,"typeStr":"regular","importance":0,"importanceStr":"notImportant","statusadditionally":null,
        "actions":[{"type":8,"typeStr":"executerDone","participants":null,"desc":null}],
        "roles":[{"role":1,"roleStr":"author"},{"role":2,"roleStr":"executer"},{"role":3,"roleStr":"controller"}],
        "executerprice":null,"controllerprice":null,"purseType":null,"purseTypeStr":null,"taskMessage":null
    },
    "id":***,"groupUid":"***","message":"mes","dateCreated":"2017-11-03T12:32:31.553",
    "dateLastUpdated":"2017-11-03T12:32:32.3830379+03:00", "author" : {"wmid":"***"}},"lng":"ru-RU","token":"***",
     "requestType":"1" 
}

Описание поля "task" здесь, остальные поля см в примерах выше.

Пример 4. Создание и редактирования комментария в группе:

{"botEvent":2,"request":{
     "id":***, "parentId": ***, "eventId":***,"groupUid":"***","message":"string",
     "dateCreated":"2017-10-06T15:15:26.5468482+03:00","dateLastUpdated":"2017-10-06T15:15:26.5468482+03:00",
     "author" : {"wmid":"***"}
},
"lng":"ru-RU","token":"***","requestType":"1"}

где "Id" - идентификатор комментария; "parentId" - идентификатор родительского комментария (может быть null); "eventId" - идентификатор события, в котором был создан комментарий; "dateCreated" - дата создания события; "dateLastUpdated" - дата последнего редактирования события; "message": текст комментария; остальные поля - см. в примерах выше.

Мгновенная реакция на события

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

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

"botEvent" - событие, на которое подписан бот

1. Личное сообщение боту

{"botEvent":9,"response":{"shortUrl":false,"postText":"Hello I am bot!","files":null, 
  "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}]},
  "token":"***"}

Описание объекта response (исключая corsWmid)

2. Сообщение в групповом чате

{"botEvent":9,"response":{"shortUrl":false,"postText":"Hello I am bot!","files":null, chatUid: "123",
  "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}]},
  "token":"***"}

Описание объекта response (исключая corsWmid)

3. Создание события в группе и события с задачей

{"botEvent":***,"response":{
  "author":null,"sharer":null,"directedAccess":null, "subscribe":false, "actions":null,"files":null,
  "shortUrl":false,"postText":"text",
  "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}]},
  "token":"***"}

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

4. Редактирование события в группе и события с задачей

{"botEvent":***,"response":{
     "author":null,"sharer":null,"directedAccess":null, "subscribe":false,
     "actions":null,"files":null,"shortUrl":false,"postText":"text", parentId="null",
     "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}]},
},
"token":"***"}

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

5. Создание и редактирование комментария в группе и комментария в событии с задачей

{"botEvent":***,"response":{  
     "author":null,"sharer":null,"directedAccess":null,"attachedActions":null,"item":null,
     "subscribe":false,"actions":null,"files":null,"shortUrl":false,"postText":"Mes",
     "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}]},
},"token":"***"}

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