372 lines
15 KiB
PHP
372 lines
15 KiB
PHP
<?php
|
|
|
|
return [
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Provider UUIDs
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| All of our tables that have relations to one of your providers will use
|
|
| a morphTo. If your providers use UUIDs (char 36) as their primary keys,
|
|
| then set this to true. Please note that if you use multiple providers,
|
|
| they all must have matching primary key types (int / char / etc).
|
|
|
|
|
*/
|
|
'provider_uuids' => 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,
|
|
],
|
|
],
|
|
];
|