@botmesh/core - v2.0.0-alpha.2
    Preparing search index...

    Interface InboundMessage<TRaw>

    The single normalized inbound message. chatId/senderId are ALREADY stable and resolved — the stability contract (see IProvider) guarantees the same human yields the same senderId (and chat the same chatId) for the session, so ConversationRuntime.keyFor(${chatId}:${senderId}) is safe for ANY conforming provider. Field names from/sender/body/type/isGroup are duplicated to match RuntimeMessage/MessageContext so the object flows into the dispatcher/runtime unchanged.

    interface InboundMessage<TRaw = unknown> {
        ref: MessageRef;
        chat: ChatInfo;
        senderInfo: SenderInfo;
        from: string;
        sender: string;
        chatId: string;
        senderId: string;
        isGroup: boolean;
        isBroadcast: boolean;
        fromMe: boolean;
        type: MessageType;
        body: string;
        timestamp: number;
        mentions: string[];
        quoted?: QuotedRef;
        media?: MediaRef;
        location?: InboundLocation;
        raw: TRaw;
    }

    Type Parameters

    • TRaw = unknown
    Index

    ref.id MUST be unique per logical inbound message within its chat and stable across redelivery (webhook retry, reconnect replay), or '' when the transport cannot guarantee that. Core dedupes on chatId + ref.id (BotConfig.dedupe, on by default); see the INBOUND ID CONTRACT on IProvider.

    chat: ChatInfo
    senderInfo: SenderInfo
    from: string

    Flattened, keyFor-ready aliases (identical values to chat.id / senderInfo.id).

    sender: string
    chatId: string
    senderId: string
    isGroup: boolean
    isBroadcast: boolean
    fromMe: boolean
    body: string
    timestamp: number

    When the message was sent, in epoch milliseconds (every provider: transports that report seconds multiply by 1000; one that reports none uses the receive time, never 0). Checked by assertInboundContract from @botmesh/core/testing.

    mentions: string[]
    quoted?: QuotedRef
    media?: MediaRef
    location?: InboundLocation

    The shared location of a type: 'location' message, when the transport sends coordinates. body stays the place name/address (or '') for text matching.

    raw: TRaw

    Provider-native payload (proto.IWebMessageInfo, webhook JSON, gateway obj).