mirror of
https://github.com/pppscn/SmsForwarder
synced 2025-08-04 01:47:40 +08:00
新增:钉钉群机器人支持at钉钉号/海外手机号 #312
This commit is contained in:
parent
2b96dca226
commit
652a9c68d7
@ -7,4 +7,5 @@ data class DingtalkGroupRobotSetting(
|
|||||||
var secret: String? = "",
|
var secret: String? = "",
|
||||||
var atAll: Boolean? = false,
|
var atAll: Boolean? = false,
|
||||||
var atMobiles: String? = "",
|
var atMobiles: String? = "",
|
||||||
|
var atDingtalkIds: String? = "",
|
||||||
) : Serializable
|
) : Serializable
|
@ -123,15 +123,9 @@ class DingtalkGroupRobotFragment : BaseFragment<FragmentSendersDingtalkGroupRobo
|
|||||||
if (settingVo != null) {
|
if (settingVo != null) {
|
||||||
binding!!.etToken.setText(settingVo.token)
|
binding!!.etToken.setText(settingVo.token)
|
||||||
binding!!.etSecret.setText(settingVo.secret)
|
binding!!.etSecret.setText(settingVo.secret)
|
||||||
/*if (TextUtils.isEmpty(settingVo.atMobiles)) {
|
|
||||||
binding!!.sbAtAll.isChecked = true
|
|
||||||
binding!!.etAtMobiles.setText("")
|
|
||||||
} else {
|
|
||||||
binding!!.sbAtAll.isChecked = settingVo.atAll == true
|
|
||||||
binding!!.etAtMobiles.setText(settingVo.atMobiles)
|
|
||||||
}*/
|
|
||||||
binding!!.sbAtAll.isChecked = settingVo.atAll == true
|
binding!!.sbAtAll.isChecked = settingVo.atAll == true
|
||||||
binding!!.etAtMobiles.setText(settingVo.atMobiles)
|
binding!!.etAtMobiles.setText(settingVo.atMobiles)
|
||||||
|
binding!!.etAtDingtalkIds.setText(settingVo.atDingtalkIds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -149,9 +143,12 @@ class DingtalkGroupRobotFragment : BaseFragment<FragmentSendersDingtalkGroupRobo
|
|||||||
//这里只有一个监听不需要判断id
|
//这里只有一个监听不需要判断id
|
||||||
if (isChecked) {
|
if (isChecked) {
|
||||||
binding!!.layoutAtMobiles.visibility = View.GONE
|
binding!!.layoutAtMobiles.visibility = View.GONE
|
||||||
|
binding!!.layoutAtDingtalkIds.visibility = View.GONE
|
||||||
binding!!.etAtMobiles.setText("")
|
binding!!.etAtMobiles.setText("")
|
||||||
|
binding!!.etAtDingtalkIds.setText("")
|
||||||
} else {
|
} else {
|
||||||
binding!!.layoutAtMobiles.visibility = View.VISIBLE
|
binding!!.layoutAtMobiles.visibility = View.VISIBLE
|
||||||
|
binding!!.layoutAtDingtalkIds.visibility = View.VISIBLE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,11 +226,9 @@ class DingtalkGroupRobotFragment : BaseFragment<FragmentSendersDingtalkGroupRobo
|
|||||||
val secret = binding!!.etSecret.text.toString().trim()
|
val secret = binding!!.etSecret.text.toString().trim()
|
||||||
val atAll = binding!!.sbAtAll.isChecked
|
val atAll = binding!!.sbAtAll.isChecked
|
||||||
val atMobiles = binding!!.etAtMobiles.text.toString().trim()
|
val atMobiles = binding!!.etAtMobiles.text.toString().trim()
|
||||||
/*if (!atAll && TextUtils.isEmpty(atMobiles)) {
|
val atDingtalkIds = binding!!.etAtDingtalkIds.text.toString().trim()
|
||||||
throw Exception(getString(R.string.invalid_at_mobiles))
|
|
||||||
}*/
|
|
||||||
|
|
||||||
return DingtalkGroupRobotSetting(token, secret, atAll, atMobiles)
|
return DingtalkGroupRobotSetting(token, secret, atAll, atMobiles, atDingtalkIds)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
|
@ -33,7 +33,7 @@ class DingtalkGroupRobotUtils private constructor() {
|
|||||||
logId: Long = 0L,
|
logId: Long = 0L,
|
||||||
msgId: Long = 0L
|
msgId: Long = 0L
|
||||||
) {
|
) {
|
||||||
val content: String = if (rule != null) {
|
var content: String = if (rule != null) {
|
||||||
msgInfo.getContentForSend(rule.smsTemplate, rule.regexReplace)
|
msgInfo.getContentForSend(rule.smsTemplate, rule.regexReplace)
|
||||||
} else {
|
} else {
|
||||||
msgInfo.getContentForSend(SettingUtils.smsTemplate)
|
msgInfo.getContentForSend(SettingUtils.smsTemplate)
|
||||||
@ -56,10 +56,6 @@ class DingtalkGroupRobotUtils private constructor() {
|
|||||||
val msgMap: MutableMap<String, Any> = mutableMapOf()
|
val msgMap: MutableMap<String, Any> = mutableMapOf()
|
||||||
msgMap["msgtype"] = "text"
|
msgMap["msgtype"] = "text"
|
||||||
|
|
||||||
val textText: MutableMap<String, Any> = mutableMapOf()
|
|
||||||
textText["content"] = content
|
|
||||||
msgMap["text"] = textText
|
|
||||||
|
|
||||||
val atMap: MutableMap<String, Any> = mutableMapOf()
|
val atMap: MutableMap<String, Any> = mutableMapOf()
|
||||||
msgMap["at"] = atMap
|
msgMap["at"] = atMap
|
||||||
if (setting.atAll == true) {
|
if (setting.atAll == true) {
|
||||||
@ -69,18 +65,30 @@ class DingtalkGroupRobotUtils private constructor() {
|
|||||||
if (!TextUtils.isEmpty(setting.atMobiles)) {
|
if (!TextUtils.isEmpty(setting.atMobiles)) {
|
||||||
val atMobilesArray: Array<String> = setting.atMobiles.toString().replace("[,,;;]".toRegex(), ",").trim(',').split(',').toTypedArray()
|
val atMobilesArray: Array<String> = setting.atMobiles.toString().replace("[,,;;]".toRegex(), ",").trim(',').split(',').toTypedArray()
|
||||||
if (atMobilesArray.isNotEmpty()) {
|
if (atMobilesArray.isNotEmpty()) {
|
||||||
val atMobilesList: MutableList<String> = ArrayList()
|
atMap["atMobiles"] = atMobilesArray
|
||||||
for (atMobile in atMobilesArray) {
|
for (atMobile in atMobilesArray) {
|
||||||
if (TextUtils.isDigitsOnly(atMobile)) {
|
if (!content.contains("@${atMobile}")) {
|
||||||
atMobilesList.add(atMobile)
|
content += " @${atMobile}"
|
||||||
}
|
|
||||||
}
|
|
||||||
if (atMobilesList.isNotEmpty()) {
|
|
||||||
atMap["atMobiles"] = atMobilesList
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!TextUtils.isEmpty(setting.atDingtalkIds)) {
|
||||||
|
val atDingtalkIdsArray: Array<String> = setting.atDingtalkIds.toString().replace("[,,;;]".toRegex(), ",").trim(',').split(',').toTypedArray()
|
||||||
|
if (atDingtalkIdsArray.isNotEmpty()) {
|
||||||
|
atMap["atDingtalkIds"] = atDingtalkIdsArray
|
||||||
|
for (atDingtalkId in atDingtalkIdsArray) {
|
||||||
|
if (!content.contains("@${atDingtalkId}")) {
|
||||||
|
content += " @${atDingtalkId}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val textText: MutableMap<String, Any> = mutableMapOf()
|
||||||
|
textText["content"] = content
|
||||||
|
msgMap["text"] = textText
|
||||||
|
|
||||||
val requestMsg: String = Gson().toJson(msgMap)
|
val requestMsg: String = Gson().toJson(msgMap)
|
||||||
Log.i(TAG, "requestMsg:$requestMsg")
|
Log.i(TAG, "requestMsg:$requestMsg")
|
||||||
|
@ -133,14 +133,14 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/dingtalk_at"
|
android:text="@string/dingtalk_at_mobiles"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:text="@string/dingtalk_at_tip"
|
android:text="@string/dingtalk_at_mobiles_tip"
|
||||||
android:textSize="10sp"
|
android:textSize="10sp"
|
||||||
tools:ignore="SmallSp" />
|
tools:ignore="SmallSp" />
|
||||||
|
|
||||||
@ -153,6 +153,37 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/layout_at_dingtalk_ids"
|
||||||
|
style="@style/senderBarStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:visibility="gone">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/dingtalk_at_dingtalkids"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:text="@string/dingtalk_at_dingtalkids_tip"
|
||||||
|
android:textSize="10sp"
|
||||||
|
tools:ignore="SmallSp" />
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.edittext.materialedittext.MaterialEditText
|
||||||
|
android:id="@+id/et_at_dingtalk_ids"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:singleLine="true"
|
||||||
|
app:met_clearButton="true" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</androidx.core.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
@ -324,7 +324,7 @@
|
|||||||
<string name="server_chan_send_key">SendKey</string>
|
<string name="server_chan_send_key">SendKey</string>
|
||||||
<string name="server_chan_channel">Message Channel</string>
|
<string name="server_chan_channel">Message Channel</string>
|
||||||
<string name="server_chan_channel_tips">Tip: Dynamically specified, supports up to two channels, separated by a vertical bar |</string>
|
<string name="server_chan_channel_tips">Tip: Dynamically specified, supports up to two channels, separated by a vertical bar |</string>
|
||||||
<string name="server_chan_channel_hint">Optional, for example: to send service number and enterprise WeChat application, then fill in 9|66</string>
|
<string name="server_chan_channel_hint">Optional, e.g. to send service number and enterprise WeChat application, then fill in 9|66</string>
|
||||||
<string name="server_chan_openid">CC OpenID</string>
|
<string name="server_chan_openid">CC OpenID</string>
|
||||||
<string name="server_chan_openid_tips">Tip: Only test accounts and Wework application message channels are supported</string>
|
<string name="server_chan_openid_tips">Tip: Only test accounts and Wework application message channels are supported</string>
|
||||||
<string name="server_chan_openid_hint">Optional, multiple openids are separated by commas</string>
|
<string name="server_chan_openid_hint">Optional, multiple openids are separated by commas</string>
|
||||||
@ -704,23 +704,25 @@
|
|||||||
<string name="dingtalk_token_hint">Robot Settings→webhook→access_token</string>
|
<string name="dingtalk_token_hint">Robot Settings→webhook→access_token</string>
|
||||||
<string name="dingtalk_secret">Secret</string>
|
<string name="dingtalk_secret">Secret</string>
|
||||||
<string name="dingtalk_secret_hint">Robot Settings→Security Settings→Sign Up</string>
|
<string name="dingtalk_secret_hint">Robot Settings→Security Settings→Sign Up</string>
|
||||||
<string name="dingtalk_at">\@someone when retweeting</string>
|
<string name="dingtalk_at_mobiles">At Mobiles</string>
|
||||||
<string name="dingtalk_at_tip">Tips: Separate multiple phone numbers with commas, for example: 18888888888,19999999999</string>
|
<string name="dingtalk_at_mobiles_tip">Tips: Separate multiple mobiles with commas, e.g. 18888888888,19999999999</string>
|
||||||
|
<string name="dingtalk_at_dingtalkids">At DingtalkIds</string>
|
||||||
|
<string name="dingtalk_at_dingtalkids_tip">Tips:Separate multiple DingtalkIds with commas, e.g. user1,user2</string>
|
||||||
|
|
||||||
<string name="bark_server">Bark-Server</string>
|
<string name="bark_server">Bark-Server</string>
|
||||||
<string name="bark_server_tips">Example: https://api.day.app/XXXXXXXX/</string>
|
<string name="bark_server_tips">Example: https://api.day.app/XXXXXXXX/</string>
|
||||||
<string name="bark_server_regex">^https?://[^/]+/[^/]+/$</string>
|
<string name="bark_server_regex">^https?://[^/]+/[^/]+/$</string>
|
||||||
<string name="bark_server_error">The Url format is wrong, for example: https://api.day.app/XXXXXXXX/</string>
|
<string name="bark_server_error">The Url format is wrong, e.g. https://api.day.app/XXXXXXXX/</string>
|
||||||
<string name="bark_group">Group Name</string>
|
<string name="bark_group">Group Name</string>
|
||||||
<string name="bark_group_tips">Optional, eg: SmsForwarder</string>
|
<string name="bark_group_tips">Optional, eg: SmsForwarder</string>
|
||||||
<string name="bark_icon">Message Icon</string>
|
<string name="bark_icon">Message Icon</string>
|
||||||
<string name="bark_icon_tips">Optional, fill in Url, the picture should not be too big</string>
|
<string name="bark_icon_tips">Optional, fill in Url, the picture should not be too big</string>
|
||||||
<string name="bark_sound">Message Sound</string>
|
<string name="bark_sound">Message Sound</string>
|
||||||
<string name="bark_sound_tips">Optional, for example: minuet.caf</string>
|
<string name="bark_sound_tips">Optional, e.g. minuet.caf</string>
|
||||||
<string name="bark_badge">Message Badge</string>
|
<string name="bark_badge">Message Badge</string>
|
||||||
<string name="bark_badge_tips">Optional, eg: 888</string>
|
<string name="bark_badge_tips">Optional, eg: 888</string>
|
||||||
<string name="bark_url">Message Link</string>
|
<string name="bark_url">Message Link</string>
|
||||||
<string name="bark_url_tips">Optional, for example: https://github.com/pppscn/SmsForwarder</string>
|
<string name="bark_url_tips">Optional, e.g. https://github.com/pppscn/SmsForwarder</string>
|
||||||
<string name="bark_level">Notification Level</string>
|
<string name="bark_level">Notification Level</string>
|
||||||
<string name="bark_level_active">Immediately display notifications</string>
|
<string name="bark_level_active">Immediately display notifications</string>
|
||||||
<string name="bark_level_timeSensitive">Time-sensitive notifications that can be displayed in a focused state</string>
|
<string name="bark_level_timeSensitive">Time-sensitive notifications that can be displayed in a focused state</string>
|
||||||
@ -766,7 +768,7 @@
|
|||||||
<string name="webhook_server_tips">For example: https://a.b.com/msg?token=xyz</string>
|
<string name="webhook_server_tips">For example: https://a.b.com/msg?token=xyz</string>
|
||||||
<string name="webhook_params">Params</string>
|
<string name="webhook_params">Params</string>
|
||||||
<string name="msg_template">Msg Template</string>
|
<string name="msg_template">Msg Template</string>
|
||||||
<string name="webhook_params_tips" formatted="false">For example: payload=%7B%22text%22%3A%22[msg]%22%7D [msg] will be replaced with SMS content.\nJson format is supported, for example: {\"text\":\"[msg]\"}.\nNote: msg is automatically URLEncoder except in JSON format</string>
|
<string name="webhook_params_tips" formatted="false">For example: payload=%7B%22text%22%3A%22[msg]%22%7D [msg] will be replaced with SMS content.\nJson format is supported, e.g. {\"text\":\"[msg]\"}.\nNote: msg is automatically URLEncoder except in JSON format</string>
|
||||||
<string name="webhook_secret">Secret: If it is empty, the sign will not be calculated</string>
|
<string name="webhook_secret">Secret: If it is empty, the sign will not be calculated</string>
|
||||||
<string name="headers">Headers</string>
|
<string name="headers">Headers</string>
|
||||||
<string name="header_key">Key</string>
|
<string name="header_key">Key</string>
|
||||||
|
@ -311,7 +311,7 @@
|
|||||||
<string name="Corp_ID">企业ID</string>
|
<string name="Corp_ID">企业ID</string>
|
||||||
<string name="Agent_ID">AgentId</string>
|
<string name="Agent_ID">AgentId</string>
|
||||||
<string name="App_Secret">Secret</string>
|
<string name="App_Secret">Secret</string>
|
||||||
<string name="is_at_all">是否@all</string>
|
<string name="is_at_all">是否@所有人</string>
|
||||||
<string name="specified_member">指定成员</string>
|
<string name="specified_member">指定成员</string>
|
||||||
<string name="at_all">\@all</string>
|
<string name="at_all">\@all</string>
|
||||||
<string name="specified_member_tips">Tip:接收消息的成员ID列表(多个接收者用‘|’分隔,最多支持1000个)</string>
|
<string name="specified_member_tips">Tip:接收消息的成员ID列表(多个接收者用‘|’分隔,最多支持1000个)</string>
|
||||||
@ -705,8 +705,10 @@
|
|||||||
<string name="dingtalk_token_hint">机器人设置→webhook→access_token</string>
|
<string name="dingtalk_token_hint">机器人设置→webhook→access_token</string>
|
||||||
<string name="dingtalk_secret">加签 Secret</string>
|
<string name="dingtalk_secret">加签 Secret</string>
|
||||||
<string name="dingtalk_secret_hint">机器人设置→安全设置→加签</string>
|
<string name="dingtalk_secret_hint">机器人设置→安全设置→加签</string>
|
||||||
<string name="dingtalk_at">转发时@某人</string>
|
<string name="dingtalk_at_mobiles">被@人的手机号</string>
|
||||||
<string name="dingtalk_at_tip">Tips:多个手机号用逗号分开,例如:18888888888,19999999999</string>
|
<string name="dingtalk_at_mobiles_tip">Tips:多个手机号用逗号分开,例如:18888888888,19999999999</string>
|
||||||
|
<string name="dingtalk_at_dingtalkids">被@人的钉钉号</string>
|
||||||
|
<string name="dingtalk_at_dingtalkids_tip">Tips:多个钉钉号用逗号分开,例如:user1,user2</string>
|
||||||
|
|
||||||
<string name="bark_server">Bark-Server</string>
|
<string name="bark_server">Bark-Server</string>
|
||||||
<string name="bark_server_tips">例:https://api.day.app/XXXXXXXX/</string>
|
<string name="bark_server_tips">例:https://api.day.app/XXXXXXXX/</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user