Reconocimiento de los tipos de identificadores

Los SDK de Communication Services y las API de REST usan el tipo de identificador para identificar quién se comunica con quién. Por ejemplo, los identificadores especifican a quién llamar o quién ha enviado un mensaje de chat.

En función del contexto, los identificadores se encapsulan con propiedades adicionales, como dentro del ChatParticipant SDK de chat o dentro RemoteParticipant del SDK de llamadas.

En este artículo, obtendrá información sobre los distintos tipos de identificadores y cómo se ven en todos los lenguajes de programación. También obtendrá sugerencias sobre cómo usarlos.

El tipo CommunicationIdentifier

Hay identidades de usuario que se crea usted mismo y hay identidades externas. Los usuarios y números de teléfono de Microsoft Teams son identidades externas que se reproducen en escenarios de interoperabilidad. Cada uno de estos tipos diferentes de identidades tiene un identificador correspondiente que lo representa. Un identificador es un tipo estructurado que ofrece seguridad de tipos y funciona bien con la finalización del código del editor.

Usuario de comunicación

La interfaz CommunicationUserIdentifier representa una identidad de usuario que se creó mediante el SDK de identidad o la API de REST. Es el único identificador que se usa si la aplicación no usa las características de interoperabilidad o telefonía de Microsoft Teams.

Uso básico

// 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 };

Referencia de la API

CommunicationUserIdentifier

Usuario de Microsoft Teams

La interfaz MicrosoftTeamsUserIdentifier representa a un usuario de Teams con su identificador de objeto de usuario de Microsoft Entra. Puedes recuperar el identificador de objeto de usuario de Microsoft Entra mediante el punto de conexión /users de la API de REST de Microsoft Graph de la id propiedad en la respuesta. Para obtener más información sobre cómo trabajar con Microsoft Graph, pruebe el Explorador de Graph y examine el SDK de Graph. Como alternativa, puedes encontrar el identificador como la notificación oid en un token de Microsoft Entra o en un token de acceso de Microsoft Entra después de que el usuario haya iniciado sesión y adquirido un token.

Uso básico

// 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" };

Referencia de la API

MicrosoftTeamsUserIdentifier

Número de teléfono

La interfaz PhoneNumberIdentifier representa un número de teléfono. El servicio supone que los números de teléfono tienen formato E.164.

Uso básico

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

Referencia de la API

PhoneNumberIdentifier

Aplicación de Microsoft Teams

La interfaz MicrosoftTeamsAppIdentifier representa un bot de las aplicaciones de voz de Teams, como Cola de llamadas y Operador automático con su identificador de objeto de bot de Microsoft Entra. Las aplicaciones de Teams deben configurarse con una cuenta de recurso. Puedes recuperar el identificador de objeto de bot de Microsoft Entra mediante el punto de conexión /users de la API de REST de Microsoft Graph de la id propiedad en la respuesta. Para obtener más información sobre cómo trabajar con Microsoft Graph, pruebe el Explorador de Graph y examine el SDK de Graph.

Uso básico

// 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" };

Referencia de la API

MicrosoftTeamsAppIdentifier

Unknown

La interfaz UnknownIdentifier existe para futuras correcciones, y es posible que se lo encuentre cuando esté en una versión anterior del SDK y se haya introducido recientemente un nuevo tipo de identificador. Cualquier identificador desconocido del servicio se deserializará en el UnknownIdentifier del SDK.

Uso básico

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

Referencia de la API

UnknownIdentifier

Cómo controlar la interfaz base de CommunicationIdentifier

Mientras construye identificadores para un tipo concreto que se pasa al SDK, el SDK devuelve un CommunicationIdentifierKind, que es una unión discriminada. Es fácil restringir a un tipo concreto y se recomienda una instrucción de cambio de mayúsculas y minúsculas con coincidencia de patrones:

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;
}

Las interfaces de identificador se han diseñado para que no tenga que especificar kind para reducir el nivel de detalle, y la unión discriminante con la propiedad kind solo se usa cuando se devuelve desde el SDK. Sin embargo, si necesita traducir un identificador a su tipo de unión discriminante correspondiente, puede usar este asistente:

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

Representación de ID sin formato

