Каждая работа включает в себя рутинные задачи. Независимо от того, являешь ли ты агентом поддержки, анализирующим частые запросы помощи, либо руководителем команды, мониторящим показатели производительности, или инженером по программному обеспечению, проверяющим бизнес-процессы, эти задачи часто повторяются – ежедневно, еженедельно или даже ежечасно.
К счастью, многое из этой работы можно автоматизировать с помощью Python. Это универсальный язык, отлично подходящий для работы с данными и прост в использовании для скриптовой автоматизации. Представьте себе сбор показателей производительности: вручную вам придется искать информацию в нескольких дашбордах. С помощью скрипта на Python вы можете автоматически получать эти данные, выделять ключевые точки и отправлять сводный отчет вашему начальнику. Это не только экономит время, но и минимизирует риск ошибок.
В этом руководстве мы рассмотрим конкретный случай выполнения кода на Python для получения прогноза погоды для определенного места и отправки сводного отчета о прогнозе в Microsoft Teams, коммуникационную платформу для команд Microsoft. Мы рассмотрим все необходимые шаги для настройки webhook Teams, программу на Python, использующую webhook для отправки сообщений, и настройку расписания, чтобы скрипт на Python мог запускаться регулярно. Этот конкретный пример касается отчетности о прогнозе погоды, но, конечно, вы можете заменить эту “бизнес-логику” на что угодно; вся конфигурация и код для отправки сообщения в Teams останется точно таким же.
ДатаЛаб мы будем использовать в этом руководстве, так как у нее есть встроенная функциональность для безопасного хранения секретов в качестве переменных среды (функция, которую мы используем для хранения webhook Teams) а также для планирования вашего кода на Python с помощью нескольких кликов. Чтобы следовать, вам нужен только аккаунт Microsoft (чтобы отправлять сообщения) и аккаунт DataCamp (чтобы использовать ДатаЛаб), и оба могут быть созданы бесплатно!
Вы также можете просмотреть наш отдельный гид о том, как отправлять сообщения Slack с помощью Python.
Примемся за работу!
1. Настройте webhook Microsoft Teams
Внутри Microsoft Teams существуют команды, у которых в свою очередь есть каналы. Можно добавить так называемые ‘приложения’ в эти каналы. Можно думать о приложениях Teams как о расширениях или дополнениях к MS Teams для специфических целей. Есть приложения для интеграции Jira, Zendesk, Salesforce и многих других в Teams, так что вы можете получать уведомления внутри Teams о происходящем, а также выполнять действия в этих приложениях прямо из Teams. Для нашего небольшого проекта нам нужно установить одно из этих приложений, более конкретно, приложение “Incoming Webhook”, поддерживаемое самой Microsoft.
Для начала, убедитесь, что у вас есть учетная запись Microsoft с доступом к Teams. Убедитесь, что вы являетесь участником команды и имеете разрешение добавлять приложения в каналы этой команды. Если нет, свяжитесь с отделом IT и отправьте им этот ссылку.
Далее, перейдите к каналу команды, в котором вы хотите отправлять сообщения. В нашем примере это “Общее” канал в команде “Герои анализа данных”:
Щёлкните по знаку “+” рядом с именем канала; у вас появится обзор приложений, которые вы можете добавить в канал:
Щёлкните “Получить больше приложений”. Вы окажетесь в полностью развитом рынке приложений, которые можно добавить в MS Teams:
В поле поиска введите “Входящий вебHOOK”. Первое приложение, которое появляется, это то, которое нам нужно:
Щёлкните “Добавить”, а затем “Добавить в команду”. Теперь вам предлагается указать, в какую команду или канал вы хотите отправлять сообщения:
Пример нашего урока – это “Общее” канал в команде “Герои анализа данных”, но у вас, скорее всего, будет другое. Затем нажмите “Настроить соединение”. Опять же появляется еще один экран, в котором требуется указать несколько настроек вебHOOK:
Укажите имя для входящего вебHOOK; ваши сообщения будут отправлены под этим именем, поэтому выберите что-то смысловое, например, “Python Messenger”. Также можно загрузить customs images, но это опционально. Наконец, нажмите “Создать”. URL вебHOOK появляется!
Вам потребуется этот URL-адрес webhook в вашем Python-programме, поэтому убедитесь, что его скопировали в буфер обмена и сохранили где-либо (например, в приложении для записей) для будущего использования. Наконец, нажмите “Готово”. В отображаемом общем обзоре вы увидите обзор всех соединений в выбранном канале.
Вы можете просто закрыть этот экран. В канале, для которого вы что-то сейчас настроили входящий webhook, вы должны увидеть соответствующее сообщение, подтверждающее установку:
Это все! В настоящее время ваш канал Microsoft Teams готов принимать сообщения через webhook.
2. Запишите бизнес-логику на Python
Супер работа! Теперь вы дошел до самого интересного: написание Python-кода. Начнем с написания Python-кода для нашей «бизнес-логики», чтобы решить ту задачу, которая вас ожидает.
Если вам нужно проверить навыки написания Python-кода, то наш курс Введение в Python является идеальным местом для начала.
Вы можетесоздать пустой рабочий лист изначально, что удобно, если уже знаете, что Python-программу вы хотите автоматизировать и интегрировать с Microsoft Teams.
Если вы пришел сюда, чтобы узнать о концепциях, можете начать с образцового рабочего листа, который обобщает прогноз погоды для города, который вы можете указать. Каждый день появляется новая информация, поэтому это идеальный кандидат для ежедневного отчета! Click the “Run Code” button below to create this workbook.
Запустите и измените код из этого учебника онлайн
В обоих случаях вы должны получить рабочей книгу DataLab с вашей коммерческой логикой, написанной на коде:
3. Отправка сообщения в Teams
Так, вебхок Teams: проверенное. Бизнес-логика: проверенное. Чтобы интегрировать Python-ноутбук с Microsoft Teams, нам нужно сделать два дела: сохранить URL вебхока в рабочей книге DataLab и написать какое-то Python-код для отправки сообщения в канал Teams.
Сохранение URL вебхока
Наш Python-ноутбук нужен URL вебхока, чтобы отправить сообщение в правильный канал Teams. Вы могли бы просто скопировать и вставить этот URL в ячейку кода вашего ноутбука. Однако это небезопасный подход и не рекомендуется. URL вебхока является своего рода секретом. Если вы делите ваш ноутбук с кем-то еще, они могут увидеть URL вебхока, и они могут спаммить ваш канал Teams!
Этот подход также требует вашего повторяющегося вставки этого URL во все рабочие книги, с которыми вы хотите отправлять сообщения в Teams. Если вы почему-то захотите обновить URL вебхока, вам придется пройтись по всем рабочим книгам и исправить их.
Более безопасный и масштабируемый подход — это хранение URL-токена вебхока в так называемом environment variable . когда вы подключите эту environment variable, она станет доступна в вашем Python-сессии. В вашей рабочей книге:
- Click the “Environment” tab on the left-hand side
- Click on the plus icon next to “Environment Variables”
- В модальном окне “Добавить переменные среды”:
- Установите “Имя” как MS_TEAMS_WEBHOOK_URL
- В поле “Значение”, вставьте URL webhook, который вы сохранили ранее.
- Установите “Имя набора переменных среды” как “Microsoft Teams” (это может быть что угодно, на самом деле)
После заполнения всех полей, нажмите “Создать”, “Далее” и, наконец, “Подключить”. Ваша сессия рабочейbooks будет перезапущена, и MS_TEAMS_WEBHOOK_URL теперь будет доступен как переменная среды в вашей рабочейbooks. Вы можете проверить это, создав Python ячейку следующим кодом и запустив его:
import os webhook_url = os.environ["MS_TEAMS_WEBHOOK_URL"] print(webhook_url)
Если вы хотите re-use相同的 services account credentials в другой рабочейbooks, вам не нужно настроить переменную среды снова: вы можете re-use переменной среды в других рабочихbooks.
Python код для отправки сообщения Microsoft Teams
MS_TEAMS_WEBHOOK_URL заблокирован и готов, теперь мы можем написать Python код для отправки сообщения в Teams! Для этого мы будем использовать open-source pymsteams package, который обеспечивает удобную оболочку для сложного API отправки сообщений в Teams. Пожалуйста, установите его и импортируйте его, а также импортируйте os package, чтобы читать переменные среды:
!pip install pymsteams import pymsteams import os
Next, we can create a so-called ‘connector card’ – a fancy word for a rich text message in Teams –, add some text to it, and send it:
card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"]) card.text("Hello Teams!") assert card.send()
Run this code! You should see this message appear in the channel:
fantastichno! Это был не значащийся пример сообщения, но теперь ты также можешь создать сообщение на основе результатов бизнес-логики, как мы это сделали в демонстрационном файле:
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()
Следующий результат:
В конечном итоге ты также можешь использовать переменную среды DL_WORKBOOK_ID
, чтобы включить кнопку, ссылающуюся на твой рабочий файл, если хочешь включить удобный способ перехода от Teams к рабочему файлу DataLab, который двигает это сообщение:
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()
Следующий результат:
Конечно же, правильно!?
4. Автоматизируйте!
Ты написал Python скрипт, который выполняет полезный анализ и рассылает краткое описание этого анализа в Teams, включая ссылку на полную страничку для тех, кто заинтересован в более детальных сведениях. fantastichno! Теперь подумайте о том, чтобы этот ноутб Корк мог выполняться автоматически ежедневно или еженедельно, чтобы тебе было всегда актуально.ホームのお知らせにあるように、素晴らしいニュースは、それは可能です! DataLabを使ってplaneado ejecuciónを提供しています。
- 在顶部菜单栏中,点击运行 > 计划运行
- 像你看到的那样配置计划:
- 设置笔记本电脑自动运行的每日或每周计划。对于每周计划,选择确切的日期和时间。
- Добавьте пользователей DataCamp, которых нужно информировать каждый раз, когда заметка заканчивает свою работу (успешно или с ошибкой). Это полезно делать для ошибок, чтобы вы могли вникнуть и исправить проблему, когда она возникает.
Если настроить, как показано на скриншоте выше, заметка теперь будет запускаться в 9:30 утра по местному времени каждый день, что означает, что сообщение будет размещаться в указанном канале Teams каждое утро.
Автоматизировать или нет
Не каждая задача является хорошим кандидатом для автоматизации. Это зависит от того, как часто вы выполняете эту задачу, сколько времени занимает ее выполнение вручную и сколько времени потребуется на создание сценария на Python для автоматизации. Например, рассмотрим годовой отчет, который занимает 20 минут для сборки вручную. Если вам потребуется половина дня, чтобы написать сценарий для него, то многие года вам придется ждать, пока вы сравняетесь с затраченным на автоматизацию временем!
Вот краткая сводка в виде таблицы:
Так что если задача, которую вам нужно было выполнять ежедневно, до этого занимала 5 минут, вы можете потратить до 6 дней, чтобы попытаться автоматизировать эту задачу. Если вы потратите меньше времени на автоматизацию, вы сэкономите время (принимая во внимание пять лет).
Заключение
Настройка DataLab для отправки сообщений в Microsoft Teams требует первоначального перемещения по нескольким экранам. Но как только вы настроите всё с использованием URL вебхука в DataLab, отправка сообщения сводится к добавлению нескольких строк Python-кода – это действительно просто! Лучшая часть? Вы можете автоматизировать почти любой сценарий на Python и немедленно уведомить ваших заинтересованных сторон прямо там, где они находятся: в Teams.
Прошлые дни, когда нужно было настраивать напоминания для повторяющихся, скучных задач. Приветствуем эру эффективных, автоматизированных рабочих потоков, где вам не требуется переключаться между инструментами. Все, что нужно, это принять DataLab.
Посмитритесь, если вам нужно обновить знания о написании кода на Python, наш курс Введение в Python является идеальным местом начала.
Source:
https://www.datacamp.com/tutorial/how-to-send-microsoft-teams-messages-with-python