LINE Notifyの代替に!Discordで簡単プログラム終了通知【Webhook活用】
はじめに
2024年末,LINE Notifyのサービス終了が発表されました.
長い時間計算処理させる場合に終了通知やエラー発生の通知があると便利で,重宝していたのでサービス終了には困っていました...
どうにかできないかなと,色々調べたところDiscordのWebhookをLINE Notifyの代わりに使うことができそうだったので,それらを試した結果を記事としてまとめました.
この記事ではMATLABを使用していますが,Pythonなど他の言語にも応用できると思います.(余力があればPython版も追加します)
準備:DiscordのWebhook URLを取得する
- Discordをダウンロードして使える状態にする
- Discordで通知を送りたい「チャンネル」に移動
- チャンネル名,横の
⚙️ 歯車マーク
「チャンネル設定」をクリック - 「連携サービス」→「Webhookを作成」
- Webhookの名前を設定し「Webhook URLをコピー」
WebhookのURLを使ってMATLABなどから通知を送信できます.
MATLABからDiscordにテスト通知を送るコード
以下がMATLABのコード例です.
webhook_url = '準備5でコピーしたURL';
% ==== 通知メッセージ ====
msg = struct('content', 'MATLABからの通知テストです!');
% ==== HTTP Body(JSON形式) ====
body = matlab.net.http.MessageBody;
body.Data = msg; % ここでは構造体のままでOK(自動でJSON化される)
% ==== ヘッダー ====
headers = matlab.net.http.HeaderField('Content-Type', 'application/json');
% ==== POSTリクエスト作成 ====
request = matlab.net.http.RequestMessage('POST', headers, body);
% ==== リクエスト送信 ====
response = request.send(webhook_url);
% ==== 結果表示 ====
disp("ステータスコード:");
disp(response.StatusCode);
disp("レスポンス:");
disp(response.Body.Data);
MATLABからDiscordにループ処理の完了通知とエラーつうちを送るコード
ループ処理に組み込みたい場合は以下を参考に,適宜変更して使用してください.
clc;
clear;
close all;
webhook_url = ''; % ここにあなたのWebhook URLを記入
% ==== 通知送信用関数(メッセージだけ渡す) ====
function sendDiscordNotify(message, webhook_url)
msg = struct('content', message);
body = matlab.net.http.MessageBody;
body.Data = msg;
headers = matlab.net.http.HeaderField('Content-Type', 'application/json');
request = matlab.net.http.RequestMessage('POST', headers, body);
response = request.send(webhook_url);
disp("通知ステータス: " + string(response.StatusCode));
end
% ==== メイン処理 ====
try
% 処理ループ(例: 1~5まで繰り返す)
for i = 1:5
disp("処理中: " + i);
% i == 3でエラーを意図的に発生させる
if i == 3
error("処理中にエラーが発生しました: i = %d", i);
end
pause(1);
end
% ==== 正常に完了したときの通知 ====
sendDiscordNotify("MATLABの処理が正常に完了しました!", webhook_url);
catch ME
% ==== エラーが発生したときの通知 ====
errMsg = sprintf("エラー発生: %s", ME.message);
sendDiscordNotify(errMsg, webhook_url);
end
何かのお役に立てばうれしいです.
間違いやわからないことありましたら,ご連絡ください!