Skip to content

Commit 4a9fa74

Browse files
Merge pull request #229277 from boris-bazilevskiy/doc-update-0223
ACS PSTN Quickstart: Direct Routing config & Domain Ownership Validation
2 parents c8fabfd + 999520b commit 4a9fa74

19 files changed

+907
-59
lines changed

articles/communication-services/concepts/telephony/direct-routing-provisioning.md

Lines changed: 13 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
title: Use direct routing to connect existing telephony service
33
description: Learn how to add a Session Border Controller and configure voice routing for Azure Communication Services direct routing.
44
author: boris-bazilevskiy
5-
manager: nmurav
5+
manager: rcole
66
services: azure-communication-services
77

88
ms.author: bobazile
9-
ms.date: 05/26/2022
9+
ms.date: 03/11/2023
1010
ms.topic: conceptual
1111
ms.service: azure-communication-services
1212
ms.subservice: pstn
@@ -23,34 +23,25 @@ For information about whether Azure Communication Services direct routing is the
2323

2424
## Connect the SBC with Azure Communication Services
2525

26-
### Configure using Azure portal
27-
1. In the left navigation, select Direct routing under Voice Calling - PSTN and then select Configure from the Session Border Controller tab.
26+
### Validate domain ownership
27+
Follow [these instructions](../../how-tos/telephony/domain-validation.md) to validate a domain ownership of your SBC
2828

29-
2. Enter a fully qualified domain name and signaling port for the SBC.
30-
- SBC certificate must match the name; wildcard certificates are supported.
31-
- The *.onmicrosoft.com domain can’t be used for the FQDN of the SBC.
32-
33-
For the full list of requirements, refer to [Azure direct routing infrastructure requirements](./direct-routing-infrastructure.md).
34-
35-
:::image type="content" source="../media/direct-routing-provisioning/add-session-border-controller.png" alt-text="Screenshot of Adding Session Border Controller.":::
36-
37-
3. When you're done, select Next.
38-
39-
If everything is set up correctly, you should see an exchange of OPTIONS messages between Microsoft and your Session Border Controller. Use your SBC monitoring/logs to validate the connection.
29+
## Configure outbound voice routing
30+
Refer to [Voice routing quickstart](../../quickstarts/telephony/voice-routing-sdk-config.md) to add an SBC and configure outbound voice routing rules.
4031

4132
## Outbound voice routing considerations
4233

4334
Azure Communication Services direct routing has a routing mechanism that allows a call to be sent to a specific SBC based on the called number pattern.
4435

45-
When you add a direct routing configuration to a resource, all calls made from this resource’s instances (identities) will try a direct routing trunk first. The routing is based on a dialed number and a match in voice routes configured for the resource.
36+
When you add a direct routing configuration to a resource, all calls made from this resource’s instances (identities) try a direct routing trunk first. The routing is based on a dialed number and a match in voice routes configured for the resource.
4637

4738
- If there's a match, the call goes through the direct routing trunk.
4839
- If there's no match, the next step is to process the `alternateCallerId` parameter of the `callAgent.startCall` method.
4940
- If the resource is enabled for Voice Calling (PSTN) and has at least one number purchased from Microsoft, the `alternateCallerId` is checked.
5041
- If the `alternateCallerId` matches a purchased number for the resource, the call is routed through the Voice Calling (PSTN) using Microsoft infrastructure.
51-
- If `alternateCallerId` parameter doesn't match any of the purchased numbers, the call will fail.
42+
- If `alternateCallerId` parameter doesn't match any of the purchased numbers, the call fails.
5243

53-
The diagram below demonstrates the Azure Communication Services voice routing logic.
44+
The diagram demonstrates the Azure Communication Services voice routing logic.
5445

5546
:::image type="content" source="../media/direct-routing-provisioning/voice-routing-diagram.png" alt-text="Diagram of outgoing voice routing flowchart.":::
5647

