Посетитель нажал кнопку-ответ из сообщения, отправленного sendInteractiveButtons и sendButtons. Кнопки-ссылки, звонок и копирование уведомлений не дают: они работают сразу в окне.
typeWebhook |
incomingMessageReceived |
typeMessage |
buttonsResponseMessage |
| Флаг настроек | incomingWebhook |
| Каналы | чат на сайте |
Пример
Посетитель выбрал «Пробное занятие»:
{
"typeWebhook": "incomingMessageReceived",
"instanceData": {"idInstance": 7100000001, "wid": "sk3m7qz2a4bt6cdxy", "typeInstance": "site", "channel": "site"},
"timestamp": 1791823702,
"idMessage": "i7c1e5a0b3d9f2486ac0e1b7d3f5a9c42",
"senderData": {
"chatId": "vq3k7m2x4a6b2c4d6e7f2g3h4", "chatName": "Посетитель G-7K4MXQ", "chatType": "user",
"sender": "vq3k7m2x4a6b2c4d6e7f2g3h4", "senderName": "", "senderType": "user",
"senderContactName": "", "senderPhoneNumber": 0
},
"messageData": {
"typeMessage": "buttonsResponseMessage",
"buttonsResponseMessage": {
"stanzaId": "o2b7e41c09d8f3a6b5c4d2e1f0a9b8c",
"selectedButtonId": "trial",
"selectedButtonText": "Пробное занятие"
},
"siteMessageData": {
"ref": "G-7K4MXQ",
"page": {"url": "https://school.ru/prices", "title": "Цены"},
"referrer": "https://yandex.ru",
"utm": {"utm_source": "yandex", "utm_campaign": "autumn"},
"device": "mobile",
"lang": "ru",
"attributes": {}
}
}
}
Поля
| Поле | Описание |
|---|---|
buttonsResponseMessage.stanzaId |
idMessage сообщения с кнопками |
buttonsResponseMessage.selectedButtonId |
buttonId нажатой кнопки — как вы его задали |
buttonsResponseMessage.selectedButtonText |
надпись кнопки — из вашего сообщения, а не из браузера |
siteMessageData |
как у текста — см. Реплика с сайта |
Кнопки-ответы исчезают после выбора: на одно сообщение придёт не больше одного нажатия.
Как обработать
Ответить по выбранной кнопке:
def on_button(body: dict) -> None:
data = body["messageData"]
if data["typeMessage"] != "buttonsResponseMessage":
return
chat = body["senderData"]["chatId"]
choice = data["buttonsResponseMessage"]["selectedButtonId"]
if choice == "trial":
send_trial_form(chat) # например, sendForm с записью на пробное
send_trial_form — ваш код.
Что дальше
- sendInteractiveButtons и sendButtons — отправить кнопки.
- Ответ формой — ответ на форму.
