This is an automated email from the ASF dual-hosted git repository.
gongchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git
The following commit(s) were added to refs/heads/master by this push:
new b473de40e [feature] add at function for wechat (#1994)
b473de40e is described below
commit b473de40e0cc5ac7eda6cf11eb2345324ea5ae2d
Author: linDong <[email protected]>
AuthorDate: Fri May 17 23:42:19 2024 +0800
[feature] add at function for wechat (#1994)
Signed-off-by: linDong <[email protected]>
Co-authored-by: tomsun28 <[email protected]>
---
.../impl/WeWorkRobotAlertNotifyHandlerImpl.java | 63 ++++++++++++++++++++++
.../alert/alert-notice/alert-notice.component.html | 12 +++++
web-app/src/assets/i18n/en-US.json | 1 +
web-app/src/assets/i18n/zh-CN.json | 1 +
web-app/src/assets/i18n/zh-TW.json | 1 +
5 files changed, 78 insertions(+)
diff --git
a/manager/src/main/java/org/apache/hertzbeat/manager/component/alerter/impl/WeWorkRobotAlertNotifyHandlerImpl.java
b/manager/src/main/java/org/apache/hertzbeat/manager/component/alerter/impl/WeWorkRobotAlertNotifyHandlerImpl.java
index 3fab4e420..29457c51b 100644
---
a/manager/src/main/java/org/apache/hertzbeat/manager/component/alerter/impl/WeWorkRobotAlertNotifyHandlerImpl.java
+++
b/manager/src/main/java/org/apache/hertzbeat/manager/component/alerter/impl/WeWorkRobotAlertNotifyHandlerImpl.java
@@ -17,12 +17,18 @@
package org.apache.hertzbeat.manager.component.alerter.impl;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
import org.apache.hertzbeat.common.entity.alerter.Alert;
import org.apache.hertzbeat.common.entity.manager.NoticeReceiver;
import org.apache.hertzbeat.common.entity.manager.NoticeTemplate;
@@ -58,6 +64,12 @@ final class WeWorkRobotAlertNotifyHandlerImpl extends
AbstractAlertNotifyHandler
assert entity.getBody() != null;
if (entity.getBody().getErrCode() == 0) {
log.debug("Send WeWork webHook: {} Success", webHookUrl);
+ WeWorkWebHookDto weWorkWebHookTextDto =
checkNeedAtNominator(receiver, alert);
+ if (!Objects.isNull(weWorkWebHookTextDto)) {
+ HttpEntity<WeWorkWebHookDto> httpEntityText = new
HttpEntity<>(weWorkWebHookTextDto, headers);
+ restTemplate.postForEntity(webHookUrl, httpEntityText,
CommonRobotNotifyResp.class);
+ }
+
} else {
log.warn("Send WeWork webHook: {} Failed: {}", webHookUrl,
entity.getBody().getErrMsg());
throw new
AlertNoticeException(entity.getBody().getErrMsg());
@@ -71,6 +83,33 @@ final class WeWorkRobotAlertNotifyHandlerImpl extends
AbstractAlertNotifyHandler
}
}
+ private WeWorkWebHookDto checkNeedAtNominator(NoticeReceiver receiver,
Alert alert) {
+ if (StringUtils.isBlank(receiver.getPhone()) &&
StringUtils.isBlank(receiver.getTgUserId())) {
+ return null;
+ }
+ WeWorkWebHookDto weWorkWebHookTextDto = new WeWorkWebHookDto();
+ weWorkWebHookTextDto.setMsgtype(WeWorkWebHookDto.TEXT);
+ WeWorkWebHookDto.TextDTO textDto = new WeWorkWebHookDto.TextDTO();
+ if (StringUtils.isNotBlank(receiver.getPhone())) {
+
textDto.setMentionedMobileList(analysisArgToList(receiver.getPhone()));
+ weWorkWebHookTextDto.setText(textDto);
+ }
+ if (StringUtils.isNotBlank(receiver.getTgUserId())) {
+
textDto.setMentionedList(analysisArgToList(receiver.getTgUserId()));
+ weWorkWebHookTextDto.setText(textDto);
+ }
+ return weWorkWebHookTextDto;
+
+ }
+
+ private List<String> analysisArgToList(String arg) {
+ if (StringUtils.isBlank(arg)) {
+ return Collections.emptyList();
+ }
+ //english symbol
+ return Arrays.asList(arg.split("\\s*,\\s*"));
+ }
+
@Override
public byte type() {
return 4;
@@ -105,6 +144,11 @@ final class WeWorkRobotAlertNotifyHandlerImpl extends
AbstractAlertNotifyHandler
*/
private MarkdownDTO markdown;
+ /**
+ * text message
+ */
+ private TextDTO text;
+
@Data
private static class MarkdownDTO {
@@ -114,5 +158,24 @@ final class WeWorkRobotAlertNotifyHandlerImpl extends
AbstractAlertNotifyHandler
private String content;
}
+ @Data
+ private static class TextDTO {
+
+ /**
+ * message content
+ */
+ private String content;
+ /**
+ * @ userId
+ */
+ @JsonProperty(value = "mentioned_list")
+ private List<String> mentionedList;
+ /**
+ * @ phone
+ */
+ @JsonProperty(value = "mentioned_mobile_list")
+ private List<String> mentionedMobileList;
+ }
+
}
}
diff --git
a/web-app/src/app/routes/alert/alert-notice/alert-notice.component.html
b/web-app/src/app/routes/alert/alert-notice/alert-notice.component.html
index 023b329ac..af6b5b62b 100644
--- a/web-app/src/app/routes/alert/alert-notice/alert-notice.component.html
+++ b/web-app/src/app/routes/alert/alert-notice/alert-notice.component.html
@@ -584,6 +584,18 @@
/>
</nz-form-control>
</nz-form-item>
+ <nz-form-item *ngIf="receiver.type === 4">
+ <nz-form-label [nzSpan]="7" nzFor="phone">{{ 'alert.notice.type.phone'
| i18n }}</nz-form-label>
+ <nz-form-control [nzErrorTip]="'validation.phone.invalid' | i18n"
[nzSpan]="12">
+ <input [(ngModel)]="receiver.phone" [required]="receiver.type === 4"
id="WePhone" name="phone" nz-input type="tel" />
+ </nz-form-control>
+ </nz-form-item>
+ <nz-form-item *ngIf="receiver.type === 4">
+ <nz-form-label [nzSpan]="7" nzFor="tgUserId">{{
'alert.notice.type.wework-userId' | i18n }}</nz-form-label>
+ <nz-form-control [nzErrorTip]="'validation.required' | i18n"
[nzSpan]="12">
+ <input [(ngModel)]="receiver.tgUserId" [required]="receiver.type ===
4" name="tgUserId" nz-input type="text" />
+ </nz-form-control>
+ </nz-form-item>
<nz-form-item *ngIf="receiver.type === 5">
<nz-form-label [nzSpan]="7" nzFor="accessToken"
[nzRequired]="receiver.type === 5">{{
'alert.notice.type.access-token' | i18n
diff --git a/web-app/src/assets/i18n/en-US.json
b/web-app/src/assets/i18n/en-US.json
index e744c1ef5..5f163c977 100644
--- a/web-app/src/assets/i18n/en-US.json
+++ b/web-app/src/assets/i18n/en-US.json
@@ -271,6 +271,7 @@
"alert.notice.type.wechat-id": "WeChat OPENID",
"alert.notice.type.wework": "WeWork Robot",
"alert.notice.type.wework-key": "WeWork Robot KEY",
+ "alert.notice.type.wework-userId": "UserId",
"alert.notice.type.access-token": "Robot ACCESS_TOKEN",
"alert.notice.type.ding": "DingDing Robot",
"alert.notice.type.fei-shu": "FeiShu Robot",
diff --git a/web-app/src/assets/i18n/zh-CN.json
b/web-app/src/assets/i18n/zh-CN.json
index 4ae1609ce..ca316a709 100644
--- a/web-app/src/assets/i18n/zh-CN.json
+++ b/web-app/src/assets/i18n/zh-CN.json
@@ -271,6 +271,7 @@
"alert.notice.type.wechat-id": "微信OPENID",
"alert.notice.type.wework": "企业微信机器人",
"alert.notice.type.wework-key": "企业微信机器人KEY",
+ "alert.notice.type.wework-userId": "用户id",
"alert.notice.type.access-token": "机器人ACCESS_TOKEN",
"alert.notice.type.ding": "钉钉机器人",
"alert.notice.type.fei-shu": "飞书机器人",
diff --git a/web-app/src/assets/i18n/zh-TW.json
b/web-app/src/assets/i18n/zh-TW.json
index 59b8a9726..80661e48a 100644
--- a/web-app/src/assets/i18n/zh-TW.json
+++ b/web-app/src/assets/i18n/zh-TW.json
@@ -270,6 +270,7 @@
"alert.notice.type.wechat-id": "微信OPENID",
"alert.notice.type.wework": "企業微信機器人",
"alert.notice.type.wework-key": "企業微信機器人KEY",
+ "alert.notice.type.wework-userId": "用户id",
"alert.notice.type.access-token": "機器人ACCESS_TOKEN",
"alert.notice.type.ding": "釘釘機器人",
"alert.notice.type.fei-shu": "飛書機器人",
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]