Hoje em dia, tudo em sua vida está conectado. Seu e-mail se conecta ao seu telefone, que se conecta à porta da garagem, que fala com o seu sistema de segurança. Não é diferente com os aplicativos que você usa para fazer o trabalho; tudo precisa se integrar sem problemas, permitindo que você acesse rapidamente dados relevantes de qualquer ferramenta que você esteja usando no momento. Temos pouca atenção; qualquer coisa que não seja facilmente acessível em nosso fluxo de trabalho não vai manter sua atenção por muito tempo.

Para a maioria de nós hoje, grande parte do nosso trabalho, especialmente comunicação e coordenação com os colegas, acontece em um aplicativo de bate-papo.

Nosso produto Teams é uma ótima maneira de armazenar, pesquisar e classificar o intercâmbio de colegas de conhecimento através de perguntas e respostas. Mas muitas dessas conversas ainda acontecem no chat, o que significa que somos mais úteis para os clientes quando nossa ferramenta joga bem com esses aplicativos de bate-papo. Já integramos com o Slack, mas nem todo mundo usa isso. Precisávamos nos integrar com as Equipes Microsoft (de agora em diante, MS Teams) também.

Abaixo, discutiremos como abordamos e realizamos a integração entre SO para Equipes e Equipes de MS. Este é um blog técnico para pessoas que estão interessadas no processo de como conseguimos que essas duas bases de código jogassem bem uma com a outra. Se você quiser ler mais sobre o conjunto de recursos de integração, confira o blog de anúncio do produto.

 

Calculando a abordagem inicial

 

Como o SO for Teams é uma parte integrada da base central de código, nossa integração com as Equipes MS seria incluída nessa base de código. E nossa rede de sites é servidores recebem centenas de milhões de acessos todos os meses, por isso estamos muito focados em velocidade e desempenho. E estamos sempre cautelosos em assumir novas dependências.

A Microsoft oferece um SDK muito robusto para suas integrações de equipes. Ele faz muito e teria facilitado muito a integração, mas teria adicionado muitas dependências de terceiros à nossa base de código. Requer a integração para criar middleware para se integrar ao nosso pipeline. Em um novo oleoduto em um novo projeto, isso não é problema. Em um oleoduto de dez anos com muitas personalizações, torna-se um pouco mais um problema. Trabalhamos muito com esse pipeline para armazenar dados através da Redis e fazer com que todas as respostas apareçam rapidamente. Mas as dependências poderiam alocar dados sem que sempre saibamos sobre isso.

Em vez disso, fomos com a API REST, que é mais barebones. Requer um elevador mais leve, então isso tomou nossa decisão por nós. Por causa disso, acabamos duplicando coisas que existiam no SDK. Não estávamos começando completamente do zero — fomos capazes de reutilizar alguns trabalhos da nossa integração com o Slack. Além disso, REST é o que estamos acostumados. De certa forma, é mais fácil do que tentar aprender os ins e contras de um novo SDK.

Uma vez que essa decisão foi tomada, era hora de construir as pontes entre uma equipe e outra.

 

Obtendo Avance Network em equipes de MS

 

Assim que soubermos quais ferramentas usaríamos, poderíamos começar a desenvolver a integração. O processo de instalação foi um desafio interessante porque havia muitas maneiras de abordá-lo. Poderíamos ter enviado usuários ao nosso site para iniciar a instalação, mas do ponto de vista deles, fazia mais sentido ter todo o processo dentro das Equipes de MS. As pessoas que você quer alcançar já estão nesse aplicativo, então por que fazê-las sair para instalar a integração?

Nossa instalação opera com o processo padrão que a maioria dos aplicativos MS Teams usam. Um usuário inicia a instalação a partir de sua loja, que lança um instalador MS Teams. O instalador tem uma série de telas de instalação, a primeira delas vem de Equipes MS, enquanto todas as telas restantes vêm da nossa base de código. A instalação percorre as seguintes etapas:

 

Certifique-se de que a integração ainda não foi instalada.

 

Exibir a tela de login padrão para autenticar para que saibamos a que equipe SO eles pertencem.

 

Agora que conhecemos tanto sua conta ms team quanto SO for Teams conta, verificamos duas vezes que essas duas contas ainda não estão associadas pela leitura de uma tabela de banco de dados, em seguida, vincular o inquilino/usuário ms Teams (o usuário específico dentro da instância MS Teams) e a equipe/usuário.

 

Para que o primeiro usuário seja instalado, isso solicita um administrador do Avance Network Teams para configurar a integração.

 

Para cada usuário que passa por esse processo após o administrador configurar a integração, uma vez que o usuário passou com sucesso pelo processo de autenticação acima (para provar que é um membro da equipe Avance Network), o bot envia uma mensagem que diz que a integração está pronta.

Todo mundo que quer usar SO para equipes dentro de Ms Teams tem que passar pelo processo de instalação uma vez, não importa quantas outras pessoas já o tenham concluído. Isso porque a parte chave desse processo é vincular o inquilino/usuário do Microsoft Teams com a equipe/usuário Avance Network.

 

Mantendo os dados da equipe seguros

 

Passamos muito tempo nos certificando de que a segurança estava apertada. Estamos lidando com conversas internas das empresas e informações proprietárias, por isso é muito importante ter certeza de que isso está bloqueado. O primeiro portão de segurança vem quando precisamos de um administrador da instância SO for Teams para autorizar o aplicativo, a fim de permitir que qualquer usuário o use. Isso porque um usuário que faz parte de vários SO para Equipes pode colar um link em Equipes de MS que podem não ser permitidos para usuários nessa conversa (ou toda a instância do MS Teams).

Depois de consultar nossos especialistas internos, percebemos que não precisávamos construir um processo completo de OAuth2 — nosso auth interno funcionaria bem. Mas para que qualquer conversa aconteça, um usuário ainda precisa ser autorizado em ambos os lados, não importa qual método de autenticação as organizações usem para equipes de MS e SO para Equipes, seja SAML, OAuth ou outra coisa. Eles só não têm que realizar autenticação entre os sistemas.

Então, para garantir cada solicitação, seja para desenrolar um link, realizar uma pesquisa ou notificar um usuário de novas perguntas e respostas, ele tem que ser validado cont