A veces es necesario serializar un identificador en una cadena plana. Por ejemplo, si desea almacenar el identificador en una tabla de base de datos o si desea usarlo como parámetro de dirección URL.

Para ello, los identificadores tienen otra representación denominada RawId. Un identificador siempre se puede traducir a su identificador sin procesar correspondiente y siempre se puede convertir un identificador sin procesar válido en un identificador.

Desde azure-communication-common@2.1.0 el SDK ayuda con la conversión:

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

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

Un identificador sin procesar no válido simplemente se convertirá en un UnknownIdentifier en el SDK y cualquier validación solo se produce en el lado del servicio.

Usuario de comunicación

CommunicationUserIdentifier representa una identidad de usuario que se creó mediante el SDK de identidad o la API de REST. Es el único identificador que se usa si la aplicación no usa las características de interoperabilidad o telefonía de Microsoft Teams.

Uso básico

// 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);

Referencia de la API

CommunicationUserIdentifier

Usuario de Microsoft Teams

La MicrosoftTeamsUserIdentifier representa un usuario de Teams con su identificador de objeto de usuario de Microsoft Entra. Puedes recuperar el identificador de objeto de usuario de Microsoft Entra mediante el punto de conexión /users de la API de REST de Microsoft Graph de la id propiedad en la respuesta. Para obtener más información sobre cómo trabajar con Microsoft Graph, pruebe el Explorador de Graph y examine el SDK de Graph. Como alternativa, puedes encontrar el identificador como la notificación oid en un token de Microsoft Entra o en un token de acceso de Microsoft Entra después de que el usuario haya iniciado sesión y adquirido un token.

Uso básico

// 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);

Referencia de la API

MicrosoftTeamsUserIdentifier

Número de teléfono

PhoneNumberIdentifier representa un número de teléfono. El servicio supone que los números de teléfono tienen formato E.164.

Uso básico

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

Referencia de la API

PhoneNumberIdentifier

Aplicación de Microsoft Teams

La interfaz MicrosoftTeamsAppIdentifier representa un bot de las aplicaciones de voz de Teams, como Cola de llamadas y Operador automático con su identificador de objeto de bot de Microsoft Entra. Las aplicaciones de Teams deben configurarse con una cuenta de recurso. Puedes recuperar el identificador de objeto de bot de Microsoft Entra mediante el punto de conexión /users de la API de REST de Microsoft Graph de la id propiedad en la respuesta. Para obtener más información sobre cómo trabajar con Microsoft Graph, pruebe el Explorador de Graph y examine el SDK de Graph.

Uso básico

// 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);

Referencia de la API

MicrosoftTeamsAppIdentifier

Unknown

UnknownIdentifier existe para futuras correcciones, y es posible que se lo encuentre cuando esté en una versión anterior del SDK y se haya introducido recientemente un nuevo tipo de identificador. Cualquier identificador desconocido del servicio se deserializará en el UnknownIdentifier del SDK.

Uso básico

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

Referencia de la API

UnknownIdentifier

Cómo controlar la clase base CommunicationIdentifier

Mientras construye identificadores para un tipo concreto que se pasa al SDK, el SDK devuelve el protocolo CommunicationIdentifier. Es fácil reducir la conversión a un tipo concreto, y se recomienda una instrucción con cambio de mayúsculas y minúsculas con coincidencia de patrones:

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;
}

Representación de ID sin formato

A veces es necesario serializar un identificador en una cadena plana. Por ejemplo, si desea almacenar el identificador en una tabla de base de datos o si desea usarlo como parámetro de dirección URL.

Para ello, los identificadores tienen otra representación denominada RawId. Un identificador siempre se puede traducir a su identificador sin procesar correspondiente y siempre se puede convertir un identificador sin procesar válido en un identificador.

Desde Azure.Communication.Common 1.2.0 el SDK ayuda con la conversión:

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

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

Un identificador sin procesar no válido simplemente se convertirá en un UnknownIdentifier en el SDK y cualquier validación solo se produce en el lado del servicio.

Usuario de comunicación

CommunicationUserIdentifier representa una identidad de usuario que se creó mediante el SDK de identidad o la API de REST. Es el único identificador que se usa si la aplicación no usa las características de interoperabilidad o telefonía de Microsoft Teams.

