> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ravenna.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Emoji actions

> Use Microsoft Teams reactions to trigger Ravenna actions like resolving, closing, reopening, and assigning tickets without leaving the conversation.

Emoji actions bring ticket management directly into Microsoft Teams using reactions. React to a ticketed message with one of the supported emojis to resolve, close, reopen, or assign the linked ticket, without opening Ravenna.

<Info>
  Reactions are processed when added. Removing a reaction is a no-op. There is no "undo" by removing the emoji.
</Info>

<View title="Human" icon="user">
  ## Default reaction actions

  Ravenna ships with the following five reactions on Teams. The set covers the most common ticket actions. Per-channel customization is not yet available on Teams.

  | Reaction | Action                                        |
  | -------- | --------------------------------------------- |
  | ✅        | Resolve the linked ticket                     |
  | ❌        | Close the linked ticket                       |
  | 📖       | Reopen the linked ticket                      |
  | 👀       | Assign the linked ticket to yourself          |
  | 👎       | Stop automated agent responses on this ticket |

  <Note>
    Teams delivers reactions in two shapes depending on client version: the modern emoji picker (the unicode emoji itself) and a legacy six-reaction set (`like`, `heart`, `laugh`, `surprised`, `sad`, `angry`). Ravenna accepts both shapes, but only five of the six legacy reactions map to an action (`heart`, `angry`, `laugh`, `like`, `sad`). The legacy `surprised` reaction has no mapping, so it is ignored.
  </Note>

  ***

  ## How it works

  <Steps>
    <Step title="React to a ticketed message">
      Open the channel thread or chat where the ticket was created and add one of the supported reactions to a message in the thread.
    </Step>

    <Step title="Ravenna resolves the target ticket">
      Ravenna finds the ticket linked to the reacted message. If you react to a specific reply, that reply's ticket is used. Otherwise the thread's primary ticket is used.
    </Step>

    <Step title="The action runs immediately">
      The corresponding action (resolve, close, reopen, assign, or stop automation) is applied to the ticket and synced to every other mirror.
    </Step>
  </Steps>

  <Info>
    Reactions only do something if the message (or its parent thread) is linked to a Ravenna ticket. Reactions on unrelated messages are ignored.
  </Info>
</View>

<View title="Agent" icon="bot">
  ## Mental model

  Teams reactions are a lightweight, no-context-switch way to drive the most common ticket actions. They are intentionally restricted to a small, fixed set of actions that have safe semantics when invoked from a chat surface.

  A reaction is mapped to a Ravenna `ReactionAction` via a static table. The table covers both modern unicode reactions and the Bot Framework's legacy six-reaction set.

  ***

  ## Target ticket resolution

  When a reaction is received, Ravenna picks the target ticket using the following order:

  1. If the reaction's `replyToId` matches a `ChatMessage` in the conversation, use the ticket linked to that specific reply. This lets reactions on individual replies in a long thread target the correct ticket.
  2. Otherwise, fall back to the conversation's primary linked ticket.

  If neither lookup finds a ticket, the reaction is ignored.

  ***

  ## Default reaction map

  | Reaction | Source  | Action                   |
  | -------- | ------- | ------------------------ |
  | ✅        | unicode | `ResolveTicket`          |
  | ❌        | unicode | `CloseTicket`            |
  | 📖       | unicode | `ReopenTicket`           |
  | 👀       | unicode | `AssignToMe`             |
  | 👎       | unicode | `StopAutomatedResponses` |
  | `heart`  | legacy  | `ResolveTicket`          |
  | `angry`  | legacy  | `CloseTicket`            |
  | `laugh`  | legacy  | `ReopenTicket`           |
  | `like`   | legacy  | `AssignToMe`             |
  | `sad`    | legacy  | `StopAutomatedResponses` |

  ***

  ## Constraints and gotchas

  * Reaction **removal** is a no-op. The v1 action set does not include any reversible actions (e.g. unfollow).
  * The reactor must be a provisioned Ravenna user. If the reactor has never interacted with the bot, Ravenna provisions them on the fly via Microsoft Graph before applying the action.
  * The mapping is currently a **static default**. A per-workspace configurable mapping is planned but not yet shipped. The five reactions above are the entire set.
  * Reactions never **create** tickets in v1. They only act on existing ones. To create a ticket, send a message in a connected request channel.
  * A few reaction actions are intentionally **not** available on Teams yet:
    * 🎫 manual-mode ticket creation
    * 🏷️ tag-from-reaction
    * ❗ priority changes
    * `:lock:` private-note conversion
  * Outbound emoji reflection (where Ravenna posts a status reaction back on the source message, for example ✅ when the ticket is resolved) is not yet available on Teams. Ticket state changes update the linked Adaptive Card in place instead.
</View>
