Company Communicator
4 min readJul 11, 2024
Apesar da recomendação de usar o deployment guide via powershell no repo oficial, esse método está com problema de acordo com o próprio pessoal que mantém o projeto então eles mesmos recomendaram o método manual.
- Criei um RG na assinatura desejada
- Crie três apps no Entra ID, com Secrets, guarde esses valores ClientID, Secrets e TenantID
- Rodar o Template de deploy da doc preenchendo os ClientIds e as secrets de cada app
- Cuidado com o campo Base Resource Name, ele será usado como base para criar todos os recursos, tive problemas com nomes grandes maiores que 24 caracteres, e além disso com nomes de recursos já existentes.
- Se der erro no deploy antes de fazer o redepoly apague os recursos criados até o momento do erro.
- é bom gerar os guids dos recursos usando uma ferramenta de geração pois novos deploys podem ter problemas
Levou cerca de 40 minutos para terminar
agora vamos em output e pegamos os ids dos bots
- keyVaultName: wdossantoscc01vault
- authorBotId: 86049421–2b3c-4246–80f2–093aab3d6fec
- userBotId: 4ab32fa3–36ab-4c55-a8bb-4d5384dafe42
- appDomain: wdossantoscc01.azurefd.net
Vamos complementar algumas configurações no Entra Id
- Comece pela terceira APP e adicione a Redirect URIs https://wdossantoscc01.azurefd.net/signin-simple-end
- Va em expor API e defina como api://wdossantoscc01.azurefd.net
- Criei um escopo chmado access_as_user
- autorize os seguintes clients 5e3ce6c0–2b1f-4285–8d4b-75ee78787346 e 1fec8e78-bce4–4aaf-ab1b-5451cc387264
por fim no menu manifesto localize optionalClaims que vai estar nulo e troque por
"optionalClaims": {
"idToken": [],
"accessToken": [
{
"name": "upn",
"source": null,
"essential": false,
"additionalProperties": []
}
],
"saml2Token": []
},
Agora vamos adicionar algumas permissões nessa mesma app, as permissões são :
- AppCatalog.Read.All — Delegated
- GroupMember.Read.All — Delegated
- GroupMember.Read.All — Application
- TeamsAppInstallation.ReadWriteForUser.All — Application
- User.Read — Delegated
- User.Read.All — Application
de o consentimento
Agora clonar o repo
git clone https://github.com/OfficeDev/microsoft-teams-apps-company-communicator
entra na pasta Manifest e altera os valores <<>>
manifest_authors.json
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.5/MicrosoftTeams.schema.json",
"manifestVersion": "1.5",
"version": "5.5.2",
"id": "1c07cd26-a088-4db8-8928-ace382fa219f",
"packageName": "com.microsoft.teams.companycommunicator.authors",
"developer": {
"name": "Wilson dos Santos",
"websiteUrl": "https://wilsonsantosnet.medium.com/company-communicator-6d628c29e292",
"privacyUrl": "https://wilsonsantosnet.medium.com/company-communicator-6d628c29e292",
"termsOfUseUrl": "https://wilsonsantosnet.medium.com/company-communicator-6d628c29e292"
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "Company Communicator (Authors)",
"full": "Company Communicator (Authors)"
},
"description": {
"short": "Broadcast messages to multiple teams and people in one go",
"full": "Broadcasts messages to multiple teams and individuals through channel posts and chat messages"
},
"accentColor": "#64A2CC",
"configurableTabs": [{
"configurationUrl": "https://wdossantoscc01.azurefd.net/configtab",
"canUpdateConfiguration": true,
"scopes": [
"team"
]
}],
"bots": [{
"botId": "86049421–2b3c-4246–80f2–093aab3d6fec",
"scopes": [
"team"
],
"supportsFiles": true,
"isNotificationOnly": true
}],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"wdossantoscc01.azurefd.net"
],
"webApplicationInfo": {
"id": "86049421–2b3c-4246–80f2–093aab3d6fec",
"resource": "api://wdossantoscc01.azurefd.net"
}
}
manifest_users.json
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.5/MicrosoftTeams.schema.json",
"manifestVersion": "1.5",
"version": "5.5.2",
"id": "148a66bb-e83d-425a-927d-09f4299a9274",
"packageName": "com.microsoft.teams.companycommunicator",
"developer": {
"name": "Wilson dos Santos",
"websiteUrl": "https://wilsonsantosnet.medium.com/company-communicator-6d628c29e292",
"privacyUrl": "https://wilsonsantosnet.medium.com/company-communicator-6d628c29e292",
"termsOfUseUrl": "https://wilsonsantosnet.medium.com/company-communicator-6d628c29e292"
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "Company Communicator",
"full": "Company Communicator"
},
"description": {
"short": "Broadcast messages to multiple teams and people in one go",
"full": "Broadcasts messages to multiple teams and individuals through channel posts and chat messages"
},
"accentColor": "#64A2CC",
"bots": [{
"botId": "4ab32fa3–36ab-4c55-a8bb-4d5384dafe42",
"scopes": [
"personal",
"team"
],
"supportsFiles": false,
"isNotificationOnly": true
}],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"wdossantoscc01.azurefd.net"
]
}