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

# TypeBot

> Configurar TypeBot e gerenciar sessões com o SDK TypeScript

Use `vzaps.typebots` para integrar fluxos TypeBot a uma instância VZaps.

Campos comuns em todas as chamadas:

| Campo           | Tipo     | Obrigatório | Descrição           |
| --------------- | -------- | ----------- | ------------------- |
| `instanceId`    | `string` | Sim         | ID da instância.    |
| `instanceToken` | `string` | Sim         | Token da instância. |

## `typebots.list(instanceId, options?)`

Lista os TypeBots configurados na instância.

```ts theme={null}
const typebots = await vzaps.typebots.list('VZ...', {
  instanceToken: 'instance-token',
});

console.dir(typebots, { depth: null });
```

**Retorno:** lista/array de configuracoes TypeBot da instancia (IDs, gatilhos, prioridade, etc.).

## `typebots.create(request)`

Cria uma configuração de TypeBot.

```ts theme={null}
const created = await vzaps.typebots.create({
  instanceId: 'VZ...',
  instanceToken: 'instance-token',
  enabled: true,
  description: 'Boas-vindas',
  typebotUrl: 'https://typebot.io',
  publicId: 'meu-flow-publico',
  triggerType: 'keyword',
  triggerValue: 'ola',
  priority: 10,
  expireInMinutes: 30,
  keywordFinish: 'sair',
  defaultDelayMs: 800,
  unknownMessage: 'Desculpe, não entendi. Pode reformular?',
  transcribeAudio: true,
  listenFromMe: false,
  stopBotFromMe: true,
  keepOpen: false,
  debounceMs: 1500,
  ignoreGroups: false,
});

console.dir(created, { depth: null });
```

**Retorno:** configuracao criada, incluindo `typebotId` para updates posteriores.

Campos principais do payload:

| Campo             | Tipo      | Obrigatório | Descrição                                                                   |
| ----------------- | --------- | ----------- | --------------------------------------------------------------------------- |
| `enabled`         | `boolean` | Sim         | Ativa ou desativa o TypeBot na avaliação de gatilhos.                       |
| `description`     | `string`  | Sim         | Nome para identificação.                                                    |
| `typebotUrl`      | `string`  | Sim         | URL base do TypeBot.                                                        |
| `publicId`        | `string`  | Sim         | Identificador público do flow.                                              |
| `triggerType`     | `string`  | Sim         | `all`, `keyword`, `contains`, `starts_with`, `regex`, `advanced` ou `none`. |
| `triggerValue`    | `string`  | Condicional | Texto ou regex do gatilho.                                                  |
| `triggerOperator` | `string`  | Condicional | Usado quando `triggerType` é `advanced`.                                    |
| `priority`        | `number`  | Sim         | Ordem de avaliação. Maior valor primeiro.                                   |
| `expireInMinutes` | `number`  | Sim         | Expira sessão após inatividade. `0` não expira.                             |

## `typebots.update(request)`

Atualiza um TypeBot existente. Informe `typebotId` retornado na criação ou listagem.

```ts theme={null}
await vzaps.typebots.update({
  instanceId: 'VZ...',
  instanceToken: 'instance-token',
  typebotId: '550e8400-e29b-41d4-a716-446655440000',
  enabled: true,
  description: 'Boas-vindas atualizado',
  triggerType: 'contains',
  triggerValue: 'ajuda',
  priority: 20,
  expireInMinutes: 60,
});
```

**Retorno:** configuracao atualizada ou `{ status: "ok" }`.

## `typebots.delete(request)`

Remove a configuração e as sessões associadas.

```ts theme={null}
await vzaps.typebots.delete({
  instanceId: 'VZ...',
  instanceToken: 'instance-token',
  typebotId: '550e8400-e29b-41d4-a716-446655440000',
});
```

**Retorno:** confirmacao de remocao (`{ status: "ok" }` ou mensagem equivalente).

## `typebots.startSession(request)`

Inicia sessão manualmente com um contato.

Por `publicId`:

```ts theme={null}
await vzaps.typebots.startSession({
  instanceId: 'VZ...',
  instanceToken: 'instance-token',
  publicId: 'support',
  phone: '5511999999999',
  pushName: 'Cliente',
  message: 'Quero atendimento',
});
```

**Retorno:** sessao iniciada (UUID da sessao, contato, status `opened`).

Por `typebotId`:

```ts theme={null}
await vzaps.typebots.startSession({
  instanceId: 'VZ...',
  instanceToken: 'instance-token',
  typebotId: '550e8400-e29b-41d4-a716-446655440000',
  phone: '5511999999999',
  message: 'Quero atendimento',
});
```

| Campo       | Tipo     | Obrigatório | Descrição                                                     |
| ----------- | -------- | ----------- | ------------------------------------------------------------- |
| `publicId`  | `string` | Condicional | Identificador público do flow. Use `publicId` ou `typebotId`. |
| `typebotId` | `string` | Condicional | ID interno do TypeBot.                                        |
| `phone`     | `string` | Sim         | Telefone do contato.                                          |
| `message`   | `string` | Sim         | Mensagem inicial enviada ao flow.                             |
| `pushName`  | `string` | Não         | Nome exibido do contato.                                      |

## `typebots.listSessions(instanceId, options?)`

Lista sessões ativas e encerradas.

```ts theme={null}
const sessions = await vzaps.typebots.listSessions('VZ...', {
  instanceToken: 'instance-token',
});

console.dir(sessions, { depth: null });
```

**Retorno:** lista de sessoes (`opened`, `paused`, `closed`) por contato/flow.

## `typebots.pauseSession(request)`

Pausa uma sessão aberta. Use o UUID da sessão em `session`.

```ts theme={null}
await vzaps.typebots.pauseSession({
  instanceId: 'VZ...',
  instanceToken: 'instance-token',
  session: '550e8400-e29b-41d4-a716-446655440001',
});
```

**Retorno:** sessao com status `paused`.

## `typebots.closeSession(request)`

Encerra uma sessão manualmente.

Por UUID da sessão:

```ts theme={null}
await vzaps.typebots.closeSession({
  instanceId: 'VZ...',
  instanceToken: 'instance-token',
  session: '550e8400-e29b-41d4-a716-446655440001',
});
```

**Retorno:** sessao encerrada (`closed`) ou confirmacao por telefone.

Por telefone do contato (encerra todas as sessões ativas desse número):

```ts theme={null}
await vzaps.typebots.closeSession({
  instanceId: 'VZ...',
  instanceToken: 'instance-token',
  session: '5511999999999',
});
```