@@ -64,56 +55,20 @@ The following examples display voice routing in a call flow.
6455
If you created one voice route with a pattern `^\+1(425|206)(\d{7})$` and added `sbc1.contoso.biz` and `sbc2.contoso.biz` to it, then when the user makes a call to `+1 425 XXX XX XX` or `+1 206 XXX XX XX`, the call is first routed to SBC `sbc1.contoso.biz` or `sbc2.contoso.biz`. If neither SBC is available, the call is dropped.
6556

6657
### Two routes example:
67-
If you created one voice route with a pattern `^\+1(425|206)(\d{7})$` and added `sbc1.contoso.biz` and `sbc2.contoso.biz` to it, and then created a second route with the same pattern with `sbc3.contoso.biz` and `sbc4.contoso.biz`. In this case, when the user makes a call to `+1 425 XXX XX XX` or `+1 206 XXX XX XX`, the call is first routed to SBC `sbc1.contoso.biz` or `sbc2.contoso.biz`. If both sbc1 and sbc2 are unavailable, the route with lower priority will be tried (`sbc3.contoso.biz` and `sbc4.contoso.biz`). If none of the SBCs of the second route are available, the call is dropped.
58+
If you created one voice route with a pattern `^\+1(425|206)(\d{7})$` and added `sbc1.contoso.biz` and `sbc2.contoso.biz` to it, and then created a second route with the same pattern with `sbc3.contoso.biz` and `sbc4.contoso.biz`. In this case, when the user makes a call to `+1 425 XXX XX XX` or `+1 206 XXX XX XX`, the call is first routed to SBC `sbc1.contoso.biz` or `sbc2.contoso.biz`. If both sbc1 and sbc2 are unavailable, the route with lower priority is tried (`sbc3.contoso.biz` and `sbc4.contoso.biz`). If none of the SBCs of the second route are available, the call is dropped.
6859

6960
### Three routes example:
70-
If you created one voice route with a pattern `^\+1(425|206)(\d{7})$` and added `sbc1.contoso.biz` and `sbc2.contoso.biz` to it, and then created a second route with the same pattern with `sbc3.contoso.biz` and `sbc4.contoso.biz`, and created a third route with `^+1(\d[10])$` with `sbc5.contoso.biz`. In this case, when the user makes a call to `+1 425 XXX XX XX` or `+1 206 XXX XX XX`, the call is first routed to SBC `sbc1.contoso.biz` or `sbc2.contoso.biz`. If both sbc1 nor sbc2 are unavailable, the route with lower priority will be tried (`sbc3.contoso.biz` and `sbc4.contoso.biz`). If none of the SBCs of a second route are available, the third route will be tried. If sbc5 is also not available, the call is dropped. Also, if a user dials `+1 321 XXX XX XX`, the call goes to `sbc5.contoso.biz`, and it isn't available, the call is dropped.
61+
If you created one voice route with a pattern `^\+1(425|206)(\d{7})$` and added `sbc1.contoso.biz` and `sbc2.contoso.biz` to it, and then created a second route with the same pattern with `sbc3.contoso.biz` and `sbc4.contoso.biz`, and created a third route with `^+1(\d[10])$` with `sbc5.contoso.biz`. In this case, when the user makes a call to `+1 425 XXX XX XX` or `+1 206 XXX XX XX`, the call is first routed to SBC `sbc1.contoso.biz` or `sbc2.contoso.biz`. If both sbc1 nor sbc2 are unavailable, the route with lower priority is tried (`sbc3.contoso.biz` and `sbc4.contoso.biz`). If none of the SBCs of a second route are available, the third route is tried. If sbc5 is also not available, the call is dropped. Also, if a user dials `+1 321 XXX XX XX`, the call goes to `sbc5.contoso.biz`, and it isn't available, the call is dropped.
7162

