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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Msg Type
Text
Interactive
+ Interactive Title
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 015f35a8..3a36de66 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -147,6 +147,7 @@
消息类型
纯文本
消息卡片
+ 标题模板
企业ID
应用AgentId
应用Secret