Delen via


Id-typen begrijpen

Communication Services-SDK's en REST API's gebruiken het id-type om te bepalen wie met wie communiceert. Id's geven bijvoorbeeld op wie u wilt bellen of wie een chatbericht heeft verzonden.

Afhankelijk van de context worden id's verpakt met extra eigenschappen, zoals in de ChatParticipant Chat-SDK of in de RemoteParticipant Aanroepende SDK.

In dit artikel leert u meer over verschillende typen id's en hoe deze eruitzien in programmeertalen. U krijgt ook tips over het gebruik ervan.

Het type CommunicationIdentifier

Er zijn gebruikersidentiteiten die u zelf maakt en er zijn externe identiteiten. Microsoft Teams-gebruikers en telefoonnummers zijn externe identiteiten die in interop-scenario's kunnen worden afgespeeld. Elk van deze verschillende identiteitstypen heeft een bijbehorende id die deze vertegenwoordigt. Een id is een gestructureerd type dat typeveiligheid biedt en goed werkt met de voltooiing van de code van uw editor.

Communicatiegebruiker

De CommunicationUserIdentifier interface vertegenwoordigt een gebruikersidentiteit die is gemaakt met behulp van de Identity SDK of REST API. Dit is de enige id die wordt gebruikt als uw toepassing geen gebruik maakt van microsoft Teams-interoperabiliteits- of telefoniefuncties.

Basaal gebruik

// at some point you will have created a new user identity in your trusted service
const newUser = await identityClient.createUser();

// and then send newUser.communicationUserId down to your client application
// where you can again create an identifier for the user
const sameUser = { communicationUserId: newUserId };

API-verwijzing

CommunicationUserIdentifier

Microsoft Teams-gebruiker

De MicrosoftTeamsUserIdentifier interface vertegenwoordigt een Teams-gebruiker met de microsoft Entra-gebruikersobject-id. U kunt de object-id van Microsoft Entra-gebruikers ophalen via de Microsoft Graph REST API/gebruikerseindpunt van de id eigenschap in het antwoord. Voor meer informatie over het werken met Microsoft Graph, probeert u Graph Explorer en bekijkt u de Graph SDK. U kunt de id ook vinden als claim oid in een Microsoft Entra-token of Microsoft Entra-toegangstoken nadat uw gebruiker zich heeft aangemeld en een token heeft verkregen.

Basaal gebruik

// get the Teams user's ID from Graph APIs if only the email is known
const user = await graphClient.api("/users/bob@contoso.com").get();

// create an identifier
const teamsUser = { microsoftTeamsUserId: user.id };

// if you're not operating in the public cloud, you must also pass the right Cloud type.
const gcchTeamsUser = { microsoftTeamsUserId: userId, cloud: "gcch" };

API-verwijzing

MicrosoftTeamsUserIdentifier

Telefoonnummer

De PhoneNumberIdentifier interface vertegenwoordigt een telefoonnummer. De service gaat ervan uit dat telefoonnummers zijn opgemaakt in E.164-indeling.

Basaal gebruik

// create an identifier
const phoneNumber = { phoneNumber: "+112345556789" };

API-verwijzing

PhoneNumberIdentifier

Microsoft Teams-toepassing

De MicrosoftTeamsAppIdentifier interface vertegenwoordigt een bot van de Teams Voice-toepassingen zoals Oproepwachtrij en Auto Attendant met de object-id van de Microsoft Entra-bot. De Teams-toepassingen moeten worden geconfigureerd met een resourceaccount. U kunt de object-id van de Microsoft Entra-bot ophalen via de Microsoft Graph REST API/gebruikerseindpunt van de id eigenschap in het antwoord. Voor meer informatie over het werken met Microsoft Graph, probeert u Graph Explorer en bekijkt u de Graph SDK.

Basaal gebruik

// Get the Microsoft Teams App's ID from Graph APIs
const users = await graphClient.api("/users")
                    .filter(filterConditions)
                    .select('displayName,id')
                    .get();
//Here we assume that you have a function getBotFromUsers that gets the bot from the returned response
const bot = getBotFromUsers(users);
// Create an identifier
const teamsAppIdentifier = { teamsAppId: bot.id };

// If you're not operating in the public cloud, you must also pass the right Cloud type.
const gcchTeamsAppIdentifier = { teamsAppId: id, cloud: "gcch" };

API-verwijzing

MicrosoftTeamsAppIdentifier

Onbekend

De UnknownIdentifier interface bestaat voor toekomstbestendig maken en u kunt deze tegenkomen wanneer u een oude versie van de SDK gebruikt en er onlangs een nieuw id-type is geïntroduceerd. Een onbekende id van de service wordt gedeserialiseerd naar de UnknownIdentifier SDK.

Basaal gebruik

// create an identifier
const unknownId = { id: "a raw id that originated in the service" };

API-verwijzing

UnknownIdentifier

De basisinterface verwerken CommunicationIdentifier

Terwijl u id's maakt voor een concreet type dat u in de SDK doorgeeft, retourneert de SDK een CommunicationIdentifierKind, wat een gediscrimineerde samenvoeging is. Het is eenvoudig om te beperken tot een concreet type en we raden een switch-case-instructie aan met patroonkoppeling:

switch (communicationIdentifier.kind)
{
    case "communicationUser":
        // TypeScript has narrowed communicationIdentifier to be a CommunicationUserKind
        console.log(`Communication user: ${communicationIdentifier.communicationUserId}`);
        break;
    case "microsoftTeamsUser":
        // narrowed to MicrosoftTeamsUserKind
        console.log(`Teams user: ${communicationIdentifier.microsoftTeamsUserId}`);
        break;
    case "microsoftTeamsApp":
        // narrowed to MicrosoftTeamsAppIdentifier
        console.log(`Teams app: ${communicationIdentifier.teamsAppId}`);
        break;
    case "phoneNumber":
         // narrowed to PhoneNumberKind
        console.log(`Phone number: ${communicationIdentifier.phoneNumber}`);
        break;
    case "unknown":
         // narrowed to UnknownIdentifierKind
        console.log(`Unknown: ${communicationIdentifier.id}`);
        break;
    default:
        // be careful here whether you want to throw because a new SDK version
        // can introduce new identifier types
        break;
}