7263
> [!NOTE]
7364
> Failover to the next SBC in voice routing works only for response codes 408, 503, and 504.
7465
7566
> [!NOTE]
7667
> In all the examples, if the dialed number does not match the pattern, the call will be dropped unless there is a purchased number exist for the communication resource, and this number was used as `alternateCallerId` in the application.
7768
78-
## Configure outbound voice routing
79-
80-
### Configure using Azure portal
81-
82-
:::image type="content" source="../media/direct-routing-provisioning/voice-routing-configuration.png" alt-text="Screenshot of outgoing voice routing configuration.":::
83-
84-
Give your voice route a name, specify the number pattern using regular expressions, and select SBC for that pattern.
85-
Here are some examples of basic regular expressions:
86-
- `^\+\d+$` - matches a telephone number with one or more digits that start with a plus
87-
- `^\+1(\d{10})$` - matches a telephone number with a ten digits after a `+1`
88-
- `^\+1(425|206)(\d{7})$` - matches a telephone number that starts with `+1425` or with `+1206` followed by seven digits
89-
- `^\+0?1234$` - matches both `+01234` and `+1234` telephone numbers.
90-
91-
For more information about regular expressions, see [.NET regular expressions overview](/dotnet/standard/base-types/regular-expressions).
92-
93-
You can select multiple SBCs for a single pattern. In such a case, the routing algorithm will choose them in random order. You may also specify the exact number pattern more than once. The higher row will have higher priority, and if all SBCs associated with that row aren't available next row will be selected. This way, you create complex routing scenarios.
94-
9569
## Managing inbound calls
96-
97-
For general inbound call management use [Call Automation SDKs](../call-automation/incoming-call-notification.md) to build an application that listen for and manage inbound calls placed to a phone number or received via ACS direct routing.
98-
Omnichannel for Customer Service customers please refer to [these instructions](/dynamics365/customer-service/voice-channel-inbound-calling).
99-
100-
## Delete direct routing configuration
101-
102-
### Delete using Azure portal
103-
104-
#### To delete a voice route:
105-
1. In the left navigation, go to Direct routing under Voice Calling - PSTN and then select the Voice Routes tab.
106-
1. Select route or routes you want to delete using a checkbox.
107-
1. Select Remove.
108-
109-
#### To delete an SBC:
110-
1. In the left navigation, go to Direct routing under Voice Calling - PSTN.
111-
1. On a Session Border Controllers tab, select Configure.
112-
1. Clear the FQDN and port fields for the SBC that you want to remove, select Next.
113-
1. On a Voice Routes tab, review voice routing configuration, make changes if needed. select Save.
114-
115-
> [!NOTE]
116-
> When you remove SBC associated with a voice route, you can choose a different SBC for the route on the Voice Routes tab. The voice route without an SBC will be deleted.
70+
For general inbound call management use [Call Automation SDKs](../call-automation/incoming-call-notification.md) to build an application that listens for and manage inbound calls placed to a phone number or received via ACS direct routing.
71+
Omnichannel for Customer Service customers, refer to [these instructions](/dynamics365/customer-service/voice-channel-inbound-calling).
11772

