matrix-org / sygnal

Sygnal: reference Push Gateway for Matrix
Apache License 2.0
166 stars 148 forks source link

Implement sending message content or at least meta data(the message is a call) through Google #170

Closed chagai95 closed 3 years ago

chagai95 commented 3 years ago

Is your feature request related to a problem? Please describe. Messages and especially annoying also calls take a few seconds until they are shown in the app.

Describe the solution you'd like Send message through google

Describe alternatives you've considered On the client side implement showing a notification and then replace that with a new notification when the app is ready to show the content, but this has nothing to do with this repo...The more Meta Data sent the better (along the lines of - privacy concerned people shouldn't use Google anyway 😎🤣)

Additional context This is meant to be an instant messaging app and it just does not feel instant like this... Phone starts ringing after you are already in a call from the computer...

babolivier commented 3 years ago

The content of the event, as well as its type (from which you can infer e.g. whether the event is a call invite, unless the room is end-to-end encrypted) are sent if the data.format key is omitted from the request registering the pusher (or set to any value other than event_id_only, as far as Synapse's implementation is concerned, but that wouldn't be spec-compliant). So it looks to me like this is already a supported feature in Sygnal (and Synapse) and your issues are mostly related to client implementations?

chagai95 commented 3 years ago

I'm not sure I understood everything but if you say it's implemented, then I'll take your word for it.

babolivier commented 3 years ago

Sorry, I realise I might not have been as clear as I aimed to be. When the client registers a pusher to the homeserver, it does so in a POST /_matrix/client/r0/pushers/set request: https://matrix.org/docs/spec/client_server/latest#post-matrix-client-r0-pushers-set As you can see, the body of the request includes a property called data, which is an object containing properties url and format. Currently, the only value allowed for format is event_id_only, which isn't what you want. However, if you omit the format property from the object (since it's not required), the homeserver should default to sending the event's content, type, etc. in its request to the push gateway, which in turns sends that data through FCM/APNS/etc. All of this is already allowed by the spec, and is also implemented in Synapse and Sygnal, so it sounds like what you want is client support for it. Since Sygnal already implements what you're asking for, I'm going to close this issue.