De id-interfaces zijn zodanig ontworpen dat u niet hoeft op te geven kind om de uitgebreidheid te verminderen en de discriminerende samenvoeging met de kind eigenschap wordt alleen gebruikt wanneer deze wordt geretourneerd door de SDK. Als u echter merkt dat u een id moet vertalen naar het bijbehorende discriminerende samenvoegtype, kunt u deze helper gebruiken:

const identifierKind = getIdentifierKind(identifier); // now you can switch-case on the kind

Onbewerkte id-weergave

Soms moet u een id serialiseren naar een platte tekenreeks. Als u bijvoorbeeld de id wilt opslaan in een databasetabel of als u deze wilt gebruiken als URL-parameter.

Voor dat doel hebben id's een andere weergave met de naam RawId. Een id kan altijd worden omgezet in de bijbehorende onbewerkte id en een geldige onbewerkte id kan altijd worden geconverteerd naar een id.

Omdat azure-communication-common@2.1.0 de SDK helpt bij de conversie:

// get an identifier's raw Id
const rawId = getIdentifierRawId(communicationIdentifier);

// create an identifier from a given raw Id
const identifier = createIdentifierFromRawId(rawId);

Een ongeldige onbewerkte id wordt alleen geconverteerd naar een UnknownIdentifier in de SDK en elke validatie vindt alleen plaats aan de servicezijde.

Communicatiegebruiker

Het CommunicationUserIdentifier vertegenwoordigt een gebruikersidentiteit die is gemaakt met behulp van de Identity SDK of REST API. Dit is de enige id die wordt gebruikt als uw toepassing geen gebruik maakt van microsoft Teams-interoperabiliteits- of telefoniefuncties.

Basaal gebruik

// at some point you will have created a new user identity in your trusted service
CommunicationUserIdentifier newUser = await identityClient.CreateUser();

// and then send newUser.Id down to your client application
// where you can again create an identifier for the user
var sameUser = new CommunicationUserIdentifier(newUserId);

API-verwijzing

CommunicationUserIdentifier

Microsoft Teams-gebruiker

De MicrosoftTeamsUserIdentifier vertegenwoordigt een Teams-gebruiker met de microsoft Entra-gebruikersobject-id. U kunt de object-id van Microsoft Entra-gebruikers ophalen via de Microsoft Graph REST API/gebruikerseindpunt van de id eigenschap in het antwoord. Voor meer informatie over het werken met Microsoft Graph, probeert u Graph Explorer en bekijkt u de Graph SDK. U kunt de id ook vinden als claim oid in een Microsoft Entra-token of Microsoft Entra-toegangstoken nadat uw gebruiker zich heeft aangemeld en een token heeft verkregen.

Basaal gebruik

// get the Teams user's ID from Graph APIs if only the email is known
var user = await graphClient.Users["bob@contoso.com"]
    .Request()
    .GetAsync();

// create an identifier
var teamsUser = new MicrosoftTeamsUserIdentifier(user.Id);

// if you're not operating in the public cloud, you must also pass the right Cloud type.
var gcchTeamsUser = new MicrosoftTeamsUserIdentifier(userId: userId, cloud: CommunicationCloudEnvironment.Gcch);

API-verwijzing

MicrosoftTeamsUserIdentifier

Telefoonnummer

Het PhoneNumberIdentifier vertegenwoordigt een telefoonnummer. De service gaat ervan uit dat telefoonnummers zijn opgemaakt in E.164-indeling.

Basaal gebruik

// create an identifier
var phoneNumber = new PhoneNumberIdentifier("+112345556789");

API-verwijzing

PhoneNumberIdentifier

Microsoft Teams-toepassing

De MicrosoftTeamsAppIdentifier interface vertegenwoordigt een bot van de Teams Voice-toepassingen zoals Oproepwachtrij en Auto Attendant met de object-id van de Microsoft Entra-bot. De Teams-toepassingen moeten worden geconfigureerd met een resourceaccount. U kunt de object-id van de Microsoft Entra-bot ophalen via de Microsoft Graph REST API/gebruikerseindpunt van de id eigenschap in het antwoord. Voor meer informatie over het werken met Microsoft Graph, probeert u Graph Explorer en bekijkt u de Graph SDK.

Basaal gebruik

// Get the Microsoft Teams App's ID from Graph APIs
var users = await graphClient.Users.GetAsync((requestConfiguration) =>
{
	requestConfiguration.QueryParameters.Select = new string []{ "displayName","id" };
	requestConfiguration.QueryParameters.Filter = filterConditions;
});

// Here we assume that you have a function GetBotFromUsers that gets the bot from the returned response
var bot = GetBotFromUsers(users);

// Create an identifier
var teamsAppIdentifier = new MicrosoftTeamsAppIdentifier(bot.Id);

// If you're not operating in the public cloud, you must also pass the right Cloud type.
var gcchTeamsAppIdentifier = new MicrosoftTeamsAppIdentifier(bot.Id, CommunicationCloudEnvironment.Gcch);

API-verwijzing

MicrosoftTeamsAppIdentifier

Onbekend

Het UnknownIdentifier bestaat voor toekomstbestendig maken en u kunt deze tegenkomen wanneer u een oude versie van de SDK gebruikt en er onlangs een nieuw id-type is geïntroduceerd. Een onbekende id van de service wordt gedeserialiseerd naar de UnknownIdentifier SDK.

Basaal gebruik

// create an identifier
var unknown = new UnknownIdentifier("a raw id that originated in the service");

API-verwijzing

UnknownIdentifier

De basisklasse afhandelen CommunicationIdentifier

Terwijl u id's maakt voor een concreet type dat u in de SDK doorgeeft, retourneert de SDK het CommunicationIdentifier protocol. Het is eenvoudig om omlaag te casten naar een betontype en we raden een switch-case-instructie aan met patroonkoppeling:

