Үлгүсүз меню жана жооп баскычтары
POST /v1/messages/send аркылуу кардарга интерактивдүү билдирүү жөнөтсө болот: тизме-меню же жооп баскычтары. Бул үчүн үлгү да, Meta жактыруусу да керек эмес. Чат-боттор үчүн ыңгайлуу: кардар «Старт» деп жазат, ботуңуз жооп катары менюну көрсөтөт.
Эки түрү
| type | Кардар эмнени көрөт | Варианттар |
|---|---|---|
list | Билдирүүнүн астында бир баскыч, мисалы «Менюну ачуу». Басканда тизме ачылат, кардар бир пунктту тандайт | 10го чейин |
buttons | Баскычтар билдирүүнүн текстинин так астында | 3кө чейин |
Кардарда кандай көрүнөт
Менюсу бар билдирүү: аталыш, текст, кол тамга жана «Менюну ачуу» баскычы.

Басканда пункттардын тизмеси ачылат. Сол жакта телефон, оң жакта компьютердеги WhatsApp.
Кардар пунктту басат, анын тандоосу пункттун id менен вебхугуңузга келет.
Качан жөнөтсө болот
- WhatsApp Business API линияларында гана (
whatsapp_waba). Башка линиялар үчүн API 400 катасын кайтарат. - Кардардын акыркы билдирүүсүнөн кийин 24 саат ичинде гана. Бул WhatsApp эрежеси: терезеден тышкары үлгү гана жөнөтсө болот. Терезе жабылса, WhatsApp билдирүүнү кабыл албайт, ал эми статус вебхугуна ката келет.
- Тизме-менюну үлгүгө жана жалпы жөнөтүүгө кошууга болбойт, бул да WhatsApp эрежеси. Үлгүдө 10го чейин тез жооп баскычын жасаса болот: кабинеттеги «Үлгүлөр» бөлүмү.
URL
POST https://api.wazzabee.com/api-gateway/v1/messages/send
Аталыштар
Authorization: Bearer СИЗДИН_API_АЧКЫЧЫҢЫЗ
Content-Type: application/json
interactive талаасынын параметрлери
| Параметр | Түрү | Милдеттүү | Сүрөттөмө |
|---|---|---|---|
type | string | ✅ | list же buttons |
body | string | ✅ | Билдирүүнүн тексти: менюда 4096 белгиге чейин, баскычтарда 1024кө чейин |
header | string | Жок | Тексттин үстүндөгү аталыш, 60 белгиге чейин |
footer | string | Жок | Тексттин астындагы майда жазуу, 60 белгиге чейин |
button | string | list үчүн ✅ | Менюну ачкан баскычтын жазуусу, 20 белгиге чейин |
rows | array | list үчүн ✅* | Меню пункттары: id 200 белгиге чейин, title 24кө чейин, description 72ге чейин (милдеттүү эмес). Баары 10 пунктка чейин |
sections | array | list үчүн ✅* | Бөлүмдөргө бөлүнгөн пункттар: { "title": "...", "rows": [...] }. 10 бөлүмгө чейин, аталышы 24 белгиге чейин, бөлүм бирден көп болсо милдеттүү. Баары 10 пунктка чейин |
buttons | array | buttons үчүн ✅ | 1ден 3кө чейин баскыч: id 256 белгиге чейин, title 20га чейин |
* Меню үчүн rows же sections жөнөтүңүз.
interactive талаасын text, mediaUrl жана templateName менен бирге жөнөтүүгө болбойт: билдирүүнүн тексти interactive.body ичине жазылат. Пункттардын жана баскычтардын id, ошондой эле баскычтардын жазуулары кайталанбашы керек. Суроонун башка талаалары (channelId, chatId, campaignId, senderName, automated) кадимкидей иштейт, караңыз: Билдирүүлөрдү жөнөтүү.
Мисал: алты пункттан турган меню
curl -X POST "https://api.wazzabee.com/api-gateway/v1/messages/send" \
-H "Authorization: Bearer СИЗДИН_API_АЧКЫЧЫҢЫЗ" \
-H "Content-Type: application/json" \
-d '{
"channelId": "линияңыздын-uuid",
"chatId": "996555123456",
"interactive": {
"type": "list",
"header": "Башкы меню",
"body": "Саламатсызбы! Сизди эмне кызыктырарын тандаңыз",
"footer": "9:00дөн 19:00гө чейин иштейбиз",
"button": "Менюну ачуу",
"rows": [
{ "id": "prices", "title": "Баалар", "description": "Тарифтер жана баасы" },
{ "id": "catalog", "title": "Каталог" },
{ "id": "delivery", "title": "Жеткирүү жана төлөм" },
{ "id": "order_status", "title": "Заказдын абалы" },
{ "id": "address", "title": "Дарек жана график" },
{ "id": "manager", "title": "Менеджер менен байланыш" }
]
}
}'
Мисал: бөлүмдөрү бар меню
"interactive": {
"type": "list",
"body": "Кызматты тандаңыз",
"button": "Кызматтар",
"sections": [
{ "title": "Чач кырктыруу", "rows": [
{ "id": "cut_men", "title": "Эркектерге" },
{ "id": "cut_women", "title": "Аялдарга" }
]},
{ "title": "Боёо", "rows": [
{ "id": "color_full", "title": "Толук боёо" }
]}
]
}
Мисал: жооп баскычтары
"interactive": {
"type": "buttons",
"body": "Эртең саат 10:00гө жазылууну ырастайсызбы?",
"buttons": [
{ "id": "confirm", "title": "Ооба, барам" },
{ "id": "reschedule", "title": "Которуу" },
{ "id": "cancel", "title": "Жокко чыгаруу" }
]
}
Жооп (202)
{
"success": true,
"queued": true,
"queueId": "uuid",
"campaignId": null,
"message": "Сообщение поставлено в очередь на отправку"
}
Каталар (400)
Чектөөлөр жөнөтүүгө чейин дароо текшерилет. Бир нерсе туура эмес болсо, API 400 кайтарып, кайсы талааны оңдоо керектигин жазат. Ката тексттери орус тилинде, мисалы:
{ "error": "В меню не больше 10 пунктов всего, сейчас 11" }
{ "error": "interactive.rows[2].title: не длиннее 24 символов" }
{ "error": "interactive доступен только для линий WhatsApp Business API (whatsapp_waba)" }
Кардар эмнени тандаганын кантип билүүгө болот
messages_button жазылуусун күйгүзүңүз (караңыз: Webhooks). Кардар меню пунктун тандаганда же баскычты басканда окуя келет:
{
"buttons": [{
"messageId": "uuid",
"channelId": "uuid",
"chatId": "996555123456",
"contactId": "uuid",
"conversationId": "uuid",
"button": {
"type": "list_reply",
"id": "prices",
"title": "Баалар",
"description": "Тарифтер жана баасы"
},
"replyTo": {
"messageId": "uuid",
"queueId": "uuid",
"campaignId": null,
"broadcastId": null
},
"timestamp": "2026-10-03T12:00:00Z"
}]
}
Меню пункту үчүн button.type маани list_reply, жооп баскычы үчүн button_reply. button.id ичинде сиздин id келет, ал аркылуу бот сценарийин андан ары улантуу оңой. replyTo.queueId кардар кайсы жөнөтүүгө жооп бергенин көрсөтөт.
Оператор эмнени көрөт
Кабинеттин чатында билдирүү текст жана анын астындагы меню пункттары же баскычтар түрүндө көрсөтүлөт, кардар кандай көрсө, ошондой. Кардардын тандоосу чатка пункттун аталышы менен кадимки кирген билдирүү болуп келет.
