ESP32でSlackにメッセージを送信するには?

ESP32

ESP32やM5シリーズからSlackへメッセージを送信する方法を紹介します。

サンプルコードも掲載していますので、コピペで実現できますよ~

スポンサーリンク

Slackにメッセージを送信するには?

SlackにESP32からメッセージを送信するには、SlackのIncoming Webhook APIを作成しておく必要があります。

Webhook APIの作成手順については次の記事の中で紹介していますので、あらかじめ作成しておきましょう。

APIを作成すると、専用のURLが作成されます。作成されたURLに対し、メッセージ本文を含めたJSONをPOSTすると、任意のSlackチャンネルにメッセージを送信することができます。

スポンサーリンク

サンプルコード

APIを作成したら、さっそくソースコードを作成していきましょう。

ESP32からJSONを送信するには、ArduinoJsonとHttpClientを使用していきます。

もちろんHttpClientだけで送信することもできますが、ここでは将来的な拡張も容易に行えるようにJSONをオブジェクト的で扱えるArduinoJsonも組み合わせてみたいと思います。

main.cppの先頭で使用するライブラリのヘッダファイルをインクルードします。

#include <ArduinoJson.h>
#include <HTTPClient.h>

メッセージを送信する部分はこのようになります。

#include <ArduinoJson.h>
#include <HTTPClient.h>
 
///
/// Slackにメッセージを送信する
///

void SendSlackMessage(){
    // JSONを作成する
    StaticJsonDocument<JSON_OBJECT_SIZE(1)> json_array;
    char json_string[255];
    // 送信したいメッセージを指定する
    json_array["text"] = "こんにちは";
    // JSONフォーマットの文字列に変換する
    serializeJson(json_array, json_string, sizeof(json_string));
    // POSTするURLを指定する
    httpClient.begin("ここにWebhook URLを指定する");
    // postするのはjsonなので、Content-Typeをapplication/jsonにする
    httpClient.addHeader("Content-Type", "application/json");
    // POSTしてステータスコードを取得する
    int status_code = httpClient.POST((uint8_t *)json_string, strlen(json_string));
    if (status_code == 200)
    {
    Serial.printf("[POST]Send to server (URL:%s)", postUrl);
    }
    else
    {
    Serial.printf("[POST]failed to send to server (URL:%s)", postUrl);
    }
    // HTTPClinetを終了する
    httpClient.end();
}

SendSlackMessageという名前の関数にしてみました。あとはこの関数を呼び出せば、Slackにメッセージを送信することができます。

まとめ

ESP32からSlackにメッセージを送信するサンプルを紹介しました。

なお、ESP32から単に通知を送りたいケースでは、LINE Notifyのほうが簡単です。あわせて確認しておくことをおすすめします。

コメント

タイトルとURLをコピーしました