switch (communicationIdentifier)
{
    case CommunicationUserIdentifier communicationUser:
        Console.WriteLine($"Communication user: {communicationUser.Id}");
        break;
    case MicrosoftTeamsUserIdentifier teamsUser:
        Console.WriteLine($"Teams user: {teamsUser.UserId}");
        break;
    case MicrosoftTeamsAppIdentifier teamsApp:
        Console.WriteLine($"Teams app: {teamsApp.AppId}");
        break;
    case PhoneNumberIdentifier phoneNumber:
        Console.WriteLine($"Phone number: {phoneNumber.PhoneNumber}");
        break;
    case UnknownIdentifier unknown:
        Console.WriteLine($"Unknown: {unknown.Id}");
        break;
    default:
        // be careful here whether you want to throw because a new SDK version
        // can introduce new identifier types
        break;
}

Onbewerkte id-weergave

Soms moet u een id serialiseren naar een platte tekenreeks. Als u bijvoorbeeld de id wilt opslaan in een databasetabel of als u deze wilt gebruiken als URL-parameter.

Voor dat doel hebben id's een andere weergave met de naam RawId. Een id kan altijd worden omgezet in de bijbehorende onbewerkte id en een geldige onbewerkte id kan altijd worden geconverteerd naar een id.

Omdat Azure.Communication.Common 1.2.0 de SDK helpt bij de conversie:

// get an identifier's raw Id
string rawId = communicationIdentifier.RawId;

// create an identifier from a given raw Id
CommunicationIdentifier identifier = CommunicationIdentifier.FromRawId(rawId);

Een ongeldige onbewerkte id wordt alleen geconverteerd naar een UnknownIdentifier in de SDK en elke validatie vindt alleen plaats aan de servicezijde.

Communicatiegebruiker

Het CommunicationUserIdentifier vertegenwoordigt een gebruikersidentiteit die is gemaakt met behulp van de Identity SDK of REST API. Dit is de enige id die wordt gebruikt als uw toepassing geen gebruik maakt van microsoft Teams-interoperabiliteits- of telefoniefuncties.

Basaal gebruik

# at some point you will have created a new user identity in your trusted service
new_user = identity_client.create_user()

# and then send new_user.properties['id'] down to your client application
# where you can again create an identifier for the user
same_user = CommunicationUserIdentifier(new_user_id)

API-verwijzing

CommunicationUserIdentifier

Microsoft Teams-gebruiker

De MicrosoftTeamsUserIdentifier vertegenwoordigt een Teams-gebruiker met de microsoft Entra-gebruikersobject-id. U kunt de object-id van Microsoft Entra-gebruikers ophalen via de Microsoft Graph REST API/gebruikerseindpunt van de id eigenschap in het antwoord. Voor meer informatie over het werken met Microsoft Graph, probeert u Graph Explorer en bekijkt u de Graph SDK. U kunt de id ook vinden als claim oid in een Microsoft Entra-token of Microsoft Entra-toegangstoken nadat uw gebruiker zich heeft aangemeld en een token heeft verkregen.

Basaal gebruik

# get the Teams user's ID from Graph APIs if only the email is known
user_id = graph_client.get("/users/bob@contoso.com").json().get("id");

# create an identifier
teams_user = MicrosoftTeamsUserIdentifier(user_id)

# if you're not operating in the public cloud, you must also pass the right Cloud type.
gcch_teams_user = MicrosoftTeamsUserIdentifier(user_id, cloud=CommunicationCloudEnvironment.GCCH)

API-verwijzing

MicrosoftTeamsUserIdentifier

Telefoonnummer

Het PhoneNumberIdentifier vertegenwoordigt een telefoonnummer. De service gaat ervan uit dat telefoonnummers zijn opgemaakt in E.164-indeling.

Basaal gebruik

# create an identifier
phone_number = PhoneNumberIdentifier("+112345556789")

API-verwijzing

PhoneNumberIdentifier

Microsoft Teams-toepassing

De MicrosoftTeamsAppIdentifier interface vertegenwoordigt een bot van de Teams Voice-toepassingen zoals Oproepwachtrij en Auto Attendant met de object-id van de Microsoft Entra-bot. De Teams-toepassingen moeten worden geconfigureerd met een resourceaccount. U kunt de object-id van de Microsoft Entra-bot ophalen via de Microsoft Graph REST API/gebruikerseindpunt van de id eigenschap in het antwoord. Voor meer informatie over het werken met Microsoft Graph, probeert u Graph Explorer en bekijkt u de Graph SDK.

Basaal gebruik

# Get the Microsoft Teams App's ID from Graph APIs
users = graph_client.get("/users").json()

# Here we assume that you have a function get_bot_from_users that gets the bot from the returned response
bot = get_bot_from_users(users);

# Create an identifier
teams_app_identifier = MicrosoftTeamsAppIdentifier(app_id=bot.get("id"))

# If you're not operating in the public cloud, you must also pass the right Cloud type.
gcch_teams_app_identifier = MicrosoftTeamsAppIdentifier(
            app_id=bot.get("id"),
            cloud=CommunicationCloudEnvironment.GCCH
        )

API-verwijzing

MicrosoftTeamsAppIdentifier

Onbekend

Het UnknownIdentifier bestaat voor toekomstbestendig maken en u kunt deze tegenkomen wanneer u een oude versie van de SDK gebruikt en er onlangs een nieuw id-type is geïntroduceerd. Een onbekende id van de service wordt gedeserialiseerd naar de UnknownIdentifier SDK.

Basaal gebruik

# create an identifier
unknown = UnknownIdentifier("a raw id that originated in the service")

API-verwijzing

UnknownIdentifier

De basisklasse afhandelen CommunicationIdentifier

Terwijl u id's maakt voor een concreet type dat u in de SDK doorgeeft, retourneert de SDK het CommunicationIdentifier protocol. Concrete id-klassen zijn alleen het CommunicationIdentifier-protocol samen met een getypte woordenlijst met de naam properties. U kunt dus patroonkoppeling gebruiken voor de exemplaarvariabele van kind het protocol om te vertalen naar het concrete type:

