| Правильная ссылка на эту статью: |
События
- Список событий
- Как это работает
- Как задать 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)