Uso básico

# 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)

Referencia de la API

CommunicationUserIdentifier

Usuario de Microsoft Teams

La MicrosoftTeamsUserIdentifier representa un usuario de Teams con su identificador de objeto de usuario de Microsoft Entra. Puedes recuperar el identificador de objeto de usuario de Microsoft Entra mediante el punto de conexión /users de la API de REST de Microsoft Graph de la id propiedad en la respuesta. Para obtener más información sobre cómo trabajar con Microsoft Graph, pruebe el Explorador de Graph y examine el SDK de Graph. Como alternativa, puedes encontrar el identificador como la notificación oid en un token de Microsoft Entra o en un token de acceso de Microsoft Entra después de que el usuario haya iniciado sesión y adquirido un token.

Uso básico

# 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)

Referencia de la API

MicrosoftTeamsUserIdentifier

Número de teléfono

PhoneNumberIdentifier representa un número de teléfono. El servicio supone que los números de teléfono tienen formato E.164.

Uso básico

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

Referencia de la API

PhoneNumberIdentifier

Aplicación de Microsoft Teams

La interfaz MicrosoftTeamsAppIdentifier representa un bot de las aplicaciones de voz de Teams, como Cola de llamadas y Operador automático con su identificador de objeto de bot de Microsoft Entra. Las aplicaciones de Teams deben configurarse con una cuenta de recurso. Puedes recuperar el identificador de objeto de bot de Microsoft Entra mediante el punto de conexión /users de la API de REST de Microsoft Graph de la id propiedad en la respuesta. Para obtener más información sobre cómo trabajar con Microsoft Graph, pruebe el Explorador de Graph y examine el SDK de Graph.

Uso básico

# 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
        )

Referencia de la API

MicrosoftTeamsAppIdentifier

Unknown

UnknownIdentifier existe para futuras correcciones, y es posible que se lo encuentre cuando esté en una versión anterior del SDK y se haya introducido recientemente un nuevo tipo de identificador. Cualquier identificador desconocido del servicio se deserializará en el UnknownIdentifier del SDK.

Uso básico

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

Referencia de la API

UnknownIdentifier

Cómo controlar la clase base CommunicationIdentifier

Mientras construye identificadores para un tipo concreto que se pasa al SDK, el SDK devuelve el protocolo CommunicationIdentifier. Las clases de identificador concretas son solo el protocolo CommunicationIdentifier junto con un diccionario con tipo denominado properties. Por lo tanto, puede usar la coincidencia de patrones en la variable de instancia kind del protocolo para traducir al tipo concreto:

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

Representación de ID sin formato

A veces es necesario serializar un identificador en una cadena plana. Por ejemplo, si desea almacenar el identificador en una tabla de base de datos o si desea usarlo como parámetro de dirección URL.

Para ello, los identificadores tienen otra representación denominada RawId. Un identificador siempre se puede traducir a su identificador sin procesar correspondiente y siempre se puede convertir un identificador sin procesar válido en un identificador.

El SDK ayuda con la conversión:

# 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)

Un identificador sin procesar no válido simplemente se convertirá en un UnknownIdentifier en el SDK y cualquier validación solo se produce en el lado del servicio.

Usuario de comunicación

CommunicationUserIdentifier representa una identidad de usuario que se creó mediante el SDK de identidad o la API de REST. Es el único identificador que se usa si la aplicación no usa las características de interoperabilidad o telefonía de Microsoft Teams.

Uso básico

// 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);

Referencia de la API

CommunicationUserIdentifier

Usuario de Microsoft Teams

La MicrosoftTeamsUserIdentifier representa un usuario de Teams con su identificador de objeto de usuario de Microsoft Entra. Puedes recuperar el identificador de objeto de usuario de Microsoft Entra mediante el punto de conexión /users de la API de REST de Microsoft Graph de la id propiedad en la respuesta. Para obtener más información sobre cómo trabajar con Microsoft Graph, pruebe el Explorador de Graph y examine el SDK de Graph. Como alternativa, puedes encontrar el identificador como la notificación oid en un token de Microsoft Entra o en un token de acceso de Microsoft Entra después de que el usuario haya iniciado sesión y adquirido un token.