match communication_identifier.kind:
    case CommunicationIdentifierKind.COMMUNICATION_USER:
        print(f"Communication user: {communication_identifier.properties['id']}")
    case CommunicationIdentifierKind.MICROSOFT_TEAMS_USER:
        print(f"Teams user: {communication_identifier.properties['user_id']}")
    case CommunicationIdentifierKind.MICROSOFT_TEAMS_APP:
        print(f"Teams app: {communication_identifier.properties['app_id']}")
    case CommunicationIdentifierKind.PHONE_NUMBER:
        print(f"Phone number: {communication_identifier.properties['value']}")
    case CommunicationIdentifierKind.UNKNOWN:
        print(f"Unknown: {communication_identifier.raw_id}")
    case _:
        # be careful here whether you want to throw because a new SDK version
        # can introduce new identifier types

Onbewerkte id-weergave

Soms moet u een id serialiseren naar een platte tekenreeks. Als u bijvoorbeeld de id wilt opslaan in een databasetabel of als u deze wilt gebruiken als URL-parameter.

Voor dat doel hebben id's een andere weergave met de naam RawId. Een id kan altijd worden omgezet in de bijbehorende onbewerkte id en een geldige onbewerkte id kan altijd worden geconverteerd naar een id.

De SDK helpt bij de conversie:

# get an identifier's raw Id
raw_id = communication_identifier.raw_id

# create an identifier from a given raw Id
identifier = identifier_from_raw_id(raw_id)

Een ongeldige onbewerkte id wordt alleen geconverteerd naar een UnknownIdentifier in de SDK en elke validatie vindt alleen plaats aan de servicezijde.

Communicatiegebruiker

Het CommunicationUserIdentifier vertegenwoordigt een gebruikersidentiteit die is gemaakt met behulp van de Identity SDK of REST API. Dit is de enige id die wordt gebruikt als uw toepassing geen gebruik maakt van microsoft Teams-interoperabiliteits- of telefoniefuncties.

Basaal gebruik

// at some point you will have created a new user identity in your trusted service
CommunicationUserIdentifier newUser = identityClient.CreateUser();

// and then send newUser.getId() down to your client application
// where you can again create an identifier for the user
var sameUser = new CommunicationUserIdentifier(newUserId);

API-verwijzing

CommunicationUserIdentifier

Microsoft Teams-gebruiker

De MicrosoftTeamsUserIdentifier vertegenwoordigt een Teams-gebruiker met de microsoft Entra-gebruikersobject-id. U kunt de object-id van Microsoft Entra-gebruikers ophalen via de Microsoft Graph REST API/gebruikerseindpunt van de id eigenschap in het antwoord. Voor meer informatie over het werken met Microsoft Graph, probeert u Graph Explorer en bekijkt u de Graph SDK. U kunt de id ook vinden als claim oid in een Microsoft Entra-token of Microsoft Entra-toegangstoken nadat uw gebruiker zich heeft aangemeld en een token heeft verkregen.

Basaal gebruik

// get the Teams user's ID from Graph APIs if only the email is known
var user = graphClient.users("bob@contoso.com")
    .buildRequest()
    .get();

// create an identifier
var teamsUser = new MicrosoftTeamsUserIdentifier(user.id);

// if you're not operating in the public cloud, you must also set the right Cloud type.
var gcchTeamsUser = new MicrosoftTeamsUserIdentifier(userId).setCloudEnvironment(CommunicationCloudEnvironment.GCCH);

API-verwijzing

MicrosoftTeamsUserIdentifier

Telefoonnummer

Het PhoneNumberIdentifier vertegenwoordigt een telefoonnummer. De service gaat ervan uit dat telefoonnummers zijn opgemaakt in E.164-indeling.

Basaal gebruik

// create an identifier
var phoneNumber = new PhoneNumberIdentifier("+112345556789");

API-verwijzing

PhoneNumberIdentifier

Microsoft Teams-toepassing

De MicrosoftTeamsAppIdentifier interface vertegenwoordigt een bot van de Teams Voice-toepassingen zoals Oproepwachtrij en Auto Attendant met de object-id van de Microsoft Entra-bot. De Teams-toepassingen moeten worden geconfigureerd met een resourceaccount. U kunt de object-id van de Microsoft Entra-bot ophalen via de Microsoft Graph REST API/gebruikerseindpunt van de id eigenschap in het antwoord. Voor meer informatie over het werken met Microsoft Graph, probeert u Graph Explorer en bekijkt u de Graph SDK.

Basaal gebruik

// Get the Microsoft Teams App's ID from Graph APIs
var user = graphClient.users()
	.buildRequest()
	.filter(filterConditions)
	.select("displayName,id")
	.get();

//Here we assume that you have a function getBotFromUsers that gets the bot from the returned response
var bot = getBotFromUsers(users);

// Create an identifier
var teamsAppIdentifier = new MicrosoftTeamsAppIdentifier(bot.id);

// If you're not operating in the public cloud, you must also pass the right Cloud type.
var gcchTeamsAppIdentifier = new MicrosoftTeamsAppIdentifier(bot.id, CommunicationCloudEnvironment.GCCH);

API-verwijzing

MicrosoftTeamsAppIdentifier

Onbekend

Het UnknownIdentifier bestaat voor toekomstbestendig maken en u kunt deze tegenkomen wanneer u een oude versie van de SDK gebruikt en er onlangs een nieuw id-type is geïntroduceerd. Een onbekende id van de service wordt gedeserialiseerd naar de UnknownIdentifier SDK.

Basaal gebruik

// create an identifier
var unknown = new UnknownIdentifier("a raw id that originated in the service");

API-verwijzing

UnknownIdentifier

De basisklasse afhandelen CommunicationIdentifier

Terwijl u id's maakt voor een concreet type dat u in de SDK doorgeeft, retourneert de SDK de abstracteCommunicationIdentifier. U kunt terug casten naar een betontype:

