Клавиатуры
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.