> For the complete documentation index, see [llms.txt](https://portal-integracao.intelbras.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://portal-integracao.intelbras.com.br/cameras-and-gravadores/integracao-api-cftvip-e-mibo/cameras-e-gravadores/gerenciamento-de-tarefa-inteligente.md).

# Gerenciamento de Tarefa Inteligente

Gerencie tarefas de análise inteligente: criar/remover, anexar resultados via multipart streaming (attachResult + heartbeat) e enviar imagens para análise (analysePushPictureFile).

## Dicas & Boas Práticas <a href="#dicas-and-boas-praticas" id="dicas-and-boas-praticas"></a>

* Cada tarefa deve possuir **apenas um tipo de fonte ativo** (`LocalStream`, `RemoteStream`, `VideoFile`, `PictureFile`, etc.).
* O uso de `attachResult` cria uma conexão persistente; certifique-se de que o cliente está preparado para lidar com streaming contínuo.
* O campo `Heartbeat` é essencial para evitar encerramentos inesperados da conexão.
* Para ambientes de produção, recomenda-se testar regras e filtros em cenários controlados antes da implantação definitiva.

***

### Tabela de Parâmetros

<table><thead><tr><th>Name</th><th>Type</th><th width="71.70367431640625">R/O</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td><strong>TaskID</strong></td><td>uint</td><td>R</td><td>Identificador da tarefa de análise.</td><td>1</td></tr><tr><td><strong>SID</strong></td><td>uint32</td><td>R</td><td>Identificador da assinatura (Subscription ID).</td><td>1234</td></tr><tr><td><strong>Files</strong></td><td>object[]</td><td>R</td><td>Lista de arquivos para análise. Apenas <strong>URL ou binário</strong> pode ser usado por vez.</td><td>—</td></tr><tr><td>Files.FileID</td><td>char[128]</td><td>R</td><td>Identificador do arquivo.</td><td><code>"file-1234"</code></td></tr><tr><td>Files.Url</td><td>char[512]</td><td>O</td><td>URL remota do arquivo com credenciais de acesso.</td><td><code>"ftp://user:pwd@host:21/file"</code></td></tr><tr><td>Files.Offset</td><td>uint</td><td>O</td><td>Offset em bytes no binário.</td><td>0</td></tr><tr><td>Files.Length</td><td>uint</td><td>O</td><td>Tamanho do arquivo em bytes.</td><td>256000</td></tr><tr><td>Files.XRayCustomInfo</td><td>object</td><td>O</td><td>Informações customizadas para equipamentos de raio-X.</td><td>—</td></tr><tr><td>Files.ModelPath</td><td>char[512]</td><td>O</td><td>Caminho do modelo de algoritmo.</td><td><code>"/aaa/bbb/ccc"</code></td></tr><tr><td><strong>Infos</strong></td><td>object[]</td><td>O</td><td>Informações de retorno da tarefa analisada.</td><td>—</td></tr><tr><td>Infos.TaskID</td><td>uint</td><td>O</td><td>ID da tarefa associada.</td><td>1</td></tr><tr><td>Infos.TaskUserData</td><td>char[512]</td><td>O</td><td>Dados personalizados da tarefa.</td><td><code>"asdvbtgrffg"</code></td></tr><tr><td>Infos.UserData</td><td>char[64]</td><td>O</td><td>Dados da fonte de vídeo, correspondendo ao <code>addPollingTask</code>.</td><td><code>"source01"</code></td></tr><tr><td>Infos.TaskCustomData</td><td>object</td><td>O</td><td>Dados customizados da tarefa.</td><td>—</td></tr><tr><td>Infos.UserDefineData</td><td>char[512]</td><td>O</td><td>Dados definidos pelo usuário.</td><td><code>"custom-data"</code></td></tr><tr><td>Infos.FileID</td><td>char[128]</td><td>O</td><td>ID do arquivo analisado.</td><td><code>"file-1234"</code></td></tr><tr><td>Infos.FileState</td><td>int</td><td>O</td><td>Status da análise do arquivo: 0-Analisando, 1-Concluído, 2-Falhou.</td><td>0</td></tr><tr><td>Infos.FileAnalyseMsg</td><td>char[256]</td><td>O</td><td>Mensagem adicional (normalmente erro).</td><td><code>"Decode Failed"</code></td></tr><tr><td>Infos.Events</td><td>object[]</td><td>O</td><td>Eventos detectados (ex: HumanTrait, TrafficJunction). Máx. 32.</td><td>—</td></tr><tr><td>Infos.Flag</td><td>uint32</td><td>O</td><td>Estado do evento: 1-Não processado, 2-Válido, 3-Inválido.</td><td>2</td></tr><tr><td>Infos.Image</td><td>object</td><td>O</td><td>Imagens associadas ao evento.</td><td>—</td></tr><tr><td>Image.Offset</td><td>uint</td><td>O</td><td>Offset da imagem no binário.</td><td>0</td></tr><tr><td>Image.Length</td><td>uint</td><td>O</td><td>Tamanho da imagem em bytes.</td><td>60000</td></tr><tr><td><strong>Subscribe.TaskID</strong></td><td>uint[64]</td><td>O</td><td>Lista de TaskIDs assinados. Vazio = todas as tarefas.</td><td><code>[1,2,3]</code></td></tr><tr><td><strong>Filters</strong></td><td>object</td><td>O</td><td>Filtros aplicados à assinatura.</td><td>—</td></tr><tr><td>Filters.Events</td><td>char[64][32]</td><td>O</td><td>Lista de eventos filtrados.</td><td><code>["FaceDetection"]</code></td></tr><tr><td>Filters.ImageDataFlag</td><td>uint32</td><td>O</td><td>0-com imagens (default), 1-sem imagens.</td><td>0</td></tr><tr><td>Filters.ImageDataType</td><td>char[16][16]</td><td>O</td><td>Tipos de imagem retornados.</td><td><code>["ObjectImage","SceneImage"]</code></td></tr><tr><td><strong>Heartbeat</strong></td><td>int</td><td>O</td><td>Keep-alive do servidor (1–60s).</td><td>5</td></tr><tr><td><strong>Task</strong></td><td>object</td><td>R</td><td>Objeto de configuração da tarefa.</td><td>—</td></tr><tr><td>Task.TaskUserData</td><td>char[512]</td><td>R</td><td>Dados da tarefa retornados intactos.</td><td><code>"asdvbtgrffg"</code></td></tr><tr><td>Task.SourceType</td><td>char[32]</td><td>R</td><td>Tipo da fonte de dados.</td><td><code>"RemoteStream"</code></td></tr><tr><td>Task.IsStart</td><td>bool</td><td>O</td><td>Inicia automaticamente após criação.</td><td>true</td></tr><tr><td><strong>LocalStream.Channel</strong></td><td>int</td><td>O</td><td>Canal do stream local.</td><td>0</td></tr><tr><td><strong>LocalStream.Subtype</strong></td><td>uint8</td><td>O</td><td>Tipo do stream: 0-Main, 1-Sub1, 2-Sub2.</td><td>0</td></tr><tr><td><strong>RemoteStream.Protocol</strong></td><td>char[32]</td><td>O</td><td>Protocolo do stream remoto.</td><td><code>"RTSP"</code></td></tr><tr><td>RemoteStream.Path</td><td>char[256]</td><td>O</td><td>URL do stream remoto.</td><td><code>"rtsp://ip/..."</code></td></tr><tr><td>RemoteStream.IP</td><td>char[64]</td><td>O</td><td>Endereço IP remoto.</td><td><code>"192.168.1.1"</code></td></tr><tr><td>RemoteStream.Port</td><td>uint16</td><td>O</td><td>Porta do stream.</td><td>554</td></tr><tr><td>RemoteStream.Username</td><td>char[64]</td><td>O</td><td>Usuário de acesso.</td><td><code>"admin"</code></td></tr><tr><td>RemoteStream.Password</td><td>char[64]</td><td>O</td><td>Senha de acesso.</td><td><code>"admin123"</code></td></tr><tr><td><strong>Global.CameraHeight</strong></td><td>float</td><td>O</td><td>Altura da câmera (m).</td><td>6.2</td></tr><tr><td>Global.GlobalDetectionEnable</td><td>bool</td><td>O</td><td>Habilita identificação global.</td><td>false</td></tr><tr><td><strong>Module.ExcludeRegion</strong></td><td>uint16[][20][2]</td><td>O</td><td>Áreas excluídas da detecção.</td><td><code>[ ... ]</code></td></tr><tr><td>Module.SizeFilter</td><td>object</td><td>O</td><td>Filtro de tamanho físico padrão.</td><td>—</td></tr><tr><td>Module.ObjectFilter</td><td>object[]</td><td>O</td><td>Filtro específico por tipo de objeto.</td><td>—</td></tr><tr><td><strong>Rules</strong></td><td>object[]</td><td>R</td><td>Regras de análise configuradas.</td><td>—</td></tr><tr><td>Rules.Class</td><td>char[16]</td><td>R</td><td>Categoria da análise.</td><td><code>"ObjectDetect"</code></td></tr><tr><td>Rules.Type</td><td>char[32]</td><td>R</td><td>Tipo da regra.</td><td><code>"ObjectDetect"</code></td></tr><tr><td>Rules.Name</td><td>char[128]</td><td>R</td><td>Nome da regra.</td><td><code>"GuardLine1"</code></td></tr><tr><td>Rules.ObjectTypes</td><td>char[16][16]</td><td>O</td><td>Tipos de objetos detectados.</td><td><code>["Human","Vehicle"]</code></td></tr><tr><td>Rules.Config</td><td>object</td><td>R</td><td>Configuração específica da regra.</td><td>—</td></tr><tr><td>Rules.ExperienceConfig</td><td>object[]</td><td>O</td><td>Configuração da base de experiência.</td><td>—</td></tr></tbody></table>

***

### Requisitos Técnicos

* Autenticação necessária (Basic/Digest/Token)
* Cliente deve suportar:
  * multipart streaming
  * leitura contínua
  * reconexão automática
* Suporte a RTSP
* Firmware mínimo suportado

***

### Adicionar Tarefa

**Tópicos:** Cria uma nova tarefa de análise de vídeo, imagem ou stream no dispositivo.\
A tarefa define **a fonte dos dados**, **regras de análise**, **regiões**, **filtros**, **configurações globais** e **parâmetros de mensageria**.

**Métodos: `POST`**` ``/cgi-bin/api/analyseTaskManager/add`

**Exemplo:**

```json
{ 
    "Task": { 
        "TaskUserData": "asdvbtgrffg", 
        "SourceType": "StreamSource", 
        "IsStart": true, 
        "LocalStream": { 
            "Channel": 0, 
            "Subtype": 0 
        }, 
        "RemoteStream": { 
            "Protocol": "RTSP", 
            "Path": 
"rtsp://<ip>/dss/monitor/param?cameraid=AGfQv8TwA1ALIPO29LA9L2&substream=1&tr
ackID=801", 
            "IP": "<ip>", 
            "Port": 554, 
            "UserName": "admin", 
            "Password": "admin123", 
            "Channel": 0, 
            "Subtype": 0, 
            "ChannelId": "1000254$1$0$110" 
        }, 
        "LocalVideoFile": { 
            "FileID": "file-1234", 
            "Path": "/xxxx/a.dav" 
        }, 
        "LocalPictureFile": { 
            "Files": [{ 
                "FileID": "file-1234", 
                "Path": "/xxxx/a.jpg" 
            },…{}] 
        }, 
        "RemoteVideoFile": { 
            "Protocol": "RTSP", 
            "VideoAnalysisProcess": 66, 
            "Path": "rtsp://192.168.1.1:554/xxxx/a.dav", 
            "IP": "192.168.1.1", 
            "Port": 554, 
            "Channel": 1, 
            "Subtype": 1, 
            "Username": "admin", 
            "Password": "123456", 
            "FileID": "file-1234", 
            "StartTime": "2010-05-25 00:00:00", 
            "EndTime": "2010-05-25 23:59:59" 
        }, 
        "OffLineVideoFile": { 
            "Protocol": "RTSP", 
            "FileSize": 1000, 
            "VideoAnalysisProcess": 66, 
            "Path": "rtsp://192.168.1.1:554/xxxx/a.dav", 
            "IP": "192.168.1.1", 
            "Port": 4000, 
            "Username": "admin", 
            "Password": "123456", 
            "FileID": "file-1234", 
            "isReportPTS": true 
        }, 
        "RemotePictureFile": { 
            "Protocol": "HTTP", 
            "IP": "192.168.1.1", 
            "Port": 80, 
            "Username": "admin", 
            "Password": "123456", 
            "Files": [{ 
                "FileID": "file-1234", 
                "Path": "http://192.168.1.1:80/xxxx/a.jpg" 
            },…{}] 
        }, 
        "Global": { 
            "Lanes": [{ 
                "Enable": true, 
                "Number": 0, 
                "LeftLine": , 
                "LeftLineExt": , 
                "LeftLineType": "WhiteSolid", 
                "RightLine": , 
                "RightLineExt":, 
                "RightLineType": "WhiteSolid" 
            },…{}], 
            "CalibrateArea": [{ 
                "Area": , 
                "Staffs": [{ 
                    "Type": "Horizontal", 
                    "Start": [0, 0], 
                    "End": [100, 100], 
                    "Length": 1.0 
                },…{}] 
            },…{}], 
            "GlobalDetectionEnable": false, 
            "ObjectArea": [{ 
                "Area": , 
                "Type": "SignalLight" 
            },…{}], 
            "CameraHeight": 6.2 
        }, 
        "Module": { 
            "ExcludeRegion": [, …, ], 
            "SizeFilter": SizeFilter, 
            "ObjectFilter": [{ 
                "ObjectType": "Vechicle", 
                "SizeFilter":, 
                "Enable": true 
            },…{}], 
            "DetectRegion":, 
            "SpecialDetectRegion": [{ 
                "Type": "Normal", 
                "DetectRegion": , 
                "ExcludeRegion": [, …, ] 
            },…{}] 
        }, 
        "Rules": [{ 
            "Class": "ObjectDetect", 
            "Type": "ObjectDetect", 
            "Name": "GuardLine1", 
            "ObjectTypes": ["Human", "Vehicle"], 
            "Config": { 
            }, 
            "ExperienceConfig": [{ 
                "ID": "1", 
                "Similarity": 67, 
                "IsPositive": true 
            },…{}] 
        },…{}], 
        "MQConfig": "", 
        "IsRepeat": 0 
    } 
} 
```

**Resposta**:

```json
{ 
    "TaskID": 1234, 
    "VirtualChannel": 1234, 
    "Path": "rtsp://192.168.1.1:554/xx" 
} 
```

### Anexar resultado da tarefa

**Tópicos:** Associa um cliente aos resultados de uma ou mais tarefas previamente criadas.

**Métodos: `POST`**` ``/cgi-bin/api/analyseTaskManager/attachResult`

**Exemplo:**

```json
{ 
    "TaskID": [ 1, 2, 3 ], 
    "Filters": { 
        "Events": [ "FaceDetection", … ], 
        "ImageDataFlag": 0, 
        "ImageDataType": ["ObjectImage", "SceneImage"], 
        "Heartbeat": 5 
    } 
}
```

**Resposta**:

```http
HTTP/1.1 200 OK 
Content-Type: multipart/x-mixed-replace; boundary=<boundary> 
Connection: close --<boundary> 
Content-Type: application/json 
Content-Length: <data length> 
{ 
    "SID": 1234U, 
    "Infos": [ 
        { 
            "TaskID": 1, 
            "TaskUserData": "asdvbtgrffg", 
            "UserData": "asdvbtgrffg", 
            "TaskCustomData": null, 
            "FileID": "file-1234", 
            "FileState": 0, 
            "FileAnalyseMsg": "Decode Failed, Download Failed", 
            "Events": [{}], 
            "Flag": 2, 
            "Image": { 
                "Offset": 0, 
                "Length": 60000 
            } 
        } 
    ] 
} --<boundary> 
Content-Type: text/plain 
Content-Length: 11 
Heartbeat --<boundary> 
… 
```

### Remover tarefa

**Tópicos:** Remove uma tarefa de análise previamente criada e libera todos os recursos associados a ela.

**Métodos: `POST`**` ``/cgi-bin/api/analyseTaskManager/remove`

**Exemplo:**

```json
{ 
    "TaskID": 1 
} 
```

**Resposta**:

```
{}
```

### Enviar arquivo de imagem

**Tópicos:** Envia imagens manualmente para análise em uma tarefa já criada.

**Métodos: `POST`**` ``/cgi-bin/api/analyseTaskManager/analysePushPictureFile`

**Exemplo:**

```json
{ 
    "TaskID": 1, 
    "Files": [{ 
        "FileID": "file-1234", 
        "Url": "ftp://username:password@hostname:port/filepath", 
        "Offset": 0, 
        "Length": 256000, 
        "XRayCustomInfo": , 
        "ModelPath": "/aaa/bbb/ccc" 
    },…{}] 
} --<boundary> 
Content-Type: image/jpeg 
Content-Length:<image size> 
<JPEG image data> --<boundary>
```

**Resposta**:

```
{}
```

***

Notas Finais:

* Cada tarefa deve possuir **apenas um tipo de fonte ativo** (`LocalStream`, `RemoteStream`, `VideoFile`, `PictureFile`, etc.).
* O uso de `attachResult` cria uma conexão persistente; certifique-se de que o cliente está preparado para lidar com streaming contínuo.
* O campo `Heartbeat` é essencial para evitar encerramentos inesperados da conexão.
* Para ambientes de produção, recomenda-se testar regras e filtros em cenários controlados antes da implantação definitiva.

***


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://portal-integracao.intelbras.com.br/cameras-and-gravadores/integracao-api-cftvip-e-mibo/cameras-e-gravadores/gerenciamento-de-tarefa-inteligente.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
