Skip to content

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

参数

参数名类型必填说明
contentstring | null消息正文
extraDataRecord<string, unknown> | nullextra_data 对象
messageTypestring | null消息 type(text / sticker / transfer / forward_bundle 等)
typestring | nullimMessageHasForwardBundlePayload 的消息 type

返回值

类型说明
boolean是否存在至少一种可发送/可展示的载荷

工作原理

  1. 钱包消息transfer / red_envelope):校验 extra_data.wallet_transferred_envelope 含有效单号与金额。
  2. 表情sticker):正文为 http(s) URL,或 extra_data.sticker.url 有效。
  3. 非空正文forward_bundle 须通过 forwardBundlePayload 校验;其余 type 直接通过。
  4. 正文为空:依次检查 attachments url、im_display v2 块、合并转发、extra_data.ai_reply.state === 'aborted'

使用场景

  • API Gateway / Service 发送前拦截空消息
  • DTO 校验:imExtraDataHasAttachmentUrls 用于「正文或附件二选一」