> ## Documentation Index
> Fetch the complete documentation index at: https://botmesh.afaya.com.co/llms.txt
> Use this file to discover all available pages before exploring further.

# InboundMessage<TRaw>

> Interface exported by @botmesh/core.

Defined in: [core/provider.ts:233](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L233)

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.

## Type Parameters

| Type Parameter | Default type |
| - | - |
|  `TRaw` | `unknown` |

## Properties

### ref

```ts theme={null}
ref: MessageRef;
```

Defined in: [core/provider.ts:240](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L240)

`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](https://botmesh.afaya.com.co/api/core/interfaces/IProvider.md).

***

### chat

```ts theme={null}
chat: ChatInfo;
```

Defined in: [core/provider.ts:241](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L241)

***

### senderInfo

```ts theme={null}
senderInfo: SenderInfo;
```

Defined in: [core/provider.ts:242](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L242)

***

### from

```ts theme={null}
from: string;
```

Defined in: [core/provider.ts:245](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L245)

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

***

### sender

```ts theme={null}
sender: string;
```

Defined in: [core/provider.ts:246](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L246)

***

### chatId

```ts theme={null}
chatId: string;
```

Defined in: [core/provider.ts:247](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L247)

***

### senderId

```ts theme={null}
senderId: string;
```

Defined in: [core/provider.ts:248](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L248)

***

### isGroup

```ts theme={null}
isGroup: boolean;
```

Defined in: [core/provider.ts:250](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L250)

***

### isBroadcast

```ts theme={null}
isBroadcast: boolean;
```

Defined in: [core/provider.ts:251](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L251)

***

### fromMe

```ts theme={null}
fromMe: boolean;
```

Defined in: [core/provider.ts:252](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L252)

***

### type

```ts theme={null}
type: MessageType;
```

Defined in: [core/provider.ts:254](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L254)

***

### body

```ts theme={null}
body: string;
```

Defined in: [core/provider.ts:255](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L255)

***

### timestamp

```ts theme={null}
timestamp: number;
```

Defined in: [core/provider.ts:261](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L261)

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

```ts theme={null}
mentions: string[];
```

Defined in: [core/provider.ts:263](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L263)

***

### quoted?

```ts theme={null}
quoted?: QuotedRef;
```

Defined in: [core/provider.ts:264](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L264)

***

### media?

```ts theme={null}
media?: MediaRef;
```

Defined in: [core/provider.ts:265](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L265)

***

### location?

```ts theme={null}
location?: InboundLocation;
```

Defined in: [core/provider.ts:270](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L270)

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

***

### raw

```ts theme={null}
raw: TRaw;
```

Defined in: [core/provider.ts:273](https://github.com/andresayac/botmesh/blob/main/packages/core/src/core/provider.ts#L273)

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


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.