Merge pull request #397 from elonfeng/feat/dingtalk-channel
feat(channels): add DingTalk channel via Stream Mode
This commit is contained in:
commit
4264c3bb21
5 changed files with 449 additions and 5 deletions
|
|
@ -1219,6 +1219,7 @@ pub struct ChannelsConfig {
|
|||
pub email: Option<crate::channels::email_channel::EmailConfig>,
|
||||
pub irc: Option<IrcConfig>,
|
||||
pub lark: Option<LarkConfig>,
|
||||
pub dingtalk: Option<DingTalkConfig>,
|
||||
}
|
||||
|
||||
impl Default for ChannelsConfig {
|
||||
|
|
@ -1235,6 +1236,7 @@ impl Default for ChannelsConfig {
|
|||
email: None,
|
||||
irc: None,
|
||||
lark: None,
|
||||
dingtalk: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1508,6 +1510,18 @@ impl Default for AuditConfig {
|
|||
}
|
||||
}
|
||||
|
||||
/// DingTalk (钉钉) configuration for Stream Mode messaging
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct DingTalkConfig {
|
||||
/// Client ID (AppKey) from DingTalk developer console
|
||||
pub client_id: String,
|
||||
/// Client Secret (AppSecret) from DingTalk developer console
|
||||
pub client_secret: String,
|
||||
/// Allowed user IDs (staff IDs). Empty = deny all, "*" = allow all
|
||||
#[serde(default)]
|
||||
pub allowed_users: Vec<String>,
|
||||
}
|
||||
|
||||
// ── Config impl ──────────────────────────────────────────────────
|
||||
|
||||
impl Default for Config {
|
||||
|
|
@ -1886,6 +1900,7 @@ mod tests {
|
|||
email: None,
|
||||
irc: None,
|
||||
lark: None,
|
||||
dingtalk: None,
|
||||
},
|
||||
memory: MemoryConfig::default(),
|
||||
tunnel: TunnelConfig::default(),
|
||||
|
|
@ -2177,6 +2192,7 @@ tool_dispatcher = "xml"
|
|||
email: None,
|
||||
irc: None,
|
||||
lark: None,
|
||||
dingtalk: None,
|
||||
};
|
||||
let toml_str = toml::to_string_pretty(&c).unwrap();
|
||||
let parsed: ChannelsConfig = toml::from_str(&toml_str).unwrap();
|
||||
|
|
@ -2336,6 +2352,7 @@ channel_id = "C123"
|
|||
email: None,
|
||||
irc: None,
|
||||
lark: None,
|
||||
dingtalk: None,
|
||||
};
|
||||
let toml_str = toml::to_string_pretty(&c).unwrap();
|
||||
let parsed: ChannelsConfig = toml::from_str(&toml_str).unwrap();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue