From 8d905480490e53bf0c63aa53f99f6e1bcfbad93a Mon Sep 17 00:00:00 2001
From: pppscn <35696959@qq.com>
Date: Tue, 22 Feb 2022 11:04:40 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E9=A3=9E=E4=B9=A6?=
=?UTF-8?q?=E5=8F=91=E9=80=81=E9=80=9A=E9=81=93=E5=85=81=E8=AE=B8=E9=80=89?=
=?UTF-8?q?=E6=8B=A9=E6=B6=88=E6=81=AF=E7=B1=BB=E5=9E=8B=EF=BC=88=E7=BA=AF?=
=?UTF-8?q?=E6=96=87=E6=9C=AC/=E6=B6=88=E6=81=AF=E5=8D=A1=E7=89=87?=
=?UTF-8?q?=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../idormy/sms/forwarder/SenderActivity.java | 8 +++-
.../forwarder/model/vo/FeiShuSettingVo.java | 14 ++++++-
.../idormy/sms/forwarder/sender/SendUtil.java | 2 +-
.../sms/forwarder/sender/SenderFeishuMsg.java | 13 +++++--
.../layout/alert_dialog_setview_feishu.xml | 39 +++++++++++++++++++
app/src/main/res/values-en/strings.xml | 3 ++
app/src/main/res/values/strings.xml | 3 ++
7 files changed, 75 insertions(+), 7 deletions(-)
diff --git a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java
index 4fe465c1..a4526196 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java
@@ -1636,9 +1636,11 @@ public class SenderActivity extends AppCompatActivity {
final EditText editTextFeishuWebhook = view1.findViewById(R.id.editTextFeishuWebhook);
final ClearEditText editTextFeishuSecret = view1.findViewById(R.id.editTextFeishuSecret);
+ final RadioGroup radioGroupFeishuMsgType = view1.findViewById(R.id.radioGroupFeishuMsgType);
if (feiShuSettingVo != null) {
editTextFeishuWebhook.setText(feiShuSettingVo.getWebhook());
editTextFeishuSecret.setText(feiShuSettingVo.getSecret());
+ radioGroupFeishuMsgType.check(feiShuSettingVo.getMsgTypeCheckId());
}
Button buttonOk = view1.findViewById(R.id.buttonOk);
@@ -1660,12 +1662,13 @@ public class SenderActivity extends AppCompatActivity {
String webHook = editTextFeishuWebhook.getText().toString().trim();
String secret = editTextFeishuSecret.getText().trim();
+ String msgType = radioGroupFeishuMsgType.getCheckedRadioButtonId() == R.id.radioFeishuMsgTypeText ? "text" : "interactive";
if (!CommonUtil.checkUrl(webHook, false)) {
ToastUtils.delayedShow(R.string.invalid_webhook, 3000);
return;
}
- FeiShuSettingVo feiShuSettingVoNew = new FeiShuSettingVo(webHook, secret);
+ FeiShuSettingVo feiShuSettingVoNew = new FeiShuSettingVo(webHook, secret, msgType);
if (isClone || senderModel == null) {
SenderModel newSenderModel = new SenderModel();
newSenderModel.setName(senderName);
@@ -1699,6 +1702,7 @@ public class SenderActivity extends AppCompatActivity {
buttonTest.setOnClickListener(view -> {
String webHook = editTextFeishuWebhook.getText().toString().trim();
String secret = editTextFeishuSecret.getText().trim();
+ String msgType = radioGroupFeishuMsgType.getCheckedRadioButtonId() == R.id.radioFeishuMsgTypeText ? "text" : "interactive";
if (!CommonUtil.checkUrl(webHook, false)) {
ToastUtils.delayedShow(R.string.invalid_webhook, 3000);
return;
@@ -1706,7 +1710,7 @@ public class SenderActivity extends AppCompatActivity {
try {
SmsVo smsVo = new SmsVo(getString(R.string.test_phone_num), getString(R.string.test_sender_sms), new Date(), getString(R.string.test_sim_info));
- SenderFeishuMsg.sendMsg(0, handler, null, webHook, secret, smsVo.getMobile(), new Date(), smsVo.getSmsVoForSend());
+ SenderFeishuMsg.sendMsg(0, handler, null, webHook, secret, msgType, smsVo.getMobile(), new Date(), smsVo.getSmsVoForSend());
} catch (Exception e) {
ToastUtils.delayedShow(getString(R.string.failed_to_fwd) + e.getMessage(), 3000);
e.printStackTrace();
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/FeiShuSettingVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/FeiShuSettingVo.java
index 4ce58e87..d6ed2130 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/FeiShuSettingVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/FeiShuSettingVo.java
@@ -1,5 +1,7 @@
package com.idormy.sms.forwarder.model.vo;
+import com.idormy.sms.forwarder.R;
+
import java.io.Serializable;
import lombok.Data;
@@ -8,12 +10,22 @@ import lombok.Data;
public class FeiShuSettingVo implements Serializable {
private String webhook;
private String secret;
+ private String msgType;
public FeiShuSettingVo() {
}
- public FeiShuSettingVo(String webhook, String secret) {
+ public FeiShuSettingVo(String webhook, String secret, String msgType) {
this.webhook = webhook;
this.secret = secret;
+ this.msgType = msgType;
+ }
+
+ public int getMsgTypeCheckId() {
+ if (msgType == null || msgType.equals("interactive")) {
+ return R.id.radioFeishuMsgTypeInteractive;
+ } else {
+ return R.id.radioFeishuMsgTypeText;
+ }
}
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java
index 94938d09..5c2dc3d5 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java
@@ -346,7 +346,7 @@ public class SendUtil {
FeiShuSettingVo feiShuSettingVo = JSON.parseObject(senderModel.getJsonSetting(), FeiShuSettingVo.class);
if (feiShuSettingVo != null) {
try {
- SenderFeishuMsg.sendMsg(logId, handError, retryInterceptor, feiShuSettingVo.getWebhook(), feiShuSettingVo.getSecret(), smsVo.getMobile(), smsVo.getDate(), smsVo.getSmsVoForSend(smsTemplate, regexReplace));
+ SenderFeishuMsg.sendMsg(logId, handError, retryInterceptor, feiShuSettingVo.getWebhook(), feiShuSettingVo.getSecret(), feiShuSettingVo.getMsgType(), smsVo.getMobile(), smsVo.getDate(), smsVo.getSmsVoForSend(smsTemplate, regexReplace));
} catch (Exception e) {
LogUtil.updateLog(logId, 0, e.getMessage());
Log.e(TAG, "senderSendMsg: feishu error " + e.getMessage());
diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/SenderFeishuMsg.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderFeishuMsg.java
index 82bc2f5e..51228107 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/sender/SenderFeishuMsg.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderFeishuMsg.java
@@ -90,7 +90,7 @@ public class SenderFeishuMsg extends SenderBaseMsg {
" }\n" +
"}";
- public static void sendMsg(final long logId, final Handler handError, final RetryIntercepter retryInterceptor, String webhook, String secret, String from, Date date, String content) throws Exception {
+ public static void sendMsg(final long logId, final Handler handError, final RetryIntercepter retryInterceptor, String webhook, String secret, String msgType, String from, Date date, String content) throws Exception {
Log.i(TAG, "sendMsg webhook:" + webhook + " secret:" + secret + " content:" + content);
if (webhook == null || webhook.isEmpty()) {
@@ -117,8 +117,15 @@ public class SenderFeishuMsg extends SenderBaseMsg {
}
//组装报文
- textMsgMap.put("msg_type", "interactive");
- textMsgMap.put("card", "${CARD_BODY}");
+ if (msgType == null || msgType.equals("interactive")) {
+ textMsgMap.put("msg_type", "interactive");
+ textMsgMap.put("card", "${CARD_BODY}");
+ } else {
+ textMsgMap.put("msg_type", "text");
+ Map contentMap = new HashMap();
+ contentMap.put("text", content);
+ textMsgMap.put("content", contentMap);
+ }
Log.i(TAG, "requestUrl:" + webhook);
final String requestMsg = JSON.toJSONString(textMsgMap).replace("\"${CARD_BODY}\"", buildMsg(from, date, content));
diff --git a/app/src/main/res/layout/alert_dialog_setview_feishu.xml b/app/src/main/res/layout/alert_dialog_setview_feishu.xml
index f9f761f4..d6facd9b 100644
--- a/app/src/main/res/layout/alert_dialog_setview_feishu.xml
+++ b/app/src/main/res/layout/alert_dialog_setview_feishu.xml
@@ -90,6 +90,45 @@
app:showEye="true" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Email Title
Webhook
Secret (optional)
+ Msg Type
+ Text
+ Interactive
Corp ID
Agent ID
App Secret
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1aa53b4e..015f35a8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -144,6 +144,9 @@
邮件主题
Webhook 地址
加签 Secret (没有可不填)
+ 消息类型
+ 纯文本
+ 消息卡片
企业ID
应用AgentId
应用Secret