mirror of
https://github.com/pppscn/SmsForwarder
synced 2025-08-02 17:07:41 +08:00
新增:企微群机器人
发送文本消息
时支持at成员 #376
This commit is contained in:
parent
95e9f22816
commit
5381151ac3
@ -6,6 +6,9 @@ import java.io.Serializable
|
||||
data class WeworkRobotSetting(
|
||||
var webHook: String,
|
||||
val msgType: String = "text",
|
||||
var atAll: Boolean? = false,
|
||||
var atUserIds: String? = "",
|
||||
var atMobiles: String? = "",
|
||||
) : Serializable {
|
||||
|
||||
fun getMsgTypeCheckId(): Int {
|
||||
|
@ -6,6 +6,8 @@ import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.CompoundButton
|
||||
import android.widget.RadioGroup
|
||||
import androidx.fragment.app.viewModels
|
||||
import com.google.gson.Gson
|
||||
import com.idormy.sms.forwarder.R
|
||||
@ -17,7 +19,13 @@ import com.idormy.sms.forwarder.database.viewmodel.SenderViewModel
|
||||
import com.idormy.sms.forwarder.databinding.FragmentSendersWeworkRobotBinding
|
||||
import com.idormy.sms.forwarder.entity.MsgInfo
|
||||
import com.idormy.sms.forwarder.entity.setting.WeworkRobotSetting
|
||||
import com.idormy.sms.forwarder.utils.*
|
||||
import com.idormy.sms.forwarder.utils.CommonUtils
|
||||
import com.idormy.sms.forwarder.utils.KEY_SENDER_CLONE
|
||||
import com.idormy.sms.forwarder.utils.KEY_SENDER_ID
|
||||
import com.idormy.sms.forwarder.utils.KEY_SENDER_TEST
|
||||
import com.idormy.sms.forwarder.utils.KEY_SENDER_TYPE
|
||||
import com.idormy.sms.forwarder.utils.SettingUtils
|
||||
import com.idormy.sms.forwarder.utils.XToastUtils
|
||||
import com.idormy.sms.forwarder.utils.sender.WeworkRobotUtils
|
||||
import com.jeremyliao.liveeventbus.LiveEventBus
|
||||
import com.xuexiang.xaop.annotation.SingleClick
|
||||
@ -32,11 +40,11 @@ import io.reactivex.SingleObserver
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import java.util.*
|
||||
import java.util.Date
|
||||
|
||||
@Page(name = "企业微信群机器人")
|
||||
@Suppress("PrivatePropertyName")
|
||||
class WeworkRobotFragment : BaseFragment<FragmentSendersWeworkRobotBinding?>(), View.OnClickListener {
|
||||
class WeworkRobotFragment : BaseFragment<FragmentSendersWeworkRobotBinding?>(), View.OnClickListener, CompoundButton.OnCheckedChangeListener {
|
||||
|
||||
private val TAG: String = WeworkRobotFragment::class.java.simpleName
|
||||
var titleBar: TitleBar? = null
|
||||
@ -122,6 +130,10 @@ class WeworkRobotFragment : BaseFragment<FragmentSendersWeworkRobotBinding?>(),
|
||||
if (settingVo != null) {
|
||||
binding!!.etWebHook.setText(settingVo.webHook)
|
||||
binding!!.rgMsgType.check(settingVo.getMsgTypeCheckId())
|
||||
binding!!.layoutAt.visibility = if (settingVo.getMsgTypeCheckId() == R.id.rb_msg_type_text) View.VISIBLE else View.GONE
|
||||
binding!!.sbAtAll.isChecked = settingVo.atAll == true
|
||||
binding!!.etAtMobiles.setText(settingVo.atMobiles)
|
||||
binding!!.etAtUserIds.setText(settingVo.atUserIds)
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -131,9 +143,26 @@ class WeworkRobotFragment : BaseFragment<FragmentSendersWeworkRobotBinding?>(),
|
||||
binding!!.btnTest.setOnClickListener(this)
|
||||
binding!!.btnDel.setOnClickListener(this)
|
||||
binding!!.btnSave.setOnClickListener(this)
|
||||
binding!!.sbAtAll.setOnCheckedChangeListener(this)
|
||||
binding!!.rgMsgType.setOnCheckedChangeListener { _: RadioGroup?, checkedId: Int ->
|
||||
binding!!.layoutAt.visibility = if (checkedId == R.id.rb_msg_type_text) View.VISIBLE else View.GONE
|
||||
}
|
||||
LiveEventBus.get(KEY_SENDER_TEST, String::class.java).observe(this) { mCountDownHelper?.finish() }
|
||||
}
|
||||
|
||||
override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
|
||||
//这里只有一个监听不需要判断id
|
||||
if (isChecked) {
|
||||
binding!!.layoutAtMobiles.visibility = View.GONE
|
||||
binding!!.layoutAtUserIds.visibility = View.GONE
|
||||
binding!!.etAtMobiles.setText("")
|
||||
binding!!.etAtUserIds.setText("")
|
||||
} else {
|
||||
binding!!.layoutAtMobiles.visibility = View.VISIBLE
|
||||
binding!!.layoutAtUserIds.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
@SingleClick
|
||||
override fun onClick(v: View) {
|
||||
try {
|
||||
@ -208,7 +237,10 @@ class WeworkRobotFragment : BaseFragment<FragmentSendersWeworkRobotBinding?>(),
|
||||
throw Exception(getString(R.string.invalid_webhook))
|
||||
}
|
||||
val msgType = if (binding!!.rgMsgType.checkedRadioButtonId == R.id.rb_msg_type_markdown) "markdown" else "text"
|
||||
return WeworkRobotSetting(webHook, msgType)
|
||||
val atAll = binding!!.sbAtAll.isChecked
|
||||
val atUserIds = binding!!.etAtUserIds.text.toString().trim()
|
||||
val atMobiles = binding!!.etAtMobiles.text.toString().trim()
|
||||
return WeworkRobotSetting(webHook, msgType, atAll, atUserIds, atMobiles)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
|
@ -38,14 +38,23 @@ class WeworkRobotUtils private constructor() {
|
||||
val msgMap: MutableMap<String, Any> = mutableMapOf()
|
||||
msgMap["msgtype"] = setting.msgType
|
||||
|
||||
val contextMap = mutableMapOf<String, Any>()
|
||||
contextMap["content"] = content
|
||||
|
||||
if (setting.msgType == "markdown") {
|
||||
val markdownText: MutableMap<String, Any> = mutableMapOf()
|
||||
markdownText["content"] = content
|
||||
msgMap["markdown"] = markdownText
|
||||
msgMap["markdown"] = contextMap
|
||||
} else {
|
||||
val textText: MutableMap<String, Any> = mutableMapOf()
|
||||
textText["content"] = content
|
||||
msgMap["text"] = textText
|
||||
if (setting.atAll == true) {
|
||||
contextMap["mentioned_list"] = arrayListOf("@all")
|
||||
} else {
|
||||
if (!setting.atUserIds.isNullOrEmpty()) {
|
||||
contextMap["mentioned_list"] = setting.atUserIds!!.split(",")
|
||||
}
|
||||
if (!setting.atMobiles.isNullOrEmpty()) {
|
||||
contextMap["mentioned_mobile_list"] = setting.atMobiles!!.split(",")
|
||||
}
|
||||
}
|
||||
msgMap["text"] = contextMap
|
||||
}
|
||||
|
||||
val requestMsg: String = Gson().toJson(msgMap)
|
||||
|
@ -38,14 +38,16 @@
|
||||
android:layout_marginStart="5dp"
|
||||
android:layout_weight="1"
|
||||
android:singleLine="true"
|
||||
app:met_clearButton="true" />
|
||||
app:met_clearButton="true"
|
||||
tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" />
|
||||
|
||||
<com.xuexiang.xui.widget.button.switchbutton.SwitchButton
|
||||
android:id="@+id/sb_enable"
|
||||
style="@style/SwitchButtonStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="true" />
|
||||
android:checked="true"
|
||||
tools:ignore="DuplicateSpeakableTextCheck,TouchTargetSizeCheck" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@ -73,7 +75,8 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
app:met_passWordButton="true" />
|
||||
app:met_passWordButton="true"
|
||||
tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@ -99,17 +102,112 @@
|
||||
android:id="@+id/rb_msg_type_text"
|
||||
style="@style/rg_rb_style"
|
||||
android:checked="true"
|
||||
android:text="@string/wework_msg_type_text" />
|
||||
android:text="@string/wework_msg_type_text"
|
||||
tools:ignore="TouchTargetSizeCheck" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/rb_msg_type_markdown"
|
||||
style="@style/rg_rb_style"
|
||||
android:text="@string/wework_msg_type_markdown" />
|
||||
android:text="@string/wework_msg_type_markdown"
|
||||
tools:ignore="TouchTargetSizeCheck" />
|
||||
|
||||
</RadioGroup>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/layout_at"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/senderBarStyleWithSwitch"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/is_at_all"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<com.xuexiang.xui.widget.button.switchbutton.SwitchButton
|
||||
android:id="@+id/sb_at_all"
|
||||
style="@style/SwitchButtonStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="true"
|
||||
tools:ignore="TouchTargetSizeCheck" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/layout_at_user_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/wework_at_userids"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="1"
|
||||
android:text="@string/wework_at_userids_tip"
|
||||
android:textSize="10sp"
|
||||
tools:ignore="SmallSp" />
|
||||
|
||||
<com.xuexiang.xui.widget.edittext.materialedittext.MaterialEditText
|
||||
android:id="@+id/et_at_user_ids"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
app:met_clearButton="true" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/layout_at_mobiles"
|
||||
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/wework_at_mobiles"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="1"
|
||||
android:text="@string/wework_at_mobiles_tip"
|
||||
android:textSize="10sp"
|
||||
tools:ignore="SmallSp" />
|
||||
|
||||
<com.xuexiang.xui.widget.edittext.materialedittext.MaterialEditText
|
||||
android:id="@+id/et_at_mobiles"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
app:met_clearButton="true" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
@ -128,7 +226,7 @@
|
||||
android:paddingStart="15dp"
|
||||
android:text="@string/del"
|
||||
android:textSize="11sp"
|
||||
tools:ignore="RtlSymmetry" />
|
||||
tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" />
|
||||
|
||||
<com.xuexiang.xui.widget.textview.supertextview.SuperButton
|
||||
android:id="@+id/btn_save"
|
||||
@ -138,7 +236,7 @@
|
||||
android:paddingStart="15dp"
|
||||
android:text="@string/save"
|
||||
android:textSize="11sp"
|
||||
tools:ignore="RtlSymmetry" />
|
||||
tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" />
|
||||
|
||||
<com.xuexiang.xui.widget.textview.supertextview.SuperButton
|
||||
android:id="@+id/btn_test"
|
||||
@ -148,7 +246,7 @@
|
||||
android:paddingStart="15dp"
|
||||
android:text="@string/test"
|
||||
android:textSize="11sp"
|
||||
tools:ignore="RtlSymmetry" />
|
||||
tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -774,6 +774,10 @@
|
||||
<string name="wework_msg_type">Msg Type</string>
|
||||
<string name="wework_msg_type_text">Text</string>
|
||||
<string name="wework_msg_type_markdown">Markdown</string>
|
||||
<string name="wework_at_mobiles">At Mobiles</string>
|
||||
<string name="wework_at_mobiles_tip">Tips: Separate multiple mobiles with commas, e.g. 18888888888,19999999999</string>
|
||||
<string name="wework_at_userids">At UserId</string>
|
||||
<string name="wework_at_userids_tip">Tips:Separate multiple UserIds with commas, e.g. user1,user2</string>
|
||||
|
||||
<string name="url_scheme">URL Scheme</string>
|
||||
<string name="url_scheme_tips">Example:myapp://api/add?&type=0&msg=[msg]</string>
|
||||
|
@ -775,6 +775,10 @@
|
||||
<string name="wework_msg_type">消息类型</string>
|
||||
<string name="wework_msg_type_text">纯文本</string>
|
||||
<string name="wework_msg_type_markdown">markdown</string>
|
||||
<string name="wework_at_mobiles">被@人的手机号</string>
|
||||
<string name="wework_at_mobiles_tip">Tips:多个手机号用逗号分开,例如:18888888888,19999999999</string>
|
||||
<string name="wework_at_userids">被@人的userid</string>
|
||||
<string name="wework_at_userids_tip">Tips:多个userid用逗号分开,例如:user1,user2</string>
|
||||
|
||||
<string name="url_scheme">URL Scheme</string>
|
||||
<string name="url_scheme_tips">示例:myapp://api/add?&type=0&msg=[msg]</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user