今日は、Java プロジェクトで Feishu のカスタム ロボット Webhook を使用して、Feishu グループにアラーム通知をプッシュする方法を見てみましょう。
1. 機能シナリオ
企業には、監視アラームのプッシュ、営業リードのプッシュ、操作コンテンツのプッシュなど、特定のグループにメッセージを自動的にプッシュする必要があります。
グループ チャットにグループ チャットを追加し自定义机器人
、サーバー上のアドレスを呼び出すと webhook
、外部システムからグループ チャットに通知メッセージを即座にプッシュできます。また、カスタム キーワード、IP ホワイトリスト、 呼び出し範囲を制御するための署名といった3 つの次元でのセキュリティ構成も 提供します。webhook
知らせ :
- カスタム ロボットの Webhook アドレスを呼び出してメッセージ プッシュ機能を実装するには、サーバー側の開発に一定の基礎が必要です。
- カスタム ロボットはグループに追加した後に使用できるため、テナント管理者によるレビューは必要ありません。これにより、ロボット開発の利便性が向上しますが、テナント データのセキュリティ上の考慮事項により、カスタム ロボットの使用シナリオも制限されます。カスタム ボットにはデータへのアクセスがありません。
2. 運用プロセス
ステップ 1: カスタム ロボットをグループに招待する
ターゲット グループを入力し、会話設定を開き、グループ ロボットを見つけて、[ロボットの追加]をクリックし、グループ チャットに参加するカスタム ロボットを選択します。
ロボットの適切な名前と説明を入力し、ロボットに適切なアバターを設定することもでき、[次へ] をクリックします。
ステップ 2: Webhook を構成する
ロボットの Webhook アドレスは次の形式で取得されます。
https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxx
ステップ 3: Webhook を呼び出してメッセージを送信する
任意の方法を使用して Webhook への HTTP POST リクエストを開始し、カスタム ロボットが配置されているグループ チャットにメッセージを送信します。
注:
サーバー側のリクエストを通じて Webhook アドレスを呼び出すには、サーバー側の開発に特定の基盤が必要です。
curl 命令を例にとると、リクエストの例は次のとおりです。
curl -X POST -H "Content-Type: application/json" \
-d '{"msg_type":"text","content":{"text":"request example"}}' \
https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxx
上記の手順を macOS システムの「ターミナル」アプリケーション (または Windows システムの「コンソール」アプリケーション) にコピーしてテストできます。
上記のコードの https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxx を実際の Webhook のアドレスに置き換えてください。テストでエラーが発生した場合は、まずコピーした命令がテスト命令と同じ構造になっているかどうかを確認してください。
リクエストが成功した場合、返される本文は次のようになります。
{
"Extra": null,
"StatusCode": 0,
"StatusMessage": "success"
}
リクエストボディの形式が正しくない場合、リターンボディは以下のようになります。お会計お願いします:
- リクエストボディの内容形式が各メッセージタイプのサンプルコードと一致しているか
- リクエスト本文のサイズは 20k を超えることはできません
{
"code": 9499,
"msg": "Bad Request",
"data": {}
}
3. Javaコードの記述
グループが構成され、Webhook 値が取得された後、Java コードでメッセージ プッシュを呼び出すことができます。
以下のコードを貼り付けてください
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
public class SendMessage {
//这里就是刚才拿到的Webhook的值
public static final String WebHookUrl =
"https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxx";
public static void sendMessage(String msg){
//请求的JSON数据,这里用map在工具类里转成json格式
Map<String,Object> json=new HashMap();
Map<String,Object> text=new HashMap();
json.put("msg_type", "text");
text.put("text", "项目告警通知:" + msg);
json.put("content", text);
//发送post请求
String result = HttpRequest.post(WebHookUrl).body(JSON.toJSONString(json), "application/json;charset=UTF-8").execute().body();
System.out.println(result);
}
}
テストケース:
@SpringBootTest
public class SendMsgTests {
@Test
public void sendTest() throws IOException {
SendMessage.sendMessage("123");
}
}
[実行] をクリックすると、作成した Feishu グループがプッシュしたテスト メッセージを受信したことがわかります。
参考:開発ドキュメント - Feishu Open Platform
参考: DingTalk ロボット Webhook を使用して Java プロジェクトでアラーム通知を DingTalk グループにプッシュする_メロンの種を食べる猫のブログ-CSDN ブログ_java webhook