# Send emoji reactions > 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. ---