Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пакеты SDK служб коммуникации и интерфейсы REST API используют тип идентификатора, чтобы определить, кто с кем взаимодействует. Например, идентификаторы указывают, кто звонит или кто отправил сообщение чата.
В зависимости от контекста идентификаторы упаковываются с дополнительными свойствами, например в ChatParticipant
пакете SDK чата или в RemoteParticipant
пакете SDK для вызовов.
В этой статье описаны различные типы идентификаторов и способы их просмотра на разных языках программирования. Вы также получите советы по их использованию.
Тип CommunicationIdentifier
.
Существуют удостоверения пользователей, которые создаются самостоятельно, и существуют внешние удостоверения. Пользователи и номера телефонов Microsoft Teams — это внешние идентификаторы, которые будут участвовать в сценариях взаимодействия. Каждый из этих типов удостоверений имеет соответствующий идентификатор, представляющий его. Идентификатор — это структурированный тип, который обеспечивает безопасность типов и хорошо работает с автозаполнением в вашем редакторе.
Пользователь связи
Интерфейс CommunicationUserIdentifier
представляет идентификацию пользователя, созданную с помощью Identity SDK или REST API. Это единственный идентификатор, используемый, если приложение не использует возможности взаимодействия Microsoft Teams или телефонии.
Базовое использование
// 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
Пользователь Microsoft Teams
Интерфейс MicrosoftTeamsUserIdentifier
представляет пользователя Teams с идентификатором объекта пользователя Microsoft Entra. Вы можете получить идентификатор объекта пользователя Microsoft Entra с помощью REST API Microsoft Graph /users из свойства id
в ответе. Дополнительные сведения о работе с Microsoft Graph см. в Graph Explorer и ознакомьтесь с Graph SDK. Кроме того, вы можете найти идентификатор в качестве oid
утверждения в токене Microsoft Entra или токене доступа Microsoft Entra после того, как пользователь вошел в систему и получил токен.
Базовое использование
// get the Teams user's ID from Graph APIs if only the email is known
const user = await graphClient.api("/users/[email protected]").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
Номер телефона
Интерфейс PhoneNumberIdentifier
представляет номер телефона. Служба предполагает, что номера телефонов форматируются в формате E.164.
Базовое использование
// create an identifier
const phoneNumber = { phoneNumber: "+112345556789" };
Справочник по API
Приложение Microsoft Teams
Интерфейс MicrosoftTeamsAppIdentifier
представляет собой бота приложений Teams для голосовой связи, таких как очередь вызовов и автосекретарь, с идентификатором объекта бота Microsoft Entra. Приложения Teams должны быть настроены с ресурсной учетной записью. Вы можете получить идентификатор объекта бота Microsoft Entra через REST API Microsoft Graph /users из свойства id
в ответе. Дополнительные сведения о работе с Microsoft Graph см. в Graph Explorer и ознакомьтесь с Graph SDK.
Базовое использование
// 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
Неизвестно
Интерфейс UnknownIdentifier
существует для обеспечения будущей совместимости, и вы можете столкнуться с ним, если используете старую версию пакета SDK, а недавно был введен новый тип идентификатора. Любой неизвестный идентификатор из службы десериализуется в UnknownIdentifier
в SDK.
Базовое использование
// create an identifier
const unknownId = { id: "a raw id that originated in the service" };
Справочник по API
Как справиться с CommunicationIdentifier
базовым интерфейсом
При создании идентификаторов для конкретного типа, который вы передаете в SDK, SDK возвращает CommunicationIdentifierKind
, что является дискриминированным объединением. Сузить до конкретного типа просто, и мы предлагаем использовать оператор switch-case с сопоставлением по шаблонам.
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;
}
Идентификаторы интерфейсов спроектированы таким образом, что вам не нужно указывать kind
, чтобы уменьшить избыточность. Кроме того, дискриминирующее объединение со свойством kind
используется только при возвращении из SDK. Тем не менее, если необходимо перевести идентификатор в соответствующий тип объединения дискриминации, вы можете использовать эту вспомогательную функцию:
const identifierKind = getIdentifierKind(identifier); // now you can switch-case on the kind
Представление необработанного идентификатора
Иногда необходимо сериализовать идентификатор в плоскую строку. Например, если вы хотите сохранить идентификатор в таблице базы данных или использовать его в качестве параметра URL-адреса.
Для этого идентификаторы имеют другое представление RawId
. Идентификатор всегда можно преобразовать в соответствующий необработанный идентификатор, и допустимый необработанный идентификатор всегда можно преобразовать в идентификатор.
Поскольку [email protected]
SDK помогает с преобразованием:
// get an identifier's raw Id
const rawId = getIdentifierRawId(communicationIdentifier);
// create an identifier from a given raw Id
const identifier = createIdentifierFromRawId(rawId);
Недопустимый необработанный идентификатор преобразуется в UnknownIdentifier
в SDK, а проверка выполняется только на стороне сервиса.
Пользователь связи
Элемент CommunicationUserIdentifier
представляет собой удостоверение пользователя, созданное с помощью Identity SDK или REST API. Это единственный идентификатор, используемый, если приложение не использует возможности взаимодействия Microsoft Teams или телефонии.
Базовое использование
// 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
Пользователь Microsoft Teams
Элемент MicrosoftTeamsUserIdentifier
обозначает пользователя Teams с идентификатором объекта пользователя Microsoft Entra. Вы можете получить идентификатор объекта пользователя Microsoft Entra через конечную точку REST API Microsoft Graph /users из id
свойства в ответе. Дополнительные сведения о работе с Microsoft Graph см. в Graph Explorer и изучите Graph SDK. Кроме того, вы можете найти идентификатор в качестве oid
утверждения в токене Microsoft Entra или токене доступа Microsoft Entra после того, как вы вошли в систему и получили токен.
Базовое использование
// get the Teams user's ID from Graph APIs if only the email is known
var user = await graphClient.Users["[email protected]"]
.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
Номер телефона
Элемент PhoneNumberIdentifier
представляет номер телефона. Служба предполагает, что номера телефонов форматируются в формате E.164.
Базовое использование
// create an identifier
var phoneNumber = new PhoneNumberIdentifier("+112345556789");
Справочник по API
Приложение Microsoft Teams
Интерфейс MicrosoftTeamsAppIdentifier
представляет собой бот голосовых приложений Teams, таких как очередь вызовов и автосекретарь, с его идентификатором объекта бота Microsoft Entra. Приложения Teams должны быть настроены с использованием ресурсной учетной записи. Вы можете получить идентификатор объекта бота Microsoft Entra через конечную точку REST API Microsoft Graph /users из свойства id
в ответе. Дополнительные сведения о работе с Microsoft Graph см. в Graph Explorer и Graph SDK.
Базовое использование
// 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
Неизвестно
UnknownIdentifier
существует для обеспечения совместимости с будущими версиями, и вы можете столкнуться с ним, когда используете старую версию SDK и недавно был введён новый тип идентификатора. Любой неизвестный идентификатор от сервиса десериализуется в UnknownIdentifier
в SDK.
Базовое использование
// create an identifier
var unknown = new UnknownIdentifier("a raw id that originated in the service");
Справочник по API
Как обрабатывать базовый класс CommunicationIdentifier
При создании идентификаторов для конкретного типа, передаваемого в пакет SDK, пакет SDK возвращает CommunicationIdentifier
протокол. Легко привести тип к конкретному значению, и мы предлагаем использовать оператор switch-case с сопоставлением образцов.
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;
}
Представление необработанного идентификатора
Иногда необходимо сериализовать идентификатор в плоскую строку. Например, если вы хотите сохранить идентификатор в таблице базы данных или использовать его в качестве параметра URL-адреса.
Для этого идентификаторы имеют другое представление RawId
. Идентификатор всегда можно преобразовать в соответствующий необработанный идентификатор, и допустимый необработанный идентификатор всегда можно преобразовать в идентификатор.
Так как Azure.Communication.Common 1.2.0
пакет SDK помогает с преобразованием:
// get an identifier's raw Id
string rawId = communicationIdentifier.RawId;
// create an identifier from a given raw Id
CommunicationIdentifier identifier = CommunicationIdentifier.FromRawId(rawId);
Недопустимый необработанный идентификатор в SDK преобразуется в UnknownIdentifier
, и любая проверка выполняется только на стороне службы.
Пользователь связи
Это CommunicationUserIdentifier
обозначает удостоверение пользователя, созданное с помощью пакета SDK для удостоверений или REST API. Это единственный идентификатор, используемый, если приложение не использует возможности взаимодействия Microsoft Teams или телефонии.
Базовое использование
# 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
Пользователь Microsoft Teams
Элемент MicrosoftTeamsUserIdentifier
представляет пользователя Teams с идентификатором объекта его пользователя Microsoft Entra. Вы можете получить идентификатор объекта пользователя Microsoft Entra через конечную точку REST API Microsoft Graph /users из свойства id
в ответе. Дополнительные сведения о работе с Microsoft Graph см. в Graph обозревателе и пакете SDK Graph. Кроме того, вы можете найти идентификатор в виде oid
утверждения в токене Microsoft Entra или токене доступа Microsoft Entra после того, как войдете в систему и получите токен.
Базовое использование
# get the Teams user's ID from Graph APIs if only the email is known
user_id = graph_client.get("/users/[email protected]").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
Номер телефона
PhoneNumberIdentifier
представляет номер телефона. Служба предполагает, что номера телефонов форматируются в формате E.164.
Базовое использование
# create an identifier
phone_number = PhoneNumberIdentifier("+112345556789")
Справочник по API
Приложение Microsoft Teams
Интерфейс MicrosoftTeamsAppIdentifier
представляет бота в приложениях голосовой связи Teams, таких как Очередь вызовов и Автоответчик, с идентификатором объекта бота Microsoft Entra. Приложения Teams должны быть настроены с учетной записью ресурса. Вы можете получить идентификатор объекта бота Microsoft Entra с помощью REST API Microsoft Graph /users из свойства ответа id
. Дополнительные сведения о работе с Microsoft Graph см. в Graph Explorer и ознакомьтесь с Graph SDK.
Базовое использование
# 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
Неизвестно
Существует UnknownIdentifier
для обеспечения совместимости с будущими изменениями, и вы можете столкнуться с этим, если используете старую версию SDK и недавно был введен новый тип идентификатора. Любой неизвестный идентификатор из службы десериализуется как UnknownIdentifier
в SDK.
Базовое использование
# create an identifier
unknown = UnknownIdentifier("a raw id that originated in the service")
Справочник по API
Как работать с базовым классом
При создании идентификаторов для конкретного типа, передаваемого в пакет SDK, пакет SDK возвращает CommunicationIdentifier
протокол. Конкретные классы идентификаторов — это CommunicationIdentifier
протокол вместе с типизированным словарем properties
. Таким образом, можно использовать сопоставление шаблонов в переменной экземпляра kind
протокола для преобразования в конкретный тип:
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
Представление необработанного идентификатора
Иногда необходимо сериализовать идентификатор в плоскую строку. Например, если вы хотите сохранить идентификатор в таблице базы данных или использовать его в качестве параметра URL-адреса.
Для этого идентификаторы имеют другое представление RawId
. Идентификатор всегда можно преобразовать в соответствующий необработанный идентификатор, и допустимый необработанный идентификатор всегда можно преобразовать в идентификатор.
Пакет SDK помогает преобразовать:
# 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)
Недопустимый необработанный идентификатор преобразуется в UnknownIdentifier
в SDK, и любая проверка выполняется только на стороне сервера.
Пользователь связи
CommunicationUserIdentifier
представляет собой идентичность пользователя, созданную с помощью пакета SDK для идентичности или REST API. Это единственный идентификатор, используемый, если приложение не использует возможности взаимодействия Microsoft Teams или телефонии.
Базовое использование
// 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
Пользователь Microsoft Teams
Представляет MicrosoftTeamsUserIdentifier
пользователя Teams с идентификатором объекта пользователя Microsoft Entra. Вы можете получить ID объекта пользователя Microsoft Entra с помощью REST API Microsoft Graph /users из свойства id
в ответе. Дополнительные сведения о работе с Microsoft Graph см. в Graph Explorer и ознакомьтесь с Graph SDK. Кроме того, вы можете найти идентификатор в утверждении oid
в токене Microsoft Entra или токене доступа Microsoft Entra после того, как пользователь вошёл и получил токен.
Базовое использование
// get the Teams user's ID from Graph APIs if only the email is known
var user = graphClient.users("[email protected]")
.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
Номер телефона
Этот PhoneNumberIdentifier
представляет собой номер телефона. Служба предполагает, что номера телефонов форматируются в формате E.164.
Базовое использование
// create an identifier
var phoneNumber = new PhoneNumberIdentifier("+112345556789");
Справочник по API
Приложение Microsoft Teams
Интерфейс MicrosoftTeamsAppIdentifier
представляет бот для приложений Microsoft Teams Voice, таких как очередь вызовов и автосекретарь, с идентификатором объекта Microsoft Entra. Приложения Teams должны быть настроены с ресурсной учетной записью. Вы можете получить идентификатор объекта бота Microsoft Entra через REST API Microsoft Graph /users из свойства id
в ответе на запрос. Дополнительные сведения о работе с Microsoft Graph см. в Graph Explorer и изучении Graph SDK.
Базовое использование
// 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
Неизвестно
Существует UnknownIdentifier
для обеспечения совместимости с будущими версиями, и вы можете столкнуться с ним, когда вы используете старую версию пакета SDK, и недавно был введен новый тип идентификатора. Неизвестный идентификатор из службы десериализуется в UnknownIdentifier
в SDK.
Базовое использование
// create an identifier
var unknown = new UnknownIdentifier("a raw id that originated in the service");
Справочник по API
Как обрабатывать CommunicationIdentifier
базовый класс
При создании идентификаторов для конкретного типа, передаваемого в пакет SDK, пакет SDK возвращает абстрактный CommunicationIdentifier
. Вы можете вернуться к конкретному типу:
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
}
Представление необработанного идентификатора
Иногда необходимо сериализовать идентификатор в плоскую строку. Например, если вы хотите сохранить идентификатор в таблице базы данных или использовать его в качестве параметра URL-адреса.
Для этого идентификаторы имеют другое представление RawId
. Идентификатор всегда можно преобразовать в соответствующий необработанный идентификатор, и допустимый необработанный идентификатор всегда можно преобразовать в идентификатор.
Так как azure-communication-common 1.2.0
пакет SDK помогает с преобразованием:
// get an identifier's raw Id
String rawId = communicationIdentifier.getRawId();
// create an identifier from a given raw Id
CommunicationIdentifier identifier = CommunicationIdentifier.fromRawId(rawId);
Недопустимый необработанный идентификатор преобразуется в UnknownIdentifier
в SDK, и любая проверка выполняется только на стороне сервиса.
Пользователь связи
Элемент CommunicationUserIdentifier
представляет собой удостоверение пользователя, созданное с использованием Identity SDK или REST API. Это единственный идентификатор, используемый, если приложение не использует возможности взаимодействия Microsoft Teams или телефонии.
Базовое использование
// 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
Пользователь Microsoft Teams
MicrosoftTeamsUserIdentifier
представляет пользователя Teams с идентификатором объекта пользователя Microsoft Entra. Вы можете получить идентификатор объекта пользователя Microsoft Entra с помощью REST API Microsoft Graph /users из свойства id
в ответе. Дополнительные сведения о работе с Microsoft Graph см. в Graph Explorer и изучении Graph SDK. Либо вы можете найти идентификатор в качестве oid
утверждения в токене идентификатора или токене доступа Microsoft Entra после входа пользователя и получения токена.
Базовое использование
// get the Teams user's ID if only the email is known, assuming a helper method for the Graph API
let userId = await getUserIdFromGraph("[email protected]")
// 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
Номер телефона
Элемент PhoneNumberIdentifier
представляет номер телефона. Служба предполагает, что номера телефонов форматируются в формате E.164.
Базовое использование
// create an identifier
let phoneNumber = PhoneNumberIdentifier(phoneNumber: "+112345556789")
Справочник по API
Приложение Microsoft Teams
Интерфейс MicrosoftTeamsAppIdentifier
представляет бота голосовых приложений Teams, таких как очередь вызовов и автоматический секретарь, с идентификатором объекта бота Microsoft Entra. Приложения Teams должны быть настроены с учётной записью ресурса. Вы можете получить идентификатор объекта бота Microsoft Entra с помощью REST API Microsoft Graph /users из свойства id
, указанного в ответе. Дополнительные сведения о работе с Microsoft Graph см. в Graph Explorer и ознакомьтесь с Graph SDK.
Базовое использование
// 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
Неизвестно
Существует UnknownIdentifier
для обеспечения долговременной актуальности, и вы можете столкнуться с ним, когда используете старую версию пакета SDK, а новый тип идентификатора был недавно введён. Любой неизвестный идентификатор из системы десериализуется в UnknownIdentifier
в SDK.
Базовое использование
// create an identifier
let unknown = UnknownIdentifier("a raw id that originated in the service")
Справочник по API
Как обрабатывать CommunicationIdentifier
базовый протокол
При создании идентификаторов для конкретного типа, передаваемого в пакет SDK, пакет SDK возвращает CommunicationIdentifier
протокол. Легко вернуться к конкретному типу, и мы предлагаем оператор switch-case с сопоставлением шаблонов:
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;
}
Представление необработанного идентификатора
Иногда необходимо сериализовать идентификатор в плоскую строку. Например, если вы хотите сохранить идентификатор в таблице базы данных или использовать его в качестве параметра URL-адреса.
Для этого идентификаторы имеют другое представление RawId
. Идентификатор всегда можно преобразовать в соответствующий необработанный идентификатор, и допустимый необработанный идентификатор всегда можно преобразовать в идентификатор.
Так как Azure.Communication.Common 1.1.0
пакет SDK помогает с преобразованием:
Swift
// get an identifier's raw Id
let rawId = communicationIdentifier.rawId;
// create an identifier from a given raw Id
let identifier = createCommunicationIdentifier(fromRawId: rawId);
Недопустимый необработанный идентификатор преобразуется в UnknownIdentifier
в SDK, и любая проверка выполняется только на стороне службы.
Пользователь связи
Идентификатор пользователя CommunicationUserIdentifier
, созданный с помощью Identity SDK или REST API. Это единственный идентификатор, используемый, если приложение не использует возможности взаимодействия Microsoft Teams или телефонии.
Базовое использование
// 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
Пользователь Microsoft Teams
Этот MicrosoftTeamsUserIdentifier
представляет пользователя Teams с его идентификатором объекта пользователя Microsoft Entra. Вы можете получить ID объекта пользователя Microsoft Entra через конечную точку REST API Microsoft Graph /users, используя свойство id
в ответе. Дополнительные сведения о работе с Microsoft Graph см. в обозревателе Graph и в пакете SDK Graph. Кроме того, вы можете найти идентификатор в качестве oid
утверждения в токене идентификатора или токене доступа Microsoft Entra после того, как пользователь вошёл в систему и получил токен.
Базовое использование
// get the Teams user's ID from Graph APIs if only the email is known
User user = graphClient.users("[email protected]")
.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
Номер телефона
PhoneNumberIdentifier
представляет собой номер телефона. Служба предполагает, что номера телефонов форматируются в формате E.164.
Базовое использование
// create an identifier
PhoneNumberIdentifier phoneNumber = new PhoneNumberIdentifier("+112345556789");
Справочник по API
Приложение Microsoft Teams
Интерфейс MicrosoftTeamsAppIdentifier
представляет собой бота приложений Teams Voice, таких как очередь вызовов и автосекретарь, с помощью идентификатора объекта бота Microsoft Entra. Настройте приложения Teams, используя учетную запись ресурса. Вы можете получить идентификатор объекта бота Microsoft Entra с помощью REST API Microsoft Graph /users из id
свойства в ответе. Подробнее о работе с Microsoft Graph см. в Обозревателе Graph и ознакомьтесь с пакетом SDK Graph.
Базовое использование
// 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
Неизвестно
Для обеспечения совместимости с будущими обновлениями существует UnknownIdentifier
, и вы можете столкнуться с ним, когда используете старую версию SDK, и новый тип идентификатора был недавно введён. Любой неизвестный идентификатор из службы десериализуется в UnknownIdentifier
в SDK.
Базовое использование
// create an identifier
UnknownIdentifier unknown = new UnknownIdentifier("a raw id that originated in the service");
Справочник по API
Как обрабатывать CommunicationIdentifier
базовый класс
При создании идентификаторов для конкретного типа, передаваемого в SDK, SDK возвращает абстрактный CommunicationIdentifier
. Вы можете вернуться к конкретному типу:
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
}
Представление необработанного идентификатора
Иногда необходимо сериализовать идентификатор в плоскую строку. Например, если вы хотите сохранить идентификатор в таблице базы данных или использовать его в качестве параметра URL-адреса.
Для этого идентификаторы имеют другое представление RawId
. Идентификатор всегда можно преобразовать в соответствующий необработанный идентификатор, и допустимый необработанный идентификатор всегда можно преобразовать в идентификатор.
Так как azure-communication-common 1.1.0
пакет SDK помогает с преобразованием:
// get an identifier's raw Id
String rawId = communicationIdentifier.getRawId();
// create an identifier from a given raw Id
CommunicationIdentifier identifier = CommunicationIdentifier.fromRawId(rawId);
Недопустимый идентификатор в необработанном виде преобразуется в UnknownIdentifier
в SDK, и любая проверка выполняется только на стороне сервиса.
В REST API идентификатор является полиморфным типом: вы создаете объект JSON и свойство, которое сопоставляется с конкретным подтипом идентификатора. Для удобства и обратной совместимости свойства kind
и rawId
являются необязательными в запросах, но заполняются в ответах службы.
Пользователь связи
Удостоверение пользователя CommunicationUserIdentifierModel
создано с помощью Identity SDK или REST API. Это единственный идентификатор, используемый, если приложение не использует возможности взаимодействия Microsoft Teams или телефонии.
Базовое использование
// 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"
}
}
Пример запроса, который содержит идентификатор в REST API чата для добавления участника, а также пример ответа с идентификатором в сообщении чата.
Справочник по API
CommunicationUserIdentifierModel
Пользователь Microsoft Teams
Элемент MicrosoftTeamsUserIdentifierModel
представляет пользователя Teams с идентификатором объекта пользователя Microsoft Entra. Вы можете получить идентификатор объекта пользователя Microsoft Entra с помощью конечной точки REST API Microsoft Graph /users из свойства id
в ответе. Дополнительные сведения о работе с Microsoft Graph см. в Graph Explorer и Graph SDK. Кроме того, вы можете найти идентификатор как oid
утверждение в токене Microsoft Entra или токене доступа Microsoft Entra после входа пользователя и получения токена.
Базовое использование
// 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
MicrosoftTeamsUserIdentifierModel
Номер телефона
PhoneNumberIdentifierModel
представляет собой номер телефона. Служба предполагает, что номера телефонов форматируются в формате E.164.
Базовое использование
// request
{
"phoneNumber": {
"value": "+112345556789"
}
}
// response
{
"kind": "phoneNumber",
"rawId": "4:+112345556789",
"phoneNumber": {
"value": "+112345556789"
}
}
Справочник по API
Приложение Microsoft Teams
MicrosoftTeamsAppIdentifierModel
представляет собой бота приложений для голосовой связи Teams, таких как очередь звонков и автосекретарь, с идентификатором объекта бота Microsoft Entra. Приложения Teams должны быть настроены с использованием учетной записи ресурса. Вы можете получить идентификатор объекта бота Microsoft Entra через конечную точку REST API Microsoft Graph /users из свойства id
в ответе. Дополнительные сведения о работе с Microsoft Graph см. в Обозревателе Graph и ознакомьтесь с пакетом SDK Graph.
Базовое использование
// 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
MicrosoftTeamsAppIdentifierModel
Неизвестно
Если новый идентификатор представлен в службе, он понижается до CommunicationIdentifierModel
, если вы находитесь на старой версии API.
Базовое использование
// request
{
"rawId": "a raw id that originated in the service"
}
// response
{
"kind": "unknown",
"rawId": "a raw id that originated in the service"
}
Справочник по API
Как обработать CommunicationIdentifierModel
в ответах
Последние версии API заполняют свойство kind
, которое можно использовать для различения:
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;
}
В более старых версиях API свойство kind
отсутствует, и необходимо проверить правильность подсвойства.
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}`);
}
Представление необработанного идентификатора
Иногда необходимо сериализовать идентификатор в плоскую строку. Например, если вы хотите сохранить идентификатор в таблице базы данных или использовать его в качестве параметра URL-адреса.
Для этого идентификаторы имеют другое представление RawId
. Идентификатор всегда можно преобразовать в соответствующий необработанный идентификатор, и допустимый необработанный идентификатор всегда можно преобразовать в идентификатор.
Если вы используете пакет SDK Для Azure, это поможет вам с преобразованием. Если вы используете REST API напрямую, необходимо создать необработанный идентификатор вручную, как показано ниже.
Пользователь связи
Идентификатор:
{
"communicationUser": {
"id": "[communicationUserId]"
}
}
Исходный идентификатор:
[communicationUserId]
Необработанный идентификатор совпадает с communicationUser.id
.
Пользователь Microsoft Teams
Идентификатор:
{
"microsoftTeamsUser": {
"userId": "[entraUserId]"
}
}
Идентификатор в сыром виде:
8:orgid:[entraUserId]
Необработанный идентификатор — это идентификатор пользовательского объекта Microsoft Entra с 8:orgid:
префиксом .
Идентификатор:
{
"microsoftTeamsUser": {
"userId": "[entraUserId]",
"cloud": "gcch"
}
}
Необработанный идентификатор:
8:gcch:[entraUserId]
Необработанный идентификатор — это идентификатор объекта пользователя Microsoft Entra, который имеет префикс 8:gcch:
или 8:dod:
, в зависимости от облачной среды.
Идентификатор:
{
"microsoftTeamsUser": {
"userId": "[visitorUserId]",
"isAnonymous": true
}
}
Необработанный идентификатор:
8:teamsvisitor:[visitorUserId]
Необработанный идентификатор — это идентификатор посетителя Teams с префиксом 8:teamsvisitor:
. Идентификатор посетителя Teams — это временный идентификатор, который Teams создает для обеспечения доступа к собранию.
Номер телефона
Идентификатор:
{
"phoneNumber": {
"value": "+1123455567"
}
}
Необработанный идентификатор:
4:+1123455567
Необработанный идентификатор — это форматированный номер телефона E.164 с 4:
префиксом.
Приложение Microsoft Teams
Идентификатор:
{
"microsoftTeamsApp": {
"appId": "[entraUserId]"
}
}
Необработанный идентификатор:
28:orgid:[entraUserId]
Сырой идентификатор — это идентификатор пользовательского объекта Microsoft Entra приложения, префиксированный 28:orgid:
.
Идентификатор:
{
"microsoftTeamsUser": {
"userId": "[entraUserId]",
"cloud": "gcch"
}
}
Необработанный идентификатор:
28:gcch:[entraUserId]
Необработанный идентификатор — это идентификатор пользовательского объекта Microsoft Entra с префиксом 28:gcch:
или 28:dod:
в зависимости от облачной среды.
Неизвестно
Идентификатор:
{
"rawId": "[unknown identifier id]"
}
Исходный идентификатор:
[unknown identifier id]
Если необработанный идентификатор недопустим, служба отклонит запрос.
Следующие шаги
- Для введения в тему идентичностей в коммуникации см. Модель идентичности.
- Чтобы узнать, как быстро создавать идентификаторы для тестирования, ознакомьтесь с кратким руководством по быстрому созданию идентификаторов.
- Чтобы узнать, как использовать службы связи вместе с Microsoft Teams, см. взаимодействие Teams.
- Чтобы узнать, как использовать Raw ID, см. Примеры использования строковых идентификаторов в коммуникационных SDK.