Запитати ШІ
Українська UK
Перейти до Watbot

Вбудовані змінні

Частину даних код отримує без виклику функцій — у готових змінних JavaScript. Набір залежить від блоку, у якому виконується код.

Дані контакту

В усіх блоках, крім «Вхідного Webhook», дані контакту, для якого виконується код, доступні одразу. У «Вхідному Webhook» вони з'являються після того, як код знайде контакт функцією вибору контакту.

Змінна Що в ній
id ID контакту на платформі
bot_id ID бота
name Ім'я контакту повністю
first_name Перше слово імені
last_name Друге слово імені
phone Телефон
email Пошта
address Адреса
username Ім'я користувача в месенджері: @flower_lover у Telegram і MAX, id123456 у ВКонтакте
telegram_id ID людини в Telegram
max_id ID людини в MAX
created_at Коли контакт з'явився в бота, у вигляді 2026-01-31 12:00:00 (UTC)

Значення — рядки, зокрема id і bot_id. У «Вхідному Webhook» id і bot_id надходять числами, тому для порівняння зводьте їх до одного вигляду: Number(id) === 12345.

Якщо в контакту чогось немає — наприклад, телефону, — змінної не буде зовсім, і звернення до неї зупинить код із помилкою ReferenceError. Перевіряйте такі змінні через typeof:

if (typeof phone !== 'undefined') {
    setContactVariable('телефон_для_доставки', phone);
} else {
    sendMessage('Залиште, будь ласка, телефон для кур\'єра.');
}

У «Вхідному Webhook» після вибору контакту є ще кілька змінних — теж лише якщо в контакту є значення:

Змінна Що в ній
start_message Перше повідомлення, яке контакт надіслав боту
amocrm_lead_id, amocrm_contact_id ID угоди й контакту в amoCRM
bitrix_lead_id, bitrix_deal_id, bitrix_contact_id ID ліда, угоди й контакту в Бітрікс24

Змінні контакту й глобальні змінні бота готовими змінними не надходять — їх читають функціями getContactVariable і getGlobalVariable.

Відповідь сервера

У коді блоку «HTTP-запит» відповідь сервера лежить в об'єкті response:

Поле Що в ньому
response.status Код відповіді, число: 200, 404 і так далі
response.body Тіло відповіді рядком, як воно надійшло
response.data Тіло відповіді, розібране як JSON. Якщо відповідь не у форматі JSON, тут порожній об'єкт {}

Код запускається, лише коли сервер відповів. Якщо відповіді немає — сервер не відповів за час із поля «Timeout» або з'єднання не встановилося, — блок іде виходом «Нема відповіді», і код не виконується. Відповідь із кодом помилки, наприклад 500, — звичайна відповідь: код виконається, перевірте response.status самі.

Код виконується після решти налаштувань блоку: змінні з «Записати відповідь json у змінні» на цей час уже записано.

if (response.status !== 200) {
    sendMessage('Служба доставки зараз недоступна, спробуйте пізніше.');
    disableContinue();
} else if (response.data.slots && response.data.slots.length > 0) {
    setContactVariable('найближча_доставка', response.data.slots[0].time);
} else {
    sendMessage('На сьогодні вільних вікон доставки немає.');
}

Вхідний запит

У коді блоку «Вхідний Webhook» запит, що надійшов, лежить в об'єкті request:

Поле Що в ньому
request.query Параметри з рядка запиту. Значення — рядки
request.headers Заголовки запиту. Імена — малими літерами: request.headers['content-type']
request.body Тіло запиту рядком, як воно надійшло
request.data Усі параметри запиту разом: з рядка запиту, з форми й з тіла у форматі JSON. Числа й логічні значення з JSON лишаються числами й true/false

Якщо в запиті немає параметрів, request.query — порожній об'єкт. Звертайтеся до вкладених полів із перевіркою, щоб код не зупинився на undefined:

var order = request.data.order;

if (order && order.contact_id && setContactById(order.contact_id)) {
    setContactVariable('номер_замовлення', String(order.id));
    sendMessage('Замовлення №' + order.id + ' зібрано й передано кур\'єрові.');
}

Якщо відправник підписує запити, підпис можна перевірити функцією hash_hmac — за request.body і заголовком із підписом.

Рядки таблиці

У коді блоку «Читання записів з Google Таблиці» знайдені рядки лежать у sheet.data — масиві рядків, де кожен рядок — масив клітинок.

  • У sheet.data лише рядки, що пройшли фільтри блоку, і не більше, ніж зазначено в «Кількість записів в повідомленні».
  • Клітинки — рядки. Перша клітинка масиву — стовпець A.
  • Блок завантажує стовпці до найправішого з тих, що згадані в його налаштуваннях. Щоб коду дісталися й інші стовпці, викличте на початку коду setColumnRange("A:F") з потрібним діапазоном — блок прочитає цей виклик до запиту до таблиці. Порожніх клітинок наприкінці рядка Google не надсилає, тому довжина рядків може різнитися.
  • Якщо рядків не знайшлося, код не виконується: блок іде виходом «Записи не знайдено».
setColumnRange("A:C");

var rows = sheet.data;
var total = 0;

for (var i = 0; i < rows.length; i++) {
    total += Number(rows[i][2] || 0);
}

setContactVariable('сума_замовлення', total);

Тут у стовпці C — ціна букета, і код складає ціни всіх знайдених рядків.