Obtenha contexto para sua guia
Sua guia requer informações contextuais para exibir conteúdo relevante:
- Informações básicas sobre o usuário, a equipe ou a empresa.
- Informações de localidade e tema.
- O
page.id
epage.subPageId
que identificam o que está nesta guia (conhecido comoentityId
esubEntityId
anterior ao TeamsJS v.2.0.0).
Contexto do usuário
O contexto sobre o usuário, a equipe ou a empresa pode ser especialmente útil quando:
- Crie ou associe recursos em seu aplicativo com o usuário ou a equipe especificados.
- Você inicia um fluxo de autenticação de Microsoft Azure Active Directory (Azure AD) ou de outro provedor de identidade e não exige que o usuário insira seu nome de usuário novamente.
Para obter mais informações, consulte autenticar um usuário no Microsoft Teams.
Importante
Embora essas informações de usuário possam ajudar a fornecer uma experiência suave do usuário, você não deve usá-la como prova de identidade. Por exemplo, um invasor pode carregar sua página em um navegador e renderizar informações ou solicitações prejudiciais.
Informações de contexto de acesso
Você pode acessar informações de contexto de duas maneiras:
- Usando valores de espaço reservado de URL.
- No objeto de contexto da biblioteca de clientes JavaScript do Microsoft Teams.
Obter contexto inserindo valores de espaço reservado de URL
Usar espaços reservados em sua configuração ou URLs de conteúdo. O Microsoft Teams substitui os espaços reservados pelos valores relevantes ao determinar a configuração real ou o URL do conteúdo. Os espaços reservados disponíveis incluem todos os campos no objeto de contexto . Os espaços reservados comuns incluem as seguintes propriedades:
- {page.id}: A ID exclusiva definida pelo desenvolvedor para a página definida ao configurar a página pela primeira vez. (Conhecido como
{entityId}
anterior ao TeamsJS v.2.0.0). - {page.subPageId}: A ID exclusiva definida pelo desenvolvedor para a subpage que esse conteúdo aponta definida ao gerar um link profundo para um item específico na página. (Conhecido como
{subEntityId}
anterior ao TeamsJS v.2.0.0). - {user.loginHint}: um valor adequado como uma dica de entrada para Azure AD. Geralmente, esse é o nome de logon do usuário atual em seu locatário doméstico. (Conhecido como
{loginHint}
anterior ao TeamsJS v.2.0.0). - {user.userPrincipalName}: o nome da entidade de usuário do usuário atual no locatário atual. (Conhecido como
{userPrincipalName}
anterior ao TeamsJS v.2.0.0). - {user.id}: A ID do objeto Azure AD do usuário atual no locatário atual. (Conhecido como
{userObjectId}
anterior ao TeamsJS v.2.0.0). - {app.theme}: o tema da interface do usuário (interface do usuário) atual, como
default
,dark
oucontrast
. (Conhecido como{theme}
anterior ao TeamsJS v.2.0.0). - {team.groupId}: A ID do grupo microsoft 365 no qual a guia reside. (Conhecido como
{groupId}
anterior ao TeamsJS v.2.0.0) - {user.tenant.id}: A ID do locatário Azure AD do usuário atual. (Conhecido como
{tid}
anterior ao TeamsJS v.2.0.0). - {app.locale}: a localidade atual do usuário formatada como languageId-countryId, por exemplo
en-us
. (Conhecido como{locale}
anterior ao TeamsJS v.2.0.0).
Observação
O espaço reservado {upn}
anterior agora está preterido. Para compatibilidade com versões anteriores, é atualmente um sinônimo para {user.loginHint}
.
Por exemplo, no manifesto do aplicativo, se você definir o atributo configurationUrl da "https://www.contoso.com/config?name={user.loginHint}&tenant={user.tenant.id}&group={team.groupId}&theme={app.theme}"
guia como e o usuário conectado tiver os seguintes atributos:
- Seu nome de usuário é user@example.com.
- A ID do locatário da empresa é e2653c-etc.
- Eles são membros do grupo Office 365 com ID 00209384-etc.
- O usuário definiu seu tema do Teams como escuro.
. . . em seguida, o Teams chamará a seguinte URL ao configurar a guia:
https://www.contoso.com/config?name=user@example.com&tenant=e2653c-etc&group=00209384-etc&theme=dark
Obter contexto usando a biblioteca JavaScript do Microsoft Teams
Você também pode recuperar as informações de contexto usando a biblioteca de clientes JavaScript do Microsoft Teams.
As informações podem ser recuperadas chamando microsoftTeams.app.getContext().then((context) => {/*...*/});
.
O código a seguir fornece um exemplo de variável de contexto:
{
"app": {
"host": {
"clientType": "The type of host client. Possible values are android, ios, web, desktop, surfaceHub, teamsRoomsAndroid, teamsPhones, teamsDisplays rigel (deprecated, use teamsRoomsWindows instead)",
"name": "",
"ringId": "The current ring ID",
"sessionId": "The unique ID for the current Teams session for use in correlating telemetry data" },
"iconPositionVertical": "",
"locale": "The current locale of the user formatted as languageId-countryId (for example, en-us)",
"osLocaleInfo": "",
"parentMessageId": "The parent message ID from which this task module is launched",
"sessionId": "The unique ID for the current session used for correlating telemetry data",
"theme": "The current UI theme: default | dark | contrast",
"userClickTime": "",
"userFileOpenPreference": "" },
"channel": {
"defaultOneNoteSectionId": "The OneNote section ID that is linked to the channel",
"displayName": "The name of the current channel",
"id": "The channel ID in the format 19:[id]@thread.skype",
"membershipType": "",
"ownerGroupId": "",
"ownerTenantId": "",
"relativeUrl": "The relative path to the SharePoint folder associated with the channel" },
"chat": { "id": "The chat ID in the format 19:[id]@thread.skype" },
"meeting": {
"id": "The meeting ID used by tab when running in meeting context" },
"page": {
"frameContext": "The context where tab URL is loaded (for example, content, task, setting, remove, sidePanel)",
"id": "The developer-defined unique ID for the entity this content points to",
"isFullScreen": "Indicates if the tab is in full-screen",
"isMultiWindow": "The indication whether the tab is in a pop out window",
"sourceOrigin": "",
"subPageId": "The developer-defined unique ID for the sub-entity this content points to" },
"sharepoint": "The SharePoint context is available only when hosted in SharePoint",
"sharepointSite": {
"domain": "The domain of the root SharePoint site associated with the team",
"path": "The relative path to the SharePoint site associated with the team",
"url": "The root SharePoint site associated with the team" },
"team": {
"displayName": "The name of the current team",
"groupId": "Guid identifying the current Office 365 Group ID",
"internalId": "The Microsoft Teams ID in the format 19:[id]@thread.skype",
"isArchived": "Indicates if team is archived",
"templateId": "",
"type": "The type of team",
"userRole": "The user's role in the team" },
"user": {
"displayName": "",
"id": "The Azure AD object id of the current user, in the current tenant",
"isCallingAllowed": "Indicates if calling is allowed for the current logged in user",
"isPSTNCallingAllowed": "Indicates if PSTN calling is allowed for the current logged in user",
"licenseType": "The license type for the current user. Possible values are E1, E3, and E5 enterprise plans",
"loginHint": "A value suitable as a login hint for Azure AD. This is usually the login name of the current user, in their home tenant",
"tenant": {
"id": "The Azure AD tenant ID of the current user",
"teamsSku": "The license type for the current user tenant. Possible values are enterprise, free, edu, unknown" },
"userPrincipalName": "The principal name of the current user, in the current tenant" }
}
TypeScript
import { app, Context } from "@microsoft/teams-js";
app.getContext().then((context: Context) => {
/*...*/
});
Padrão equivalente async/await
:
import { app, Context } from "@microsoft/teams-js";
async function example() {
const context: Context = await app.getContext();
/*...*/
}
JavaScript
import { app, Context } from "@microsoft/teams-js";
app.getContext().then((context) => {
/*...*/
});
Padrão equivalente async/await
:
import { app, Context } from "@microsoft/teams-js";
async function example() {
const context = await app.getContext();
/*...*/
}
A tabela a seguir lista as propriedades de contexto comumente usadas do objeto de contexto :
Nome do TeamsJS v2 | Nome do TeamsJS v1 |
---|---|
team.internalId | teamId |
team.displayName | teamName |
channel.id | channelId |
channel.displayName | Channelname |
chat.id | chatId |
app.locale | localidade |
page.id | entityId |
page.subPageId | subEntityId |
user.loginHint | loginHint |
user.userPrincipalName | Upn |
user.id | userObjectId |
user.tenant.id | Tid |
team.groupId | groupId |
app.theme | tema |
page.isFullScreen | isFullScreen |
team.type | teamType |
sharepointSite.teamSiteUrl | teamSiteUrl |
sharepointSite.teamSiteDomain | teamSiteDomain |
sharepointSite.teamSitePath | teamSitePath |
channel.relativeUrl | channelRelativeUrl |
app.host.sessionId | Sessionid |
team.userRole | userTeamRole |
team.isArchived | isTeamArchived |
app.host.clientType | hostClientType |
page.frameContext | frameContext |
sharepoint | sharepoint |
user.tenant.teamsSku | tenantSKU |
user.licenseType | userLicenseType |
app.parentMessageId | parentMessageId |
app.host.ringId | ringId |
app.sessionId | appSessionId |
user.isCallingAllowed | isCallingAllowed |
user.isPSTNCallingAllowed | isPSTNCallingAllowed |
meeting.id | meetingId |
channel.defaultOneNoteSectionId | defaultOneNoteSectionId |
page.isMultiWindow | isMultiWindow |
Para obter mais informações, consulte Atualizações para a interface context e a referência da API de interface de contexto.
Recuperar contexto em canais privados
Observação
No momento, os canais privados estão apenas na versão prévia do desenvolvedor privado.
Quando sua página de conteúdo é carregada em um canal privado, os dados que você recebe da getContext
chamada são ofuscados para proteger a privacidade do canal.
Os seguintes campos são alterados quando sua página de conteúdo está em um canal privado:
team.groupId
: indefinido para canais privadosteam.internalId
: Defina como o threadId do canal privadoteam.displayName
: Definir como o nome do canal privadosharepointSite.url
: Defina como a URL de um site do SharePoint distinto e exclusivo para o canal privadosharepointSite.path
: Defina como o caminho de um site do SharePoint exclusivo e distinto para o canal privadosharepointSite.domain
: Defina como o domínio de um domínio de site do SharePoint distinto e exclusivo para o canal privado
Se sua página usa qualquer um desses valores, o valor do channel.membershipType
campo deve ser Private
para determinar se sua página está carregada em um canal privado e pode responder adequadamente.
Observação
teamSiteUrl
também funciona bem para canais padrão. Se sua página usa qualquer um desses valores, o valor do channelType
campo deve ser Shared
para determinar se sua página está carregada em um canal compartilhado e pode responder adequadamente.
Obter contexto em canais compartilhados
Quando a UX de conteúdo for carregada em um canal compartilhado, use os dados recebidos da chamada para alterações de getContext
canal compartilhado. Se a guia fizer uso de qualquer um dos valores a seguir, você deverá preencher o channelType
campo para determinar se a guia está carregada em um canal compartilhado e responder adequadamente.
Para canais compartilhados, o groupId
valor é null
, uma vez que o groupId da equipe de host não reflete com precisão a verdadeira associação do canal compartilhado. Para resolver isso, as hostTeamGroupID
propriedades e hostTenantID
são adicionadas recentemente e úteis para fazer chamadas do Microsoft API do Graph para recuperar a associação. hostTeam
refere-se à Equipe que criou o canal compartilhado. currentTeam
refere-se à Equipe da qual o usuário atual está acessando o canal compartilhado.
Para obter mais informações sobre esses conceitos, consulte canais compartilhados.
Use as seguintes getContext
propriedades em canais compartilhados:
Propriedade | Descrição |
---|---|
channelId |
A propriedade é definida como a ID do thread de canais compartilhados. |
channelType |
A propriedade está definida como para sharedChannel canais compartilhados. |
groupId |
A propriedade é null para canais compartilhados. |
hostTenantId |
A propriedade foi adicionada recentemente e descreve a ID do locatário do host, útil para comparar com a propriedade de locatário do tid usuário atual. |
hostTeamGroupId |
A propriedade foi adicionada recentemente e descreve a ID do grupo Azure AD da equipe de host, útil para fazer chamadas do Microsoft API do Graph para recuperar a associação de canal compartilhado. |
teamId |
A propriedade foi adicionada recentemente e definida como a ID do thread da equipe compartilhada atual. |
teamName |
A propriedade está definida como teamName . |
teamType |
A propriedade está definida como teamType . |
teamSiteUrl |
A propriedade descreve o canal channelSiteUrl compartilhado . |
teamSitePath |
A propriedade descreve o canal channelSitePath compartilhado . |
teamSiteDomain |
A propriedade descreve o canal channelSiteDomain compartilhado . |
tenantSKU |
A propriedade descreve o tenantSKU . |
tid |
A propriedade descreve a ID do locatário do usuário atual. |
userObjectId |
A propriedade descreve a ID do usuário atual. |
userPrincipalName |
A propriedade descreve o UPN do usuário atual. |
Para obter mais informações sobre canais compartilhados, consulte canais compartilhados.
Manipular alteração de tema
Você pode registrar seu aplicativo para ser informado se o tema for alterado chamando microsoftTeams.app.registerOnThemeChangeHandler(function(theme) { /* ... */ })
.
O theme
argumento na função é uma cadeia de caracteres com um valor de default
, dark
ou contrast
.
Exemplo de código
Nome do exemplo | Descrição | Javascript |
---|---|---|
Contexto do canal tab | Este exemplo mostra como usar o conteúdo do objeto de contexto de guia em um canal privado e compartilhado. | Exibir |