element-meta icon indicating copy to clipboard operation
element-meta copied to clipboard

[Story] Ringing for incoming call

Open manuroe opened this issue 1 year ago • 2 comments

Description

  • As a user
  • I want to my device to ring on an incoming call
  • So that I do not miss them

Based on MSC4075

Acceptance criteria

  • The client applications should attempt to send a new m.call.notify event every time they access Element Call. This should be done through the means of the newly added send_call_notification_if_needed SDK method which will check if the right conditions are met:

    • if the room already has an active call then no new notification will be sent
    • if the room is a DM then a ring notification will be sent
    • if the room is not a DM then a notification notification will be sent
  • The interlocutor client will receive a CallNotify event as a push notification payload and:

    • If the notification is older than 10 seconds ignore the notify_type and display it as a normal notification
    • If the notify type is ring display the native OS incoming call dialog
    • Otherwise display it as a normal notification
  • From the native call dialog the decline action should ignore the call (similar to just not opening it up from within the room) while the accept action should open the app and that particular ElementCall

  • The call dialog should be automatically dismissed after 15 seconds of inactivity and the call handled as unanswered

  • NB These actions above should be available irrespective of the application (state, running, active, background, killed etc.)

  • These new m.call.notify events should be rendered in the timeline to indicate the start of a call. Designs will be based on this WIP version and will not contain a join button or durations

  • We would also like to track Element Call interactions so we've defined new events here https://github.com/matrix-org/matrix-analytics-events/pull/107/files

Leads

  • Tech: @stefanceriu

Size estimate

M

Subtasks

### Android
- [ ] https://github.com/element-hq/element-x-android/issues/2894
### iOS
- [ ] https://github.com/element-hq/element-x-ios/issues/2876
### Rust
- [ ] https://github.com/matrix-org/matrix-rust-sdk/pull/3434
### Other
- [ ] https://github.com/matrix-org/matrix-rust-sdk/pull/3434
- [ ] https://github.com/matrix-org/matrix-rust-sdk/pull/3474

Out-of-scope

  • Cancelling the ringing call when the other user in a DM hangs up.
  • Displaying when a call has finished in the notifications and timeline items.

Sign-off

Android

  • [ ] Design sign-off on completion
  • [x] QA sign-off on completion
  • [ ] Product sign-off on completion

iOS

  • [ ] Design sign-off on completion
  • [x] QA sign-off on completion
  • [ ] Product sign-off on completion

manuroe avatar Apr 10 '24 09:04 manuroe

I would like a ring to be sent to all members of a group. This is how a group call is supposed to work.

There is a long standing bug in Element Android related to this. The group call ring was implemented in iOS but not on Android.

image

rajil avatar May 27 '24 17:05 rajil

Here is a old video of how Whatsapp does group call. Another one.

rajil avatar May 28 '24 04:05 rajil

The feature is live for a while. We are more than happy about it

manuroe avatar Sep 11 '24 12:09 manuroe

@manuroe , I'm sorry, where is it available for a group calls? There is a PR on that feature for Android, which is not merged yet. Or am I missing something?

alexander-potemkin avatar Sep 11 '24 13:09 alexander-potemkin

@manuroe a gentle reminder

alexander-potemkin avatar Oct 05 '24 09:10 alexander-potemkin

Ringing is not enabled for group calls, only DMs as per https://github.com/matrix-org/matrix-rust-sdk/pull/3434

stefanceriu avatar Oct 05 '24 16:10 stefanceriu

Ringing is not enabled for group calls, only DMs as per matrix-org/matrix-rust-sdk#3434

... and as per my humble observations of the app behaviour as well as work on the code.

alexander-potemkin avatar Oct 05 '24 18:10 alexander-potemkin