# Manage chat messages

<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

Read message details, delete messages, and manage host chat privileges. For sending and receiving messages, see [Core features](/docs/video-sdk/linux/chat/).

## Read message metadata

Each message you receive in `onChatNewMessageNotify` is an `IZoomVideoSDKChatMessage`. Use its accessors to read the message details.

```cpp
messageItem->getContent();      // The message text.
messageItem->getSendUser();     // The sender.
messageItem->getReceiveUser();  // The recipient of a private message.
messageItem->getMessageID();    // The unique ID of the message.
messageItem->getTimeStamp();    // The time the message was sent.
messageItem->isChatToAll();     // false for private messages.
messageItem->isSelfSend();      // true if the local user sent the message.
```

## Delete a chat message

To delete a message, pass its ID to `deleteChatMessage`. Check `canChatMessageBeDeleted` first, since whether a message can be deleted depends on the local user's privileges and the message age.

```cpp
IZoomVideoSDKChatHelper* pChatHelper = m_pVideoSDK->getChatHelper();

if (pChatHelper->canChatMessageBeDeleted(msgID)) {
    pChatHelper->deleteChatMessage(msgID);
}
```

### Listen for deletions

When a message is deleted, the SDK calls `onChatMsgDeleteNotification` with the deleted message's ID and who deleted it.

```cpp
void CExampleListener::onChatMsgDeleteNotification(IZoomVideoSDKChatHelper* pChatHelper, const zchar_t* msgID, ZoomVideoSDKChatMessageDeleteType deleteBy)
{
    // Remove the message identified by msgID from your UI.
}
```

`deleteBy` is one of the following values.

| Value                           | Meaning                                                              |
| ------------------------------- | -------------------------------------------------------------------- |
| `ZoomVideoSDKChatDelete_None`   | No deletion.                                                         |
| `ZoomVideoSDKChatDelete_BySelf` | The message was deleted by the user who sent it.                     |
| `ZoomVideoSDKChatDelete_ByHost` | The message was deleted by the host.                                 |
| `ZoomVideoSDKChatDelete_ByDlp`  | The message was removed automatically by data loss prevention (DLP). |

## Host control: chat privileges

The host can control who participants are allowed to chat with by calling `changeChatPrivilege`. Read the current privilege with `getChatPrivilege`.

```cpp
IZoomVideoSDKChatHelper* pChatHelper = m_pVideoSDK->getChatHelper();

// Allow participants to chat publicly only.
pChatHelper->changeChatPrivilege(ZoomVideoSDKChatPrivilege_Publicly);
```

`changeChatPrivilege` takes one of the following values.

| Value                                              | Meaning                                                             |
| -------------------------------------------------- | ------------------------------------------------------------------- |
| `ZoomVideoSDKChatPrivilege_Unknown`                | The privilege is not known.                                         |
| `ZoomVideoSDKChatPrivilege_Publicly_And_Privately` | Participants can chat with everyone and privately with individuals. |
| `ZoomVideoSDKChatPrivilege_No_One`                 | Participants cannot chat with anyone.                               |
| `ZoomVideoSDKChatPrivilege_Publicly`               | Participants can chat with everyone, but not privately.             |

To respond when the privilege changes, implement `onChatPrivilegeChanged`.

```cpp
void CExampleListener::onChatPrivilegeChanged(IZoomVideoSDKChatHelper* pChatHelper, ZoomVideoSDKChatPrivilegeType privilege)
{
    // Update your chat UI to reflect the new privilege.
}
```
