PythonでMicrosoft Teamsメッセージを送信する方法

すべての仕事には繰り返されるタスクが含まれています。サポートエージェントがよくある質問に答える、チームリーダーがパフォーマンス指標を監視する、ソフトウェアエンジニアがビジネスプロセスを確認するなど、これらのタスクは常に再現します。日に、週に、たまたま時間にも。

幸いにも、Pythonを使ってこれらの作业の多くを自動化することができます。多用途の言語であり、データ处理に優れており、自動化作业には簡単です。パフォーマンス指標の集計を考えると、手動ではいくつかのダッシュボードを掘り返す必要があります。Pythonスクリプトを使うと、これらのデータを自動的に取得し、重要な点を強調表示し、上司に送信することができます。これは時間を節約し、エラーの危険性を reducedする效果があります。

このチュートリアルでは、特定の場所の天気予報を取得し、この予報の要約をMicrosoft Teamsに送信するためのPythonコードを実行する特定のケースを見ていきます。Microsoft Teamsは、チームのコミュニケーションプラットフォームであり、Webhookの設定、Pythonプログラムの作成、Webhookを利用してメッセージを送信し、Pythonスクリプトを定期に実行する設定をカバーします。この具体的な例は天気予報の報告に焦点を当てていますが、もちろん、この「ビジネスロジクス」を任意のものに入れ替えることができます。Teamsにメッセージを送信する設定とコードは全く変わりません。

このチュートリアルでは、環境変数(私たちが Teams の Webhook を保存するために使用する機能)と Python コードを数クリックでスケジューリングするための組み込み機能を持つDataLabを使用します。従うために必要なのは、メッセージを投稿するための Microsoft アカウントと DataLab を使用するための DataCamp アカウントだけで、どちらも無料で作成できます!

また、Python で Slack メッセージを送信する方法については別のガイドを参照してください。

では、始めましょう!

1. Microsoft Teams Webhook の設定

Microsoft Teams 内部には、チャンネルを持つチームがあります。これらのチャンネルには「アプリ」を追加することができます。Teams アプリは、特定の目的のための MS Teams の拡張またはアドオンと考えることができます。Jira、Zendesk、Salesforce などを Teams に統合するアプリがあり、これらのアプリで起こることを Teams で通知を受け取ることができます。また、Teams からこれらのアプリ内でアクションを実行することもできます。私たちの小さなプロジェクトでは、これらのアプリの一つ、特に Microsoft 自身が維持している「Incoming Webhook」アプリをインストールする必要があります。

開始する前に、Microsoftアカウントを持ってTeamsにアクセスできることを確認してください。チームのメンバーであり、このチームのチャンネルにアプリを追加する権限があることを確認してください。そうでない場合は、IT部门に連絡してこのリンクを送信してください。

次に、投稿したいメッセージを送信するチームチャンネルに移動します。この例では、”Data Analytics Heroes”チームの”General”チャンネルです:

チャンネル名の横にある+記号をクリックして、チャンネルに追加すること可能なアプリの概览を見ます:

“更多应用程序”をクリックしてください。あなたはMS Teamsに追加すること可能なアプリのフルブルー市场经济を参照します:

検索ボックスに”Incoming Webhook”と入力してください。最初に表示されるアプリは私たちが必要とするものです:

“追加”をクリックし、次に”チームに追加”をクリックします。今度は、メッセージを送信したいチームまたはチャンネルを指定するように促されます:

このチュートリアルの例は”Data Analytics Heroes”チームの”General”チャンネルですが、おそらくあなたの場合は異なります。次に、”コネクタを設定する”をクリックします。また別の画面が表示され、より多くのwebhook設定を求めます。

incoming webhookの名前を指定してください。あなたのメッセージはこの名前で送信されますので、意味のある名前を選びます例如”Python Messenger”。カスタム画像をアップロードすることもできますが、これはオプションです。最後に”Create”をクリックします。webhook URLが表示されます!

このwebhook URLをPythonプログラムに追加するために、クリップボードにコピーして、後で使用するために何らかの場所(例えばノートアプリ)に保存してください。最後に「完了」をクリックします。表示される概览画面で、選択したチャンネルにあるすべてのコネクタの概览が表示されます。

この画面は閉じてください。刚刚に設定した入力webhookに対応するメッセージが表示されるはずです。

これで完了です!現在、您的Microsoft Teamsチャンネルはwebhookを通じてメッセージを受信する準備が整いました。

2. Pythonでビジネスロジックを記述する

これまでに成功に導きました!Teamsの入力webhookが設定されたので、素晴らしいときが来ました。Pythonを書いてみましょう。まず、今回の課題を解決するためのPythonコードを書いてみましょう。

Pythonコードを書く方法を再び学ぶ必要がある場合、私たちのPythonの入門コースは始めるのに最適な場所です。

