> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/sdks/sdk-web/componentes/selphi-biometria-facial/eventos/extractionfinish.md).

# extractionFinish

## Detalles

Se emite al completar la extracción del patrón facial y generar la plantilla biométrica.

**Evento:** `extractionFinish`

**Tipo:** `FacephiSelphiWidgetCustomEvent<ExtractionFinishEvent>` | `CustomEvent<ExtractionFinishEvent>`

### Sintaxis

```typescript
selphi.addEventListener('extractionFinish', onExtractionFinish);
```

### Objeto recibido

El payload útil es de tipo `SelphiExtractionFinishDetail` y está en `event.detail.detail`:

* `eventType` (`string`): Tipo de evento emitido.
* `cameraId` (`string`): ID de la cámara utilizada.
* `extractionData` (`object`): Datos de la extracción.
  * `template` (`object`): Plantilla biométrica extraída.
    * `data` (`string` | `ArrayBuffer` | `Uint8Array`): Datos de la plantilla.
    * `templateFormat` (`string`): Formato de la plantilla extraída.
  * `templateRaw` (`object`): Plantilla en formato bruto.
    * `data` (`string` | `ArrayBuffer` | `Uint8Array`): Datos de la plantilla bruta.
    * `templateFormat` (`string`): Formato de la plantilla bruta.
  * `bestImage` (`object`): Mejor imagen capturada.
    * `data` (`string`): Imagen de mejor calidad.
    * `width` (`number`): Ancho de la imagen.
    * `height` (`number`): Alto de la imagen.
    * `imageFormat` (`string`): Formato de la imagen.
  * `bestImageTokenized` (`string`): Versión tokenizada de la mejor imagen.
  * `bestImageCropped` (`object`): Recorte facial de la mejor imagen.
    * `data` (`string`): Imagen recortada del rostro.
    * `width` (`number`): Ancho del recorte.
    * `height` (`number`): Alto del recorte.
    * `imageFormat` (`string`): Formato del recorte.
  * `images` (`ImageData[]` | `[]`): Imágenes adicionales del proceso (opcional).
  * `faceStabilizedStatus` (`number` | `undefined`): Estado de estabilización, si está habilitada.
  * `encryptedLivenessRaw` (`Blob` | `File` | `boolean` | `null`): Payload IAD cifrado (`false` si antispoof deshabilitado).
  * `encryptedLiveness` (`string` | `ArrayBuffer` | `boolean` | `null`): Versión tokenizada del liveness (`false` si antispoof deshabilitado).
  * `yaw` (`number`): Rotación horizontal de la cabeza.
  * `pitch` (`number`): Rotación vertical de la cabeza.
* `videoRecorded` (`Record<string, string>` | `null`): Vídeo grabado del proceso, si aplica.
* `livenessMoveResult` (`string`): Resultados tokenizados de liveness activo (opcional).
* `advancedTracking` (`Uint8Array` | `null`): Tracking avanzado codificado (opcional).

## Descripción

Contiene la plantilla biométrica, imágenes y datos opcionales de liveness y tracking.

### Consideraciones

El payload útil está en `event.detail.detail` (ver [formato de eventos](/sdks/sdk-web/componentes/selphi-biometria-facial/eventos.md#formato-de-los-eventos)).

Facephi recomienda usar `bestImage` y `templateRaw`, o `bestImageTokenized`, para los siguientes pasos en procesos de onboarding o autenticación.

Si `antispoof` está activo, envía `encryptedLivenessRaw` al endpoint IAD de Identity API (ver [antispoof](/sdks/sdk-web/componentes/selphi-biometria-facial/propiedades/antispoof.md)).

***

## Ejemplo

```jsx
<facephi-selphi-widget
    onExtractionFinish={(event) => {
      const { extractionData, advancedTracking } = event.detail.detail;
      console.log('Template:', extractionData.templateRaw);
      console.log('Best image:', extractionData.bestImage.data);
    }}
/>
```

```typescript
import { type SelphiExtractionFinishDetail } from '@facephi/sdk-web-wc';

selphi.addEventListener('extractionFinish', (event) => {
  const detail: SelphiExtractionFinishDetail = event.detail.detail;
});
```
