env('WHATSAPP_TOKEN'), 'phone_number_id' => env('WHATSAPP_PHONE_NUMBER_ID'), 'waba_id' => env('WHATSAPP_WABA_ID'), 'api_version' => env('WHATSAPP_API_VERSION', 'v21.0'), 'bridge' => [ 'url' => env('WHATSAPP_BRIDGE_URL', 'http://127.0.0.1:8790'), 'inbound_token' => env('WHATSAPP_BRIDGE_INBOUND_TOKEN'), 'inbound_hmac_secret' => env('WHATSAPP_BRIDGE_INBOUND_HMAC_SECRET'), 'outbound_token' => env('WHATSAPP_BRIDGE_OUTBOUND_TOKEN'), 'outbound_hmac_secret' => env('WHATSAPP_BRIDGE_OUTBOUND_HMAC_SECRET'), 'replay_window_seconds' => (int) env('WHATSAPP_BRIDGE_REPLAY_WINDOW', 300), ], 'operations' => [ 'hash_key' => env('WHATSAPP_HASH_KEY', env('APP_KEY')), 'retention_days' => (int) env('WHATSAPP_RETENTION_DAYS', 30), 'support_template' => env('WHATSAPP_SUPPORT_TEMPLATE'), ], 'mcp' => [ 'require_request_id' => (bool) env('WHATSAPP_MCP_REQUIRE_REQUEST_ID', true), 'idempotency_days' => (int) env('WHATSAPP_MCP_IDEMPOTENCY_DAYS', 7), ], /* * The number people see and message — used to build wa.me links that open * a chat with Academeet. Digits only, country code first, no '+'. */ 'display_number' => env('WHATSAPP_DISPLAY_NUMBER', '919090900877'), 'graph_retry_delays_ms' => [2000, 10000, 60000, 300000], 'media' => [ // Kept as the backwards-compatible absolute ceiling. Type-specific // limits below are used for new inbox uploads and inbound caching. 'max_bytes' => (int) env('WHATSAPP_MEDIA_MAX_BYTES', 100 * 1024 * 1024), 'image_max_bytes' => (int) env('WHATSAPP_IMAGE_MAX_BYTES', 5 * 1024 * 1024), 'document_max_bytes' => (int) env( 'WHATSAPP_DOCUMENT_MAX_BYTES', env('WHATSAPP_MEDIA_MAX_BYTES', 100 * 1024 * 1024) ), 'batch_max_bytes' => (int) env('WHATSAPP_BATCH_MAX_BYTES', 100 * 1024 * 1024), 'max_attachments' => (int) env('WHATSAPP_MAX_ATTACHMENTS', 10), 'image_mimes' => [ 'image/jpeg', 'image/png', 'image/webp', ], 'document_mimes' => [ 'application/pdf', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'text/plain', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', ], 'allowed_mimes' => [ 'image/jpeg', 'image/png', 'image/webp', 'application/pdf', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'text/plain', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', ], ], /* * Message templates registered with Meta. Keep names/variables in sync * with the WhatsApp Manager template catalog. */ 'templates' => [ 'new_event_broadcast' => [ 'label' => 'New event broadcast', 'language' => 'en', 'parameters' => [ ['key' => 'recipient_name', 'label' => 'Recipient name', 'source' => 'recipient'], ['key' => 'event_type', 'label' => 'Event type', 'source' => 'input'], ['key' => 'event_title', 'label' => 'Event title', 'source' => 'input'], ['key' => 'event_date', 'label' => 'Event date', 'source' => 'input'], ['key' => 'event_link', 'label' => 'WhatsApp enrollment reply link', 'source' => 'input', 'type' => 'url'], ], ], 'event_payment_link' => [ 'label' => 'Event payment link', 'language' => 'en', 'parameters' => [ ['key' => 'recipient_name', 'label' => 'Recipient name', 'source' => 'recipient'], ['key' => 'event_title', 'label' => 'Event title', 'source' => 'input'], ['key' => 'amount', 'label' => 'Amount', 'source' => 'input'], ['key' => 'payment_link', 'label' => 'Payment link', 'source' => 'input', 'type' => 'url'], ], ], 'ticket_confirmation' => [ 'label' => 'Ticket confirmation', 'language' => 'en', 'parameters' => [ ['key' => 'recipient_name', 'label' => 'Recipient name', 'source' => 'recipient'], ['key' => 'event_title', 'label' => 'Event title', 'source' => 'input'], ['key' => 'event_date', 'label' => 'Event date', 'source' => 'input'], ['key' => 'ticket_link', 'label' => 'Ticket link', 'source' => 'input', 'type' => 'url'], ], ], // Same body, plus a DOCUMENT header carrying the ticket PDF. Used when // the 24-hour service window has closed and free-form media is refused. 'ticket_confirmation_pdf' => [ 'label' => 'Ticket confirmation with PDF', 'language' => 'en', 'document_header' => true, 'parameters' => [ ['key' => 'recipient_name', 'label' => 'Recipient name', 'source' => 'recipient'], ['key' => 'event_title', 'label' => 'Event title', 'source' => 'input'], ['key' => 'event_date', 'label' => 'Event date', 'source' => 'input'], ['key' => 'ticket_link', 'label' => 'Ticket link', 'source' => 'input', 'type' => 'url'], ], ], 'new_enrollment_organizer' => [ 'label' => 'New enrollment for organizer', 'language' => 'en', 'parameters' => [ ['key' => 'participant_name', 'label' => 'Participant name', 'source' => 'input'], ['key' => 'pricing_tier', 'label' => 'Pricing tier', 'source' => 'input'], ['key' => 'amount_paid', 'label' => 'Amount paid', 'source' => 'input'], ['key' => 'event_title', 'label' => 'Event title', 'source' => 'input'], ], ], 'event_published' => [ 'label' => 'Event published', 'language' => 'en', 'parameters' => [ ['key' => 'event_title', 'label' => 'Event title', 'source' => 'input'], ['key' => 'registration_link', 'label' => 'Registration link', 'source' => 'input', 'type' => 'url'], ], ], 'registration_welcome' => [ 'label' => 'Registration welcome', 'language' => 'en', 'parameters' => [ ['key' => 'recipient_name', 'label' => 'Recipient name', 'source' => 'recipient'], ], ], ], ];