# Send emoji reactions

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

> The code on this page works with either the **default UI** or the **custom UI**.

Send and receive emoji reactions and feedback with the SDK through the `IEmojiReactionController`.

```kotlin
val emojiReactionController = ZoomSDK.getInstance().inMeetingService.emojiReactionController
```

```java
IEmojiReactionController emojiReactionController = ZoomSDK.getInstance().getInMeetingService().getEmojiReactionController();
```

To send reactions, first check that reactions are supported in the current meeting. Then, use `sendEmojiReaction`.

```kotlin
if (emojiReactionController.isEmojiReactionEnabled) {
    emojiReactionController.sendEmojiReaction(SDKEmojiReactionType.Clap)
}
```

```java
if (emojiReactionController.isEmojiReactionEnabled()) {
    emojiReactionController.sendEmojiReaction(SDKEmojiReactionType.Clap);
}
```

## Supported emojis and feedback

The `SDKEmojiReactionType` enum currently supports only these unicode emojis.

-   `Clap`
-   `Thumbsup`
-   `Heart`
-   `Joy`
-   `Openmouth`
-   `Tada`

Emoji feedback is also supported, but is done through a separate method.

```kotlin
emojiReactionController.sendEmojiFeedback(MobileRTCEmojiFeedbackType.MobileRTCEmojiFeedbackType_Yes)
```

```java
emojiReactionController.sendEmojiFeedback(MobileRTCEmojiFeedbackType.MobileRTCEmojiFeedbackType_Yes);
```

These feedback types are supported.

-   `MobileRTCEmojiFeedbackType_Yes`
-   `MobileRTCEmojiFeedbackType_No`
-   `MobileRTCEmojiFeedbackType_SpeedUp`
-   `MobileRTCEmojiFeedbackType_SlowDown`
-   `MobileRTCEmojiFeedbackType_Away`

## Get reaction and feedback updates

To get updates related to emoji reaction and feedback, implement the `IEmojiReactionControllerEvent` interface
and pass it into the `IEmojiReactionController` using the `setEvent` method.

```kotlin
val emojiReactionControllerEvent = object : IEmojiReactionControllerEvent {
    override fun onEmojiReactionReceived(userId: Long, sdkEmojiReactionType: SDKEmojiReactionType?) {
        // Received emoji reaction from user with userId
    }

    override fun onEmojiReactionReceivedInWebinar(sdkEmojiReactionType: SDKEmojiReactionType?) {
        // Received emoji reaction in webinar
    }

    override fun onEmojiFeedbackReceived(userId: Long, mobileRTCEmojiFeedbackType: MobileRTCEmojiFeedbackType?) {
        // Received emoji feedback from user with userId
    }

    override fun onEmojiFeedbackCanceled(userId: Long) {
        // Emoji feedback canceled by user with userId
    }
}

emojiReactionController.setEvent(emojiReactionControllerEvent)

```

```java
IEmojiReactionControllerEvent emojiReactionControllerEvent = new IEmojiReactionControllerEvent() {

    @Override
    public void onEmojiReactionReceived(long userId, SDKEmojiReactionType sdkEmojiReactionType) {
        // Received emoji reaction from user with userId
    }

    @Override
    public void onEmojiReactionReceivedInWebinar(SDKEmojiReactionType sdkEmojiReactionType) {
        // Received emoji reaction in webinar
    }

    @Override
    public void onEmojiFeedbackReceived(long userId, MobileRTCEmojiFeedbackType mobileRTCEmojiFeedbackType) {
        // Received emoji feedback from user with userId
    }

    @Override
    public void onEmojiFeedbackCanceled(long userId) {
        // Emoji feedback canceled from user with userId
    }
};

emojiReactionController.setEvent(emojiReactionControllerEvent);
```

These callbacks are triggered when any participant sends a reaction or feedback in a meeting with the
user ID of the participant who sent or canceled the reaction or feedback. There is also a dedicated callback
for when webinar attendees anonymously send reactions.

---
