> For the complete documentation index, see [llms.txt](https://docs.caf.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.caf.io/caf-sdk/caf-sdk-pt-br/web-javascript/getting-started/passivefaceliveness.md).

# PassiveFaceLiveness (Obsoleto)

## **Importando SDK** <a href="#ec6hruocgdfc" id="ec6hruocgdfc"></a>

Para usar o PassiveFaceLiveness, você pode importar remotamente o `.js` arquivo ou baixá-lo localmente.

## **Remotamente** <a href="#vbdis2v796qu" id="vbdis2v796qu"></a>

Inclua o `.js` arquivo diretamente da CDN:

```html
<script
  src="https://repo.combateafraude.com/javascript/release/passive-face-liveness/<VERSION>.umd.js"
  type="text/javascript"
></script>
```

Você pode obter a classe do SDK usando o seguinte código:

```javascript
const { PassiveFaceLivenessSdk } =
  window["@combateafraude/passive-face-liveness"];
```

## **Localmente** <a href="#tt8trg6eu4c" id="tt8trg6eu4c"></a>

Baixe o `.js` arquivo e importe-o como um módulo ES6:

```javascript
import { PassiveFaceLivenessSdk } from "../assets/js/passive-face-liveness-<VERSION>.js";
```

## **Construção** <a href="#qucx2l4rkel" id="qucx2l4rkel"></a>

No construtor, o SDK recebe um único parâmetro com as configurações:

```javascript
const sdk = new PassiveFaceLivenessSdk(options);
```

## Parâmetros suportados <a href="#m3han9t9fipv" id="m3han9t9fipv"></a>

| Parâmetro                                                                                                                                                                                                                        | Obrigatório?                                                                          |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| <p><a href="https://github.com/combateafraude/public-docs/blob/docs-sdks/web-javascript/getting-started/broken-reference/README.md"><strong><code>token</code></strong></a></p><p>Token de autenticação para consumir o SDK.</p> | Sim.                                                                                  |
| <p><strong><code>language</code></strong></p><p>Idioma padrão das mensagens, valores válidos: en\_US, en\_BR, es\_MX.</p>                                                                                                        | Não. O padrão é **`pt_BR`**                                                           |
| <p><strong><code>environmentSettings.disableDesktopExecution</code></strong></p><p>Indica se a execução em desktops deve ser bloqueada.</p>                                                                                      | Não. O padrão é **`false`**                                                           |
| <p><strong><code>environmentSettings.disableVisibilityChangeSecurity</code></strong></p><p>Desativa o aprimoramento de segurança responsável por fechar o SDK quando o usuário troca de aba no navegador.</p>                    | Não. O padrão é **`false`**                                                           |
| <p><strong><code>environmentSettings.disableFaceDetectionSecurity</code></strong></p><p>Desativa o aprimoramento de segurança responsável por fechar o SDK quando o usuário afasta o rosto da máscara na captura automática.</p> | Não. O padrão é **`false`**                                                           |
| <p><strong><code>capturerSettings.disableAdvancedCapturing</code></strong></p><p>Indica se a captura avançada deve ser desativada\*.</p>                                                                                         | Não. O padrão é **`false`**                                                           |
| <p><strong><code>capturerSettings.disableVideoCapturing</code></strong></p><p>Flag indicando se a captura de vídeo deve ser desativada\*.</p>                                                                                    | Não. O padrão é **`false`**                                                           |
| <p><strong><code>appearenceSettings.hideSwitchCameraButton</code></strong></p><p>ocultar o botão de trocar câmera.</p>                                                                                                           | Não                                                                                   |
| <p><strong><code>appearenceSettings.captureButtonIcon</code></strong></p><p>A personalização do ícone de captura aceita valores como URL de imagem ou base64 de SVGs.</p>                                                        | Não                                                                                   |
| <p><strong><code>appearenceSettings.captureIconSize</code></strong></p><p>Personalização do tamanho do ícone para o campo captureButtonIcon</p>                                                                                  | Não                                                                                   |
| <p><strong><code>appearenceSettings.captureButtonColor</code></strong></p><p>Personalização da cor padrão do botão de captura de imagem.</p>                                                                                     | Não                                                                                   |
| <p><strong><code>appearenceSettings.switchButtonIcon</code></strong></p><p>A personalização do ícone de troca de câmera aceita valores como URL de imagem ou base64 de SVGs.</p>                                                 | Não                                                                                   |
| <p><strong><code>appearenceSettings.switchIconSize</code></strong></p><p>Personalização do tamanho do ícone para o campo switchButtonIcon.</p>                                                                                   | Não                                                                                   |
| <p><strong><code>appearenceSettings.switchIconColor</code></strong></p><p>Personalização da cor do ícone padrão de troca de câmera.</p>                                                                                          | Não                                                                                   |
| <p><strong><code>appearenceSettings.fontFamily</code></strong></p><p>Altera a fonte de todos os elementos contidos no SDK.</p>                                                                                                   | Não. O padrão é herdado da página                                                     |
| <p><strong><code>textSettings.messages.processMessage</code></strong></p><p>Personalização da mensagem de processamento da imagem.</p>                                                                                           | Não. O padrão é `"Processando sua foto, aguarde um momento"`                          |
| <p><strong><code>textSettings.messages.isNotAliveMessage</code></strong></p><p>Personalização da mensagem quando o parâmetro isAlive retorna como false.</p>                                                                     | Não. O padrão é `"Não conseguimos capturar seu rosto :( Por favor, tente novamente."` |
| <p><strong><code>textSettings.messages.captureFailedMessage</code></strong></p><p>Personalização da mensagem de falha na captura.</p>                                                                                            | Não. O padrão é `"Ops! Tivemos um problema ao processar sua imagem."`                 |

\* A captura avançada consiste em usar APIs mais complexas e não tão estáveis nos navegadores que oferecem suporte a elas (por exemplo, [ImageCapture](https://developer.mozilla.org/pt-BR/docs/Web/API/ImageCapture))

### **Exemplo** <a href="#lul8krq92ug" id="lul8krq92ug"></a>

```javascript
const sdk = new PassiveFaceLivenessSdk({
  token: `my-sdk-token`,

  analyticsSettings: {
    disableAnalytics: false,
    trackingId: "",
    trackingInfo: "",
  },

  environmentSettings: {
    disableDesktopExecution: false,
    disableVisibilityChangeSecurity: true,
    disableFaceDetectionSecurity: true,
  },

  capturerSettings: {
    disableAdvancedCapturing: true,
    disableVideoCapturing: true,
  },

  appearenceSettings: {
    captureButtonIcon: "",
    captureIconSize: "",
    captureButtonColor: "",
    switchButtonIcon: "",
    switchIconSize: "",
    switchIconColor: "",
    fontFamily: "",
  },

  textSettings: {
    title: "",
    messages: {
      processMessage: "",
      isNotAliveMessage: "",
      captureFailedMessage: "",
    },
  },
});
```

### **CaptureStage** <a href="#id-92kmg2xacqxa" id="id-92kmg2xacqxa"></a>

CaptureStage permite que o cliente configure as etapas. Para isso, oferecemos o objeto CaptureStage, onde você pode definir os seguintes parâmetros:

| **Parâmetro**                                                                                                                                                                                                                                                                                                                         |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><strong><code>mode</code></strong></p><p>Modo de captura desejado. Pode ser usado <code>manualmente</code> ou <code>automaticamente</code>. Na captura manual, um botão será habilitado para que o usuário realize a captura.</p>                                                                                                  |
| <p><strong><code>tentativas</code></strong></p><p>O número de tentativas do estágio atual. Se for o único estágio, o valor <code>0</code> deve ser passado.</p>                                                                                                                                                                       |
| <p><strong><code>duração</code></strong></p><p>Tempo de duração do estágio atual. Se houver mais de um estágio definido, é possível definir o tempo total de cada estágio e, quando o tempo total for atingido, o estágio avançará para o próximo. Defina como <code>0</code> se você não quiser definir um tempo para o estágio.</p> |

### **Exemplo de CaptureStage**

```javascript
const stages = [
  { mode: "automatic", attempts: 3, duration: 60 },
  { mode: "manual", attempts: 0, duration: 0 },
];
```

***

Os objetos são definidos para cada etapa; de acordo com um exemplo, o SDK começará com a captura automática, onde haverá 3 tentativas de captura ou um limite de tempo de 60 segundos para cada tentativa. Após exceder o tempo ou as tentativas, o SDK passará automaticamente para a próxima etapa, onde a captura manual será realizada sem limites de tempo ou tentativas, para que o usuário possa fazer quantas tentativas quiser, sem limites de tempo.

### **Limitar tentativas do SDK** <a href="#q9gx4v6b5jyt" id="q9gx4v6b5jyt"></a>

Por meio do `totalAttempts` parâmetro em que você pode definir o número total de tentativas para executar o SDK; ao atingir o valor limite, o SDK será encerrado automaticamente.

#### **Exemplo de totalAttempts**

```javascript
await sdk.capture(sdkContainer, stages, { personData, totalAttempts: 3 });
```

***

### **Inicialização** <a href="#e8bl0o5hv2i4" id="e8bl0o5hv2i4"></a>

### `initialize(): Promise<void>` <a href="#tdlbz5hosfd" id="tdlbz5hosfd"></a>

O SDK possui um método de inicialização isolado, para permitir maior controle sobre quando ele ocorre.

Durante esse processo, o SDK inicializará suas variáveis internas e baixará os recursos necessários para sua execução.

\[!]Você deve chamar este método antes de usar outros métodos do SDK.

\[!]Inicializar o SDK pode levar alguns segundos. Recomendamos que você chame essa função o mais cedo possível no seu fluxo para que a abertura do SDK seja suave para o usuário.

#### **Exemplo** <a href="#j4h8eo4ng95u" id="j4h8eo4ng95u"></a>

```javascript
await sdk.initialize();
```

### **Utilização** <a href="#id-1zo6vxxf782" id="id-1zo6vxxf782"></a>

## **Abertura e captura de selfies** <a href="#s3y7w2l7a01m" id="s3y7w2l7a01m"></a>

### `capture(container: HTMLElement, stages, {personData?: LivenessPersonData, totalAttempts?: Number}): Promise<Result>` <a href="#id-1l7spulz52hu" id="id-1l7spulz52hu"></a>

O método usado para carregar o SDK na tela e realizar a captura de selfie.

Ele inicializará o *stream* (solicitando permissões, se necessário) e o carregará no contêiner.

#### &#x20;<a href="#id-6um1unzdgbz4" id="id-6um1unzdgbz4"></a>

### Parâmetros <a href="#id-1g9l1uslwr9z" id="id-1g9l1uslwr9z"></a>

| **Parâmetro**                                                                                                                                   | **Tipo** |
| ----------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| <p><strong><code>personData.cpf</code></strong></p><p>Esta variável foi descontinuada, use personId</p>                                         | `string` |
| <p><strong><code>personData.name</code></strong></p><p>Nome do usuário que está realizando a autenticação (opcional).</p>                       | `string` |
| <p><strong><code>personData.personId</code></strong></p><p>Número de documento usado como identificador único para cada usuário (opcional).</p> | `string` |

¹ Se não for especificado, a captura automática será usada.

² Se não for especificado, é usado o valor padrão de 30 segundos.

### **Exemplo** <a href="#rb9d2o76lxbw" id="rb9d2o76lxbw"></a>

```javascript
// div ou outro elemento no DOM
const sdkContainer = document.getElementById("sdk-displayer");
const personData = { personId: "user-identifier", name: "user-name" };
await sdk.capture(sdkContainer, stages, { personData, totalAttempts });
```

### **Retornar** <a href="#exv8broymq71" id="exv8broymq71"></a>

O retorno consiste em um objeto com os seguintes campos:

| **Campo**  | **Tipo** | **Descrição**                                        |
| ---------- | -------- | ---------------------------------------------------- |
| `imageUrl` | `string` | Link temporário para a imagem, gerado pela nossa API |
| `imageKey` | `string` | Chave do objeto                                      |
| `blob`     | `Blob`   | Blob da imagem capturada                             |

### **Exemplo** <a href="#li5quwhp57l9" id="li5quwhp57l9"></a>

```javascript
const result = await sdk.capture(sdkContainer, stages, {
  personData,
  totalAttempts,
});
// { imageUrl: '[link da imagem]', imageKey: '[chave da imagem]', blob: Blob
```

***

## **Fechar o SDK** <a href="#id-8euaozxxp6bw" id="id-8euaozxxp6bw"></a>

### `close(): Promise<void>` <a href="#nj8efubqe3g2" id="nj8efubqe3g2"></a>

O método usado para remover o SDK do canvas, removendo os elementos visuais do SDK do DOM.

## **Desinicializar o SDK** <a href="#otwhtgpzdv3a" id="otwhtgpzdv3a"></a>

### `dispose(): Promise<void>` <a href="#yuh6kpn5iwwq" id="yuh6kpn5iwwq"></a>

Método usado para remover o SDK da tela.

Desinicializará o vídeo *stream* e limpará as variáveis internas do SDK

### **Exemplo completo** <a href="#sunlk9v2ojm3" id="sunlk9v2ojm3"></a>

Em breve.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.caf.io/caf-sdk/caf-sdk-pt-br/web-javascript/getting-started/passivefaceliveness.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
