Skip to content

Commit 061e3d0

Browse files
Merge pull request #301948 from MicrosoftDocs/main
Merged by Learn.Build PR Management system
2 parents a038143 + 693d48d commit 061e3d0

File tree

122 files changed

+862
-734
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

122 files changed

+862
-734
lines changed

articles/communication-services/concepts/advanced-messaging/whatsapp/template-messages.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ The `content` field of the template details can include parameter bindings. The
5050
- A `format` field with a value such as `IMAGE`.
5151
- Double brackets surrounding a number, such as `{{1}}`. The number, indexed started at 1, indicates the order in which the binding values must be supplied to create the message template.
5252
- Double brackets surrounding a name, such as `{{movie_name}}`. The named parameters allow developers to reference parameters by name instead of position.
53-
> [!IMPORTANT]
54-
> When using named parameters, you must ensure that the name you use when sending the message **exactly matches** the name defined in the template you created in the Meta WhatsApp Manager.
53+
> [!IMPORTANT]
54+
> When using named parameters, you must ensure that the name you use when sending the message **exactly matches** the name defined in the template you created in the Meta WhatsApp Manager.
5555
5656

5757
:::image type="content" source="../../../quickstarts/advanced-messaging/whatsapp/media/template-messages/sample-movie-ticket-confirmation-azure-portal.png" lightbox="../../../quickstarts/advanced-messaging/whatsapp/media/template-messages/sample-movie-ticket-confirmation-azure-portal.png" alt-text="Screenshot that shows template details.":::

articles/communication-services/concepts/call-flows.md

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,90 +1,91 @@
11
---
2-
title: Call flows in Azure Communication Services
3-
titleSuffix: An Azure Communication Services concept document
4-
description: Learn about call flows in Azure Communication Services.
2+
title: Call networking internals
3+
titleSuffix: An Azure Communication Services article
4+
description: This article describes call flows for different Azure Communication Services call types.
55
author: tophpalmer
66
manager: chpalm
77
services: azure-communication-services
88
ms.author: chpalm
9-
ms.date: 06/30/2021
9+
ms.date: 06/20/2025
1010
ms.topic: conceptual
1111
ms.service: azure-communication-services
1212
ms.subservice: calling
1313
---
14-
# Call flow basics
1514

16-
The section below gives an overview of the call flows in Azure Communication Services. Signaling and media flows depend on the types of calls your users are making. Examples of call types include one-to-one VoIP, one-to-one PSTN, and group calls containing a combination of VoIP and PSTN-connected participants. Review [Call types](./voice-video-calling/about-call-types.md).
15+
# Call networking internals
1716

18-
## About signaling and media protocols
17+
The article describes the call flows in Azure Communication Services. Signaling and media flows depend on the types of calls your users are making. Examples of call types include one-to-one VoIP, one-to-one public switched telephone network (PSTN), and group calls containing a combination of VoIP and PSTN-connected participants. For more information, see [Call types](./voice-video-calling/about-call-types.md).
1918

20-
When you establish a peer-to-peer or group call, two protocols are used behind the scenes - HTTPS (REST) for signaling and SRTP for media.
19+
## Signaling and media protocols
2120

22-
Signaling between the SDKs or between SDKs and Communication Services Signaling Controllers is handled with HTTPS REST (TLS). Azure Communication Services uses TLS 1.2. For Real-Time Media Traffic (RTP), the User Datagram Protocol (UDP) is preferred. If the use of UDP is prevented by your firewall, the SDK will use the Transmission Control Protocol (TCP) for media.
21+
When you establish a peer-to-peer or group call, two protocols are used behind the scenes - HTTPS (REST) for signaling and Secure Real-time Transport Protocol (SRTP) for media.
22+
23+
Signaling between the SDKs or between SDKs and Communication Services signaling controllers is handled with HTTPS REST (TLS). Azure Communication Services uses TLS 1.2. For real-time media traffic (RTP), we recommend user datagram protocol (UDP). If the firewall prevents use of UDP, the SDK uses the transmission control protocol (TCP) for media.
2324

2425
Let's review the signaling and media protocols in various scenarios.
2526

2627
## Call flow cases
2728

28-
### Case 1: VoIP where a direct connection between two devices is possible
29+
### Case 1: VoIP with a direct connection between two devices
2930

