| @@ -54,16 +54,17 @@ appservice: | |||
| # Whether or not to receive ephemeral events via appservice transactions. | |||
| # Requires MSC2409 support (i.e. Synapse 1.22+). | |||
| # You should disable bridge -> sync_with_custom_puppets when this is enabled. | |||
| ephemeral_events: false | |||
| ephemeral_events: true | |||
| # Should incoming events be handled asynchronously? | |||
| # This may be necessary for large public instances with lots of messages going through. | |||
| # However, messages will not be guaranteed to be bridged in the same order they were sent in. | |||
| async_transactions: false | |||
| # Authentication tokens for AS <-> HS communication. Autogenerated; do not modify. | |||
| as_token: "{{ matrix_mautrix_whatsapp_appservice_token }}" | |||
| hs_token: "{{ matrix_mautrix_whatsapp_homeserver_token }}" | |||
| # Segment API key to track some events, like provisioning API login and encryption errors. | |||
| segment_key: null | |||
| # Prometheus config. | |||
| metrics: | |||
| # Enable prometheus metrics? | |||
| @@ -92,7 +93,7 @@ bridge: | |||
| # The following variables are also available, but will cause problems on multi-user instances: | |||
| # {{ '{{.FullName}}' }} - full name from contact list | |||
| # {{ '{{.FirstName}}' }} - first name from contact list | |||
| displayname_template: "{{ '{{if .BusinessName}}{{.BusinessName}}{{else if .PushName}}{{.PushName}}{{else}}{{.JID}}{{end}} (WA)' }}" | |||
| displayname_template: "{{ '{{or .BusinessName .PushName .JID}} (WA)' }}" | |||
| # Should the bridge create a space for each logged-in user and add bridged rooms to it? | |||
| # Users who logged in before turning this on should run `!wa sync space` to create and fill the space for the first time. | |||
| personal_filtering_spaces: {{ matrix_mautrix_whatsapp_bridge_personal_filtering_spaces | to_json }} | |||
| @@ -109,23 +110,38 @@ bridge: | |||
| portal_message_buffer: 128 | |||
| # Settings for handling history sync payloads. | |||
| history_sync: | |||
| # Should the bridge create portals for chats in the history sync payload? | |||
| create_portals: true | |||
| # Enable backfilling history sync payloads from WhatsApp using batch sending? | |||
| # This requires a server with MSC2716 support, which is currently an experimental feature in synapse. | |||
| # It can be enabled by setting experimental_features -> msc2716_enabled to true in homeserver.yaml. | |||
| # Note that prior to Synapse 1.49, there were some bugs with the implementation, especially if using event persistence workers. | |||
| # There are also still some issues in Synapse's federation implementation. | |||
| backfill: false | |||
| # Use double puppets for backfilling? | |||
| # In order to use this, the double puppets must be in the appservice's user ID namespace | |||
| # (because the bridge can't use the double puppet access token with batch sending). | |||
| # This only affects double puppets on the local server, double puppets on other servers will never be used. | |||
| # Doesn't work out of box with this playbook | |||
| double_puppet_backfill: false | |||
| # Enable backfilling history sync payloads from WhatsApp? | |||
| backfill: true | |||
| # The maximum number of initial conversations that should be synced. | |||
| # Other conversations will be backfilled on demand when receiving a message or when initiating a direct chat. | |||
| max_initial_conversations: -1 | |||
| # Maximum number of messages to backfill in each conversation. | |||
| # Set to -1 to disable limit. | |||
| message_count: 50 | |||
| # Should the bridge request a full sync from the phone when logging in? | |||
| # This bumps the size of history syncs from 3 months to 1 year. | |||
| request_full_sync: false | |||
| # Configuration parameters that are sent to the phone along with the request full sync flag. | |||
| # By default (when the values are null or 0), the config isn't sent at all. | |||
| full_sync_config: | |||
| # Number of days of history to request. | |||
| # The limit seems to be around 3 years, but using higher values doesn't break. | |||
| days_limit: null | |||
| # This is presumably the maximum size of the transferred history sync blob, which may affect what the phone includes in the blob. | |||
| size_mb_limit: null | |||
| # This is presumably the local storage quota, which may affect what the phone includes in the history sync blob. | |||
| storage_quota_mb: null | |||
| # If this value is greater than 0, then if the conversation's last message was more than | |||
| # this number of hours ago, then the conversation will automatically be marked it as read. | |||
| # Conversations that have a last message that is less than this number of hours ago will | |||
| # have their unread status synced from WhatsApp. | |||
| unread_hours_threshold: 0 | |||
| ############################################################################### | |||
| # The settings below are only applicable for backfilling using batch sending, # | |||
| # which is no longer supported in Synapse. # | |||
| ############################################################################### | |||
| # Settings for media requests. If the media expired, then it will not | |||
| # be on the WA servers. | |||
| # Media can always be requested by reacting with the ♻️ (recycle) emoji. | |||
| @@ -142,17 +158,6 @@ bridge: | |||
| # If request_method is "local_time", what time should the requests | |||
| # be sent (in minutes after midnight)? | |||
| request_local_time: 120 | |||
| # The maximum number of initial conversations that should be synced. | |||
| # Other conversations will be backfilled on demand when the start PM | |||
| # provisioning endpoint is used or when a message comes in from that | |||
| # chat. | |||
| max_initial_conversations: -1 | |||
| # If this value is greater than 0, then if the conversation's last | |||
| # message was more than this number of hours ago, then the conversation | |||
| # will automatically be marked it as read. | |||
| # Conversations that have a last message that is less than this number | |||
| # of hours ago will have their unread status synced from WhatsApp. | |||
| unread_hours_threshold: 0 | |||
| # Settings for immediate backfills. These backfills should generally be | |||
| # small and their main purpose is to populate each of the initial chats | |||
| # (as configured by max_initial_conversations) with a few messages so | |||
| @@ -192,12 +197,11 @@ bridge: | |||
| - start_days_ago: -1 | |||
| max_batch_events: 500 | |||
| batch_delay: 10 | |||
| # Should puppet avatars be fetched from the server even if an avatar is already set? | |||
| user_avatar_sync: true | |||
| # Should Matrix users leaving groups be bridged to WhatsApp? | |||
| bridge_matrix_leave: true | |||
| # Should the bridge sync with double puppeting to receive EDUs that aren't normally sent to appservices. | |||
| sync_with_custom_puppets: true | |||
| # Should the bridge update the m.direct account data event when double puppeting is enabled. | |||
| # Note that updating the m.direct event is not atomic (except with mautrix-asmux) | |||
| # and is therefore prone to race conditions. | |||
| @@ -210,7 +214,6 @@ bridge: | |||
| # When double puppeting is enabled, users can use `!wa toggle` to change whether | |||
| # presence and read receipts are bridged. These settings set the default values. | |||
| # Existing users won't be affected when these are changed. | |||
| default_bridge_receipts: true | |||
| default_bridge_presence: true | |||
| # Send the presence as "available" to whatsapp when users start typing on a portal. | |||
| # This works as a workaround for homeservers that do not support presence, and allows | |||
| @@ -235,7 +238,7 @@ bridge: | |||
| login_shared_secret_map: {{ matrix_mautrix_whatsapp_bridge_login_shared_secret_map|to_json }} | |||
| # Should the bridge explicitly set the avatar and room name for private chat portal rooms? | |||
| # This is implicitly enabled in encrypted rooms. | |||
| private_chat_portal_meta: false | |||
| private_chat_portal_meta: default | |||
| # Should group members be synced in parallel? This makes member sync faster | |||
| parallel_member_sync: false | |||
| # Should Matrix m.notice-type messages be bridged? | |||
| @@ -273,10 +276,6 @@ bridge: | |||
| # Whether or not created rooms should have federation enabled. | |||
| # If false, created portal rooms will never be federated. | |||
| federate_rooms: {{ matrix_mautrix_whatsapp_federate_rooms|to_json }} | |||
| # Whether to enable disappearing messages in groups. If enabled, then the expiration time of | |||
| # the messages will be determined by the first user to read the message, rather than individually. | |||
| # If the bridge only has a single user, this can be turned on safely. | |||
| disappearing_messages_in_groups: false | |||
| # Should the bridge never send alerts to the bridge management room? | |||
| # These are mostly things like the user being logged out. | |||
| disable_bridge_alerts: false | |||
| @@ -290,11 +289,15 @@ bridge: | |||
| # Send captions in the same message as images. This will send data compatible with both MSC2530 and MSC3552. | |||
| # This is currently not supported in most clients. | |||
| caption_in_message: false | |||
| # Send galleries as a single event? This is not an MSC (yet). | |||
| beeper_galleries: false | |||
| # Should polls be sent using MSC3381 event types? | |||
| extev_polls: false | |||
| # Should Matrix edits be bridged to WhatsApp edits? | |||
| # Official WhatsApp clients don't render edits yet, but once they do, the bridge should work with them right away. | |||
| send_whatsapp_edits: false | |||
| # Should cross-chat replies from WhatsApp be bridged? Most servers and clients don't support this. | |||
| cross_room_replies: false | |||
| # Disable generating reply fallbacks? Some extremely bad clients still rely on them, | |||
| # but they're being phased out and will be completely removed in the future. | |||
| disable_reply_fallbacks: false | |||
| # Maximum time for handling Matrix events. Duration strings formatted for https://pkg.go.dev/time#ParseDuration | |||
| # Null means there's no enforced timeout. | |||
| message_handling_timeout: | |||
| @@ -338,7 +341,30 @@ bridge: | |||
| # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. | |||
| # You must use a client that supports requesting keys from other users to use this feature. | |||
| allow_key_sharing: {{ matrix_mautrix_whatsapp_bridge_encryption_key_sharing_allow|to_json }} | |||
| # What level of device verification should be required from users? | |||
| # Should users mentions be in the event wire content to enable the server to send push notifications? | |||
| plaintext_mentions: false | |||
| # Options for deleting megolm sessions from the bridge. | |||
| delete_keys: | |||
| # Beeper-specific: delete outbound sessions when hungryserv confirms | |||
| # that the user has uploaded the key to key backup. | |||
| delete_outbound_on_ack: false | |||
| # Don't store outbound sessions in the inbound table. | |||
| dont_store_outbound: false | |||
| # Ratchet megolm sessions forward after decrypting messages. | |||
| ratchet_on_decrypt: false | |||
| # Delete fully used keys (index >= max_messages) after decrypting messages. | |||
| delete_fully_used_on_decrypt: false | |||
| # Delete previous megolm sessions from same device when receiving a new one. | |||
| delete_prev_on_new_session: false | |||
| # Delete megolm sessions received from a device when the device is deleted. | |||
| delete_on_device_delete: false | |||
| # Periodically delete megolm sessions when 2x max_age has passed since receiving the session. | |||
| periodically_delete_expired: false | |||
| # Delete inbound megolm sessions that don't have the received_at field used for | |||
| # automatic ratcheting and expired session deletion. This is meant as a migration | |||
| # to delete old keys prior to the bridge update. | |||
| delete_outdated_inbound: false | |||
| # What level of device verification should be required from users? | |||
| # | |||
| # Valid levels: | |||
| # unverified - Send keys to all device in the room. | |||
| @@ -373,6 +399,10 @@ bridge: | |||
| # default. | |||
| messages: 100 | |||
| # Disable rotating keys when a user's devices change? | |||
| # You should not enable this option unless you understand all the implications. | |||
| disable_device_change_key_rotation: false | |||
| # Settings for provisioning API | |||
| provisioning: | |||
| # Prefix for the provisioning API paths. | |||