Files
michaelschiemer/tests/debug/test-telegram-webhook-buttons.php
Michael Schiemer 3b623e7afb feat(Deployment): Integrate Ansible deployment via PHP deployment pipeline
- Create AnsibleDeployStage using framework's Process module for secure command execution
- Integrate AnsibleDeployStage into DeploymentPipelineCommands for production deployments
- Add force_deploy flag support in Ansible playbook to override stale locks
- Use PHP deployment module as orchestrator (php console.php deploy:production)
- Fix ErrorAggregationInitializer to use Environment class instead of $_ENV superglobal

Architecture:
- BuildStage → AnsibleDeployStage → HealthCheckStage for production
- Process module provides timeout, error handling, and output capture
- Ansible playbook supports rollback via rollback-git-based.yml
- Zero-downtime deployments with health checks
2025-10-26 14:08:07 +01:00

76 lines
2.6 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use App\Framework\Core\AppBootstrapper;
use App\Framework\Notification\Channels\Telegram\TelegramClient;
use App\Framework\Notification\Channels\Telegram\TelegramConfig;
use App\Framework\Notification\Channels\Telegram\ValueObjects\{TelegramChatId, InlineKeyboard, InlineKeyboardButton};
echo "🧪 Test Telegram Webhook with Callback Buttons\n";
echo str_repeat('=', 60) . "\n\n";
// Bootstrap application
$container = (new AppBootstrapper())->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";