.NET용 Azure Communication Phone Numbers 클라이언트 라이브러리 - 버전 1.1.0
Azure Communication Phone Numbers는 Azure Communication Services 전화 번호를 관리하고 있습니다.
시작
패키지 설치
NuGet을 사용하여 .NET용 Azure Communication Phone Numbers 클라이언트 라이브러리를 설치합니다.
dotnet add package Azure.Communication.PhoneNumbers
필수 구성 요소
이 패키지를 사용하려면 Azure 구독 및 Communication Service 리소스 가 필요합니다.
새 Communication Service를 만들려면 Azure Portal, Azure PowerShell 또는 .NET 관리 클라이언트 라이브러리를 사용할 수 있습니다.
주요 개념
이 SDK는 및 숫자를 쉽게 관리할 direct offer
direct routing
수 있는 기능을 제공합니다.
숫자는 direct offer
지리적 및 무료라는 두 가지 유형으로 제공됩니다. 지리적 전화 플랜은 지리적 위치의 지역 코드와 연결된 전화 번호의 지역 번호가 있는 위치와 연결된 전화 요금입니다. Toll-Free 전화 플랜은 연결된 위치가 아닌 전화 요금입니다. 예를 들어 미국에서는 무료 번호에 800 또는 888과 같은 지역 번호가 함께 제공 될 수 있습니다.
다음을 사용하여 관리됩니다. PhoneNumbersClient
이 direct routing
기능을 사용하면 기존 전화 통신 인프라를 ACS에 연결할 수 있습니다.
구성은 전화 통신 서브넷에 SipRoutingClient
대한 호출을 제대로 처리하기 위해 SIP 트렁크 및 음성 라우팅 규칙을 설정하는 메서드를 제공하는 를 사용하여 관리됩니다.
클라이언트 인증
클라이언트는 Azure Portal의 Azure Communication Resources에서 가져온 연결 문자열을 사용하여 인증할 수 있습니다.
// Get a connection string to our Azure Communication resource.
var connectionString = "<connection_string>";
var client = new PhoneNumbersClient(connectionString);
// Get a connection string to Azure Communication resource.
var connectionString = "<connection_string>";
var client = new SipRoutingClient(connectionString);
클라이언트에는 Azure Active Directory 인증을 사용하여 인증하는 옵션도 있습니다. 이 항목에 대한 자세한 내용은 Azure ID를 참조하세요.
// Get an endpoint to our Azure Communication resource.
var endpoint = new Uri("<endpoint_url>");
TokenCredential tokenCredential = new DefaultAzureCredential();
client = new PhoneNumbersClient(endpoint, tokenCredential);
// Get an endpoint to our Azure Communication resource.
var endpoint = new Uri("<endpoint_url>");
TokenCredential tokenCredential = new DefaultAzureCredential();
client = new SipRoutingClient(endpoint, tokenCredential);
전화 번호 클라이언트
전화 번호 유형 개요
전화 번호는 지리적 및 무료라는 두 가지 유형으로 제공됩니다. 지리적 전화 플랜은 지리적 위치의 지역 코드와 연결된 전화 번호의 지역 번호가 있는 위치와 연결된 전화 요금입니다. Toll-Free 전화 플랜은 연결된 위치가 아닌 전화 요금입니다. 예를 들어 미국에서는 무료 번호에 800 또는 888과 같은 지역 번호가 함께 제공 될 수 있습니다.
동일한 국가 내의 모든 지리적 전화 요금제는 지리적 전화 번호 유형이 있는 전화 요금제 그룹으로 그룹화됩니다. 동일한 국가 내의 모든 Toll-Free 전화 요금제는 전화 요금제 그룹으로 그룹화됩니다.
전화 번호 검색, 구매 및 해제
지역 코드, 전화 번호 수량, 애플리케이션 유형, 전화 번호 유형 및 기능을 제공하여 검색 생성 API를 통해 전화 번호를 검색할 수 있습니다. 제공된 전화 번호 수량은 10분 동안 예약되며 이 시간 내에 구매할 수 있습니다. 검색을 구매하지 않으면 10분 후에 다른 사용자가 전화 번호를 사용할 수 있게 됩니다. 검색을 구매한 경우 Azure 리소스에 대한 전화 번호를 가져옵니다.
릴리스 API를 사용하여 전화 번호를 해제할 수도 있습니다.
SIP 라우팅 클라이언트
직접 라우팅 기능을 사용하면 고객이 제공한 전화 통신 인프라를 Azure Communication Resources에 연결할 수 있습니다. 라우팅 구성을 올바르게 설정하려면 고객이 호출에 대한 SIP 트렁크 구성 및 SIP 라우팅 규칙을 제공해야 합니다. SIP 라우팅 클라이언트는 이 구성을 설정하는 데 필요한 인터페이스를 제공합니다.
호출이 이루어지면 시스템은 대상 번호를 정의된 경로의 regex 번호 패턴과 일치시키려고 시도합니다. 숫자와 일치하는 첫 번째 경로가 선택됩니다. regex 일치 순서는 구성의 경로 순서와 동일하므로 경로 순서가 중요합니다. 경로가 일치하면 경로의 트렁크 목록에서 첫 번째 트렁크로 호출이 라우팅됩니다. 트렁크를 사용할 수 없는 경우 목록에서 다음 트렁크가 선택됩니다.
스레드로부터의 안전성
모든 클라이언트 instance 메서드는 스레드로부터 안전하고 서로 독립적임을 보장합니다(지침). 이렇게 하면 스레드 간에 클라이언트 인스턴스를 다시 사용하는 것이 항상 안전합니다.
추가 개념
클라이언트 옵션 | 응답 | 에 액세스 장기 실행 작업 | 오류 | 처리 진단 | 조롱 | 클라이언트 수명
예제
PhoneNumbersClient
PhoneNumbersClient 만들기
새 PhoneNumbersClient
를 만들려면 리소스를 만든 후 Azure Portal에서 가져올 수 있는 Azure Communication Services 리소스에 대한 연결 문자열이 필요합니다.
환경 변수, 구성 설정 또는 애플리케이션에 대해 작동하는 모든 방법을 기반으로 설정할 connectionString
수 있습니다.
// Get a connection string to our Azure Communication resource.
var connectionString = "<connection_string>";
var client = new PhoneNumbersClient(connectionString);
전화 번호 검색
전화 번호를 구매하려면 전화 번호를 검색해야 합니다. 검색은 개체를 반환하는 함수에서 StartSearchAvailablePhoneNumbers
시작할 수 있는 장기 실행 작업입니다 SearchAvailablePhoneNumbersOperation
. SearchAvailablePhoneNumbersOperation
는 작업의 상태 업데이트하고 완전성을 위해 검사 데 사용할 수 있습니다.
var capabilities = new PhoneNumberCapabilities(calling: PhoneNumberCapabilityType.None, sms: PhoneNumberCapabilityType.Outbound);
var searchOperation = await client.StartSearchAvailablePhoneNumbersAsync(countryCode, PhoneNumberType.TollFree, PhoneNumberAssignmentType.Application, capabilities);
await searchOperation.WaitForCompletionAsync();
전화 번호 구매
검색을 구매하여 전화 번호를 가져올 수 있습니다.
var purchaseOperation = await client.StartPurchasePhoneNumbersAsync(searchOperation.Value.SearchId);
await purchaseOperation.WaitForCompletionResponseAsync();
구매한 전화 번호 나열
리소스에 대해 구매한 모든 전화 번호를 나열할 수 있습니다.
var purchasedPhoneNumbers = client.GetPurchasedPhoneNumbersAsync();
await foreach (var phoneNumber in purchasedPhoneNumbers)
{
Console.WriteLine($"Phone number: {phoneNumber.PhoneNumber}, monthly cost: {phoneNumber.Cost}");
}
전화 번호 해제
더 이상 전화 번호가 필요하지 않은 경우 해제할 수 있습니다.
var purchasedPhoneNumber = "<purchased_phone_number>";
var releaseOperation = await client.StartReleasePhoneNumberAsync(purchasedPhoneNumber);
await releaseOperation.WaitForCompletionResponseAsync();
await WaitForCompletionResponseAsync(releaseOperation);
SipRoutingClient
SIP 트렁크 및 경로 검색
현재 구성된 트렁크 또는 경로 목록을 가져옵니다.
var trunksResponse = await client.GetTrunksAsync();
var routesResponse = await client.GetRoutesAsync();
SIP 트렁크 및 경로 바꾸기
현재 구성된 트렁크 또는 경로 목록을 바꿉니다.
// The service will not allow trunks that are used in any of the routes to be deleted, therefore first set the routes as empty list, and then update the routes.
var newTrunks = "<new_trunks_list>";
var newRoutes = "<new_routes_list>";
await client.SetRoutesAsync(new List<SipTrunkRoute>());
await client.SetTrunksAsync(newTrunks);
await client.SetRoutesAsync(newRoutes);
단일 트렁크 관리
SIP 트렁크는 를 사용하여 SipRoutingClient
단일 트렁크를 검색, 설정 또는 삭제하여 별도로 관리할 수 있습니다.
단일 트렁크 검색
// Get trunk object, based on it's FQDN.
var fqdnToRetrieve = "<fqdn>";
var trunkResponse = await client.GetTrunkAsync(fqdnToRetrieve);
단일 트렁크 설정
// Set function will either modify existing item or add new item to the collection.
// The trunk is matched based on it's FQDN.
var trunkToSet = "<trunk_to_set>";
await client.SetTrunkAsync(trunkToSet);
단일 트렁크 삭제
// Deletes trunk with supplied FQDN.
var fqdnToDelete = "<fqdn>";
await client.DeleteTrunkAsync(fqdnToDelete);
문제 해결
다음 단계
참여
이 프로젝트에 대한 기여와 제안을 환영합니다. 대부분의 경우 기여하려면 권한을 부여하며 실제로 기여를 사용할 권한을 당사에 부여한다고 선언하는 CLA(기여자 라이선스 계약)에 동의해야 합니다. 자세한 내용은 cla.microsoft.com.
이 프로젝트에는 Microsoft Open Source Code of Conduct(Microsoft 오픈 소스 준수 사항)가 적용됩니다. 자세한 내용은 Code of Conduct FAQ(규정 FAQ)를 참조하세요. 또는 추가 질문이나 의견은 opencode@microsoft.com으로 문의하세요.
Azure SDK for .NET