if (communicationIdentifier instanceof CommunicationUserIdentifier) {
    System.out.println("Communication user: " + ((CommunicationUserIdentifier)communicationIdentifier).getId());
}
else if (communicationIdentifier instanceof MicrosoftTeamsUserIdentifier) {
    System.out.println("Teams user: " + ((MicrosoftTeamsUserIdentifier)communicationIdentifier).getUserId());
}
else if (communicationIdentifier instanceof  MicrosoftTeamsAppIdentifier) {
    Log.i(tag, "Teams app: " + (( MicrosoftTeamsAppIdentifier)communicationIdentifier).getAppId());
}
else if (communicationIdentifier instanceof PhoneNumberIdentifier) {
    System.out.println("Phone number: " + ((PhoneNumberIdentifier)communicationIdentifier).getPhoneNumber());
}
else if (communicationIdentifier instanceof UnknownIdentifier) {
    System.out.println("Unknown user: " + ((UnknownIdentifier)communicationIdentifier).getId());
}
else {
    // be careful here whether you want to throw because a new SDK version
        // can introduce new identifier types
}

Onbewerkte id-weergave

Soms moet u een id serialiseren naar een platte tekenreeks. Als u bijvoorbeeld de id wilt opslaan in een databasetabel of als u deze wilt gebruiken als URL-parameter.

Voor dat doel hebben id's een andere weergave met de naam RawId. Een id kan altijd worden omgezet in de bijbehorende onbewerkte id en een geldige onbewerkte id kan altijd worden geconverteerd naar een id.

Omdat azure-communication-common 1.2.0 de SDK helpt bij de conversie:

// get an identifier's raw Id
String rawId = communicationIdentifier.getRawId();

// create an identifier from a given raw Id
CommunicationIdentifier identifier = CommunicationIdentifier.fromRawId(rawId);

Een ongeldige onbewerkte id wordt alleen geconverteerd naar een UnknownIdentifier in de SDK en elke validatie vindt alleen plaats aan de servicezijde.

Communicatiegebruiker

Het CommunicationUserIdentifier vertegenwoordigt een gebruikersidentiteit die is gemaakt met behulp van de Identity SDK of REST API. Dit is de enige id die wordt gebruikt als uw toepassing geen gebruik maakt van microsoft Teams-interoperabiliteits- of telefoniefuncties.

Basaal gebruik

// at some point you will have created a new user identity in your trusted service
// and send the new user id down to your client application
// where you can create an identifier for the user
let user = CommunicationUserIdentifier(newUserId)

API-verwijzing

CommunicationUserIdentifier

Microsoft Teams-gebruiker

De MicrosoftTeamsUserIdentifier vertegenwoordigt een Teams-gebruiker met de microsoft Entra-gebruikersobject-id. U kunt de object-id van Microsoft Entra-gebruikers ophalen via de Microsoft Graph REST API/gebruikerseindpunt van de id eigenschap in het antwoord. Voor meer informatie over het werken met Microsoft Graph, probeert u Graph Explorer en bekijkt u de Graph SDK. U kunt de id ook vinden als claim oid in een id-token of Microsoft Entra-toegangstoken nadat uw gebruiker zich heeft aangemeld en een token heeft verkregen.

Basaal gebruik

// get the Teams user's ID if only the email is known, assuming a helper method for the Graph API
let userId = await getUserIdFromGraph("bob@contoso.com")

// create an identifier
let teamsUser = MicrosoftTeamsUserIdentifier(userId: userId)

// if you're not operating in the public cloud, you must also pass the right Cloud type.
let gcchTeamsUser = MicrosoftTeamsUserIdentifier(userId: userId, cloud: CommunicationCloudEnvironment.Gcch)

API-verwijzing

MicrosoftTeamsUserIdentifier

Telefoonnummer

Het PhoneNumberIdentifier vertegenwoordigt een telefoonnummer. De service gaat ervan uit dat telefoonnummers zijn opgemaakt in E.164-indeling.

Basaal gebruik

// create an identifier
let phoneNumber = PhoneNumberIdentifier(phoneNumber: "+112345556789")

API-verwijzing

PhoneNumberIdentifier

Microsoft Teams-toepassing

De MicrosoftTeamsAppIdentifier interface vertegenwoordigt een bot van de Teams Voice-toepassingen zoals Oproepwachtrij en Auto Attendant met de object-id van de Microsoft Entra-bot. De Teams-toepassingen moeten worden geconfigureerd met een resourceaccount. U kunt de object-id van de Microsoft Entra-bot ophalen via de Microsoft Graph REST API/gebruikerseindpunt van de id eigenschap in het antwoord. Voor meer informatie over het werken met Microsoft Graph, probeert u Graph Explorer en bekijkt u de Graph SDK.

Basaal gebruik

// Get the Microsoft Teams App's ID from Graph APIs, assuming a helper method for the Graph API
let botId = await getBotIdFromGraph()

// Create an identifier
let teamsAppIdentifier = MicrosoftTeamsAppIdentifier(appId: botId)

// If you're not operating in the public cloud, you must also pass the right Cloud type.
let gcchTeamsAppIdentifier = MicrosoftTeamsAppIdentifier(appId: botId, cloudEnvironment: CommunicationCloudEnvironment.Gcch)

API-verwijzing

MicrosoftTeamsAppIdentifier

Onbekend

Het UnknownIdentifier bestaat voor toekomstbestendig maken en u kunt deze tegenkomen wanneer u een oude versie van de SDK gebruikt en er onlangs een nieuw id-type is geïntroduceerd. Een onbekende id van de service wordt gedeserialiseerd naar de UnknownIdentifier SDK.

Basaal gebruik

// create an identifier
let unknown = UnknownIdentifier("a raw id that originated in the service")

API-verwijzing

UnknownIdentifier

Het basisprotocol verwerken CommunicationIdentifier

Terwijl u id's maakt voor een concreet type dat u in de SDK doorgeeft, retourneert de SDK het CommunicationIdentifier protocol. Het is eenvoudig om terug te casten naar een concreet type en we raden een switch-case-instructie aan met patroonkoppeling:

