Microsoft Teams Phone provider, front to back

Featurekamo-internal
Shipped
5 Agosti 2026, 06:38 UTC
Author
kamo
Commit
08cecc6

Adds Teams to **************** and wires the whole path through: provider selection, the Entra + Azure Communication Services config, tenant admin consent, the per-member connect, and an in-browser softphone. The softphone is the part that differs structurally from every other provider. Teams exposes no SIP registrar to third parties, so a Teams line cannot be registered with SIP.js or RingCentral's WebPhone. The supported route is Azure Communication Services' custom Teams endpoint: the backend exchanges the member's Entra token for an ACS token, and TeamsAcsPhoneSdk turns that into a call agent behind the same PhoneSdk interface the SIP adapters implement, so useSoftphone and every UI component stay provider-agnostic. SipCredentials gains optional acs* fields; sipInfo is simply empty for Teams. The ACS bundle is browser-only and imported dynamically inside start(), since a static import would break server rendering. Two Teams-specific truths surfaced in the UI rather than left to fail at runtime: in-browser calling is optional (leave ACS blank and the org still gets presence and call history, with the dialler hidden rather than erroring), and voicemail is off by default because Teams has no voicemail API — messages land in each member's Exchange mailbox, so reading them is a materially wider consent that an admin should opt into deliberately. The member connect card on the phone-settings tab is now provider-aware instead of RingCentral-only. Both providers need a per-member authorization, for different reasons: RingCentral because a softphone may only register as the connected account's own extension, Teams because presence writes and the calling token exchange are delegated-only. Branding: the tile uses the Microsoft corporate mark and the plain product name. Microsoft permits naming Teams to describe an integration but restricts Teams logos and branding to certified Teams partners, so no Teams glyph is shipped. Verified: npm test — 40 files, 394 tests, 0 failures; tsc --noEmit clean; the i18n key guard and client-navigation guard both pass. Dictionary strings landed first in kamo-translation-dictionary 0801a17.

All changes

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei