ForcePilot/backend/package/yuxi/channels/adapters/whatsapp/channel_meta.py
Kris e9b57546ea feat(whatsapp): 新增WhatsApp适配器完整功能模块
新增大量WhatsApp适配器相关代码,包括账号管理、会话处理、消息收发、验证授权、媒体处理、互动命令、审批流程、健康检测等完整功能模块,搭建基础的Baileys协议WhatsApp接入能力
2026-05-12 00:51:58 +08:00

73 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from __future__ import annotations
from dataclasses import dataclass, field
from enum import StrEnum
class ChannelMode(StrEnum):
BRIDGE = "bridge"
CLOUD_API = "cloud_api"
class ChannelCapability(StrEnum):
TEXT = "text"
IMAGE = "image"
VIDEO = "video"
AUDIO = "audio"
DOCUMENT = "document"
STICKER = "sticker"
LOCATION = "location"
CONTACT = "contact"
REACTION = "reaction"
BUTTONS = "buttons"
LIST_MESSAGE = "list_message"
TEMPLATE = "template"
POLL = "poll"
GROUP = "group"
BROADCAST = "broadcast"
QR_LOGIN = "qr_login"
PAIRING = "pairing"
SSE_POLLING = "sse_polling"
@dataclass
class WhatsAppChannelMeta:
channel_type: str = "whatsapp"
display_name: str = "WhatsApp"
protocol: str = "whatsapp"
supported_modes: list[ChannelMode] = field(default_factory=lambda: [ChannelMode.BRIDGE, ChannelMode.CLOUD_API])
capabilities: list[ChannelCapability] = field(
default_factory=lambda: [
ChannelCapability.TEXT,
ChannelCapability.IMAGE,
ChannelCapability.VIDEO,
ChannelCapability.AUDIO,
ChannelCapability.DOCUMENT,
ChannelCapability.STICKER,
ChannelCapability.LOCATION,
ChannelCapability.CONTACT,
ChannelCapability.REACTION,
ChannelCapability.BUTTONS,
ChannelCapability.LIST_MESSAGE,
ChannelCapability.TEMPLATE,
ChannelCapability.POLL,
ChannelCapability.GROUP,
ChannelCapability.BROADCAST,
ChannelCapability.QR_LOGIN,
ChannelCapability.PAIRING,
ChannelCapability.SSE_POLLING,
]
)
inbound_rate_limit: int = 60
outbound_rate_limit: int = 30
description: str = "WhatsApp Bridge适配器通过Baileys协议连接WhatsApp"
def has_capability(self, capability: ChannelCapability) -> bool:
return capability in self.capabilities
def supports_mode(self, mode: ChannelMode) -> bool:
return mode in self.supported_modes
ChannelMeta = WhatsAppChannelMeta