> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Personalização do widget

Os **widgets** permitem a integração instantânea do ElevenAgents a qualquer site. Você pode personalizar seu widget pela interface ou pelos nossos [SDKs do ElevenAgents](/docs/pt/eleven-api/resources/libraries) com tipagem segura para ter controle total sobre o estilo e o comportamento. As substituições do SDK têm prioridade sobre a personalização pela interface.
Nosso widget é multimodal e consegue processar texto e áudio.

> **Note**
>
> Você também pode recuperar a configuração do widget e o link compartilhável de um agente pelo Claude ou outro
> cliente MCP usando o [servidor MCP hospedado](/docs/pt/eleven-agents/operate/hosted-mcp).

## Configuração de modalidade

O widget oferece modos de entrada flexíveis para atender ao seu caso de uso. Configure essas opções no dashboard em **Canais** → **Widget** → **Interface**.

> **Note**
>
> A multimodalidade é totalmente compatível com nossos SDKs de cliente. Saiba mais
> [aqui](/docs/pt/eleven-api/resources/libraries).

![Opções de interface do widget](/docs/_fern-img/cf851dd7a29b4bd23f7d36097ebf57c0bfe1b6a7a3b35687ddea20d9920a93c0.webp)

**Modos disponíveis:**

* **Somente voz** (padrão): os usuários interagem apenas por fala.
* **Voz + texto**: os usuários podem alternar entre entrada por voz e texto durante as conversas.
* **Modo de chat**: as conversas começam no modo de chat (somente texto), sem recursos de voz, quando iniciadas com uma mensagem de texto.

Para saber mais sobre como usar o modo de chat (somente texto) pelos nossos SDKs, consulte nosso [guia do modo de chat](/docs/pt/eleven-agents/guides/chat-mode).

> **Note**
>
> Por padrão, o widget usa o modo somente voz. Ative a opção de entrada de texto para permitir interações
> multimodais ou ative o suporte ao modo somente texto para conversas exclusivamente por texto iniciadas
> por texto.

## Incorporar o widget

> **Note**
>
> No momento, os widgets exigem agentes públicos com a autenticação desativada. Verifique se ela está desativada na
> aba **Avançado** das configurações do agente.

Adicione este trecho de código à seção `<body>` do seu site. Coloque-o no arquivo principal `index.html` para disponibilizá-lo em todo o site:

**`Código de incorporação do widget`**

```html title="Código de incorporação do widget"
<elevenlabs-convai agent-id="<replace-with-agent_7101k5zvyjhmfg983brhmhkd98n6>"></elevenlabs-convai>
<script
  src="https://unpkg.com/@elevenlabs/convai-widget-embed"
  async
  type="text/javascript"
></script>
```

> **Info**
>
> Para maior segurança, defina os domínios permitidos na **Lista de permissões** do seu agente (localizada na
> aba **Segurança**). Isso restringe o acesso apenas aos hosts especificados.

## Atributos do widget

Este código básico de incorporação exibirá o widget com a configuração padrão definida no dashboard do agente.
O widget oferece vários atributos HTML para personalização adicional:

#### Configuração principal

```html
<elevenlabs-convai
  agent-id="agent_id"              // Required: Your agent ID
  signed-url="signed_url"          // Alternative to agent-id
  server-location="us"             // Optional: "us" or default
  variant="expanded"               // Optional: Widget display mode
  dismissible="true"               // Optional: Allow the user to minimize the widget
></elevenlabs-convai>
```

#### Personalização visual

```html
<elevenlabs-convai
  avatar-image-url="https://..." // Optional: Custom avatar image
  avatar-orb-color-1="#6DB035" // Optional: Orb gradient color 1
  avatar-orb-color-2="#F5CABB" // Optional: Orb gradient color 2
></elevenlabs-convai>
```

#### Personalização de texto

```html
<elevenlabs-convai
  action-text="Need assistance?" // Optional: CTA button text
  start-call-text="Begin conversation" // Optional: Start call button
  end-call-text="End call" // Optional: End call button
  expand-text="Open chat" // Optional: Expand widget text
  listening-text="Listening..." // Optional: Listening state
  speaking-text="Assistant speaking" // Optional: Speaking state
></elevenlabs-convai>
```

#### Renderização de Markdown

O widget renderiza Markdown nas respostas do agente. Por padrão, os links são exibidos como texto simples para evitar phishing.

```html
<elevenlabs-convai
  markdown-link-allowed-hosts="example.com"  // Domains where links are clickable (use "*" for all)
  markdown-link-include-www="true"           // Also allow www variants (default: true)
  markdown-link-allow-http="true"            // Allow http:// links (default: true)
  syntax-highlight-theme="dark"              // Code block theme: "dark", "light", or "auto"
></elevenlabs-convai>
```

## Configuração em tempo de execução

Mais dois atributos HTML podem ser usados para personalizar o comportamento do agente em tempo de execução. Esses dois recursos podem ser usados juntos, separadamente ou não serem usados.

### Variáveis dinâmicas

As variáveis dinâmicas permitem inserir valores em tempo de execução nas mensagens, nos prompts de sistema e nas ferramentas do seu agente.

```html
<elevenlabs-convai
  agent-id="agent_7101k5zvyjhmfg983brhmhkd98n6"
  dynamic-variables='{"user_name": "John", "account_type": "premium"}'
></elevenlabs-convai>
```

Todas as variáveis dinâmicas exigidas pelo agente precisam ser passadas no widget.

> **Info**
>
> Saiba mais em nosso [guia de variáveis dinâmicas](/docs/pt/eleven-agents/customization/personalization/dynamic-variables).

### Substituições

As substituições permitem personalizar totalmente o comportamento do agente em tempo de execução:

```html
<elevenlabs-convai
  agent-id="agent_7101k5zvyjhmfg983brhmhkd98n6"
  override-language="es"
  override-prompt="Custom system prompt for this user"
  override-first-message="Hi! How can I help you today?"
  override-voice-id="axXgspJ2msm3clMCkdW3"
></elevenlabs-convai>
```

As substituições podem ser ativadas para campos específicos e são totalmente opcionais.

> **Info**
>
> Saiba mais em nosso [guia de substituições](/docs/pt/eleven-agents/customization/personalization/overrides).

## Personalização visual

Personalize a aparência do widget, o conteúdo do texto, a seleção de idioma e muito mais.

#### Atualizar pelo dashboard

Abra seu agente no dashboard e acesse a aba **Widget** para personalizar a aparência, o avatar, o texto, os termos, o suporte a idiomas e muito mais.

![Personalização do widget](/docs/_fern-img/1f773d01a3c0925a47f11cf57153db23bc8bc03b93efe5d7085919886ae392cf.webp)

#### Atualizar pela CLI

#### Baixar a configuração do agente

```bash
elevenlabs agents pull --agent "<agent-name>"
```

#### Editar \`agent_configs/\<agent-name>.json\`

Defina os campos em `platform_settings.widget`. Por exemplo, para alterar as cores do orbe e o modo de feedback:

```json
{
  "platform_settings": {
    "widget": {
      "variant": "full",
      "placement": "bottom-right",
      "avatar": {
        "type": "orb",
        "color_1": "#6DB035",
        "color_2": "#F5CABB"
      },
      "feedback_mode": "during",
      "bg_color": "#ffffff",
      "text_color": "#000000",
      "btn_color": "#000000",
      "btn_text_color": "#ffffff"
    }
  }
}
```

#### Enviar suas alterações

```bash
elevenlabs agents push --agent "<agent-name>"
```

#### Atualizar pela API