30-
In one-to-one VoIP or video calls, traffic prefers the most direct path. "Direct path" means that if two SDKs can reach each other directly, they'll establish a direct connection. This is usually possible when two SDKs are in the same subnet (for example, in a subnet 192.168.1.0/24) or two when the devices each live in subnets that can see each other (SDKs in subnet 10.10.0.0/16 and 192.168.1.0/24 can reach out each other).
31+
In one-to-one VoIP or video calls, traffic prefers the most direct path. *Direct path* means that if two SDKs can reach each other directly, they establish a direct connection. Direct path is possible when two SDKs are in the same subnet (such as in a subnet 192.168.1.0/24) or two when the devices each live in subnets that can see each other (SDKs in subnet 10.10.0.0/16 and 192.168.1.0/24 can reach out each other).
3132

3233
:::image type="content" source="./media/call-flows/about-voice-case-1.png" alt-text="Diagram showing a Direct VOIP call between users and Communication Services.":::
3334

34-
### Case 2: VoIP where a direct connection between devices is not possible, but where connection between NAT devices is possible
35+
### Case 2: VoIP in which a direct connection between devices isn't possible, but a connection between NAT devices is possible
3536

36-
If two devices are located in subnets that can't reach each other (for example, Alice works from a coffee shop and Bob works from his home office) but the connection between the NAT devices is possible, the client side SDKs will establish connectivity via NAT devices.
37+
If two devices are located in subnets that can't reach each other but the connection between the network address translation (NAT) devices is possible, the client side SDKs establish connectivity via NAT devices. For example, if Alice works from a coffee shop and Bob works from a home office.
3738

