true, /* |-------------------------------------------------------------------------- | Filesystem settings for provider avatars and thread files |-------------------------------------------------------------------------- | | For each option below, please select the filesystem disk and leading | directory you wish you use. | | *The "avatars" is where each provider's uploaded profile images are stored. | By default, this will store into the following path | prefixed by the directory: | | **Provider avatars - storage_path('app/public/images/{alias}/{id}') | | *The "threads" is where we store any uploads pertaining to a given thread, | such as images, documents, and audio files. By using the default config | below, thread files will be stored in the following paths prefixed by | the directory: | | **Avatar - storage_path('app/public/threads/{threadID}/avatar') | **Images - storage_path('app/public/threads/{threadID}/images') | **Documents - storage_path('app/public/threads/{threadID}/documents') | **Audio - storage_path('app/public/threads/{threadID}/audio') | **Video - storage_path('app/public/threads/{threadID}/videos') | **Bots - storage_path('app/public/threads/{threadID}/bots/{botID}') | */ 'storage' => [ 'avatars' => [ 'disk' => 'public', 'directory' => 'images', ], 'threads' => [ 'disk' => 'public', 'directory' => 'threads', ], ], /* |-------------------------------------------------------------------------- | Messenger routing config |-------------------------------------------------------------------------- | | Our API is the core of this package, and bootstrap's all of our policies | and controllers for you. The included middleware 'messenger.provider' | simply takes the authenticated user via the request and sets them | as the current messenger provider. You are free to use your own | custom middleware to set your provider, as well as any other | middleware you may want, such as 'auth:api' etc. | | All API routes return json, and are best used stateless through | auth:api such as passport or sanctum. | | Invite api has individual middleware control, giving fine-grain control | such as allowing both guest and authed users to access. | | *For the broadcasting channels to register, you must have already | setup/defined your laravel apps broadcast driver. | */ 'routing' => [ 'api' => [ 'domain' => null, 'prefix' => 'api/messenger', 'middleware' => ['web', 'auth', 'messenger.provider:required'], 'invite_api_middleware' => ['web', 'messenger.provider'], ], 'assets' => [ 'domain' => null, 'prefix' => 'messenger/assets', 'middleware' => ['web', 'cache.headers:public, max-age=86400;'], ], 'channels' => [ 'enabled' => true, 'domain' => null, 'prefix' => 'api', 'middleware' => ['web', 'auth', 'messenger.provider:required'], ], ], /* |-------------------------------------------------------------------------- | Use Absolute Route Paths |-------------------------------------------------------------------------- | | Whether routes generated from messenger use the absolute or shortened path. | */ 'use_absolute_routes' => env('MESSENGER_USE_ABSOLUTE_ROUTES', false), /* |-------------------------------------------------------------------------- | API rate limits / request per minute allowed. Use 0 for unlimited |-------------------------------------------------------------------------- | */ 'rate_limits' => [ 'api' => 1000, // Applies over entire API 'search' => 45, // Applies on search 'message' => 60, // Applies to sending messages per thread 'attachment' => 15, // Applies to uploading images/documents per thread ], /* |-------------------------------------------------------------------------- | Max allowed characters for Message body / Edit Message body. |-------------------------------------------------------------------------- | */ 'message_size_limit' => env('MESSENGER_MESSAGE_SIZE_LIMIT', 5000), /* |-------------------------------------------------------------------------- | File toggles to enable / disable features and default image paths. | Size limits are the max upload size in kilobytes. |-------------------------------------------------------------------------- | */ 'files' => [ 'message_documents' => [ 'upload' => env('MESSENGER_MESSAGE_DOCUMENT_UPLOAD', true), 'size_limit' => env('MESSENGER_MESSAGE_DOCUMENT_SIZE_LIMIT', 10240), 'mime_types' => env('MESSENGER_MESSAGE_DOCUMENT_MIME_TYPES', 'csv,doc,docx,json,pdf,ppt,pptx,rar,rtf,txt,xls,xlsx,xml,zip,7z'), ], 'message_images' => [ 'upload' => env('MESSENGER_MESSAGE_IMAGE_UPLOAD', true), 'size_limit' => env('MESSENGER_MESSAGE_IMAGE_SIZE_LIMIT', 5120), 'mime_types' => env('MESSENGER_MESSAGE_IMAGE_MIME_TYPES', 'jpg,jpeg,png,bmp,gif,webp'), ], 'message_audio' => [ 'upload' => env('MESSENGER_MESSAGE_AUDIO_UPLOAD', true), 'size_limit' => env('MESSENGER_MESSAGE_AUDIO_SIZE_LIMIT', 10240), 'mime_types' => env('MESSENGER_MESSAGE_AUDIO_MIME_TYPES', 'aac,mp3,oga,ogg,wav,weba,webm'), ], 'message_videos' => [ 'upload' => env('MESSENGER_MESSAGE_VIDEO_UPLOAD', true), 'size_limit' => env('MESSENGER_MESSAGE_VIDEO_SIZE_LIMIT', 15360), 'mime_types' => env('MESSENGER_MESSAGE_VIDEO_MIME_TYPES', 'avi,mp4,ogv,webm,3gp,3g2,wmv,mov'), ], 'avatars' => [ 'providers' => env('MESSENGER_PROVIDER_AVATARS_ENABLED', true), 'threads' => env('MESSENGER_THREAD_AVATARS_ENABLED', true), 'bots' => env('MESSENGER_BOT_AVATARS_ENABLED', true), 'size_limit' => env('MESSENGER_AVATARS_SIZE_LIMIT', 5120), 'mime_types' => env('MESSENGER_AVATARS_MIME_TYPES', 'jpg,jpeg,png,bmp,gif,webp'), ], 'default_not_found_image' => public_path('vendor/messenger/images/image404.png'), 'default_ghost_avatar' => public_path('vendor/messenger/images/users.png'), 'default_thread_avatar' => public_path('vendor/messenger/images/threads.png'), 'default_bot_avatar' => public_path('vendor/messenger/images/bots.png'), ], /* |-------------------------------------------------------------------------- | Calling |-------------------------------------------------------------------------- | Enable or disable the calling feature. If enabled, you must also declare | the driver we will use within a boot method from one of your service | providers. You may use our messenger facade to set the driver. | | Messenger::setVideoDriver(JanusBroker::class); | | We provide an event subscriber to listen and react to calling events. You | may choose to enable it, whether it puts jobs on the queue or not, and | which queue channel its jobs are dispatched on. */ 'calling' => [ 'enabled' => env('MESSENGER_CALLING_ENABLED', false), 'subscriber' => [ 'enabled' => true, 'queued' => true, 'channel' => 'messenger', ], ], /* |-------------------------------------------------------------------------- | System Messages |-------------------------------------------------------------------------- | | Enable or disable system messages. These are messages generated by actions | to give feedback in the thread history. Actions such as: call ended, left | group, promoted admin, etc. | | We provide an event subscriber to listen and react to events that will | generate the system messages. You may choose to enable it, whether it | puts jobs on the queue or not, and which queue channel its jobs are | dispatched on. */ 'system_messages' => [ 'enabled' => env('MESSENGER_SYSTEM_MESSAGES_ENABLED', true), 'subscriber' => [ 'enabled' => true, 'queued' => true, 'channel' => 'messenger', ], ], /* |-------------------------------------------------------------------------- | Bots |-------------------------------------------------------------------------- | | Enable or disable the bots feature. When enabled, bots may be created | within group threads. A bot may contain many actions with triggers | that will respond to a message. | | We provide an event subscriber to listen and react to events that may | trigger a bot response. You may choose to enable it, whether it puts | jobs on the queue or not, and which queue channel its jobs are | dispatched on. */ 'bots' => [ 'enabled' => env('MESSENGER_BOTS_ENABLED', false), 'subscriber' => [ 'enabled' => true, 'queued' => true, 'channel' => 'messenger-bots', ], ], /* |-------------------------------------------------------------------------- | Push Notification Events |-------------------------------------------------------------------------- | | Enable or disable firing our push notification event for every broadcast | that is not sent over presence. This system only works if you are using | our default BroadcastBroker for our broadcast driver. */ 'push_notifications' => env('MESSENGER_PUSH_NOTIFICATIONS_ENABLED', false), /* |-------------------------------------------------------------------------- | Thread Verifications | Friendship Checks |-------------------------------------------------------------------------- | | Enable or disable friendship checks for threads. | | If enabled for private threads, the thread will be marked as pending upon | creation if the two participants are not friends. The recipient will then | have the option to accept or deny the new private thread request. | | If enabled for group threads, only friends of the active participant may | be added to the group, otherwise any valid messenger provider may be | added as a participant. */ 'thread_verifications' => [ 'private_thread_friendship' => env('MESSENGER_VERIFY_PRIVATE_THREAD_FRIENDSHIP', true), 'group_thread_friendship' => env('MESSENGER_VERIFY_GROUP_THREAD_FRIENDSHIP', true), ], /* |-------------------------------------------------------------------------- | Message Edits |-------------------------------------------------------------------------- | | Enable or disable the edit message feature. When enabled, the owner of a | message will be allowed to edit that message. A history of the edits will | be stored, should you enable our default queued_event_listeners. You may | also allow/deny users in a thread to view the edit history of the message. | */ 'message_edits' => [ 'enabled' => env('MESSENGER_MESSAGE_EDITS_ENABLED', true), 'history_view' => env('MESSENGER_MESSAGE_EDITS_VIEW_HISTORY', true), ], /* |-------------------------------------------------------------------------- | Message Reactions |-------------------------------------------------------------------------- | | Enable or disable the message reactions feature and the max unique allowed | per message. This feature behaves similar to discord, where a single user | may react to a single message more than once with different emotes. | */ 'message_reactions' => [ 'enabled' => env('MESSENGER_MESSAGE_REACTIONS_ENABLED', true), 'max_unique' => env('MESSENGER_MESSAGE_REACTIONS_MAX_UNIQUE', 10), ], /* |-------------------------------------------------------------------------- | Thread invitations |-------------------------------------------------------------------------- | | Enable or disable thread invites. You may also set the max active | invites each thread may have at any given time. 0 for unlimited | */ 'invites' => [ 'enabled' => env('MESSENGER_INVITES_ENABLED', true), 'max_per_thread' => env('MESSENGER_INVITES_THREAD_MAX', 3), ], /* |-------------------------------------------------------------------------- | Knock knock!! 👊 |-------------------------------------------------------------------------- | | Enable or disable knocks, and set the timeout limit (in minutes). | Set to 0 for no timeout. | */ 'knocks' => [ 'enabled' => env('MESSENGER_KNOCKS_ENABLED', true), 'timeout' => env('MESSENGER_KNOCKS_TIMEOUT', 5), ], /* |-------------------------------------------------------------------------- | Provider online/away status |-------------------------------------------------------------------------- | | Enable or disable showing online/away states, and set the lifetime the | status will live in cache (in minutes) | */ 'online_status' => [ 'enabled' => env('MESSENGER_ONLINE_STATUS_ENABLED', true), 'lifetime' => env('MESSENGER_ONLINE_STATUS_LIFETIME', 4), ], /* |-------------------------------------------------------------------------- | Resource collection results limit |-------------------------------------------------------------------------- | | Here you can define the default query limits for resource collections | */ 'collections' => [ 'search' => [ 'page_count' => 25, ], 'threads' => [ 'index_count' => 100, 'page_count' => 25, ], 'participants' => [ 'index_count' => 500, 'page_count' => 50, ], 'messages' => [ 'index_count' => 50, 'page_count' => 50, ], 'calls' => [ 'index_count' => 25, 'page_count' => 25, ], ], ];