| @@ -54,16 +54,17 @@ appservice: | |||||
| # Whether or not to receive ephemeral events via appservice transactions. | # Whether or not to receive ephemeral events via appservice transactions. | ||||
| # Requires MSC2409 support (i.e. Synapse 1.22+). | # 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. | # Authentication tokens for AS <-> HS communication. Autogenerated; do not modify. | ||||
| as_token: "{{ matrix_mautrix_whatsapp_appservice_token }}" | as_token: "{{ matrix_mautrix_whatsapp_appservice_token }}" | ||||
| hs_token: "{{ matrix_mautrix_whatsapp_homeserver_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. | # Prometheus config. | ||||
| metrics: | metrics: | ||||
| # Enable prometheus metrics? | # Enable prometheus metrics? | ||||
| @@ -92,7 +93,7 @@ bridge: | |||||
| # The following variables are also available, but will cause problems on multi-user instances: | # The following variables are also available, but will cause problems on multi-user instances: | ||||
| # {{ '{{.FullName}}' }} - full name from contact list | # {{ '{{.FullName}}' }} - full name from contact list | ||||
| # {{ '{{.FirstName}}' }} - first 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? | # 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. | # 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 }} | personal_filtering_spaces: {{ matrix_mautrix_whatsapp_bridge_personal_filtering_spaces | to_json }} | ||||
| @@ -109,23 +110,38 @@ bridge: | |||||
| portal_message_buffer: 128 | portal_message_buffer: 128 | ||||
| # Settings for handling history sync payloads. | # Settings for handling history sync payloads. | ||||
| history_sync: | 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? | # 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. | # This bumps the size of history syncs from 3 months to 1 year. | ||||
| request_full_sync: false | 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 | # Settings for media requests. If the media expired, then it will not | ||||
| # be on the WA servers. | # be on the WA servers. | ||||
| # Media can always be requested by reacting with the ♻️ (recycle) emoji. | # 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 | # If request_method is "local_time", what time should the requests | ||||
| # be sent (in minutes after midnight)? | # be sent (in minutes after midnight)? | ||||
| request_local_time: 120 | 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 | # Settings for immediate backfills. These backfills should generally be | ||||
| # small and their main purpose is to populate each of the initial chats | # small and their main purpose is to populate each of the initial chats | ||||
| # (as configured by max_initial_conversations) with a few messages so | # (as configured by max_initial_conversations) with a few messages so | ||||
| @@ -192,12 +197,11 @@ bridge: | |||||
| - start_days_ago: -1 | - start_days_ago: -1 | ||||
| max_batch_events: 500 | max_batch_events: 500 | ||||
| batch_delay: 10 | batch_delay: 10 | ||||
| # Should puppet avatars be fetched from the server even if an avatar is already set? | # Should puppet avatars be fetched from the server even if an avatar is already set? | ||||
| user_avatar_sync: true | user_avatar_sync: true | ||||
| # Should Matrix users leaving groups be bridged to WhatsApp? | # Should Matrix users leaving groups be bridged to WhatsApp? | ||||
| bridge_matrix_leave: true | 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. | # 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) | # Note that updating the m.direct event is not atomic (except with mautrix-asmux) | ||||
| # and is therefore prone to race conditions. | # 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 | # 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. | # presence and read receipts are bridged. These settings set the default values. | ||||
| # Existing users won't be affected when these are changed. | # Existing users won't be affected when these are changed. | ||||
| default_bridge_receipts: true | |||||
| default_bridge_presence: true | default_bridge_presence: true | ||||
| # Send the presence as "available" to whatsapp when users start typing on a portal. | # 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 | # 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 }} | 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? | # Should the bridge explicitly set the avatar and room name for private chat portal rooms? | ||||
| # This is implicitly enabled in encrypted 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 | # Should group members be synced in parallel? This makes member sync faster | ||||
| parallel_member_sync: false | parallel_member_sync: false | ||||
| # Should Matrix m.notice-type messages be bridged? | # Should Matrix m.notice-type messages be bridged? | ||||
| @@ -273,10 +276,6 @@ bridge: | |||||
| # Whether or not created rooms should have federation enabled. | # Whether or not created rooms should have federation enabled. | ||||
| # If false, created portal rooms will never be federated. | # If false, created portal rooms will never be federated. | ||||
| federate_rooms: {{ matrix_mautrix_whatsapp_federate_rooms|to_json }} | 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? | # Should the bridge never send alerts to the bridge management room? | ||||
| # These are mostly things like the user being logged out. | # These are mostly things like the user being logged out. | ||||
| disable_bridge_alerts: false | 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. | # 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. | # This is currently not supported in most clients. | ||||
| caption_in_message: false | 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? | # Should polls be sent using MSC3381 event types? | ||||
| extev_polls: false | 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 | # Maximum time for handling Matrix events. Duration strings formatted for https://pkg.go.dev/time#ParseDuration | ||||
| # Null means there's no enforced timeout. | # Null means there's no enforced timeout. | ||||
| message_handling_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. | # 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. | # 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 }} | 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: | # Valid levels: | ||||
| # unverified - Send keys to all device in the room. | # unverified - Send keys to all device in the room. | ||||
| @@ -373,6 +399,10 @@ bridge: | |||||
| # default. | # default. | ||||
| messages: 100 | 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 | # Settings for provisioning API | ||||
| provisioning: | provisioning: | ||||
| # Prefix for the provisioning API paths. | # Prefix for the provisioning API paths. | ||||