boot(); $client = $container->get(TelegramClient::class); $config = $container->get(TelegramConfig::class); // Get bot info $botInfo = $client->getMe(); echo "๐Ÿค– Bot: {$botInfo['first_name']} (@{$botInfo['username']})\n\n"; // Chat ID (from FixedChatIdResolver) $chatId = TelegramChatId::fromInt(8240973979); echo "๐Ÿ“ค Sending test message with callback buttons...\n\n"; try { // Create inline keyboard with callback buttons $keyboard = InlineKeyboard::multiRow( [ InlineKeyboardButton::withCallback('โœ… Approve Order #123', 'approve_order_123'), InlineKeyboardButton::withCallback('โŒ Reject Order #123', 'reject_order_123'), ], [ InlineKeyboardButton::withUrl('๐Ÿ“„ View Details', 'https://example.com/order/123'), ] ); $response = $client->sendMessage( chatId: $chatId, text: "*New Order Received* ๐Ÿ›’\n\n" . "Order ID: #123\n" . "Customer: John Doe\n" . "Total: โ‚ฌ99.99\n\n" . "Please approve or reject this order:", parseMode: 'Markdown', keyboard: $keyboard ); echo "โœ… Message sent! (ID: {$response->messageId->value})\n\n"; echo "๐Ÿ“‹ What happens next:\n"; echo " 1. Check your Telegram bot for the message\n"; echo " 2. Click on โœ… Approve or โŒ Reject button\n"; echo " 3. The webhook will receive the callback query\n"; echo " 4. TelegramWebhookEventHandler processes it\n"; echo " 5. CallbackRouter routes to ApproveOrderHandler/RejectOrderHandler\n"; echo " 6. You'll see a notification and the message will be updated\n\n"; echo "๐Ÿ” Monitor webhook requests:\n"; echo " - Check your web server logs\n"; echo " - Check framework logs for webhook events\n\n"; echo "๐Ÿ’ก Tip: The buttons use callback data:\n"; echo " - approve_order_123 โ†’ command: 'approve_order', parameter: '123'\n"; echo " - reject_order_123 โ†’ command: 'reject_order', parameter: '123'\n\n"; } catch (\Exception $e) { echo "โŒ Error: {$e->getMessage()}\n"; exit(1); } echo "โœจ Test complete!\n";