Uso básico

// 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);

Referencia de la API

MicrosoftTeamsUserIdentifier

Número de teléfono

PhoneNumberIdentifier representa un número de teléfono. El servicio supone que los números de teléfono tienen formato E.164.

Uso básico

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

Referencia de la API

PhoneNumberIdentifier

Aplicación de Microsoft Teams

La interfaz MicrosoftTeamsAppIdentifier representa un bot de las aplicaciones de voz de Teams, como Cola de llamadas y Operador automático con su identificador de objeto de bot de Microsoft Entra. Las aplicaciones de Teams deben configurarse con una cuenta de recurso. Puedes recuperar el identificador de objeto de bot de Microsoft Entra mediante el punto de conexión /users de la API de REST de Microsoft Graph de la id propiedad en la respuesta. Para obtener más información sobre cómo trabajar con Microsoft Graph, pruebe el Explorador de Graph y examine el SDK de Graph.

Uso básico

// 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);

Referencia de la API

MicrosoftTeamsAppIdentifier

Unknown

UnknownIdentifier existe para futuras correcciones, y es posible que se lo encuentre cuando esté en una versión anterior del SDK y se haya introducido recientemente un nuevo tipo de identificador. Cualquier identificador desconocido del servicio se deserializará en el UnknownIdentifier del SDK.

Uso básico

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

Referencia de la API

UnknownIdentifier

Cómo controlar la clase base CommunicationIdentifier

Mientras construye identificadores para un tipo concreto que se pasa al SDK, el SDK devuelve el resumen CommunicationIdentifier. Puede revertir a un tipo concreto:

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("Unkown user: " + ((UnknownIdentifier)communicationIdentifier).getId());
}
else {
    // be careful here whether you want to throw because a new SDK version
        // can introduce new identifier types
}

Representación de ID sin formato

A veces es necesario serializar un identificador en una cadena plana. Por ejemplo, si desea almacenar el identificador en una tabla de base de datos o si desea usarlo como parámetro de dirección URL.

Para ello, los identificadores tienen otra representación denominada RawId. Un identificador siempre se puede traducir a su identificador sin procesar correspondiente y siempre se puede convertir un identificador sin procesar válido en un identificador.

Desde azure-communication-common 1.2.0 el SDK ayuda con la conversión:

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

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

Un identificador sin procesar no válido simplemente se convertirá en un UnknownIdentifier en el SDK y cualquier validación solo se produce en el lado del servicio.

Usuario de comunicación

CommunicationUserIdentifier representa una identidad de usuario que se creó mediante el SDK de identidad o la API de REST. Es el único identificador que se usa si la aplicación no usa las características de interoperabilidad o telefonía de Microsoft Teams.

Uso básico

// 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)

Referencia de la API

CommunicationUserIdentifier

Usuario de Microsoft Teams

La MicrosoftTeamsUserIdentifier representa un usuario de Teams con su identificador de objeto de usuario de Microsoft Entra. Puedes recuperar el identificador de objeto de usuario de Microsoft Entra mediante el punto de conexión /users de la API de REST de Microsoft Graph de la id propiedad en la respuesta. Para obtener más información sobre cómo trabajar con Microsoft Graph, pruebe el Explorador de Graph y examine el SDK de Graph. Como alternativa, puedes encontrar el identificador como la notificación oid en un token de identificador o en un token de acceso de Microsoft Entra después de que el usuario haya iniciado sesión y adquirido un token.

Uso básico

// 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)

Referencia de la API

MicrosoftTeamsUserIdentifier

Número de teléfono

PhoneNumberIdentifier representa un número de teléfono. El servicio supone que los números de teléfono tienen formato E.164.

Uso básico

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

Referencia de la API

PhoneNumberIdentifier

Aplicación de Microsoft Teams

La interfaz MicrosoftTeamsAppIdentifier representa un bot de las aplicaciones de voz de Teams, como Cola de llamadas y Operador automático con su identificador de objeto de bot de Microsoft Entra. Las aplicaciones de Teams deben configurarse con una cuenta de recurso. Puedes recuperar el identificador de objeto de bot de Microsoft Entra mediante el punto de conexión /users de la API de REST de Microsoft Graph de la id propiedad en la respuesta. Para obtener más información sobre cómo trabajar con Microsoft Graph, pruebe el Explorador de Graph y examine el SDK de Graph.

