Клавиатуры

Inline Keyboard

InlineKeyboardMarkup: URL-кнопки, callback_data до 64 байт, answerCallbackQuery.

Inline-клавиатура рисуется под сообщением. Два частых типа кнопок: URL и callback_data.

Пример

$leadId = bin2hex(random_bytes(7)); // 14 hex-символов

telegramApi($token, 'sendMessage', [
    'chat_id' => $managerChatId,
    'text'    => 'Новый лид #' . $leadId,
    'reply_markup' => [
        'inline_keyboard' => [[
            ['text' => 'Взять', 'callback_data' => 'take:' . $leadId],
            ['text' => 'Сайт', 'url' => 'https://botservice.biz'],
        ]],
    ],
]);

Лимит callback_data

Не больше 64 байт. Держите короткие коды (take:ab12cd), а детали храните в БД по id.

Обработка нажатия

В Update придёт callback_query. Обязательно вызовите answerCallbackQuery — иначе у пользователя «крутилка» на кнопке.

telegramApi($token, 'answerCallbackQuery', [
    'callback_query_id' => $cq['id'],
    'text' => 'Ок, взяли в работу',
]);

URL / deep link

Кнопка https://t.me/YourBot?start=lead_ID только открывает бота с /start payload. Это не «продолжение диалога с лидом» само по себе — нужна серверная карта payload → сущность → сессия.

Практика: проект заявка с сайта → Telegram.