Skip to content

Phone Number Management

This recipe shows how to search, purchase, and release Azure Communication Services (ACS) phone numbers using the JavaScript SDK.

This recipe walks these steps in order:

flowchart TD
    START["Phone Number Management"]
    N1["Prerequisites"]
    N2["SDK Installation"]
    N3["Search Available Phone Numbers"]
    N4["Purchase Phone Numbers"]
    N5["Configure Capabilities"]
    N6["Release Phone Numbers"]
    N7["List Purchased Phone Numbers"]
    START --> N1
    N1 --> N2
    N2 --> N3
    N3 --> N4
    N4 --> N5
    N5 --> N6
    N6 --> N7

Prerequisites

SDK Installation

npm install @azure/communication-phone-numbers

Search Available Phone Numbers

const { PhoneNumbersClient } = require("@azure/communication-phone-numbers");
const { DefaultAzureCredential } = require("@azure/identity");

// Initialize client
const endpoint = process.env.COMMUNICATION_SERVICES_ENDPOINT;
const client = new PhoneNumbersClient(endpoint, new DefaultAzureCredential());

async function searchPhoneNumbers() {
  // Search for available phone numbers in the US with SMS capabilities
  const searchPoller = await client.beginSearchAvailablePhoneNumbers({
    areaCode: "425",
    countryCode: "US",
    phoneNumberType: "geographic",
    assignmentType: "person",
    capabilities: { sms: "inbound+outbound", calling: "none" },
    quantity: 1
  });

  const searchResult = await searchPoller.pollUntilDone();
  console.log(`Found phone number: ${searchResult.phoneNumbers[0]}`);
  console.log(`Search ID: ${searchResult.searchId}`);
}

searchPhoneNumbers();

Purchase Phone Numbers

async function purchasePhoneNumber(searchId) {
  // Purchase the phone number (uncomment carefully)
  // const purchasePoller = await client.beginPurchasePhoneNumbers(searchId);
  // await purchasePoller.pollUntilDone();
  // console.log("Phone number purchased successfully!");
}

Configure Capabilities

async function updateCapabilities(phoneNumber) {
  // Update capabilities for a specific phone number
  // const updatePoller = await client.beginUpdatePhoneNumberCapabilities(
  //     phoneNumber,
  //     { sms: "inbound+outbound", calling: "none" }
  // );
  // await updatePoller.pollUntilDone();
  // console.log("Phone number capabilities updated!");
}

Release Phone Numbers

async function releasePhoneNumber(phoneNumber) {
  // Release a phone number (uncomment carefully)
  // const releasePoller = await client.beginReleasePhoneNumber(phoneNumber);
  // await releasePoller.pollUntilDone();
  // console.log("Phone number released successfully!");
}

List Purchased Phone Numbers

async function listPhoneNumbers() {
  // List all purchased phone numbers
  const purchasedNumbers = client.listPurchasedPhoneNumbers();
  for await (const number of purchasedNumbers) {
    console.log(`Phone number: ${number.phoneNumber}, Type: ${number.phoneNumberType}`);
  }
}

listPhoneNumbers();

See Also

Sources