11873
## Next steps
11974

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
---
2+
title: Azure Communication Services direct routing domain validation
3+
description: A how-to page about domain validation for direct routing.
4+
services: azure-communication-services
5+
author: boris-bazilevskiy
6+
7+
ms.service: azure-communication-services
8+
ms.subservice: pstn
9+
ms.date: 03/11/2023
10+
ms.topic: how-to
11+
ms.custom: include file
12+
ms.author: nikuklic
13+
---
14+
15+
# Domain validation
16+
17+
This page describes the process of domain name ownership validation. Fully Qualified Domain Name (FQDN) consists of two parts: host name and domain name. For example, if your session border controller (SBC) name is `sbc1.contoso.com`, then `sbc1` would be a host name, while `contoso.com` would be a domain name. If there's an SBC with FQDN of `acs.sbc1.testing.contoso.com`, `acs` would be a host name, and `sbc1.testing.contoso.com` would be a domain name. To use direct routing, you need to validate that you own a domain part of your FQDN.
18+
19+
Azure Communication Services direct routing configuration consists of the following steps:
20+
21+
- Verify domain ownership for your SBC FQDN
22+
- Configure SBC FQDN and port number
23+
- Create voice routing rules
24+
25+
## Domain ownership validation
26+
27+
Make sure to add and verify domain name portion of the FQDN and keep in mind that the `*.onmicrosoft.com` and `*.azure.com` domain names aren't supported for the SBC FQDN domain name. For example, if you have two domain names, `contoso.com` and `contoso.onmicrosoft.com`, use `sbc.contoso.com` as the SBC name. If using a subdomain, make sure this subdomain is also added and verified. For example, if you want to use `sbc.acs.contoso.com`, then `acs.contoso.com` needs to be registered.
28+
29+
### Domain verification using Azure portal
30+
31+
#### Add new domain name
32+
33+
1. Open Azure portal and navigate to your [Communication Service resource](../../quickstarts/create-communication-resource.md).
34+
1. In the left navigation pane, select Direct routing under Voice Calling - PSTN.
35+
1. Select Connect domain from the Domains tab.
36+
1. Enter the domain part of SBC’s fully qualified domain name.
37+
1. Reenter the domain name.
38+
1. Select Confirm and then select Add.
39+
40+
[ ![Screenshot of adding a custom domain.](./media/direct-routing-add-domain.png)](./media/direct-routing-add-domain.png#lightbox)
41+
42+
#### Verify domain ownership
43+
44+
1. Select Verify next to new domain that is now visible in Domain’s list.
45+
1. Azure portal generates a value for a TXT record, you need to add that record to
46+
47+
[ ![Screenshot of verifying a custom domain.](./media/direct-routing-verify-domain-2.png)](./media/direct-routing-verify-domain-2.png#lightbox)
48+
49+
>[!Note]
50+
>It might take up to 30 minutes for new DNS record to propagate on the Internet
51+
52+
3. Select Next. If everything is set up correctly, you should see Domain status changed to *Verified* next to the added domain.
53+
54+
[ ![Screenshot of a verified domain.](./media/direct-routing-domain-verified.png)](./media/direct-routing-domain-verified.png#lightbox)
55+
56+
#### Remove domain from Azure Communication Services
57+
58+
If you want to remove a domain from your Azure Communication Services direct routing configuration, select the checkbox fir a corresponding domain name, and select *Remove*.
59+
60+
[ ![Screenshot of removing a custom domain.](./media/direct-routing-remove-domain.png)](./media/direct-routing-remove-domain.png#lightbox)
61+
62+
## Next steps:
63+
64+
### Conceptual documentation
65+
66+
- [Telephony in Azure Communication Services](../../concepts/telephony/telephony-concept.md)
67+
- [Direct routing infrastructure requirements](../../concepts/telephony/direct-routing-infrastructure.md)
68+
- [Pricing](../../concepts/pricing.md)
69+
70+
### Quickstarts
71+
72+
- [Outbound call to a phone number](../../quickstarts/telephony/pstn-call.md)
73+
- [Redirect inbound telephony calls with Call Automation](../../quickstarts/call-automation/redirect-inbound-telephony-calls.md)
149 KB
Loading
163 KB
Loading
149 KB
Loading
149 KB
Loading
186 KB
Loading
176 KB
Loading

articles/communication-services/quickstarts/telephony/includes/phone-numbers-java.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55

66
- An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
77
- [Java Development Kit (JDK)](/java/azure/jdk/?preserve-view=true&view=azure-java-stable) version 8 or above.
8-
- [Apache Maven](https://maven.apache.org/download.cgi).- A deployed Communication Services resource and connection string. [Create a Communication Services resource](../../create-communication-resource.md).
8+
- [Apache Maven](https://maven.apache.org/download.cgi).
9+
- A deployed Communication Services resource and connection string. [Create a Communication Services resource](../../create-communication-resource.md).
910

1011
## Setting Up
1112

0 commit comments

Comments
 (0)