Repository navigation
feat: allow clients to accept calls before the session is established #38646
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
dionisio-bot
merged 58 commits into
feat/voip-rest-state
from
feat/accept-media-call-via-rest
Apr 13, 2026
Merged
Changes from 2 commits
Commits
Show all changes
58 commits
Select commit
Hold shift + click to select a range
96051a1
feat: allow clients to accept calls before the session is established
pierre-lehnen-rc a19f3c5
Merge branch 'develop' into feat/accept-media-call-via-rest
pierre-lehnen-rc 7efd36a
cleanup
pierre-lehnen-rc 7f15e37
use query to validate callee
pierre-lehnen-rc 57d5163
changeset
pierre-lehnen-rc 6c3ae5d
handle ack invalid state
pierre-lehnen-rc bbd36e2
handle reject validations
pierre-lehnen-rc bb0aed3
Merge branch 'develop' into feat/accept-media-call-via-rest
pierre-lehnen-rc 9d42d28
regression: populate permission to new federated-external role (#39854)
sampaiodiego f831593
regression: Video recorder popup keep displaying while file is upload…
dougfabris 1b4dbed
Release 8.3.0-rc.2
rocketchat-github-ci df94285
regression: Voice call "Share screen" action fails silently (#39872)
gabriellsh a28b469
regression: Register username flicker (#39982)
yash-rajpal a376d44
regression: require confirmation before adding a banned user back to …
ggazzo 2b7ee36
fix(federation): revoke invite when banning a user who has not yet ac…
ggazzo dd52a22
Release 8.3.0-rc.3
rocketchat-github-ci 4bce595
test(federation): add tests for re-inviting RC users after leaving or…
sampaiodiego 413d925
regression: Omnichannel `inquiries.take` endpoint returning `[error]`…
KevLehman 7de4d06
regression: Sending thread message scrolls main channel to bottom (#4…
fcf9bd4
regression: enable REST type coercion back (#40035)
sampaiodiego 89e4693
regression: Allow ban actions for non-federated rooms as well (#39987)
aad2007
Release 8.3.0-rc.4
rocketchat-github-ci 788c161
feat: Remove Federation from Beta (#40006)
f214d87
Release 8.3.0
ggazzo 00a1efa
Release 8.3.0
rocketchat-github-ci 2031ba8
test: Reorg flextabs locators (#38533)
dougfabris 58fc21c
ci: upgrade actions/cache to v5 (#40064)
ggazzo a23c43b
fix: delete all users subscriptions on re-join after being banned (#4…
sampaiodiego dd55029
test(federation): reorganize display name change tests for clarity an…
sampaiodiego b0f026b
ci: improve cache keys, observability, and node_modules caching strat…
ggazzo bb97a68
chore(deps): bump actions/setup-node from 6.2.0 to 6.3.0 (#39319)
dependabot[bot] df43b79
chore(deps): bump docker/login-action from 3 to 4 (#39355)
dependabot[bot] 25e988b
chore(deps): bump codecov/codecov-action from 5 to 6 (#39895)
dependabot[bot] 2cebe41
chore(deps): bump @xmldom/xmldom from 0.8.10 to 0.8.12 in /.github/ac…
dependabot[bot] 3340757
Merge remote-tracking branch 'origin/master' into develop
ggazzo f21ed3a
fix: require unban before using inviting link (#40087)
ggazzo 46faa43
chore: update Meteor and package versions to latest stable releases 3…
ggazzo c7744b1
feat: auto-wrap selected text in composer with matching delimiters (#…
Copilot a298a27
chore: Enable Meteor's *Modern Build Stack* (#37614)
ggazzo 84754bb
fix: slack importer not importing messages correctly (#40053)
nazabucciarelli 93e3193
chore: remove outdated oplog error message from admin workspace page …
abhinavkrin b490ed5
test(federation): fix display name test flakyness (#40085)
sampaiodiego 85f001c
ci: Update cache key for packages-build in CI workflow (#40101)
ggazzo a6c863a
fix: engagement dashboard becoming unresponsive when clicking "See on…
abhinavkrin eb78ae4
fix: DDP method calls returning 404 for void methods (#40057)
abhinavkrin 9875f67
chore: add helper descriptions to Auto Away user preference settings …
ricardogarim 5052af2
chore: migrate client-side code from moment to date-fns (#40076)
ggazzo 0f8350d
chore: update deno.lock and freeze install during build (#40038)
d-gubert cd79677
fix(a11y): Add inline error for UserAvatarEditor's URL input (#36656)
ergot-rp dd56c98
test: Enforce exact match for button locators in team modal (#40104)
dougfabris 18a26c8
regression: fix multiple compounding keys in sequence (#40108)
ggazzo 619ec70
perf: slim react-aria and react-stately barrel imports (-489 KB)
ggazzo fee3902
perf: patch zod barrel to remove unused locales (-144 KB)
ggazzo bf45c37
chore: slim barrel imports for react-aria, react-stately and zod (-79…
ggazzo 68927b8
chore: slim @react-aria/i18n barrel and replace lodash import (-110 K…
ggazzo 9760d84
refactor: Remove unused `description` from attachments render (#40067)
dougfabris 71cd7c6
Merge branch 'develop' into feat/accept-media-call-via-rest
pierre-lehnen-rc 826d518
Merge branch 'feat/voip-rest-state' into feat/accept-media-call-via-rest
pierre-lehnen-rc File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,99 @@ | ||
| import { MediaCall } from '@rocket.chat/core-services'; | ||
| import type { IMediaCall } from '@rocket.chat/core-typings'; | ||
| import type { CallAnswer, CallFeature } from '@rocket.chat/media-signaling'; | ||
| import { callFeatureList, callAnswerList } from '@rocket.chat/media-signaling'; | ||
| import { | ||
| ajv, | ||
| validateNotFoundErrorResponse, | ||
| validateBadRequestErrorResponse, | ||
| validateUnauthorizedErrorResponse, | ||
| validateForbiddenErrorResponse, | ||
| } from '@rocket.chat/rest-typings'; | ||
| import type { JSONSchemaType } from 'ajv'; | ||
|
|
||
| import type { ExtractRoutesFromAPI } from '../ApiClass'; | ||
| import { API } from '../api'; | ||
|
|
||
| type MediaCallsAnswer = { | ||
| callId: string; | ||
| contractId: string; | ||
|
|
||
| answer: CallAnswer; | ||
|
|
||
| supportedFeatures?: CallFeature[]; | ||
| }; | ||
|
|
||
| const MediaCallsAnswerSchema: JSONSchemaType<MediaCallsAnswer> = { | ||
| type: 'object', | ||
| properties: { | ||
| callId: { | ||
| type: 'string', | ||
| }, | ||
| contractId: { | ||
| type: 'string', | ||
| }, | ||
| answer: { | ||
| type: 'string', | ||
| enum: callAnswerList, | ||
| }, | ||
| supportedFeatures: { | ||
| type: 'array', | ||
| items: { | ||
| type: 'string', | ||
| enum: callFeatureList, | ||
| }, | ||
| nullable: true, | ||
|
KevLehman marked this conversation as resolved.
|
||
| }, | ||
| }, | ||
| required: ['callId', 'contractId', 'answer'], | ||
| additionalProperties: false, | ||
| }; | ||
|
|
||
| export const isMediaCallsAnswerProps = ajv.compile<MediaCallsAnswer>(MediaCallsAnswerSchema); | ||
|
|
||
| const mediaCallsAnswerEndpoints = API.v1.post( | ||
| 'media-calls.answer', | ||
| { | ||
| response: { | ||
| 200: ajv.compile<{ | ||
| call: IMediaCall; | ||
| }>({ | ||
| additionalProperties: false, | ||
| type: 'object', | ||
| properties: { | ||
| call: { | ||
| type: 'object', | ||
| $ref: '#/components/schemas/IMediaCall', | ||
| description: 'The updated call information.', | ||
| nullable: true, | ||
| }, | ||
| success: { | ||
| type: 'boolean', | ||
| description: 'Indicates if the request was successful.', | ||
| }, | ||
| }, | ||
| required: ['call', 'success'], | ||
| }), | ||
|
coderabbitai[bot] marked this conversation as resolved.
|
||
| 400: validateBadRequestErrorResponse, | ||
| 401: validateUnauthorizedErrorResponse, | ||
| 403: validateForbiddenErrorResponse, | ||
| 404: validateNotFoundErrorResponse, | ||
| }, | ||
| body: isMediaCallsAnswerProps, | ||
| authRequired: true, | ||
| }, | ||
| async function action() { | ||
| const call = await MediaCall.answerCall(this.userId, this.bodyParams); | ||
|
|
||
| return API.v1.success({ | ||
| call, | ||
| }); | ||
| }, | ||
| ); | ||
|
|
||
| type MediaCallsAnswerEndpoints = ExtractRoutesFromAPI<typeof mediaCallsAnswerEndpoints>; | ||
|
|
||
| declare module '@rocket.chat/rest-typings' { | ||
| // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-interface | ||
| interface Endpoints extends MediaCallsAnswerEndpoints {} | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.