{ "id": "com.yuxi.channels.wecom", "name": "企业微信", "version": "1.0.0", "channel_type": "wecom", "icon": "message-square", "entry_module": "yuxi.channels.plugins.wecom.entry", "provides": ["wecom"], "lifecycle": ["init", "start", "stop", "pause", "resume", "unload", "reconfigure", "fail"], "compatibility": { "min_host_version": "1.0.0", "wecom_api_version": "2026.03" }, "failure_policy": "degrade", "depends": [], "critical": false, "requires_dm_pairing": true, "requires_outbound_delivery": true, "credential_strategy": { "type": "hybrid", "acquire_method": "manual", "required_fields": ["corp_id", "corp_secret", "agent_id"], "optional_fields": ["external_contact_secret", "kf_secret"], "supports_rotation": false, "supports_revocation": false }, "max_message_length": 2048, "supports_credential_cloning": false, "transport_mode": "both", "capabilities": { "rich_message": true, "streaming": false, "typing_indicator": false, "message_edit": false, "message_recall": true, "supports_reaction": false, "supports_pin": false, "supports_card_update": true, "supports_card_update_streaming": true, "supports_image_inbound": true, "supports_video_inbound": true, "supports_image_outbound": true, "supports_video_outbound": true, "mention": false, "command": true, "directory": true, "doctor": true, "whitelist": true, "wizard": true, "tools": false, "status": true, "probeable": true, "identity_resolver": true, "lifecycle": true, "supports_qr_login": true, "agent_collaboration": false }, "capability_requirements": [ ["supports_image_outbound", ["corp_id", "corp_secret", "agent_id"]], ["supports_video_outbound", ["corp_id", "corp_secret", "agent_id"]], ["supports_qr_login", ["corp_id", "corp_secret", "qr_redirect_uri"]], ["identity_resolver", ["corp_id", "corp_secret"]], ["lifecycle", []], ["probeable", []], ["status", []] ], "resource_quota": { "max_cpu": "20.0", "max_memory": "256MB", "max_connections": 50, "max_calls_per_sec": 20 }, "accessible_ports": [ "ConfigPort", "LoggerPort", "PersistencePort", "CachePort", "TracerPort", "ConversationPort", "IdentityResolverPort", "ChannelAccountRepositoryPort", "ChannelSessionRepositoryPort", "OutboxRepositoryPort", "UserIdentityRepositoryPort", "AuditLogRepositoryPort", "IdempotencyRepositoryPort" ], "injectable_pipelines": ["inbound", "outbound"], "config_schema": [ {"key": "corp_id", "type": "string", "required": true, "default": null, "hot_reloadable": false, "scope": "account", "constraints": {"pattern": ".+"}}, {"key": "corp_secret", "type": "string", "required": true, "default": null, "hot_reloadable": false, "sensitive": true, "scope": "account", "constraints": {"pattern": ".+"}}, {"key": "agent_id", "type": "string", "required": true, "default": null, "hot_reloadable": false, "scope": "account", "constraints": {"pattern": ".+"}}, {"key": "encoding_aes_key", "type": "string", "required": true, "default": null, "hot_reloadable": false, "sensitive": true, "scope": "account", "constraints": {"pattern": "^.{43}$"}}, {"key": "token", "type": "string", "required": true, "default": null, "hot_reloadable": false, "sensitive": true, "scope": "account", "constraints": {"pattern": ".+"}}, {"key": "webhook_url", "type": "string", "required": true, "default": null, "hot_reloadable": false, "scope": "channel", "constraints": {"pattern": "^https://"}}, {"key": "external_contact_secret", "type": "string", "required": false, "default": null, "hot_reloadable": false, "sensitive": true, "scope": "account", "constraints": {}}, {"key": "kf_secret", "type": "string", "required": false, "default": null, "hot_reloadable": false, "sensitive": true, "scope": "account", "constraints": {}}, {"key": "enable_external_contact", "type": "boolean", "required": false, "default": false, "hot_reloadable": true, "scope": "channel", "constraints": {}}, {"key": "enable_kf", "type": "boolean", "required": false, "default": false, "hot_reloadable": true, "scope": "channel", "constraints": {}}, {"key": "enable_unionid", "type": "boolean", "required": false, "default": false, "hot_reloadable": true, "scope": "channel", "constraints": {}}, {"key": "enable_qr_login", "type": "boolean", "required": false, "default": false, "hot_reloadable": true, "scope": "channel", "constraints": {}}, {"key": "qr_redirect_uri", "type": "string", "required": false, "default": null, "hot_reloadable": true, "scope": "channel", "constraints": {"pattern": "^https://"}}, {"key": "qr_timeout_ms", "type": "integer", "required": false, "default": 120000, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 30000, "max": 300000}}, {"key": "token_cache_ttl", "type": "integer", "required": false, "default": 7200, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 60, "max": 7200}}, {"key": "user_cache_ttl", "type": "integer", "required": false, "default": 1800, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 60, "max": 3600}}, {"key": "dm_policy", "type": "string", "required": false, "default": "allow_all", "hot_reloadable": true, "scope": "channel", "constraints": {"enum": ["allow_all", "allow_from", "deny_all"]}}, {"key": "allow_from", "type": "json", "required": false, "default": [], "hot_reloadable": true, "scope": "channel", "constraints": {}}, {"key": "rate_limit", "type": "integer", "required": false, "default": 20, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 1, "max": 100}}, {"key": "duplicate_check_interval", "type": "integer", "required": false, "default": 1800, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 60, "max": 14400}}, {"key": "api_base_url", "type": "string", "required": false, "default": "https://qyapi.weixin.qq.com", "hot_reloadable": true, "scope": "channel", "constraints": {}}, {"key": "request_timeout_ms", "type": "integer", "required": false, "default": 30000, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 5000, "max": 60000}}, {"key": "max_retries", "type": "integer", "required": false, "default": 3, "hot_reloadable": true, "scope": "channel", "constraints": {"min": 0, "max": 5}} ], "env_vars": [ {"name": "WECOM_CORP_ID", "description": "企业微信企业 ID", "required": true, "default": null, "sensitive": false}, {"name": "WECOM_CORP_SECRET", "description": "自建应用 Secret", "required": true, "default": null, "sensitive": true}, {"name": "WECOM_AGENT_ID", "description": "自建应用 Agent ID", "required": true, "default": null, "sensitive": false}, {"name": "WECOM_ENCODING_AES_KEY", "description": "回调加密 AES Key(43 位)", "required": true, "default": null, "sensitive": true}, {"name": "WECOM_TOKEN", "description": "回调签名 Token", "required": true, "default": null, "sensitive": true}, {"name": "WECOM_EXTERNAL_CONTACT_SECRET", "description": "客户联系 Secret", "required": false, "default": null, "sensitive": true}, {"name": "WECOM_KF_SECRET", "description": "微信客服 Secret", "required": false, "default": null, "sensitive": true}, {"name": "WECOM_WEBHOOK_URL", "description": "回调接收 URL(公网 HTTPS)", "required": true, "default": null, "sensitive": false}, {"name": "WECOM_QR_REDIRECT_URI", "description": "OAuth 扫码登录回调地址", "required": false, "default": null, "sensitive": false}, {"name": "WECOM_QR_TIMEOUT_MS", "description": "扫码等待超时(毫秒)", "required": false, "default": "120000", "sensitive": false} ] }