imSendPayloadValidation
IM 消息发送前的可展示载荷校验:正文、附件、im_display、合并转发、钱包消息、智能体中断占位等。
函数签名
typescript
function imExtraDataHasSticker(
extraData?: Record<string, unknown> | null,
): boolean
function imExtraDataHasAttachmentUrls(
extraData?: Record<string, unknown> | null,
): boolean
function imExtraDataHasDisplaySpec(
extraData?: Record<string, unknown> | null,
): boolean
function imMessageHasForwardBundlePayload(
type: string | undefined | null,
content: string | undefined | null,
extraData?: Record<string, unknown> | null,
): boolean
function imExtraDataHasWalletMessagePayload(
extraData?: Record<string, unknown> | null,
messageType?: string | null,
): boolean
function imSendHasRenderablePayload(
content: string | undefined | null,
extraData?: Record<string, unknown> | null,
messageType?: string | null,
): boolean参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
content | string | null | 否 | 消息正文 |
extraData | Record<string, unknown> | null | 否 | extra_data 对象 |
messageType | string | null | 否 | 消息 type(text / sticker / transfer / forward_bundle 等) |
type | string | null | 否 | imMessageHasForwardBundlePayload 的消息 type |
返回值
| 类型 | 说明 |
|---|---|
boolean | 是否存在至少一种可发送/可展示的载荷 |
工作原理
- 钱包消息(
transfer/red_envelope):校验extra_data.wallet_transfer或red_envelope含有效单号与金额。 - 表情(
sticker):正文为 http(s) URL,或extra_data.sticker.url有效。 - 非空正文:
forward_bundle须通过forwardBundlePayload校验;其余 type 直接通过。 - 正文为空:依次检查
attachmentsurl、im_displayv2 块、合并转发、extra_data.ai_reply.state === 'aborted'。
使用场景
- API Gateway / Service 发送前拦截空消息
- DTO 校验:
imExtraDataHasAttachmentUrls用于「正文或附件二选一」