Правильная ссылка на эту статью: |
События
- Список событий
- Как это работает
- Как задать URL для событий
- Запросы при возникновении событий:
- Мгновенная реакция на события
Список событий¶
- Личное сообщение боту
- Сообщение в групповом чате
- Создание события в группе
- Редактирование события в группе
- Создание события с задачей
- Редактирование события с задачей
- Создание комментария в группе
- Редактирование комментария в группе
- Создание комментария к событию с задачей
- Редактирование комментария к событию с задачей
Как это работает¶
В настройках событий бота можно подписаться, например, на создание комментария в группе. Это означает, что при создании любого комментария в группах, в которые добавлен бот, на сконфигурированный вами 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)