以下の2つの方法のいずれかを選択できます。既存の空のワークブックを scratchから作成するこれは、既にPythonプログラムを自動化し、Microsoft Teamsと統合する必要がある場合に便利です。

概念を学ぶために来た場合、指定可能な都市の天気予報をまとめるSample Workbookを始めることができます。一日に一度、新しいデータが更新されます。これは日々のレポートの素晴らしい候補です。下の「Run Code」ボタンをクリックして、このワークブックを作成してください。

このチュートリアルのコードをオンラインで実行して編集する

Run code

どちらの場合も、ビジネスロジックを全て書かれたDataLabワークブックができあがるはずです:

3. Teamsへのメッセージの送信

では、TeamsのWebhookは確認済み、ビジネスロジックも確認済みです。PythonノートブックをMicrosoft Teamsと統合するためには、2つのことを行う必要があります:DataLabワークブックにWebhook URLを格納し、Teamsチャンネルにメッセージを送信するPythonコードを書く。

Webhook URLの格納

私たちのPythonノートブックは、正しいTeamsチャンネルにメッセージを送信するためにWebhook URLが必要です。このURLをノートブックのコードセルにコピー&ペーストすることができます。しかし、これは安全ではなく、推奨されません。Webhook URLはある種の秘密です。他の人とノートブックを共有すると、彼らはWebhook URLを見て、Teamsチャンネルにスパムを送信できます!

このアプローチでは、Teamsメッセージを送信したいすべてのワークブックにこのコピー&ペーストを繰り返す必要があります。何か理由でWebhook URLを更新する必要があると、すべてのワークブックを開きながら編集する必要があります。

より安全で拡張性のあるアプローチは、環境変数と呼ばれるものにWebhook URLトークンを格納する方法です。この環境変数に接続すると、Pythonセッションで利用可能になります。ワークブック内では以下のようにします:

  • 左側の“Environment”(環境)タブをクリックする
  • “Environment Variables”(環境変数)の横のプラスアイコンをクリックする
  • 環境変数の追加 modal 内で以下を行います。
    • “名前”欄に 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 を読み込んでおり、今度は Teams にメッセージを送信する Python コードを書くことができます!これには、Teams にメッセージを送信する.pretty Intricate API の便利なラッパーを提供する开源の pymsteams パッケージ を使用します。これをインストールして import し、環境変数を読み取るための 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に送信し、詳細に興味がある人のために完全なノートブックへのリンクを含めるPythonスクリプトを作成しました。素晴らしい!さて、このノートブックを毎日または毎週自動的に実行して、常に新鮮な結果で更新されるようにできるとしたらどうでしょうか。良いニュースです、それができるのです!DataLabはこれを可能にするスケジュール実行機能を提供しています。

  • 上部のメニューバーで、実行 > スケジュール実行をクリックします。
  • スケジュールを設定します:
    • ノートブックを毎日または毎週自動的に実行するように設定します。毎週のスケジュールの場合、具体的な日付と時間を選択します。
    • データキャンプのユーザーを追加して、ノートブックが完了(成功または失敗)するたびに通知を受け取りたい人を指定します。これは失敗時に特に役立ちます。問題が発生したときに迅速に診断して修正することができます。

上記のスクリーンショットのように設定すると、ノートブックは毎日の当地时间の9:30に実行され、これは、指定したTeamsチャンネルに毎朝メッセージが投稿されることを意味します。

自動化するかどうか

すべてのタスクが自動化の適した対象ではありません。どの程度頻繁に行うか、手動で行うのにどのくらい時間がかかるか、そしてPythonスクリプトを作成して自動化するのにかかる時間にもよります。たとえば、一年に一度の報告書を手動で作成するのに20分かかるとします。それには半天をかけてスクリプトを書くことになるので、自動化に投資した時間を回収するまでには数年がかかります。

以下がテーブル形式でのまとめです:

ですから、1日に5分かかるタスクを自動化するために、最大6日間をかけて試みることができます。それ以下の時間で自動化することができれば、5年間で時間を節約できます。

結論

データラボでMicrosoft Teamsにメッセージを送信するための設定を行うときは、最初に複数の画面を操作する必要があります。しかし、DataLabでwebhook URLを設定した後は、メッセージを送信するためには数行のPythonコードを追加するだけで、非常に簡単です。最高の部分は?ほぼすべてのPythonスクリプトを自動化して、ステークホルダーが存在する場所、すなわちTeamsに直接通知することができることです。

過去、繰り返し、退屈な仕事にて Reminder を設定する日々は、終わりを告げました。DataLab を受け入れることで、効率的で、ツール間で切り替える必要のない自動化された workflow の時代への挨拶をしましょう。

记忆に留めてください、Python コードの書き方についてのメンバーの更新を求めるなら、私たちの Python 入門 コースは理想的な出发点です。

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