Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De bibliotheek met telefoonnummers biedt mogelijkheden voor het beheer van telefoonnummers.
Aangeschafte telefoonnummers kunnen worden geleverd met veel mogelijkheden, afhankelijk van het land, het nummertype en het toewijzingstype. Voorbeelden van mogelijkheden zijn inkomend en uitgaand sms-gebruik, inkomend en uitgaand PSTN-gebruik. Telefoonnummers kunnen ook worden toegewezen aan een bot via een webhook-URL.
Slag
Voorwaarden
- Een Azure-abonnement.
- Een bestaande Communication Services-resource. Als u de resource wilt maken, kunt u de Azure Portal, de Azure PowerShell-of de Azure CLI-gebruiken.
Installeren
npm install @azure/communication-phone-numbers
Browserondersteuning
JavaScript-bundel
Als u deze clientbibliotheek in de browser wilt gebruiken, moet u eerst een bundelaar gebruiken. Raadpleeg onze bundeldocumentatievoor meer informatie over hoe u dit doet.
Sleutelbegrippen
Deze SDK biedt functionaliteit om eenvoudig direct offer en direct routing getallen te beheren.
De direct offer nummers zijn er in drie soorten: Geografisch, Toll-Free en Mobiel. Geografische en mobiele telefoonabonnementen zijn telefoonabonnementen die zijn gekoppeld aan een locatie waarvan de netnummers van telefoonnummers zijn gekoppeld aan het netnummer van een geografische locatie. Toll-Free telefoonabonnementen zijn geen gekoppelde locatie. In de VS kunnen bijvoorbeeld gratis nummers worden geleverd met netnummers zoals 800 of 888.
Ze worden beheerd met behulp van de PhoneNumbersClient
Met de functie direct routing kunt u uw bestaande telefonie-infrastructuur verbinden met ACS.
De configuratie wordt beheerd met behulp van de SipRoutingClient, die methoden biedt voor het instellen van SIP-trunks en spraakrouteringsregels om oproepen voor uw telefoniesubnet correct te verwerken.
Client met telefoonnummers
Typen telefoonnummers
Telefoonnummers zijn er in drie soorten; Geografisch, Toll-Free en mobiel. Toll-Free nummers zijn niet gekoppeld aan een locatie. In de VS kunnen bijvoorbeeld gratis nummers worden geleverd met netnummers zoals 800 of 888. Geografische en mobiele telefoonnummers zijn telefoonnummers die aan een locatie zijn gekoppeld.
Telefoonnummertypen met hetzelfde land worden gegroepeerd in een telefoonplangroep met dat telefoonnummertype. Alle Toll-Free telefoonnummers in hetzelfde land zijn bijvoorbeeld gegroepeerd in een telefoonabonnement.
Getallen zoeken en verkrijgen
Telefoonnummers kunnen worden doorzocht via de API voor het maken van zoekopdrachten door een type telefoonnummer (geografisch, gratis of mobiel), opdrachttype (persoon of toepassing), bel- en sms-mogelijkheden, een netnummer en een aantal telefoonnummers op te geven. De opgegeven hoeveelheid telefoonnummers wordt gedurende 15 minuten gereserveerd. Deze zoekopdracht naar telefoonnummers kan worden geannuleerd of gekocht. Als de zoekopdracht wordt geannuleerd, zijn de telefoonnummers beschikbaar voor anderen. Als de zoekopdracht is aangeschaft, worden de telefoonnummers voor de Azure-resource verkregen.
Telefoonnummers configureren
Telefoonnummers kunnen een combinatie van mogelijkheden hebben. Ze kunnen worden geconfigureerd ter ondersteuning van binnenkomend en/of uitgaand bellen, of niet als u het telefoonnummer niet gebruikt voor bellen. Hetzelfde geldt voor sms-mogelijkheden.
Het is belangrijk om rekening te houden met het toewijzingstype van uw telefoonnummer. Sommige mogelijkheden zijn beperkt tot een bepaald toewijzingstype.
Telefoonnummers bekijken en reserveren
De API's Bladeren en Reserveringen bieden een alternatieve manier om telefoonnummers te verkrijgen via een winkelwagenachtige ervaring. Dit wordt bereikt door de zoekbewerking, die nummers vindt en reserveert met behulp van een enkele LRO, op te splitsen in twee afzonderlijke synchrone stappen, Bladeren en Reserveren.
De bladerbewerking haalt een willekeurige steekproef op van telefoonnummers die beschikbaar zijn voor aankoop voor een bepaald land, met optionele filtercriteria om de resultaten te verfijnen. De geretourneerde telefoonnummers zijn niet gereserveerd voor klanten.
Reserveringen vertegenwoordigen een verzameling telefoonnummers die door een specifieke klant zijn vergrendeld en wachten op aankoop. Ze hebben een vervaltijd van 15 minuten na de laatste wijziging of 2 uur vanaf het moment van aanmaak. Een reservering kan nummers uit verschillende landen bevatten, in tegenstelling tot de zoekfunctie. Klanten kunnen reserveringen aanmaken, ophalen, wijzigen (door nummers toe te voegen en te verwijderen), verwijderen en kopen. Het kopen van een reservering is een LRO.
SIP-routeringsclient
Met de functie directe routering kunt u de door de klant geleverde telefonie-infrastructuur verbinden met Azure Communication Resources. Om de routeringsconfiguratie correct in te stellen, moet de klant de SIP Trunk-configuratie en SIP-routeringsregels voor aanroepen opgeven. SIP-routeringsclient biedt de benodigde interface voor het instellen van deze configuratie.
Wanneer een aanroep wordt gedaan, probeert het systeem het doelnummer te vinden met regex-nummerpatronen van gedefinieerde routes. De eerste route die overeenkomt met het nummer wordt geselecteerd. De volgorde van regex-overeenkomsten is hetzelfde als de volgorde van routes in configuratie, dus de volgorde van routes is van belang. Zodra een route overeenkomt, wordt de aanroep doorgestuurd naar de eerste trunk in de lijst met trunks van de route. Als de trunk niet beschikbaar is, wordt de volgende hoofdstam in de lijst geselecteerd.
Voorbeelden
Authenticatie
Als u een clientobject wilt maken voor toegang tot de Communication Services-API, hebt u een connection string of de endpoint van uw Communication Services-resource en een credentialnodig. De phone numbers-client kan Azure Active Directory-referenties of een API-sleutelreferentie gebruiken om te verifiëren.
U kunt een sleutel en/of verbindingsreeks ophalen uit uw Communication Services-resource in de Azure Portal. U kunt ook het eindpunt voor uw Communication Services-resource vinden in de Azure Portal.
Zodra u een sleutel hebt, kunt u de client verifiëren met een van de volgende methoden:
Een verbindingsreeks gebruiken
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const connectionString = "endpoint=<endpoint>;accessKey=<accessKey>";
const client = new PhoneNumbersClient(connectionString);
import { SipRoutingClient } from "@azure/communication-phone-numbers";
const connectionString = "endpoint=<endpoint>;accessKey=<accessKey>";
const client = new SipRoutingClient(connectionString);
Een toegangssleutel gebruiken met AzureKeyCredential
Als u een sleutel gebruikt om de client te initialiseren, moet u ook het juiste eindpunt opgeven. U kunt dit eindpunt ophalen uit uw Communication Services-resource in Azure Portal. Zodra u een sleutel en eindpunt hebt, kunt u zich verifiëren met de volgende code:
import { AzureKeyCredential } from "@azure/core-auth";
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const credential = new AzureKeyCredential("<key-from-resource>");
const client = new PhoneNumbersClient("<endpoint-from-resource>", credential);
import { AzureKeyCredential } from "@azure/core-auth";
import { SipRoutingClient } from "@azure/communication-phone-numbers";
const credential = new AzureKeyCredential("<key-from-resource>");
const client = new SipRoutingClient("<endpoint-from-resource>", credential);
Een Azure Active Directory-referentie gebruiken
Verificatie van verbindingsreeksen wordt in de meeste voorbeelden gebruikt, maar u kunt zich ook verifiëren met Azure Active Directory met behulp van de Azure Identity-bibliotheek. Als u de DefaultAzureCredential- provider wilt gebruiken die hieronder wordt weergegeven, of andere referentieproviders die zijn opgegeven bij de Azure SDK, installeert u het @azure/identity-pakket:
npm install @azure/identity
Het @azure/identity-pakket biedt verschillende referentietypen die uw toepassing hiervoor kan gebruiken. De LEESMIJ voor @azure/identity biedt meer informatie en voorbeelden om u op weg te helpen.
import { DefaultAzureCredential } from "@azure/identity";
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new PhoneNumbersClient("<endpoint-from-resource>", credential);
import { DefaultAzureCredential } from "@azure/identity";
import { SipRoutingClient } from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new SipRoutingClient("<endpoint-from-resource>", credential);
Gebruik
De volgende secties bevatten codefragmenten die betrekking hebben op een aantal algemene taken met behulp van de Azure Communication Services Phone Numbers-client. De scenario's die hier worden behandeld, bestaan uit:
TelefoonnummersClient
- Zoeken naar beschikbare telefoonnummers
- Telefoonnummers kopen in een zoek-
- Blader en reserveer beschikbare telefoonnummers
- een gekocht telefoonnummer vrijgeven
- mogelijkheden voor telefoonnummers bijwerken
- Aankoop reservering
- Een gekocht telefoonnummer
- gekochte telefoonnummers
SipRouting-client
- SIP-trunks en routes ophalen
- SIP-trunks en routes vervangen
- Enkele trunk- ophalen
- Enkele trunk instellen
- Enkele trunk- verwijderen
TelefoonnummersClient
Zoeken naar beschikbare telefoonnummers
Gebruik de methode beginSearchAvailablePhoneNumbers om te zoeken naar telefoonnummers en deze te reserveren. De geretourneerde telefoonnummers zijn 15 minuten gereserveerd en kunnen tijdens deze periode worden aangeschaft door de searchId aan de beginPurchasePhoneNumbers methode op te geven.
beginSearchAvailablePhoneNumbers is een langdurige bewerking en retourneert een poller.
import { DefaultAzureCredential } from "@azure/identity";
import {
PhoneNumbersClient,
SearchAvailablePhoneNumbersRequest,
} from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new PhoneNumbersClient("<endpoint-from-resource>", credential);
const searchRequest: SearchAvailablePhoneNumbersRequest = {
countryCode: "US",
phoneNumberType: "tollFree",
assignmentType: "application",
capabilities: {
sms: "outbound",
calling: "none",
},
quantity: 1,
};
const searchPoller = await client.beginSearchAvailablePhoneNumbers(searchRequest);
// The search is underway. Wait to receive searchId.
const searchResults = await searchPoller.pollUntilDone();
console.log(`Found phone number: ${searchResults.phoneNumbers[0]}`);
console.log(`searchId: ${searchResults.searchId}`);
Telefoonnummers kopen bij een zoekopdracht
Gebruik de beginPurchasePhoneNumbers methode om de telefoonnummers te kopen bij uw zoekopdracht. Aangeschafte telefoonnummers worden toegewezen aan de Communication Services-resource die wordt gebruikt bij het initiëren van de client. De searchId die wordt geretourneerd uit beginSearchAvailablePhoneNumbers is vereist.
beginPurchasePhoneNumbers is een langdurige bewerking en retourneert een poller.
import { DefaultAzureCredential } from "@azure/identity";
import {
PhoneNumbersClient,
SearchAvailablePhoneNumbersRequest,
} from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new PhoneNumbersClient("<endpoint-from-resource>", credential);
const searchRequest: SearchAvailablePhoneNumbersRequest = {
countryCode: "US",
phoneNumberType: "tollFree",
assignmentType: "application",
capabilities: {
sms: "outbound",
calling: "none",
},
quantity: 1,
};
const searchPoller = await client.beginSearchAvailablePhoneNumbers(searchRequest);
// The search is underway. Wait to receive searchId.
const { searchId, phoneNumbers } = await searchPoller.pollUntilDone();
const purchasePoller = await client.beginPurchasePhoneNumbers(searchId);
// Purchase is underway.
await purchasePoller.pollUntilDone();
console.log(`Successfully purchased ${phoneNumbers[0]}`);
Blader en reserveer beschikbare telefoonnummers
De API Bladeren en Reserveringen gebruiken om een telefoonnummer te reserveren
import { DefaultAzureCredential } from "@azure/identity";
import {
PhoneNumbersClient,
BrowseAvailableNumbersRequest,
AvailablePhoneNumber,
} from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new PhoneNumbersClient("<endpoint-from-resource>", credential);
const browseAvailableNumberRequest: BrowseAvailableNumbersRequest = {
countryCode: "US",
phoneNumberType: "tollFree",
};
const browseAvailableNumbers = await client.browseAvailablePhoneNumbers(
browseAvailableNumberRequest,
{
capabilities: {
calling: "outbound",
},
assignmentType: "application",
},
);
const phoneNumbers = browseAvailableNumbers.phoneNumbers;
const phoneNumbersList = [phoneNumbers[0], phoneNumbers[1]];
const reservationResponse = await client.createOrUpdateReservation(
{
reservationId: "reservationId",
},
{
add: phoneNumbersList,
},
);
const numbersWithError: AvailablePhoneNumber[] = [];
for (const number of Object.values(reservationResponse.phoneNumbers || {})) {
if (number != null && number.status === "error") {
numbersWithError.push(number);
}
}
if (numbersWithError.length > 0) {
console.log("Errors occurred during reservation");
} else {
console.log("Reservation operation completed without errors.");
}
Een gekocht telefoonnummer vrijgeven
Gebruik de methode beginReleasePhoneNumber om een eerder gekocht telefoonnummer vrij te geven. Vrijgegeven telefoonnummers worden niet meer gekoppeld aan de Communication Services-resource en zijn niet beschikbaar voor gebruik met andere bewerkingen (bijvoorbeeld SMS) van de resource. Het telefoonnummer dat wordt vrijgegeven, is vereist.
beginReleasePhoneNumber is een langdurige bewerking en retourneert een poller.
import { DefaultAzureCredential } from "@azure/identity";
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new PhoneNumbersClient("<endpoint-from-resource>", credential);
const phoneNumberToRelease = "<phone-number-to-release>";
const releasePoller = await client.beginReleasePhoneNumber(phoneNumberToRelease);
// Release is underway.
await releasePoller.pollUntilDone();
console.log("Successfully release phone number.");
Mogelijkheden voor telefoonnummers bijwerken
Gebruik de methode beginUpdatePhoneNumberCapabilities om de mogelijkheden van een gekocht telefoonnummer bij te werken. Telefoonnummers kunnen worden geconfigureerd ter ondersteuning van inkomende en/of uitgaande oproepen en sms's, of geen van beide.
beginUpdatePhoneNumberCapabilities is een langdurige bewerking en retourneert een poller.
import { DefaultAzureCredential } from "@azure/identity";
import {
PhoneNumbersClient,
PhoneNumberCapabilitiesRequest,
} from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new PhoneNumbersClient("<endpoint-from-resource>", credential);
const phoneNumberToUpdate = "<phone-number-to-update>";
// This will update phone number to send and receive sms, but only send calls.
const updateRequest: PhoneNumberCapabilitiesRequest = {
sms: "inbound+outbound",
calling: "outbound",
};
const updatePoller = await client.beginUpdatePhoneNumberCapabilities(
phoneNumberToUpdate,
updateRequest,
);
// Update is underway.
const { capabilities } = await updatePoller.pollUntilDone();
console.log(`These are the update capabilities: ${capabilities}`);
Een gekocht telefoonnummer ophalen
Gebruik de methode getPurchasedPhoneNumber om informatie over een gekocht telefoonnummer op te halen. Deze informatie omvat het type telefoonnummer, de mogelijkheden, de kosten en de aankoopdatum.
import { DefaultAzureCredential } from "@azure/identity";
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new PhoneNumbersClient("<endpoint-from-resource>", credential);
const phoneNumberToGet = "<phone-number-to-get>";
const phoneNumber = await client.getPurchasedPhoneNumber(phoneNumberToGet);
console.log(`The id is the same as the phone number: ${phoneNumber.id}`);
console.log(`Phone number type is ${phoneNumber.phoneNumberType}`);
Aankoop reservering
Als je een bestaande en actieve reservering hebt, koop je de telefoonnummers in die reservering.
import { DefaultAzureCredential } from "@azure/identity";
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new PhoneNumbersClient("<endpoint-from-resource>", credential);
const reservationId = "<reservation-id>";
const purchasePoller = await client.beginReservationPurchase(reservationId);
// Purchase is underway.
const purchaseResult = await purchasePoller.pollUntilDone();
console.log(`Successfully purchased phone numbers in reservation: ${reservationId}`);
Aangeschafte telefoonnummers vermelden
Gebruik de methode listPurchasedPhoneNumbers om door alle aangeschafte telefoonnummers te bladeren.
import { DefaultAzureCredential } from "@azure/identity";
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new PhoneNumbersClient("<endpoint-from-resource>", credential);
const phoneNumbers = client.listPurchasedPhoneNumbers();
for await (const phoneNumber of phoneNumbers) {
console.log(`The id is the same as the phone number: ${phoneNumber.id}`);
console.log(`Phone number type is ${phoneNumber.phoneNumberType}`);
}
SipRouting-client
SIP-trunks en -routes ophalen
Haal de lijst met momenteel geconfigureerde trunks of routes op.
import { DefaultAzureCredential } from "@azure/identity";
import { SipRoutingClient } from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new SipRoutingClient("<endpoint-from-resource>", credential);
const trunks = client.listTrunks();
const routes = client.listRoutes();
for await (const trunk of trunks) {
console.log(`Trunk ${trunk.fqdn}:${trunk.sipSignalingPort}`);
}
for await (const route of routes) {
console.log(`Route ${route.name} with pattern ${route.numberPattern}`);
console.log(`Route's trunks: ${route.trunks?.join()}`);
}
SIP-trunks en -routes vervangen
Vervang de lijst met momenteel geconfigureerde trunks of routes door nieuwe waarden.
import { DefaultAzureCredential } from "@azure/identity";
import { SipRoutingClient } from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new SipRoutingClient("<endpoint-from-resource>", credential);
await client.setTrunks([
{
fqdn: "sbc.one.domain.com",
sipSignalingPort: 1234,
},
{
fqdn: "sbc.two.domain.com",
sipSignalingPort: 1234,
},
]);
await client.setRoutes([
{
name: "First Route",
description: "route's description",
numberPattern: "^+[1-9][0-9]{3,23}$",
trunks: ["sbc.one.domain.com"],
},
{
name: "Second Route",
description: "route's description",
numberPattern: "^.*$",
trunks: ["sbc.two.domain.com", "sbc.one.domain.com"],
},
]);
Eén trunk ophalen
import { DefaultAzureCredential } from "@azure/identity";
import { SipRoutingClient } from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new SipRoutingClient("<endpoint-from-resource>", credential);
const trunk = await client.getTrunk("sbc.one.domain.com");
if (trunk) {
console.log(`Trunk ${trunk.fqdn}:${trunk.sipSignalingPort}`);
} else {
console.log("Trunk not found");
}
Eén trunk instellen
import { DefaultAzureCredential } from "@azure/identity";
import { SipRoutingClient } from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new SipRoutingClient("<endpoint-from-resource>", credential);
await client.setTrunk({
fqdn: "sbc.one.domain.com",
sipSignalingPort: 4321,
});
Eén trunk verwijderen
import { DefaultAzureCredential } from "@azure/identity";
import { SipRoutingClient } from "@azure/communication-phone-numbers";
const credential = new DefaultAzureCredential();
const client = new SipRoutingClient("<endpoint-from-resource>", credential);
await client.deleteTrunk("sbc.one.domain.com");
Probleemoplossing
Logboekregistratie
Het inschakelen van logboekregistratie kan helpen nuttige informatie over fouten te ontdekken. Als u een logboek met HTTP-aanvragen en -antwoorden wilt zien, stelt u de omgevingsvariabele AZURE_LOG_LEVEL in op info. U kunt logboekregistratie ook tijdens runtime inschakelen door setLogLevel aan te roepen in de @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Voor meer gedetailleerde instructies over het inschakelen van logboeken, kunt u de @azure/logger pakketdocumentenbekijken.
Volgende stappen
Bekijk de voorbeelden map voor gedetailleerde voorbeelden over het gebruik van deze bibliotheek.
Bijdragen
Als u een bijdrage wilt leveren aan deze bibliotheek, leest u de gids voor bijdragen voor meer informatie over het bouwen en testen van de code.
Verwante projecten
Azure SDK for JavaScript