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のほうが簡単です。あわせて確認しておくことをおすすめします。
コメント