Como enviar mensagens do Microsoft Teams com Python

Toda tarefa de trabalho inclui tarefas repetitivas. Seja um agente de suporte analisando pedidos de ajuda frequentes, um líder de equipe monitorando métricas de desempenho ou um engenheiro de software verificando processos de negócios, essas tarefas muitas vezes se repetem – diariamente, semanalmente ou mesmo a cada hora.

Felizmente, você pode automatizar muito deste trabalho com Python. É uma linguagem versátil que é ótima para lidar com dados e direta para scriptar tarefas de automação. Imagine coletar métricas de desempenho: manualmente, você pode ter que vasculhar vários painéis. Com um script em Python, você pode extrair automaticamente esses dados, destacar os pontos chave e enviar um relatório compilado para o seu chefe. Isso não só poupa tempo como também reduz o risco de erros.

Neste tutorial, vamos olhar para o caso específico de executar código em Python para buscar uma previsão do tempo para um local específico e enviar um resumo desta previsão para o Microsoft Teams, a plataforma de comunicação de equipe da Microsoft. Cobriremos todos os passos necessários para configurar um webhook do Teams, um programa em Python que utiliza o webhook para enviar mensagens e configurar um horário para que o script Python seja executado em um ritmo regular. Este exemplo específico é sobre relatar uma previsão do tempo, mas você pode, claro, trocar esta ‘lógica de negócios’ por qualquer coisa que você queira; toda a configuração e código para enviar a mensagem para o Teams permanecerá exatamente a mesma.

Nós vamos usar o DataLab neste tutorial, pois ele tem funcionalidades integradas para armazenar segredos com segurança como variáveis de ambiente, além de agendar seu código Python com apenas alguns cliques. Para seguir comigo, tudo o que você precisa é uma conta Microsoft (para postar mensagens) e uma conta DataCamp (para usar DataLab), ambas das quais você pode criar de graça!

Você pode também verificar nossa guia separada sobre como enviar mensagens do Slack com Python.

Vamos mergulhar!

1. Configurar um Webhook do Microsoft Teams

Dentro do Microsoft Teams, existem equipes, que por sua vez têm canais. É possível adicionar tão-chamados ‘apps’ a esses canais. Você pode pensar em uma app do Teams como uma extensão ou complemento do MS Teams para um propósito específico. Existem apps para integrar o Jira, Zendesk, Salesforce e muitos outros com o Teams, para que você possa ser notificado dentro do Teams sobre coisas que acontecem, mas você também pode executar ações nessas apps a partir do interior do Teams. Para nosso pequeno projeto, vamos precisar instalar uma dessas apps, especificamente, a app “Incoming Webhook”, mantida pela própria Microsoft.

Para iniciar, certifique-se de ter uma conta Microsoft com acesso a Teams. Verifique se você é membro de uma equipe e tem permissão para adicionar aplicativos a canais nesta equipe. Se não tiver, contate seu departamento de TI e envie-lhes este link.

A seguir, vá até o canal da equipe para o qual você deseja publicar mensagens. No nosso exemplo, é o canal “Geral” dentro da equipe “Heróis de Análise de Dados”:

Clique no símbolo + à direita do nome do canal; você verá uma visão geral dos aplicativos que você pode adicionar ao canal:

Clique em “Obter aplicativos” adicionais. Você vai encontrar uma loja de aplicativos totalmente funcional que você pode adicionar a MS Teams:

No campo de busca, digite “Webhook de Entrada.” O aplicativo que aparece primeiro é o que precisamos:

Clique em “Adicionar”, depois em “Adicionar a uma equipe.” Agora, você será solicitado a especificar para qual equipe ou canal você quer enviar mensagens:

O exemplo deste tutorial é o canal “Geral” na equipe “Heróis de Análise de Dados”, mas isso provavelmente será diferente para você. Em seguida, clique em “Configurar um conector.” Aparece outra tela solicitando algumas configurações de webhook adicionais.

Especifique um nome para o webhook de entrada; as mensagens serão enviadas sob este nome, então escolha algo que faz sentido, por exemplo, “Mensageiro Python”. Você também pode fazer upload de uma imagem personalizada, mas isso é opcional. Finalmente, clique em “Criar”. Uma URL de webhook aparece!

Você precisará dessa URL de webhook no seu programa Python, então certifique-se de copiar para a área de transferência e salvar em algum lugar (por exemplo, na sua aplicação de notas) para uso futuro. Finalmente, clique em “Concluído”. Na visão geral que aparece, você verá uma visão geral de todos os conectores no canal que você selecionou.