Uso básico

// 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)

Referencia de la API

MicrosoftTeamsAppIdentifier

Unknown

UnknownIdentifier existe para futuras correcciones, y es posible que se lo encuentre cuando esté en una versión anterior del SDK y se haya introducido recientemente un nuevo tipo de identificador. Cualquier identificador desconocido del servicio se deserializará en el UnknownIdentifier del SDK.

Uso básico

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

Referencia de la API

UnknownIdentifier

Cómo controlar el protocolo base CommunicationIdentifier

Mientras construye identificadores para un tipo concreto que se pasa al SDK, el SDK devuelve el protocolo CommunicationIdentifier. Es fácil revertir a un tipo concreto y se recomienda una instrucción de cambio de mayúsculas y minúsculas con coincidencia de patrones:

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;
}

Representación de ID sin formato

A veces es necesario serializar un identificador en una cadena plana. Por ejemplo, si desea almacenar el identificador en una tabla de base de datos o si desea usarlo como parámetro de dirección URL.

Para ello, los identificadores tienen otra representación denominada RawId. Un identificador siempre se puede traducir a su identificador sin procesar correspondiente y siempre se puede convertir un identificador sin procesar válido en un identificador.

Desde Azure.Communication.Common 1.1.0 el SDK ayuda con la conversión:

Swift

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

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

Un identificador sin procesar no válido simplemente se convertirá en un UnknownIdentifier en el SDK y cualquier validación solo se produce en el lado del servicio.

Usuario de comunicación

CommunicationUserIdentifier representa una identidad de usuario que se creó mediante el SDK de identidad o la API de REST. Es el único identificador que se usa si la aplicación no usa las características de interoperabilidad o telefonía de Microsoft Teams.

Uso básico

// 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);

Referencia de la API

CommunicationUserIdentifier

Usuario de Microsoft Teams

La MicrosoftTeamsUserIdentifier representa un usuario de Teams con su identificador de objeto de usuario de Microsoft Entra. Puedes recuperar el identificador de objeto de usuario de Microsoft Entra mediante el punto de conexión /users de la API de REST de Microsoft Graph de la id propiedad en la respuesta. Para obtener más información sobre cómo trabajar con Microsoft Graph, pruebe el Explorador de Graph y examine el SDK de Graph. Como alternativa, puedes encontrar el identificador como la notificación oid en un token de identificador o en un token de acceso de Microsoft Entra después de que el usuario haya iniciado sesión y adquirido un token.

Uso básico

// 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);

Referencia de la API

MicrosoftTeamsUserIdentifier

Número de teléfono

PhoneNumberIdentifier representa un número de teléfono. El servicio supone que los números de teléfono tienen formato E.164.

Uso básico

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

Referencia de la API

PhoneNumberIdentifier

Aplicación de Microsoft Teams

La interfaz MicrosoftTeamsAppIdentifier representa un bot de las aplicaciones de voz de Teams, como Cola de llamadas y Operador automático con su identificador de objeto de bot de Microsoft Entra. Las aplicaciones de Teams deben configurarse con una cuenta de recurso. Puedes recuperar el identificador de objeto de bot de Microsoft Entra mediante el punto de conexión /users de la API de REST de Microsoft Graph de la id propiedad en la respuesta. Para obtener más información sobre cómo trabajar con Microsoft Graph, pruebe el Explorador de Graph y examine el SDK de Graph.

Uso básico

// 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);

Referencia de la API

MicrosoftTeamsAppIdentifier

Unknown

UnknownIdentifier existe para futuras correcciones, y es posible que se lo encuentre cuando esté en una versión anterior del SDK y se haya introducido recientemente un nuevo tipo de identificador. Cualquier identificador desconocido del servicio se deserializará en el UnknownIdentifier del SDK.

Uso básico

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

Referencia de la API

UnknownIdentifier

Cómo controlar la clase base CommunicationIdentifier

