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