Company Communicator

Wilson Santos
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.

  1. Criei um RG na assinatura desejada
  2. Crie três apps no Entra ID, com Secrets, guarde esses valores ClientID, Secrets e TenantID
  3. Rodar o Template de deploy da doc preenchendo os ClientIds e as secrets de cada app
  4. 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.
  5. Se der erro no deploy antes de fazer o redepoly apague os recursos criados até o momento do erro.
  6. é 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

  1. keyVaultName: wdossantoscc01vault
  2. authorBotId: 86049421–2b3c-4246–80f2–093aab3d6fec
  3. userBotId: 4ab32fa3–36ab-4c55-a8bb-4d5384dafe42
  4. appDomain: wdossantoscc01.azurefd.net

Vamos complementar algumas configurações no Entra Id

  1. Comece pela terceira APP e adicione a Redirect URIs https://wdossantoscc01.azurefd.net/signin-simple-end
  2. Va em expor API e defina como api://wdossantoscc01.azurefd.net
  3. Criei um escopo chmado access_as_user
  4. 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"
]
}

Referência

  1. OfficeDev/microsoft-teams-apps-company-communicator: Company Communicator app template (github.com)
  2. Guia de implantação · OfficeDev/microsoft-teams-apps-company-communicator Wiki (github.com)
  3. Troubleshooting · OfficeDev/microsoft-teams-apps-company-communicator Wiki (github.com)

--

--

Wilson Santos
Wilson Santos

Written by Wilson Santos

Nos últimos 15 anos, venho desenvolvendo , aperfeiçoando e integrando sistemas, sou apaixonado por desenvolver e ensinar, nem tanto por escrever!.

No responses yet