feat(channel): add Signal channel via signal-cli JSON-RPC daemon
Adds a new Signal messaging channel that connects to a running signal-cli daemon's native HTTP API (JSON-RPC + SSE). [channels_config.signal] http_url = "http://127.0.0.1:8686" account = "+1234567890" group_id = "group_id" # optional, omit for all allowed_from = ["+1111111111"] ignore_attachments = true ignore_stories = true Implementation: - SSE listener at /api/v1/events for incoming messages - JSON-RPC sends via /api/v1/rpc (method: send) - Health check via /api/v1/check - Typing indicators via sendTyping RPC - Supports DMs and group messages (room_id filtering) - Allowlist-based sender filtering (E.164 or wildcard) - Optional attachment/story filtering - Fixed has_supervised_channels() to include signal + irc/lark/dingtalk Registered in channel list, doctor, start, integrations registry, and daemon supervisor gate. Includes unit tests for config serde, sender filtering, room matching, envelope processing, and deserialization. No new dependencies (uses existing uuid, futures-util, reqwest).
This commit is contained in:
parent
acfdc34be2
commit
55f2637cfe
6 changed files with 860 additions and 2 deletions
|
|
@ -214,9 +214,12 @@ fn has_supervised_channels(config: &Config) -> bool {
|
|||
|| config.channels_config.slack.is_some()
|
||||
|| config.channels_config.imessage.is_some()
|
||||
|| config.channels_config.matrix.is_some()
|
||||
|| config.channels_config.signal.is_some()
|
||||
|| config.channels_config.whatsapp.is_some()
|
||||
|| config.channels_config.email.is_some()
|
||||
|| config.channels_config.irc.is_some()
|
||||
|| config.channels_config.lark.is_some()
|
||||
|| config.channels_config.dingtalk.is_some()
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue