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

# Call recording transcript text action

> Perform an action based on a text selection on a call recording transcript

<img className="dark:hidden" width="720" height="440" noZoom src="https://mintcdn.com/attio/2EyaTyByKNPeSVcd/images/text-selection-transcript.png?fit=max&auto=format&n=2EyaTyByKNPeSVcd&q=85&s=b6291a66e6ba6fe498dcb760a1abf087" data-path="images/text-selection-transcript.png" />

<img className="hidden dark:block" width="720" height="440" noZoom src="https://mintcdn.com/attio/2EyaTyByKNPeSVcd/images/text-selection-transcript-dark.png?fit=max&auto=format&n=2EyaTyByKNPeSVcd&q=85&s=d528fb6107e01cfaad869bc4f7118e7b" data-path="images/text-selection-transcript-dark.png" />

Call recording transcript text actions are shown when a user selects text in a call recording transcript.

Add one by creating an extension folder under `src/app/extensions/` whose `extension.tsx` default-exports a `defineExtension` call with `type: "call-recording-transcript-text-action"`. See [App structure](./overview) for the discovery rules.

## Example

```tsx src/app/extensions/process-call-transcript/extension.tsx theme={"system"}
import {Extensions, showDialog} from "attio/client"

import {ProcessCallTranscriptDialog} from "./process-call-transcript-dialog"

export default Extensions.defineExtension({
  type: "call-recording-transcript-text-action",
  id: "process-call-transcript",
  label: "Process transcript",
  onTrigger: async ({transcript, url}) => {
    await showDialog({
      title: "Process call transcript",
      Dialog: ({hideDialog}) => {
        return <ProcessCallTranscriptDialog transcript={transcript} url={url} onDone={hideDialog} />
      },
    })
  },
})
```

## Arguments

<ParamField path="type" type="&#x22;call-recording-transcript-text-action&#x22;" required>
  Identifies this extension as an action on text selected in a call recording transcript.
</ParamField>

<ParamField path="id" type="string" required>
  The unique identifier for this call recording transcript selection action.

  It is only used internally; never shown to the user.
</ParamField>

<ParamField path="label" type="string" required>
  A human-readable label of the call recording transcript selection action that will be shown to the
  user when they make a text selection on a call recording transcript.
</ParamField>

<ParamField path="icon" type="string">
  An [`AttioIcon`](../icons) to display beside the label.

  <Tip>
    If no `icon` prop is provided, it will default to your app's icon that you set up in the
    [Developer dashboard](https://build.attio.com).
  </Tip>
</ParamField>

<ParamField path="onTrigger" type="async (selection: { transcript: Array<{ speaker: string text: string }>, url: string }) => Promise<void>">
  The function to run when the action is triggered. You'll likely want to [show a
  dialog](../dialogs/show-dialog) or run a [server function](../server/server-functions) here.

  The function will be given an object containing:

  * `transcript` – the portion of the transcript that was selected, with speaker information
  * `url` – a url linking directly back to the call recording transcript section selected
</ParamField>