Você pode simplesmente fechar esta tela. No canal que você acabou de configurar o webhook de entrada, você deveria ver uma mensagem correspondente confirmando a configuração:

Pronto! Agora, seu canal Microsoft Teams está pronto para receber mensagens através do webhook.

2. Escreva a Lógica de Negócios em Python

Parabéns por chegar até aqui! Com o Webhook de Entrada em Teams configurado, chegou a hora da parte divertida: escrever Python. Começaremos escrevendo algum código Python para nossa ‘lógica de negócios’ para resolver a tarefa em mãos.

Se você precisa de uma revisão sobre como escrever código Python, nosso curso Introdução ao Python é o local ideal para começar.

Você pode criar um planilha vazia de raiz, o que é útil se você já souber o que programa Python quer automatizar e integrar com o Microsoft Teams.

Se você está aqui para aprender sobre os conceitos, você pode começar com uma planilha de exemplo que resume o previsão do clima para uma cidade que você pode especificar. Todos os dias, haverá novos dados, portanto, isso é ótimo candidato para relatórios diários! Clique no botão “Executar Código” abaixo para criar esta planilha.

Execute e edite o código deste tutorial online

Run code

Em ambos os casos, você deve acabar com um workbook do DataLab com toda a sua lógica de negócios codificada:

3. Enviando uma Mensagem para o Teams

Então, webhook do Teams: verificado. Lógica de negócios: verificada. Para integrar o notebook Python com o Microsoft Teams, precisamos fazer duas coisas: armazenar a URL do webhook no workbook do DataLab e escrever algum código Python para enviar uma mensagem para o canal do Teams.

Armazene a URL do webhook

Nosso notebook Python precisa da URL do webhook para enviar a mensagem para o canal adequado do Teams. Você poderia simplesmente copiar e colar essa URL dentro de uma célula de código do seu notebook. No entanto, essa não é uma abordagem segura e não é recomendada. A URL do webhook é meio que secreta. Se você compartilhar seu notebook com outra pessoa, ela poderá ver a URL do webhook e poderá enviar spam para o seu canal do Teams!

Essa abordagem também exigiria que você repetisse essa cópia e colagem em cada workbook que você deseja enviar mensagens do Teams. Se você quiser atualizar a URL do webhook por algum motivo, terá que revisar e editar cada workbook.

Uma abordagem mais segura e escalável é armazenar o token da URL do webhook em uma chamada variável de ambiente. Quando você conectar essa variável de ambiente, ela se tornará disponível em sua sessão Python. No seu workbook:

  • Clique na aba “Ambiente” no lado esquerdo
  • Clique no ícone de mais ao lado de “Variáveis de Ambiente”
  • No modal “Adicionar Variáveis de Ambiente”:
    • Defina “Nome” como MS_TEAMS_WEBHOOK_URL
    • No campo “Valor”, cole a URL de Webhook que você salvou anteriormente.
    • Defina o “Nome do Conjunto de Variáveis de Ambiente” como “Microsoft Teams” (isso pode ser qualquer coisa, realmente)

Após preencher todos os campos, clique em “Criar”, “Próximo” e, finalmente, “Conectar”. Suas sessões de planilha serão reiniciadas, e MS_TEAMS_WEBHOOK_URL agora estará disponível como uma variável de ambiente em sua planilha. Você pode verificar isso criando uma célula Python com o seguinte código e executando-a:

import os webhook_url = os.environ["MS_TEAMS_WEBHOOK_URL"] print(webhook_url)

Se você quiser reutilizar as mesmas credenciais da conta de serviço em outra planilha, você não precisará configurar a variável de ambiente novamente: você pode reutilizar a variável de ambiente em outras planilhas.

Código Python para enviar a mensagem do Microsoft Teams

Com MS_TEAMS_WEBHOOK_URL carregado e pronto, agora podemos escrever código Python para enviar uma mensagem para o Teams! Para isso, usaremos o pacote open-source pymsteams, que fornece um envoltorio conveniente para a complexa API de envio de mensagens para o Teams. Vamos instalá-lo e importá-lo, juntamente com o pacote os para ler as variáveis de ambiente:

!pip install pymsteams import pymsteams import os

Agora, podemos criar uma chamada de “cartão de conectores” – um termo elegante para uma mensagem de texto rico no Teams -, adicionar algum texto a ela e enviá-la:

card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"]) card.text("Hello Teams!") assert card.send()

Execute este código! Você deveria ver esta mensagem aparecer no canal:

Impressionante! Este foi um exemplo de mensagem sem sentido, mas você pode criar uma mensagem com base no resultado de seu logica de negócios, como fizemos no exemplo de planilha :

card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"]) card.title("Weather Forecast") card.text("\n".join([ f"Weather for {CITY} in the next three days:", f"- Min temperature: {weather_df['temperature_2m'].min()} {unit_temperature}", f"- Max temperature: {weather_df['temperature_2m'].max()} {unit_temperature}", f"- Total precipitation: {weather_df['precipitation'].sum():.2f} {unit_prec}" ])) assert card.send()

Com o seguinte resultado:

Finalmente, você também pode aproveitar a variável de ambiente DL_WORKBOOK_ID para incluir um botão que se linka à sua planilha, caso queira incluir uma maneira fácil de passar do Teams para a planilha DataLab que está acessando essa mensagem:

card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"]) card.title("Weather Forecast") card.text("\n".join([ f"Weather for {CITY} in the next three days:", f"- Min temperature: {weather_df['temperature_2m'].min()} {unit_temperature}", f"- Max temperature: {weather_df['temperature_2m'].max()} {unit_temperature}", f"- Total precipitation: {weather_df['precipitation'].sum():.2f} {unit_prec}" ])) card.addLinkButton("View detailed forecast", f"https://www.datacamp.com/datalab/w/{os.environ.get('DL_WORKBOOK_ID', 'invalid')}/edit") assert card.send()

Com o seguinte resultado:

Muito legal, certo?!

4. Automatize!

Você criou um script Python que realiza uma análise útil e envia um resumo dessa análise para o Teams, incluindo um link para a planilha completa para aqueles interessados em mais detalhes. Impressionante! Agora, imagina se você pudesse configurar essa planilha para executar automaticamente, diariamente ou semanalmente, mantendo você sempre atualizado com resultados frescos. Bem, a grande notícia é que você pode! O DataLab oferece a funcionalidade de execuções agendadas para tornar isso possível.

  • Na barra de menu no topo, clique em Executar > Agendar Execução
  • Configure o agendamento conforme achar apropriado:
    • Configure a planilha para executar automaticamente diariamente ou semanalmente. Para agendamentos semanais, escolha o dia e hora exatos.
    • Adicione usuários do DataCamp que você deseja que sejam informados toda vez que o bloco de notas termina (com sucesso ou falha). Isso é útil para falhas, para que você possa mergulhar e corrigir quando ocorrer um problema.

Se configurado como na captura de tela acima, o bloco de notas agora será executado às 9:30 AM horário local todos os dias, o que significa que uma mensagem será publicada no canal Teams especificado todas as manhãs.

Automatizar ou não automatizar

Não todas as tarefas são candidatas ruins para automação. Depende de quanto você as faz, quanto tempo leva para fazer manualmente, e o tempo que levaria para criar um script Python para automatizá-las. Por exemplo, considere um relatório anual que leva 20 minutos para compilar à mão. Se levar você meio dia para escrever um script para ele, será muitos anos antes de compensar o tempo gasto na automação!

Aqui está um resumo em formato de tabela:

Então, se uma tarefa que você tinha que fazer diariamente levou 5 minutos antes, você pode gastar até 6 dias tentando automatizar essa tarefa. Se você gastar menos tempo automatizando, você terá ganho tempo (contado em cinco anos).

Conclusão

Configurar o DataLab para enviar mensagens para o Microsoft Teams envolve navegar através de várias telas inicialmente. Mas assim que tudo estiver configurado com a URL do webhook em DataLab, enviar uma mensagem é apenas adicionar algumas linhas de código Python – é realmente simples! A melhor parte? Você pode automatizar quase qualquer script Python e notificar diretamente seus interessados onde estão: no Teams.

Fora estão os dias de definir lembretes para tarefas repetitivas e banais. Bem-vindo à era de fluxos de trabalho eficientes e automatizados onde você não precisa alternar entre ferramentas. Tudo o que é preciso é abraçar o DataLab.

Lembre-se, se precisar de um refresh sobre a escrita de código Python, o nosso curso de Introdução ao Python é o local ideal para começar.

Source:
https://www.datacamp.com/tutorial/how-to-send-microsoft-teams-messages-with-python