38-
For Alice it will be the NAT of the coffee shop and for Bob it will be the NAT of the home office. Alice's device will send the external address of her NAT and Bob's will do the same. The SDKs learn the external addresses from a STUN (Session Traversal Utilities for NAT) service that Azure Communication Services provides free of charge. The logic that handles the handshake between Alice and Bob is embedded within the Azure Communication Services provided SDKs. (You don't need any additional configuration)
39+
For Alice, it's the NAT of the coffee shop and for Bob it's the NAT of the home office. Alice's device sends the external address of her NAT and Bob's does the same. The SDKs learn the external addresses from a session traversal utilities for NAT (STUN) service that Azure Communication Services provides free of charge. The logic that handles the handshake between Alice and Bob is embedded in the Azure Communication Services provided SDKs. You don't need any added configuration.
3940

40-
:::image type="content" source="./media/call-flows/about-voice-case-2.png" alt-text="Diagram showing a VOIP call which utilizes a STUN connection.":::
41+
:::image type="content" source="./media/call-flows/about-voice-case-2.png" alt-text="Diagram showing a VOIP call, using a session traversal utilities for NAT (STUN) connection.":::
4142

42-
### Case 3: VoIP where neither a direct nor NAT connection is possible
43+
### Case 3: VoIP in which a direct nor NAT connection is possible
4344

44-
If one or both client devices are behind a symmetric NAT, a separate cloud service to relay the media between the two SDKs is required. This service is called TURN (Traversal Using Relays around NAT) and is also provided by the Communication Services. The Communication Services Calling SDK automatically uses TURN services based on detected network conditions. TURN charges are included in the price of the call.
45+
If one or both client devices are behind a symmetric NAT, a separate cloud service is required to relay the media between the two SDKs. This service is called traversal using relays around NAT (TURN) and is also provided by Azure Communication Services. The Communication Services Calling SDK automatically uses TURN services based on detected network conditions. TURN charges are included in the price of the call.
4546

46-
:::image type="content" source="./media/call-flows/about-voice-case-3.png" alt-text="Diagram showing a VOIP call which utilizes a TURN connection.":::
47+
:::image type="content" source="./media/call-flows/about-voice-case-3.png" alt-text="Diagram showing a VOIP, over a traversal using relays around NAT (TURN) connection.":::
4748

4849
### Case 4: Group calls with PSTN
4950

5051
Both signaling and media for PSTN Calls use the Azure Communication Services telephony resource. This resource is interconnected with other carriers.
5152

52-
PSTN media traffic flows through a component called Media Processor.
53+
PSTN media traffic flows through a media processor component.
5354

5455
:::image type="content" source="./media/call-flows/about-voice-pstn.png" alt-text="Diagram showing a PSTN Group Call with Communication Services.":::
5556

5657
> [!NOTE]
57-
> For those familiar with media processing, our Media Processor is also a Back to Back User Agent, as defined in [RFC 3261 SIP: Session Initiation Protocol](https://tools.ietf.org/html/rfc3261), meaning it can translate codecs when handling calls between Microsoft and Carrier networks. The Azure Communication Services Signaling Controller is Microsoft's implementation of an SIP Proxy per the same RFC.
58+
> The media processor is also a back to back user agent, as defined in [RFC 3261 SIP: Session Initiation Protocol](https://tools.ietf.org/html/rfc3261), meaning it can translate codecs when handling calls between Microsoft and Carrier networks. The Azure Communication Services signaling controller is Microsoft's implementation of a SIP Proxy per the same RFC.
5859
59-
For group calls, media and signaling always flow via the Azure Communication Services backend. The audio and/or video from all participants is mixed in the Media Processor component. All members of a group call send their audio and/or video streams to the media processor, which returns mixed media streams.
60+
For group calls, media and signaling always flow via the Azure Communication Services backend. The audio and/or video from all participants is mixed in the media processor. All members of a group call send their audio and video streams to the media processor, which returns mixed media streams.
6061

61-
The default real-time protocol (RTP) for group calls is User Datagram Protocol (UDP).
62+
The default real-time protocol (RTP) for group calls is user datagram protocol (UDP).
6263

6364
> [!NOTE]
64-
> The Media Processor can act as a Multipoint Control Unit (MCU) or Selective Forwarding Unit (SFU)
65+
> The Media Processor can act as a multipoint control unit (MCU) or selective forwarding unit (SFU).
6566
6667
:::image type="content" source="./media/call-flows/about-voice-group-calls.png" alt-text="Diagram showing UDP media process flow within Communication Services.":::
6768

68-
If the SDK can't use UDP for media due to firewall restrictions, an attempt will be made to use the Transmission Control Protocol (TCP). Note that the Media Processor component requires UDP, so when this happens, the Communication Services TURN service will be added to the group call to translate TCP to UDP. TURN charges are included in the price of the call.
69+
If the SDK can't use UDP for media due to firewall restrictions, it attempts to use the transmission control protocol (TCP). The media processor component requires UDP, so when in this case, the Communication Services TURN service is added to the group call to translate TCP to UDP. TURN charges are included in the price of the call.
6970

7071
:::image type="content" source="./media/call-flows/about-voice-group-calls-2.png" alt-text="Diagram showing TCP media process flow within Communication Services.":::
7172

7273
### Case 5: Communication Services SDK and Microsoft Teams in a scheduled Teams meeting
7374

74-
Signaling flows through the signaling controller. Media flows through the Media Processor. The signaling controller and Media Processor are shared between Communication Services and Microsoft Teams.
75+
Signaling flows through the signaling controller. Media flows through the media processor. The signaling controller and media processor are shared between Communication Services and Microsoft Teams.
7576

7677
:::image type="content" source="./media/call-flows/teams-communication-services-meeting.png" alt-text="Diagram showing Communication Services SDK and Teams Client in a scheduled Teams meeting.":::
7778

7879
### Case 6: Early media
7980

80-
Refers to media (e.g., audio and video) that is exchanged before a particular session is accepted by the called user. If there is early media flow, the SBC must latch to the first endpoint that starts streaming media; media flow can start before candidates are nominated. The SBC should have support for sending DTMF during this phase to enable IVR/voicemail scenarios. The SBC should use the highest priority path on which it has received checks if nominations have not completed.
81+
Refers to media that is exchanged, such as audio and video, before the callee accepts the session. For early media flow, the session border controller (SBC) must latch to the first endpoint that starts streaming media; media flow can start before candidates are nominated. The SBC must support sending dual tone multi-frequency (DTMF) during this phase to enable IVR/voicemail scenarios. The SBC should use the highest priority path on which it receives checks, if nominations aren't complete.
8182

8283
## Next steps
8384

8485
> [!div class="nextstepaction"]
8586
> [Get started with calling](../quickstarts/voice-video-calling/getting-started-with-calling.md)
8687
87-
The following documents may be interesting to you:
88+
## Related articles
8889

8990
- Learn more about [call types](../concepts/voice-video-calling/about-call-types.md)
9091
- Learn about [Client-server architecture](./client-and-server-architecture.md)

0 commit comments

Comments
 (0)