```python
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.agents.update(
    agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
    platform_settings={
        "widget": {
            "variant": "full",
            "placement": "bottom-right",
            "avatar": {
                "type": "orb",
                "color_1": "#6DB035",
                "color_2": "#F5CABB",
            },
            "feedback_mode": "during",
        },
    },
)
```

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.agents.update("agent_7101k5zvyjhmfg983brhmhkd98n6", {
  platformSettings: {
    widget: {
      variant: "full",
      placement: "bottom-right",
      avatar: {
        type: "orb",
        color1: "#6DB035",
        color2: "#F5CABB",
      },
      feedbackMode: "during",
    },
  },
});
```

#### Aparência

Personalize as cores e formas do widget para combinar com a identidade da sua marca.

![Aparência do widget](/docs/_fern-files/elevenlabs.docs.buildwithfern.com/0c07c4569f8c5ad3b93933711c268601af411085aa7df1bb8e8ec547a01f2d8e/assets/images/conversational-ai/appearance.gif)

#### Feedback

Colete insights dos usuários para melhorar o desempenho do agente. Isso pode ser usado para ajustar a base de conhecimento e o prompt de sistema do seu agente.

![Feedback do widget](/docs/_fern-img/d7117399e23f06522b3112ff5c5ead23f66d3ea4700c011ff75e5dcd6cce875c.webp)

**Modos de coleta**

* **Nenhum**: desativa totalmente a coleta de feedback.
* **Durante a conversa**: permite feedback em tempo real durante as conversas. Metadados adicionais, como a resposta do agente que motivou o feedback, serão coletados para ajudar a identificar lacunas.
* **Após a conversa**: exibe uma única solicitação de feedback após a conversa.

> **Note**
>
> Envie feedback de forma programática pela [API](/docs/pt/eleven-agents/api-reference/conversations/create) ao usar implementações personalizadas de SDK.

#### Avatar

Configure o orbe de voz ou forneça seu próprio avatar.

![Personalização do orbe do widget](/docs/_fern-files/elevenlabs.docs.buildwithfern.com/7530f28ad124fc4533911eca4a2269ac1df19dffd2b6dab1e8b56d95cc1eb53c/assets/images/conversational-ai/avatar.gif)

**Opções disponíveis**

* **Orbe**: escolha duas cores de gradiente (por exemplo, #6DB035 e #F5CABB).
* **Link/imagem**: use uma imagem de avatar personalizada.

#### Texto exibido

Personalize todos os elementos de texto exibidos no widget, por exemplo, para modificar os rótulos dos botões.

![Conteúdo de texto do widget](/docs/_fern-files/elevenlabs.docs.buildwithfern.com/4ad66ecae5df29e587afcf6e1898ccb41ca197abdaa2fde3ada4b10d256f8b7c/assets/images/conversational-ai/textcontents.gif)

#### Termos

Exiba termos e condições personalizados antes da conversa.

![Configuração dos termos](/docs/_fern-img/58dfd0abf92615f85c7314e8baec1bf4dd401cc88a04f1096baf817f05edb39d.webp)

**Opções disponíveis**

* **Conteúdo dos termos**: use Markdown para formatar o texto da sua política.
* **Chave de armazenamento local**: uma chave (por exemplo, "terms_accepted") para evitar solicitar confirmação a usuários recorrentes.

**Uso**

Os termos são exibidos aos usuários em uma janela modal antes do início da chamada:

![Exibição dos termos](/docs/_fern-img/ca7511c60f1f6a29ee8bdd5c40083c73ef701f6cfd7ce1672161d73559a0c9b0.webp)

Os termos podem ser escritos em Markdown, permitindo que você:

* Adicione links para políticas externas
* Formate o texto com títulos e listas
* Inclua ênfase e estilização

Para mais ajuda com Markdown, consulte o [guia de ajuda do CommonMark](https://commonmark.org/help/).

> **Info**
>
> Depois de aceito, o status é armazenado localmente e o usuário não receberá outra solicitação em visitas
> posteriores.

#### Idioma

Ative o suporte a vários idiomas no widget.

![Idioma do widget](/docs/_fern-files/elevenlabs.docs.buildwithfern.com/049e871eb0f609b071599e405c3da76351ee4ea38e52400fc416194930c42327/assets/images/conversational-ai/language.gif)

> **Note**
>
> Para ativar a seleção de idioma, primeiro você precisa [adicionar outros idiomas](/docs/pt/eleven-agents/customization/voice/customization/language) ao seu agente.

#### Silenciamento

Permita que os usuários silenciem o áudio no widget.

![Botão de silenciar do widget](/docs/_fern-img/e6968e4ba057d98857fb41125bb57f92570ed7c49711ce423add1ea558de5919.webp)

Para adicionar o botão de silenciar, ative esta opção no cartão `interface` das configurações de
`widget` do agente.

![Botão de silenciar do widget](/docs/_fern-img/7db9df78926f3f3b3db7c286d4efc033356ec9b79cabe20670f65a52a624fae8.webp)

#### Página compartilhável

Personalize sua página pública de destino do widget (link compartilhável).

![Página compartilhável do widget](/docs/_fern-img/9d8b23aa816f4b7d727b3c0511ef91d046796bb57b8299382c53b6bcff746c50.webp)

**Opções disponíveis**

* **Descrição**: forneça um parágrafo curto explicando o objetivo da chamada.

---

## Implementação avançada

> **Note**
>
> Para uma personalização mais avançada, use os [SDKs do ElevenAgents SDKs](/docs/pt/eleven-api/resources/libraries) com uma aplicação Next.js, React ou Python.

### Ferramentas de cliente

As ferramentas de cliente permitem ampliar a funcionalidade do widget adicionando ouvintes de eventos. Isso permite que o widget execute ações como:

* Redirecionar o usuário para uma página específica
* Enviar um e-mail para sua equipe de suporte
* Redirecionar o usuário para uma URL externa

Para ver exemplos dessas ferramentas em ação, inicie uma chamada com o agente no canto inferior direito desta página. O [código-fonte está disponível no GitHub](https://github.com/elevenlabs/elevenlabs-dx/blob/main/fern/assets/scripts/widget.js) para consulta.

#### Criar uma ferramenta de cliente

Para criar sua primeira ferramenta de cliente, siga o [guia de ferramentas de cliente](/docs/pt/eleven-agents/customization/tools/client-tools).

#### Exemplo: criar a ferramenta \`redirectToExternalURL\`

![Configuração da ferramenta de cliente](/docs/_fern-img/d800b8c60cba2ab0a1d0aaaecc0652a678998a4161adaf10d83df51b928a7734.webp)

#### Exemplo de implementação

A seguir está um exemplo de como processar a ferramenta `redirectToExternalURL` acionada pelo widget no seu código JavaScript:

**`index.js`**

```javascript title="index.js"
document.addEventListener("DOMContentLoaded", () => {
  const widget = document.querySelector("elevenlabs-convai");

  if (widget) {
    // Listen for the widget's "call" event to trigger client-side tools
    widget.addEventListener("elevenlabs-convai:call", (event) => {
      event.detail.config.clientTools = {
        // Note: To use this example, the client tool called "redirectToExternalURL" (case-sensitive) must have been created with the configuration defined above.
        redirectToExternalURL: ({ url }) => {
          window.open(url, "_blank", "noopener,noreferrer");
        },
      };
    });
  }
});
```

> **Info**
>
> Explore nossos [SDKs](/docs/pt/eleven-api/resources/libraries) com tipagem segura para implementações em React, Next.js e Python.