switch (communicationIdentifier)
{
    case let communicationUser as CommunicationUserIdentifier:
        print(#"Communication user: \(communicationUser.id)"#)
    case let teamsUser as MicrosoftTeamsUserIdentifier:
        print(#"Teams user: \(teamsUser.UserId)"#)
    case let teamsApp as MicrosoftTeamsAppIdentifier:
        print(#"Teams app: \(teamsApp.appId)"#)
    case let phoneNumber as PhoneNumberIdentifier:
        print(#"Phone number: \(phoneNumber.PhoneNumber)"#)
    case let unknown as UnknownIdentifier:
        print(#"Unknown: \(unknown.Id)"#)
    @unknown default:
        // be careful here whether you want to throw because a new SDK version
        // can introduce new identifier types
        break;
}

Onbewerkte id-weergave

Soms moet u een id serialiseren naar een platte tekenreeks. Als u bijvoorbeeld de id wilt opslaan in een databasetabel of als u deze wilt gebruiken als URL-parameter.

Voor dat doel hebben id's een andere weergave met de naam RawId. Een id kan altijd worden omgezet in de bijbehorende onbewerkte id en een geldige onbewerkte id kan altijd worden geconverteerd naar een id.

Omdat Azure.Communication.Common 1.1.0 de SDK helpt bij de conversie:

Swift

// get an identifier's raw Id
let rawId = communicationIdentifier.rawId;

// create an identifier from a given raw Id
let identifier = createCommunicationIdentifier(fromRawId: rawId);

Een ongeldige onbewerkte id wordt alleen geconverteerd naar een UnknownIdentifier in de SDK en elke validatie vindt alleen plaats aan de servicezijde.

Communicatiegebruiker

Het CommunicationUserIdentifier vertegenwoordigt een gebruikersidentiteit die is gemaakt met behulp van de Identity SDK of REST API. Dit is de enige id die wordt gebruikt als uw toepassing geen gebruik maakt van microsoft Teams-interoperabiliteits- of telefoniefuncties.

Basaal gebruik

// at some point you will have created a new user identity in your trusted service
CommunicationUserIdentifier newUser = identityClient.CreateUser();

// and then send newUser.getId() down to your client application
// where you can again create an identifier for the user
CommunicationUserIdentifier sameUser = new CommunicationUserIdentifier(newUserId);

API-verwijzing

CommunicationUserIdentifier

Microsoft Teams-gebruiker

De MicrosoftTeamsUserIdentifier vertegenwoordigt een Teams-gebruiker met de microsoft Entra-gebruikersobject-id. U kunt de object-id van Microsoft Entra-gebruikers ophalen via de Microsoft Graph REST API/gebruikerseindpunt van de id eigenschap in het antwoord. Voor meer informatie over het werken met Microsoft Graph, probeert u Graph Explorer en bekijkt u de Graph SDK. U kunt de id ook vinden als claim oid in een id-token of Microsoft Entra-toegangstoken nadat uw gebruiker zich heeft aangemeld en een token heeft verkregen.

Basaal gebruik

// get the Teams user's ID from Graph APIs if only the email is known
User user = graphClient.users("bob@contoso.com")
    .buildRequest()
    .get();

// create an identifier
MicrosoftTeamsUserIdentifier teamsUser = new MicrosoftTeamsUserIdentifier(user.id);

// if you're not operating in the public cloud, you must also set the right Cloud type.
MicrosoftTeamsUserIdentifier gcchTeamsUser = new MicrosoftTeamsUserIdentifier(userId).setCloudEnvironment(CommunicationCloudEnvironment.GCCH);

API-verwijzing

MicrosoftTeamsUserIdentifier

Telefoonnummer

Het PhoneNumberIdentifier vertegenwoordigt een telefoonnummer. De service gaat ervan uit dat telefoonnummers zijn opgemaakt in E.164-indeling.

Basaal gebruik

// create an identifier
PhoneNumberIdentifier phoneNumber = new PhoneNumberIdentifier("+112345556789");

API-verwijzing

PhoneNumberIdentifier

Microsoft Teams-toepassing

De MicrosoftTeamsAppIdentifier interface vertegenwoordigt een bot van de Teams Voice-toepassingen zoals Oproepwachtrij en Auto Attendant met de object-id van de Microsoft Entra-bot. De Teams-toepassingen moeten worden geconfigureerd met een resourceaccount. U kunt de object-id van de Microsoft Entra-bot ophalen via de Microsoft Graph REST API/gebruikerseindpunt van de id eigenschap in het antwoord. Voor meer informatie over het werken met Microsoft Graph, probeert u Graph Explorer en bekijkt u de Graph SDK.

Basaal gebruik

// Get the Microsoft Teams App's ID from Graph APIs
UserCollectionPage users = graphClient.users()
	.buildRequest()
	.filter(filterConditions)
	.select("displayName,id")
	.get();

//Here we assume that you have a function getBotFromUsers that gets the bot from the returned response
User bot = getBotFromUsers(users);

// Create an identifier
MicrosoftTeamsAppIdentifier teamsAppIdentifier = new MicrosoftTeamsAppIdentifier(bot.id);

// If you're not operating in the public cloud, you must also pass the right Cloud type.
MicrosoftTeamsAppIdentifier gcchTeamsAppIdentifier = new MicrosoftTeamsAppIdentifier(bot.id, CommunicationCloudEnvironment.GCCH);

API-verwijzing

MicrosoftTeamsAppIdentifier

Onbekend

Het UnknownIdentifier bestaat voor toekomstbestendig maken en u kunt deze tegenkomen wanneer u een oude versie van de SDK gebruikt en er onlangs een nieuw id-type is geïntroduceerd. Een onbekende id van de service wordt gedeserialiseerd naar de UnknownIdentifier SDK.

Basaal gebruik

// create an identifier
UnknownIdentifier unknown = new UnknownIdentifier("a raw id that originated in the service");

API-verwijzing

UnknownIdentifier

De basisklasse afhandelen CommunicationIdentifier

Terwijl u id's maakt voor een concreet type dat u in de SDK doorgeeft, retourneert de SDK de abstracteCommunicationIdentifier. U kunt terug casten naar een betontype:

if (communicationIdentifier instanceof CommunicationUserIdentifier) {
    Log.i(tag, "Communication user: " + ((CommunicationUserIdentifier)communicationIdentifier).getId());
}
else if (communicationIdentifier instanceof MicrosoftTeamsUserIdentifier) {
    Log.i(tag, "Teams user: " + ((MicrosoftTeamsUserIdentifier)communicationIdentifier).getUserId());
}
else if (communicationIdentifier instanceof  MicrosoftTeamsAppIdentifier) {
    Log.i(tag, "Teams app: " + (( MicrosoftTeamsAppIdentifier)communicationIdentifier).getAppId());
}
else if (communicationIdentifier instanceof PhoneNumberIdentifier) {
    Log.i(tag, "Phone number: " + ((PhoneNumberIdentifier)communicationIdentifier).getPhoneNumber());
}
else if (communicationIdentifier instanceof UnknownIdentifier) {
    Log.i(tag, "Unknown user: " + ((UnknownIdentifier)communicationIdentifier).getId());
}
else {
    // be careful here whether you want to throw because a new SDK version
    // can introduce new identifier types
}

Onbewerkte id-weergave

Soms moet u een id serialiseren naar een platte tekenreeks. Als u bijvoorbeeld de id wilt opslaan in een databasetabel of als u deze wilt gebruiken als URL-parameter.

Voor dat doel hebben id's een andere weergave met de naam RawId. Een id kan altijd worden omgezet in de bijbehorende onbewerkte id en een geldige onbewerkte id kan altijd worden geconverteerd naar een id.

Omdat azure-communication-common 1.1.0 de SDK helpt bij de conversie:

// get an identifier's raw Id
String rawId = communicationIdentifier.getRawId();

// create an identifier from a given raw Id
CommunicationIdentifier identifier = CommunicationIdentifier.fromRawId(rawId);

Een ongeldige onbewerkte id wordt alleen geconverteerd naar een UnknownIdentifier in de SDK en elke validatie vindt alleen plaats aan de servicezijde.

In REST API's is de id een polymorf type: u maakt een JSON-object en een eigenschap die is toegewezen aan een subtype van een concrete id. Om redenen van gemak en compatibiliteit met eerdere versies zijn de kind en rawId eigenschappen optioneel in aanvragen, maar worden ze ingevuld in servicereacties.

Communicatiegebruiker

Het CommunicationUserIdentifierModel vertegenwoordigt een gebruikersidentiteit die is gemaakt met behulp van de Identity SDK of REST API. Dit is de enige id die wordt gebruikt als uw toepassing geen gebruik maakt van microsoft Teams-interoperabiliteits- of telefoniefuncties.

Basaal gebruik


// at some point you will have created a new user identity in your trusted service
// you can specify an identifier with the id of the new user in a request
{
    "communicationUser": {
        "id": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_c94ff260-162d-46d6-94fd-e79f4d213715"
    }
}

// the corresponding serialization in a response
{
    "kind": "communicationUser",
    "rawId": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_c94ff260-162d-46d6-94fd-e79f4d213715",
    "communicationUser": {
        "id": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_c94ff260-162d-46d6-94fd-e79f4d213715"
    }
}

U vindt een voorbeeld van een aanvraag met een id in de REST API van Chat voor het toevoegen van een deelnemer en een voorbeeld voor een antwoord met een id onder chatbericht.

API-verwijzing

CommunicationUserIdentifierModel

Microsoft Teams-gebruiker

De MicrosoftTeamsUserIdentifierModel vertegenwoordigt een Teams-gebruiker met de microsoft Entra-gebruikersobject-id. U kunt de object-id van Microsoft Entra-gebruikers ophalen via de Microsoft Graph REST API/gebruikerseindpunt van de id eigenschap in het antwoord. Voor meer informatie over het werken met Microsoft Graph, probeert u Graph Explorer en bekijkt u de Graph SDK. U kunt de id ook vinden als claim oid in een Microsoft Entra-token of Microsoft Entra-toegangstoken nadat uw gebruiker zich heeft aangemeld en een token heeft verkregen.

Basaal gebruik

// request
{
    "microsoftTeamsUser": {
        "userId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
    }
}

// response
{
    "kind": "microsoftTeamsUser",
    "rawId": "8:orgid:00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
    "microsoftTeamsUser": {
        "userId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
    }
}


// if you're not operating in the public cloud, you must also pass the right Cloud type in a request
{
    "microsoftTeamsUser": {
        "userId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
        "cloud": "gcch"
    }
}

// response
{
    "kind": "microsoftTeamsUser",
    "rawId": "8:gcch:00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
    "microsoftTeamsUser": {
        "userId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
        "isAnonymous": false,
        "cloud": "gcch"
    }
}

API-verwijzing

MicrosoftTeamsUserIdentifierModel

Telefoonnummer

Het PhoneNumberIdentifierModel vertegenwoordigt een telefoonnummer. De service gaat ervan uit dat telefoonnummers zijn opgemaakt in E.164-indeling.

Basaal gebruik

// request
{
    "phoneNumber": {
        "value": "+112345556789"
    }
}

// response
{
    "kind": "phoneNumber",
    "rawId": "4:+112345556789",
    "phoneNumber": {
        "value": "+112345556789"
    }
}

API-verwijzing

PhoneNumberIdentifierModel

Microsoft Teams-toepassing

Het MicrosoftTeamsAppIdentifierModel vertegenwoordigt een bot van de Teams Voice-toepassingen zoals Oproepwachtrij en Auto Attendant met de object-id van de Microsoft Entra-bot. De Teams-toepassingen moeten worden geconfigureerd met een resourceaccount. U kunt de object-id van de Microsoft Entra-bot ophalen via de Microsoft Graph REST API/gebruikerseindpunt van de id eigenschap in het antwoord. Voor meer informatie over het werken met Microsoft Graph, probeert u Graph Explorer en bekijkt u de Graph SDK.

Basaal gebruik

// request
{
    "microsoftTeamsApp": {
        "appId": "00001111-aaaa-2222-bbbb-3333cccc4444"
    }
}

// response
{
    "kind": "microsoftTeamsApp",
    "rawId": "28:orgid:00001111-aaaa-2222-bbbb-3333cccc4444",
    "microsoftTeamsApp": {
        "appId": "00001111-aaaa-2222-bbbb-3333cccc4444"
    }
}


// if you're not operating in the public cloud, you must also pass the right Cloud type in a request
{
    "microsoftTeamsApp": {
        "appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
        "cloud": "gcch"
    }
}

// response
{
    "kind": "microsoftTeamsApp",
    "rawId": "28:gcch:00001111-aaaa-2222-bbbb-3333cccc4444",
    "microsoftTeamsApp": {
        "appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
        "cloud": "gcch"
    }
}

API-verwijzing

MicrosoftTeamsAppIdentifierModel

Onbekend

Als een nieuwe id wordt geïntroduceerd in een service, wordt deze gedowngraded naar de CommunicationIdentifierModel versie als u een oude API-versie gebruikt.

Basaal gebruik

// request
{
    "rawId": "a raw id that originated in the service"
}

// response
{
    "kind": "unknown",
    "rawId": "a raw id that originated in the service"
}

API-verwijzing

CommunicationIdentifierModel

De antwoorden verwerken CommunicationIdentifierModel

Recente API-versies vullen een kind eigenschap die u kunt gebruiken om onderscheid te maken op:

switch (communicationIdentifier.kind)
{
    case "communicationUser":
        console.log(`Communication user: ${communicationIdentifier.communicationUser.id}`);
        break;
    case "microsoftTeamsUser":
        console.log(`Teams user: ${communicationIdentifier.microsoftTeamsUser.userId}`);
        break;
    case "microsoftTeamsApp":
        console.log(`Teams user: ${communicationIdentifier.microsoftTeamsApp.appId}`);
        break;
    case "phoneNumber":
        console.log(`Phone number: ${communicationIdentifier.phoneNumber.value}`);
        break;
    case "unknown":
        console.log(`Unknown: ${communicationIdentifier.rawId}`);
        break;
    default:
        // this case should not be hit because adding a new identifier type requires a new API version
        // if it does get hit, please file an issue on https://github.com/Azure/azure-rest-api-specs/issues 
        break;
}

In oudere API-versies ontbreekt de kind eigenschap en moet u controleren op het bestaan van de juiste subeigenschap:

if (communicationIdentifier.communicationUser) {
    console.log(`Communication user: ${communicationIdentifier.communicationUser.id}`);
} else if (communicationIdentifier.microsoftTeamsUser) {
    console.log(`Teams user: ${communicationIdentifier.microsoftTeamsUser.userId}`);
} else if (communicationIdentifier.microsoftTeamsApp) {
    console.log(`Teams app: ${communicationIdentifier.microsoftTeamsApp.appId}`);
} else if (communicationIdentifier.phoneNumber) {
    console.log(`Phone number: ${communicationIdentifier.phoneNumber.value}`);
} else {
    console.log(`Unknown: ${communicationIdentifier.rawId}`);
}

Onbewerkte id-weergave

Soms moet u een id serialiseren naar een platte tekenreeks. Als u bijvoorbeeld de id wilt opslaan in een databasetabel of als u deze wilt gebruiken als URL-parameter.

Voor dat doel hebben id's een andere weergave met de naam RawId. Een id kan altijd worden omgezet in de bijbehorende onbewerkte id en een geldige onbewerkte id kan altijd worden geconverteerd naar een id.

Als u de Azure SDK gebruikt, helpt dit u bij de conversie. Als u de REST API rechtstreeks gebruikt, moet u de onbewerkte id handmatig samenstellen, zoals hieronder wordt beschreven.

Communicatiegebruiker

Id:

{
    "communicationUser": {
        "id": "[communicationUserId]"
    }
}

Onbewerkte id:

[communicationUserId]

De onbewerkte id is hetzelfde als communicationUser.id.

Microsoft Teams-gebruiker

Id:

{
    "microsoftTeamsUser": {
        "userId": "[entraUserId]"
    }
}

Onbewerkte id:

8:orgid:[entraUserId]

De onbewerkte id is de microsoft Entra-gebruikersobject-id met 8:orgid:voorvoegsel .

Id:

{
    "microsoftTeamsUser": {
        "userId": "[entraUserId]",
        "cloud": "gcch"
    }
}

Onbewerkte id:

8:gcch:[entraUserId]

De onbewerkte id is de microsoft Entra-gebruikersobject-id die is voorafgegaan door 8:gcch: of 8:dod: afhankelijk van de cloudomgeving.

Id:

{
    "microsoftTeamsUser": {
        "userId": "[visitorUserId]",
        "isAnonymous": true
    }
}

Onbewerkte id:

8:teamsvisitor:[visitorUserId]

De onbewerkte id is de Bezoekers-id van Teams met 8:teamsvisitor:voorvoegsel . De Bezoekers-id van Teams is een tijdelijke id die Teams genereert om toegang tot vergaderingen mogelijk te maken.

Telefoonnummer

Id:

{
    "phoneNumber": {
        "value": "+1123455567"
    }
}

Onbewerkte id:

4:+1123455567

De onbewerkte id is het E.164 opgemaakte telefoonnummer met voorvoegsel 4:.

Microsoft Teams-app

Id:

{
    "microsoftTeamsApp": {
        "appId": "[entraUserId]"
    }
}

Onbewerkte id:

28:orgid:[entraUserId]

De onbewerkte id is de Entra-gebruikersobject-id van de toepassing met 28:orgid:het voorvoegsel .

Id:

{
    "microsoftTeamsUser": {
        "userId": "[entraUserId]",
        "cloud": "gcch"
    }
}

Onbewerkte id:

28:gcch:[entraUserId]

De onbewerkte id is de Entra-gebruikersobject-id van de toepassing, voorafgegaan door 28:gcch: of 28:dod: afhankelijk van de cloudomgeving.

Onbekend

Id:

{
    "rawId": "[unknown identifier id]"
}

Onbewerkte id:

[unknown identifier id]

Als een onbewerkte id ongeldig is, mislukt de service de aanvraag.

Volgende stappen