Mientras construye identificadores para un tipo concreto que se pasa al SDK, el SDK devuelve el resumen CommunicationIdentifier. Puede revertir a un tipo concreto:

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, "Unkown user: " + ((UnknownIdentifier)communicationIdentifier).getId());
}
else {
    // be careful here whether you want to throw because a new SDK version
    // can introduce new identifier types
}

Representación de ID sin formato

A veces es necesario serializar un identificador en una cadena plana. Por ejemplo, si desea almacenar el identificador en una tabla de base de datos o si desea usarlo como parámetro de dirección URL.

Para ello, los identificadores tienen otra representación denominada RawId. Un identificador siempre se puede traducir a su identificador sin procesar correspondiente y siempre se puede convertir un identificador sin procesar válido en un identificador.

Desde azure-communication-common 1.1.0 el SDK ayuda con la conversión:

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

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

Un identificador sin procesar no válido simplemente se convertirá en un UnknownIdentifier en el SDK y cualquier validación solo se produce en el lado del servicio.

En las API de REST, el identificador es un tipo polimórfico: construye un objeto JSON y una propiedad que se asigna a un subtipo de identificador concreto. Por motivos de comodidad y compatibilidad con versiones anteriores, las propiedades kind y rawId son opcionales en las solicitudes, pero se rellenan en las respuestas del servicio.

Usuario de comunicación

CommunicationUserIdentifierModel representa una identidad de usuario que se creó mediante el SDK de identidad o la API de REST. Es el único identificador que se usa si la aplicación no usa las características de interoperabilidad o telefonía de Microsoft Teams.

Uso básico


// 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"
    }
}

Puede encontrar un ejemplo de una solicitud que incluya un identificador en la API de REST del Chat para agregar un participantey un ejemplo de respuesta con un identificador en obtener mensaje de chat.

Referencia de la API

CommunicationUserIdentifierModel

Usuario de Microsoft Teams

La MicrosoftTeamsUserIdentifierModel representa un usuario de Teams con su identificador de objeto de usuario de Microsoft Entra. Puedes recuperar el identificador de objeto de usuario de Microsoft Entra mediante el punto de conexión /users de la API de REST de Microsoft Graph de la id propiedad en la respuesta. Para obtener más información sobre cómo trabajar con Microsoft Graph, pruebe el Explorador de Graph y examine el SDK de Graph. Como alternativa, puedes encontrar el identificador como la notificación oid en un token de Microsoft Entra o en un token de acceso de Microsoft Entra después de que el usuario haya iniciado sesión y adquirido un token.

Uso básico

// request
{
    "microsoftTeamsUser": {
        "userId": "daba101a-91c5-44c9-bb9b-e2a9a790571a"
    }
}

// response
{
    "kind": "microsoftTeamsUser",
    "rawId": "8:orgid:daba101a-91c5-44c9-bb9b-e2a9a790571a",
    "microsoftTeamsUser": {
        "userId": "daba101a-91c5-44c9-bb9b-e2a9a790571a"
    }
}


// if you're not operating in the public cloud, you must also pass the right Cloud type in a request
{
    "microsoftTeamsUser": {
        "userId": "daba101a-91c5-44c9-bb9b-e2a9a790571a",
        "cloud": "gcch"
    }
}

// response
{
    "kind": "microsoftTeamsUser",
    "rawId": "8:gcch:daba101a-91c5-44c9-bb9b-e2a9a790571a",
    "microsoftTeamsUser": {
        "userId": "daba101a-91c5-44c9-bb9b-e2a9a790571a",
        "isAnonymous": false,
        "cloud": "gcch"
    }
}

Referencia de la API

CommunicationUserIdentifierModel

Número de teléfono

PhoneNumberIdentifierModel representa un número de teléfono. El servicio supone que los números de teléfono tienen formato E.164.

Uso básico

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

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

Referencia de la API

PhoneNumberIdentifierModel

Aplicación de Microsoft Teams

La MicrosoftTeamsAppIdentifierModel representa un bot de las aplicaciones de voz de Teams, como Cola de llamadas y Operador automático con su identificador de objeto de bot de Microsoft Entra. Las aplicaciones de Teams deben configurarse con una cuenta de recurso. Puedes recuperar el identificador de objeto de bot de Microsoft Entra mediante el punto de conexión /users de la API de REST de Microsoft Graph de la id propiedad en la respuesta. Para obtener más información sobre cómo trabajar con Microsoft Graph, pruebe el Explorador de Graph y examine el SDK de Graph.

