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 a4526196..79510b9f 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java @@ -1637,12 +1637,28 @@ 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); + final EditText editTextFeishuTitle = view1.findViewById(R.id.editTextFeishuTitle); + final LinearLayout layoutTitleTemplate = view1.findViewById(R.id.layoutTitleTemplate); + if (feiShuSettingVo != null) { editTextFeishuWebhook.setText(feiShuSettingVo.getWebhook()); editTextFeishuSecret.setText(feiShuSettingVo.getSecret()); radioGroupFeishuMsgType.check(feiShuSettingVo.getMsgTypeCheckId()); + editTextFeishuTitle.setText(feiShuSettingVo.getTitleTemplate()); + if ("text".equals(feiShuSettingVo.getMsgType())) { + layoutTitleTemplate.setVisibility(View.GONE); + } else { + layoutTitleTemplate.setVisibility(View.VISIBLE); + } } + radioGroupFeishuMsgType.setOnCheckedChangeListener((group, checkedId) -> { + if (group != null && checkedId > 0) { + layoutTitleTemplate.setVisibility(checkedId == R.id.radioFeishuMsgTypeText ? View.GONE : View.VISIBLE); + group.check(checkedId); + } + }); + Button buttonOk = view1.findViewById(R.id.buttonOk); Button buttonDel = view1.findViewById(R.id.buttonDel); Button buttonTest = view1.findViewById(R.id.buttonTest); @@ -1663,12 +1679,15 @@ 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"; + String titleTemplate = editTextFeishuTitle.getText().toString().trim(); if (!CommonUtil.checkUrl(webHook, false)) { ToastUtils.delayedShow(R.string.invalid_webhook, 3000); return; } - FeiShuSettingVo feiShuSettingVoNew = new FeiShuSettingVo(webHook, secret, msgType); + if (TextUtils.isEmpty(titleTemplate)) titleTemplate = "【{{设备名称}}】来自{{来源号码}}的通知"; + + FeiShuSettingVo feiShuSettingVoNew = new FeiShuSettingVo(webHook, secret, msgType, titleTemplate); if (isClone || senderModel == null) { SenderModel newSenderModel = new SenderModel(); newSenderModel.setName(senderName); @@ -1703,6 +1722,7 @@ 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"; + String titleTemplate = editTextFeishuTitle.getText().toString().trim(); if (!CommonUtil.checkUrl(webHook, false)) { ToastUtils.delayedShow(R.string.invalid_webhook, 3000); return; @@ -1710,12 +1730,40 @@ 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, msgType, smsVo.getMobile(), new Date(), smsVo.getSmsVoForSend()); + SenderFeishuMsg.sendMsg(0, handler, null, webHook, secret, msgType, smsVo.getMobile(), new Date(), smsVo.getTitleForSend(titleTemplate), smsVo.getSmsVoForSend()); } catch (Exception e) { ToastUtils.delayedShow(getString(R.string.failed_to_fwd) + e.getMessage(), 3000); e.printStackTrace(); } }); + + Button buttonInsertSender = view1.findViewById(R.id.bt_insert_sender); + buttonInsertSender.setOnClickListener(view -> { + editTextFeishuTitle.setFocusable(true); + editTextFeishuTitle.requestFocus(); + CommonUtil.insertOrReplaceText2Cursor(editTextFeishuTitle, getString(R.string.tag_from)); + }); + + Button buttonInsertExtra = view1.findViewById(R.id.bt_insert_extra); + buttonInsertExtra.setOnClickListener(view -> { + editTextFeishuTitle.setFocusable(true); + editTextFeishuTitle.requestFocus(); + CommonUtil.insertOrReplaceText2Cursor(editTextFeishuTitle, getString(R.string.tag_card_slot)); + }); + + Button buttonInsertTime = view1.findViewById(R.id.bt_insert_time); + buttonInsertTime.setOnClickListener(view -> { + editTextFeishuTitle.setFocusable(true); + editTextFeishuTitle.requestFocus(); + CommonUtil.insertOrReplaceText2Cursor(editTextFeishuTitle, getString(R.string.tag_receive_time)); + }); + + Button buttonInsertDeviceName = view1.findViewById(R.id.bt_insert_device_name); + buttonInsertDeviceName.setOnClickListener(view -> { + editTextFeishuTitle.setFocusable(true); + editTextFeishuTitle.requestFocus(); + CommonUtil.insertOrReplaceText2Cursor(editTextFeishuTitle, getString(R.string.tag_device_name)); + }); } //推送加 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 d6ed2130..bf532d5b 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 @@ -11,14 +11,16 @@ public class FeiShuSettingVo implements Serializable { private String webhook; private String secret; private String msgType; + private String titleTemplate; public FeiShuSettingVo() { } - public FeiShuSettingVo(String webhook, String secret, String msgType) { + public FeiShuSettingVo(String webhook, String secret, String msgType, String titleTemplate) { this.webhook = webhook; this.secret = secret; this.msgType = msgType; + this.titleTemplate = titleTemplate; } public int getMsgTypeCheckId() { 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 5c2dc3d5..d39310b2 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(), feiShuSettingVo.getMsgType(), smsVo.getMobile(), smsVo.getDate(), smsVo.getSmsVoForSend(smsTemplate, regexReplace)); + SenderFeishuMsg.sendMsg(logId, handError, retryInterceptor, feiShuSettingVo.getWebhook(), feiShuSettingVo.getSecret(), feiShuSettingVo.getMsgType(), smsVo.getMobile(), smsVo.getDate(), smsVo.getTitleForSend(feiShuSettingVo.getTitleTemplate()), 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 51228107..8eed073c 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 @@ -9,7 +9,6 @@ import androidx.annotation.NonNull; import com.alibaba.fastjson.JSON; import com.idormy.sms.forwarder.utils.Define; import com.idormy.sms.forwarder.utils.LogUtil; -import com.idormy.sms.forwarder.utils.SettingUtil; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -90,7 +89,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 msgType, 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 title, String content) throws Exception { Log.i(TAG, "sendMsg webhook:" + webhook + " secret:" + secret + " content:" + content); if (webhook == null || webhook.isEmpty()) { @@ -128,7 +127,7 @@ public class SenderFeishuMsg extends SenderBaseMsg { } Log.i(TAG, "requestUrl:" + webhook); - final String requestMsg = JSON.toJSONString(textMsgMap).replace("\"${CARD_BODY}\"", buildMsg(from, date, content)); + final String requestMsg = JSON.toJSONString(textMsgMap).replace("\"${CARD_BODY}\"", buildMsg(from, date, title, content)); Log.i(TAG, "requestMsg:" + requestMsg); OkHttpClient.Builder builder = new OkHttpClient.Builder(); @@ -173,8 +172,9 @@ public class SenderFeishuMsg extends SenderBaseMsg { } - private static String buildMsg(String from, Date date, String content) { - String msgTitle = jsonInnerStr("【" + SettingUtil.getAddExtraDeviceMark().trim() + "】来自" + from + "的通知"); + private static String buildMsg(String from, Date date, String title, String content) { + //if (TextUtils.isEmpty(title)) title = "【" + SettingUtil.getAddExtraDeviceMark().trim() + "】来自" + from + "的通知"; + String msgTitle = jsonInnerStr(title); String msgTime = jsonInnerStr(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(date)); String msgFrom = jsonInnerStr(from); String msgContent = jsonInnerStr(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 d6facd9b..dbe6c775 100644 --- a/app/src/main/res/layout/alert_dialog_setview_feishu.xml +++ b/app/src/main/res/layout/alert_dialog_setview_feishu.xml @@ -129,6 +129,122 @@ + + + + + + + + + + + + + +