以下是文本的简体中文翻译,已保留您指定的自定义分隔符:
每个工作都包含重复的任务。无论是支持代理分析频繁的帮助请求,团队领导监控性能指标,还是软件工程师检查业务流程,这些任务经常重复出现——每天、每周,甚至是每小时。
幸运的是,您可以使用Python自动化这些工作中的许多部分。Python是一种多功能的语言,非常适合处理数据,并且对于脚本自动化任务来说非常直接。想象一下收集性能指标:手动操作,您可能需要翻阅多个仪表板。而使用Python脚本,您可以自动拉取这些数据,突出关键点,并将编译后的报告发送给您的老板。这不仅节省了时间,还减少了出错的风险。
在本教程中,我们将探讨一个具体的案例:运行Python代码来获取特定地点的天气预报,并将预报摘要发送到Microsoft Teams,这是微软的团队沟通平台。我们将介绍所有必要的步骤来配置Teams的webhook,编写利用webhook发送消息的Python程序,并设置一个计划任务,以便Python脚本可以定期运行。这个特定的例子是关于报告天气预报的,但当然,您可以将其替换为任何您想要的“业务逻辑”;所有配置和发送消息到Teams的代码将保持完全相同。
在本教程中,我们将使用DataLab,因为它具有内置功能,可以安全地存储环境变量中的密钥(我们将使用此功能来存储Teams Webhook),以及通过几点击安排您的Python代码。要跟随教程,您只需要一个Microsoft账户(用于发送消息)和一个DataCamp账户(用于使用DataLab),这两个账户都可以免费创建!
您还可以查看我们单独的指南,了解如何使用Python发送Slack消息。
让我们开始吧!
1. 配置Microsoft Teams Webhook
在Microsoft Teams内部,有团队,而这些团队又包含频道。可以向这些频道添加所谓的“应用程序”。您可以将Teams应用程序视为用于特定目的的MS Teams的扩展或附加组件。有应用程序可将Jira、Zendesk、Salesforce等集成到Teams中,因此您可以在Teams中接收在这些应用程序中发生的事情的通知,但您也可以从Teams内部执行这些应用程序中的操作。在我们的小项目中,我们需要安装这样一个应用程序,更具体地说,是微软自己维护的“Incoming Webhook”应用程序。
要开始,请确保您有一个可以访问Teams的Microsoft账户。确保您是团队的一员并且有在此团队中添加应用到频道的权限。如果没有,请联系您的IT部门并发送给他们这个链接。
接下来,前往您想要发布消息的团队频道。在我们的示例中,这是“Data Analytics Heroes”团队内的“General”频道:
点击频道名称旁边的+号;您将看到可以添加到频道的应用概览:
点击“获取更多应用”。您将进入一个完整的市场,您可以将应用添加到MS Teams中:
在搜索框中输入“Incoming Webhook。”显示在第一个的应用就是我们需要的:
点击添加,然后点击“添加到团队”。现在,您将被提示指定要将消息发送到哪个团队或频道:
本教程的示例是“Data Analytics Heroes”团队内的“General”频道,但这可能对您来说会不同。接下来,点击“设置连接器”。另一个屏幕出现,询问更多的webhook设置。
为传入webhook指定一个名称;您的消息将以这个名称发送,所以选择一个有意义的名称,例如“Python Messenger”。您还可以上传自定义图片,但这可选。最后,点击“创建”。一个webhook URL出现了!
你需要在你的 Python 程序中使用这个 webhook URL,因此请确保将其复制到剪贴板,并保存到某个地方(例如,在你的笔记应用中),以便以后使用。最后,点击“完成”。在出现的概览中,你会看到所选频道中所有连接器的概览。
你可以关闭这个屏幕。在你刚刚配置了传入 webhook 的频道中,你应该会看到一条确认设置的相应消息:
就是这样!现在,你的 Microsoft Teams 频道已经准备好通过 webhook 接收消息了。
2. 用 Python 编写业务逻辑
做到这一步非常棒!随着 Teams 中的传入 webhook 配置完成,现在是有趣的部分:编写 Python 代码。我们将从编写一些 Python 代码开始,为我们的“业务逻辑”解决当前的任务。
如果你需要复习如何编写 Python 代码,我们的 Python 入门 课程是一个理想的起点。
你可以 从头创建一个空白工作簿,这很有用,如果你已经知道要自动化的 Python 程序并希望与 Microsoft Teams 集成。
如果你是来了解这些概念的,你可以从一个示例工作簿开始,该工作簿总结了你可以指定的城市的天气预报。每天都会有新的数据,因此这是每日报告的绝佳候选者!点击下面的“运行代码”按钮来创建这个工作簿。
在线运行和编辑本教程中的代码
在这两种情况下,您最终都应该得到一个包含您的业务逻辑的DataLab工作簿:
3. 向Teams发送消息
所以,Teams webhook:确认。业务逻辑:确认。要集成Python笔记本与微软Teams,我们需要做两件事:将webhook URL存储在DataLab工作簿中,并编写一些Python代码向Teams渠道发送消息。
存储webhook URL
我们的Python笔记本需要webhook URL才能将消息发送到正确的Teams渠道。您可以将此URL粘贴到笔记本代码单元格中。然而,这种方法并不安全,也不推荐使用。webhook URL相当于秘密。如果您与他人分享笔记本,他们可以看到webhook URL,并可以垃圾邮件您的Teams渠道!
这种方法还要求您在想要使用笔记本向Teams发送消息的每个工作簿中重复粘贴此URL。如果您出于某种原因需要更新webhook URL,您将不得不逐个编辑每个工作簿。
一种更安全、更可扩展的方法是将webhook URL令牌存储在所谓的环境变量中。当您连接此环境变量时,它将变为在您的Python会话中可用。在工作簿中:
- 点击左侧的“环境”标签
- 点击“环境变量”旁边的加号图标
- 在“添加环境变量”对话框中:
- 将“名称”设置为MS_TEAMS_WEBHOOK_URL
- 在“值”字段中,粘贴您之前保存的Webhook URL。
- 将“环境变量集名称”设置为“Microsoft Teams”(这可以是任何东西,真的)。
填写完所有字段后,点击“创建”、“下一步”,最后点击“连接”。您的表格会重新启动,MS_TEAMS_WEBHOOK_URL现在将作为环境变量在您的表格中可用。您可以通过创建一个包含以下代码的Python单元格并运行它来验证此操作:
import os webhook_url = os.environ["MS_TEAMS_WEBHOOK_URL"] print(webhook_url)
如果您想在另一个工作簿中重用同一个服务帐户凭据,您不需要再次设置环境变量:您可以在其他工作簿中重用环境变量。
发送Microsoft Teams消息的Python代码
有了MS_TEAMS_WEBHOOK_URL,我们现在可以编写Python代码向Teams发送消息!为此,我们将使用开源pymsteams包,它为发送消息到Teams的相当复杂的API提供了一个方便的包装器。让我们安装它并导入它,以及os包来读取环境变量:
!pip install pymsteams import pymsteams import os
接下来,我们可以创建一个所谓的“连接器卡”——在Teams中的丰富文本消息的时髦说法——,向其中添加一些文本并发送它:
card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"]) card.text("Hello Teams!") assert card.send()
运行此代码!您应该会在通道中看到此消息出现:
很棒!这是一条毫无意义的信息,但您也可以根据您的业务逻辑结果创建一条信息,就像我们在示例工作簿中所做的那样:
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. 自动化!
您编写了一个有用的分析脚本,并将分析摘要发送到 Teams,对于感兴趣了解更多细节的人,还包括了回到完整笔记本的链接。太棒了!现在,想象一下,如果可以让这个笔记本自动执行,每天或每周运行,让您始终更新最新的结果。好消息是,您可以做到!DataLab 提供了定时运行功能来实现这一点。
- 在顶部的菜单栏中,点击“运行”>“定时运行”
- 根据您的需要配置计划:
- 设置笔记本每天或每周自动运行。对于周计划,选择具体的日子和时间。
- 添加您希望每次笔记本成功完成或失败时都被告知的数据营用户。这对于失败情况很有帮助,这样您可以在出现问题时代入并修复。
如果像截图上那样配置,笔记本现在将在每天当地时间9:30运行,这意味着每天早上都会在指定的团队频道中发布一条消息。
是否自动化
并非每个任务都适合自动化。这取决于您执行它的频率、手动操作所需的时间,以及创建Python脚本来自动化的时间。例如,考虑一个需要20分钟手动编制的年度报告。如果编写脚本需要半天时间,那么在花费的时间上回本还需要很多年!
下面是一个表格形式的总结:
所以,如果一个任务之前每天需要5分钟完成,您可以花费最多6天的时间尝试自动化这个任务。如果您花在自动化上的时间少于这个时间,那么在五年内,您将节省时间。
结论
设置DataLab以向Microsoft团队发送消息需要最初通过多个屏幕进行导航。但是一旦您在DataLab中设置了webhook URL,发送消息只需添加几行Python代码——非常简单!最棒的部分是什么?您几乎可以自动化任何Python脚本,并在团队中直接通知您的利益相关者。
不再需要为重复性、乏味的任务设置提醒了。欢迎来到一个高效、自动化的工作流时代,您无需在工具之间切换。这一切只需拥抱DataLab即可。
请记住,如果您需要复习Python代码的编写,我们的Python入门课程是开始学习的理想之地。
Source:
https://www.datacamp.com/tutorial/how-to-send-microsoft-teams-messages-with-python