Uso básico

// request
{
    "microsoftTeamsApp": {
        "appId": "45ab2481-1c1c-4005-be24-0ffb879b1130"
    }
}

// response
{
    "kind": "microsoftTeamsApp",
    "rawId": "28:orgid:45ab2481-1c1c-4005-be24-0ffb879b1130",
    "microsoftTeamsApp": {
        "appId": "45ab2481-1c1c-4005-be24-0ffb879b1130"
    }
}


// if you're not operating in the public cloud, you must also pass the right Cloud type in a request
{
    "microsoftTeamsApp": {
        "appId": "45ab2481-1c1c-4005-be24-0ffb879b1130",
        "cloud": "gcch"
    }
}

// response
{
    "kind": "microsoftTeamsApp",
    "rawId": "28:gcch:45ab2481-1c1c-4005-be24-0ffb879b1130",
    "microsoftTeamsApp": {
        "appId": "45ab2481-1c1c-4005-be24-0ffb879b1130",
        "cloud": "gcch"
    }
}

Referencia de la API

MicrosoftTeamsAppIdentifierModel

Unknown

Si se introduce un nuevo identificador en un servicio, se degradará a CommunicationIdentifierModel si se encuentra en una versión anterior de la API.

Uso básico

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

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

Referencia de la API

CommunicationIdentifierModel

Cómo controlar CommunicationIdentifierModel en las respuestas

Las versiones de API recientes rellenan una propiedad kind que puede usar para discriminar:

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;
}

En versiones anteriores de la API, falta la propiedad kind y tiene que comprobar la existencia de la subpropiedad correcta:

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}`);
}

Representación de ID sin formato

A veces es necesario serializar un identificador en una cadena plana. Por ejemplo, si desea almacenar el identificador en una tabla de base de datos o si desea usarlo como parámetro de dirección URL.

Para ello, los identificadores tienen otra representación denominada RawId. Un identificador siempre se puede traducir a su identificador sin procesar correspondiente y siempre se puede convertir un identificador sin procesar válido en un identificador.

Si usa el SDK de Azure, le ayudará con la conversión. Si usa la API de REST directamente, debe construir manualmente el identificador sin procesar, tal y como se describe a continuación.

Usuario de comunicación

Identificador:

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

ID sin procesar:

[communicationUserId]

El identificador sin formato es el mismo que communicationUser.id.

Usuario de Microsoft Teams

Identificador:

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

ID sin procesar:

8:orgid:[entraUserId]

El identificador sin procesar es el identificador de objeto de usuario de Microsoft Entra con el prefijo 8:orgid:.

Identificador:

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

ID sin procesar:

8:gcch:[entraUserId]

El identificador sin procesar es el identificador de objeto de usuario de Microsoft Entra con el prefijo 8:gcch: o 8:dod: según el entorno de nube.

Identificador:

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

ID sin procesar:

8:teamsvisitor:[visitorUserId]

El identificador sin procesar es el identificador de visitante de Teams con el prefijo 8:teamsvisitor:. El identificador de visitante de Teams es un identificador temporal que Teams genera para habilitar el acceso a la reunión.

Número de teléfono

Identificador:

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

ID sin procesar:

4:+1123455567

El identificador sin procesar es el número de teléfono con formato E.164 con el prefijo 4:.

Aplicación de Microsoft Teams

Identificador:

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

ID sin procesar:

28:orgid:[entraUserId]

El id. sin procesar es el id. de objeto de usuario de Entra de la aplicación con el prefijo 28:orgid:.

Identificador:

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

ID sin procesar:

28:gcch:[entraUserId]

El id. sin procesar es el id. de objeto de usuario de Entra con el prefijo 28:gcch: o 28:dod: según el entorno de nube.

Unknown

Identificador:

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

ID sin procesar:

[unknown identifier id]

Si un identificador sin procesar no es válido, el servicio producirá un error en la solicitud.

Pasos siguientes