Files
ladill-meet/config/meet.php
T
isaaccladandCursor b765b5dd97
Deploy Ladill Meet / deploy (push) Successful in 53s
Store meet recordings on Ladill servers via browser upload.
Capture the meeting in the host browser, upload to Ladill storage on stop, and remove the LiveKit egress placeholder job.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-01 17:40:44 +00:00

208 lines
6.5 KiB
PHP

<?php
return [
'roles' => [
'owner' => 'Owner',
'admin' => 'Administrator',
'moderator' => 'Moderator',
'member' => 'Member',
'guest' => 'Guest',
],
'room_types' => [
'instant' => 'Instant meeting',
'scheduled' => 'Scheduled meeting',
'personal' => 'Personal room',
'recurring' => 'Recurring meeting',
'webinar' => 'Webinar',
'town_hall' => 'Town hall',
],
'room_statuses' => [
'scheduled' => 'Scheduled',
'live' => 'Live',
'ended' => 'Ended',
'cancelled' => 'Cancelled',
'recording_processing' => 'Recording processing',
],
'recording_statuses' => [
'recording' => 'Recording',
'processing' => 'Processing',
'ready' => 'Ready',
'failed' => 'Failed',
],
'recurrence_rules' => [
'daily' => 'Daily',
'weekly' => 'Weekly',
'monthly' => 'Monthly',
],
'participant_roles' => [
'host' => 'Host',
'co_host' => 'Co-host',
'panelist' => 'Panelist',
'participant' => 'Participant',
'attendee' => 'Attendee',
'guest' => 'Guest',
],
'session_statuses' => [
'live' => 'Live',
'ended' => 'Ended',
],
'default_settings' => [
'waiting_room' => true,
'join_before_host' => false,
'mute_on_join' => true,
'video_off_on_join' => false,
'allow_screen_share' => true,
'allow_chat' => true,
'allow_reactions' => true,
'lock_meeting' => false,
'auto_record' => false,
'live_captions' => false,
'auto_ai_summary' => true,
'lobby_mode' => false,
'webinar_auto_approve' => false,
'stage_mode' => true,
],
'breakouts' => [
'default_timer_minutes' => 15,
'max_rooms' => 20,
],
'files' => [
'disk' => env('MEET_FILES_DISK', 'local'),
'default_expiry_days' => (int) env('MEET_FILES_EXPIRY_DAYS', 30),
'drive_api_url' => env('LADILL_DRIVE_API_URL'),
'drive_api_key' => env('LADILL_DRIVE_API_KEY_MEET'),
],
'whiteboard_templates' => [
'blank' => 'Blank canvas',
'grid' => 'Grid',
'retrospective' => 'Retrospective',
],
'security_defaults' => [
'org_only' => false,
'authenticated_only' => false,
'allowed_domains' => [],
'recording_host_only' => true,
'guest_recording_disabled' => true,
'watermark_enabled' => false,
'session_idle_minutes' => 120,
],
'recordings' => [
'disk' => env('MEET_RECORDINGS_DISK', 'local'),
'max_mb' => (int) env('MEET_RECORDING_MAX_MB', 512),
],
'ai' => [
'enabled' => env('MEET_AI_ENABLED', true),
'auto_summarize' => env('MEET_AI_AUTO_SUMMARIZE', true),
'api_key' => env('MEET_AI_API_KEY', env('OPENAI_API_KEY')),
'model' => env('MEET_AI_MODEL', 'gpt-4o-mini'),
'platform_api_url' => env('IDENTITY_API_URL', 'https://ladill.com/api'),
'platform_api_key' => env('IDENTITY_API_KEY_MEET'),
],
'media' => [
'provider' => env('MEET_MEDIA_PROVIDER', 'livekit'),
'livekit' => [
'url' => env('LIVEKIT_URL', ''),
'api_key' => env('LIVEKIT_API_KEY', ''),
'api_secret' => env('LIVEKIT_API_SECRET', ''),
],
],
'report_types' => [
'summary' => 'Organization summary',
'meetings' => 'Meeting analytics',
'users' => 'Participant analytics',
'invitations' => 'Invitation & RSVP',
'branches' => 'Branch rollup',
],
'service_api_keys' => [
'care' => env('MEET_API_KEY_CARE'),
'crm' => env('MEET_API_KEY_CRM'),
'bookings' => env('MEET_API_KEY_BOOKINGS'),
'events' => env('MEET_API_KEY_EVENTS'),
'frontdesk' => env('MEET_API_KEY_FRONTDESK'),
'hr' => env('MEET_API_KEY_HR'),
'support' => env('MEET_API_KEY_SUPPORT'),
],
'webhook_events' => [
'meeting.scheduled',
'meeting.started',
'meeting.ended',
'meeting.cancelled',
'recording.ready',
],
'calendar' => [
'google' => [
'client_id' => env('GOOGLE_CALENDAR_CLIENT_ID'),
'client_secret' => env('GOOGLE_CALENDAR_CLIENT_SECRET'),
'redirect' => env('GOOGLE_CALENDAR_REDIRECT_URI'),
],
'microsoft' => [
'client_id' => env('MICROSOFT_CALENDAR_CLIENT_ID'),
'client_secret' => env('MICROSOFT_CALENDAR_CLIENT_SECRET'),
'redirect' => env('MICROSOFT_CALENDAR_REDIRECT_URI'),
'tenant' => env('MICROSOFT_CALENDAR_TENANT', 'common'),
],
'mail' => [
'api_url' => env('LADILL_MAIL_API_URL', 'https://mail.ladill.com/api/service/v1'),
'api_key' => env('MAIL_API_KEY_MEET'),
],
],
'live_stream' => [
'platforms' => ['youtube', 'facebook', 'linkedin', 'custom'],
'layouts' => ['speaker', 'gallery', 'screen'],
],
'billing' => [
'price_per_hour_ghs' => (float) env('MEET_PRICE_PER_HOUR', 0.30),
'price_per_gb_month_ghs' => (float) env('MEET_PRICE_PER_GB_MONTH', 0.30),
'billing_period_days' => (int) env('MEET_BILLING_PERIOD_DAYS', 30),
'grace_period_days' => (int) env('MEET_GRACE_PERIOD_DAYS', 15),
'minimum_streaming_hours' => (int) env('MEET_MIN_STREAMING_HOURS', 1),
],
'audit_actions' => [
'organization.created' => 'Organization created',
'organization.updated' => 'Organization updated',
'organization.security_updated' => 'Security policy updated',
'branch.created' => 'Branch created',
'branch.updated' => 'Branch updated',
'member.created' => 'Member added',
'member.deleted' => 'Member removed',
'room.created' => 'Meeting created',
'room.updated' => 'Meeting updated',
'room.cancelled' => 'Meeting cancelled',
'session.started' => 'Meeting started',
'session.ended' => 'Meeting ended',
'participant.joined' => 'Participant joined',
'participant.left' => 'Participant left',
'participant.removed' => 'Participant removed',
'meeting.locked' => 'Meeting locked',
'meeting.unlocked' => 'Meeting unlocked',
'recording.started' => 'Recording started',
'recording.stopped' => 'Recording stopped',
'recording.ready' => 'Recording ready',
'recording.deleted' => 'Recording deleted',
'notification.meeting_started' => 'Meeting started notification',
],
];