# チャットマーカーを設定する

> Set chat markers to track message read status.

Chat Markers API を使用すると、チャットマーカーの作成を制御できます。チャットマーカーを使用すると、メッセージを既読としてマークできます。また、会話リスト API のデータも提供します。この機能は、チャンネルとダイレクトメッセージの両方で機能します。

会話の既読マーカーを設定するには、アプリケーションにサインインして [`VivoxService.Instance.SetMessageAsReadAsync()`](https://docs.unity3d.com/Packages/com.unity.services.vivox@latest/index.html?subfolder=/api/Unity.Services.Vivox.IVivoxService.html#Unity_Services_Vivox_IVivoxService_SetMessageAsReadAsync_Unity_Services_Vivox_VivoxMessage_System_Nullable_System_DateTime__) を使用します。そのメソッドで、それが属する会話の種類と、既読として設定するメッセージの `MessageId` を判定するのに、`VivoxMessage` 入力が使用されます。このメソッドにより、指定された `VivoxMessage` の `MessageId` で、関連する会話の既読チェックポイントが設定されます。

> **Note:**
>
> マーカーは URI やメッセージが存在しない場合にも作成されます。将来、この情報は会話 API を拡張するのに使用されます。

以下のコードは、チャットマーカーを設定する方法の例です。

```text
DateTime seenAt = DateTime.Now; // Optional timestamp for when the message was seen. Default is DateTime.Now converted to UTC.
var readMessage = await VivoxService.Instance.SetMessageAsReadAsync(message, seenAt);
```

`IsRead` プロパティが true に設定されている `VivoxMessage` が完了時に返されます。

`VivoxMessage` インスタンスは手動では作成できないため、[`VivoxService.Instance.SetMessageAsReadAsync()`](https://docs.unity3d.com/Packages/com.unity.services.vivox@latest/index.html?subfolder=/api/Unity.Services.Vivox.IVivoxService.html#Unity_Services_Vivox_IVivoxService_SetMessageAsReadAsync_Unity_Services_Vivox_VivoxMessage_System_Nullable_System_DateTime__) の入力はクライアントに `VivoxMessage` を提供する SDK 内のイベントまたはメソッドの 1 つに由来するものである必要があります。これらは、`VivoxService.Instance.SetMessageAsReadAsync()` の入力として使用できる `VivoxMessage` インスタンスを提供するイベントやメソッドの例です。

```text
// Events
ChannelMessageReceived;
ChannelMessageEdited;
ChannelMessageDeleted;
DirectedMessageReceived;
DirectedMessageDeleted;
DirectedMessageEdited;
```

```text
// Methods
GetChannelTextMessageHistoryAsync();
GetDirectTextMessageHistoryAsync();
```
