element-hq / element-hq/element-call

Enable Configurable Ringing for Group Calls to Support VoIP Use Cases

Open
#3,394 2 comments 9 reactions 0 assignees View on GitHub
T-Enhancement
Dominant language
TypeScript
Stars
996
Forks
213
Avg merge
1d 6h
Merged PRs (30d)
54

Description

### Your use case

#### What would you like to do?
I would like group calls in Element Call to trigger actual ringtones and system notifications, similar to 1:1 calls. Currently, group calls only show silent toast notifications (no system notification) that are easily missed, making Element currently unsuitable for time-sensitive business communications or emergency situations.

#### Why would you like to do it?
In enterprise environments replacing solutions like MS Teams, Zoom, or traditional PBX systems, users expect ALL calls to ring audibly. The current silent-notification approach for group calls creates critical communication failures:

1. **Missed urgent meetings**: Team leads cannot quickly assemble their teams for incident response
2. **Failed collaboration**: Spontaneous brainstorming sessions become impossible when participants don't notice silent toasts
3. **Business continuity risk**: Emergency all-hands calls go unanswered
4. **User adoption barrier**: Employees resist switching from platforms where group calls "just work"

This directly impacts Element's viability as an enterprise communication platform. For any VoIP system to be truly effective, group calls must provide audible notifications to participants, this fundamental expectation applies equally to personal and business use cases.

#### How would you like to achieve it?
Implement a **configurable notification system** that allows administrators and users to control group call behavior:

```typescript
// Current hardcoded behavior in Call.ts
"notify_type": memberCount == 2 ? "ring" : "notify"

// Proposed configurable approach
"notify_type": getNotifyType(call, room, userPreferences)
```

**Configuration hierarchy:**
1. **Server-level defaults**: Admins set organization-wide policies
2. **Room-level overrides**: Moderators configure per-room behavior
3. **User preferences**: Individuals control their notification experience

### Have you considered any alternatives?

#### Alternative 1: Status Quo + User Education
Train users to constantly monitor Element for silent notifications. **Rejected**: This fights against decades of UX expectations and creates adoption friction.

#### Alternative 2: Separate "Urgent Call" Feature
Create a new call type specifically for ringing group calls. **Rejected**: This fragments the calling experience and adds unnecessary complexity.

#### Alternative 3: Third-party Integration
Use external calling solutions alongside Element. **Rejected**: This defeats the purpose of unified communications and compromises security.

#### Alternative 4: Client-side Hacks
Individual clients could override the protocol. **Rejected**: This breaks interoperability and creates inconsistent experiences.

### Additional context

#### Related Issues and Prior Art
- element-hq/element-meta#2802 - Group calls ring feature's PR rejected for Element X
- element-hq/element-meta#2385 - Ringing for incoming call
- element-hq/element-android#8893 - Add ring for group calls
- element-hq/element-x-ios#3945 - Add toggle to show group chat start as incoming call

Contributor guide

Open the contributing guide

Research direction

Start by reading the Call.ts location mentioned in the issue and compare its current group-call notification behavior with the related prior-art issues. Clarify the server, room, and user configuration boundaries before implementation. Done means group calls can produce configurable audible ringtones and system notifications without disrupting existing 1:1 call behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
audio-video-rtc
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.