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

# Análises de dispositivos

> Leia as plataformas de envio estimadas, as observações de dispositivos dos números conectados e as listas atuais de dispositivos dos destinatários.

Ative as [Análises](/pt-br/console/analytics) antes de ler sinais agregados de
dispositivos. Use uma chave de API da organização ou uma credencial de projeto
com `sessions:read`.

## Leia observações de plataformas e dispositivos

```typescript theme={null}
const result = await client.analytics.get({
  projectId,
  sessionId: numberId,
  start: Date.now() - 24 * 60 * 60 * 1000,
  end: Date.now(),
});

for (const number of result.data.numbers) {
  const devices = number.deviceAnalytics;
  console.log(devices.customerPlatforms, devices.accountPlatforms);
  console.log(devices.inventory?.listCurrent);
  console.log(devices.inventory?.devices);
}
```

`customerPlatforms` conta as mensagens diretas recebidas pelo cliente de envio
estimado; `accountPlatforms` conta as mensagens diretas enviadas pela sua
conta. São contagens de mensagens, não de dispositivos nem de pessoas únicas.
Cada linha inclui `platform`, `messages` e `share`, que pode ser nulo.
Desconhecido continua no total. Um prefixo de ID de mensagem é uma estimativa
que pode ser falsificada, não um modelo ou sistema operacional verificado.

O `inventory` do número contém os índices observados dos dispositivos da
própria conta, a plataforma estimada, a classe informada, o horário da última
mensagem (que pode ser nulo) e a presença na lista (que pode ser nula). O
resumo combinado tem `inventory: null`; inspecione cada número separadamente.
`listCurrent: false` torna nulos `deviceCount` e o valor `listed` de cada
dispositivo. São retornadas até 25 observações de dispositivos da própria
conta. `truncated` indica uma enumeração incompleta. Um índice pode ser
reutilizado e não identifica um hardware permanente.

`measured`, `complete` e `observedBuckets` descrevem a cobertura da medição.
Medições ausentes têm totais nulos em vez de zeros inventados. Esses campos
também aparecem nos [destinos de análises](/pt-br/console/drains) e nas exportações
JSON completas.

## Cruze país e categorias de mensagem

```typescript theme={null}
const rows = result.data.summary?.conversationBreakdown.rows ?? [];
const selected = rows.filter((row) =>
  row.recipientCountry === "BR" &&
  row.messageType === "image" &&
  row.recipientDeviceCount === "two_plus_linked"
);

const totals = selected.reduce((sum, row) => ({
  completed: sum.completed + row.completedConversations,
  replied: sum.replied + row.repliedConversations,
  replyMs: sum.replyMs + row.replyLatencySumMs,
}), { completed: 0, replied: 0, replyMs: 0 });

const complete = result.data.summary?.conversationBreakdown.complete;
const replyRate = complete && totals.completed
  ? totals.replied / totals.completed : null;
const averageReplyMs = complete && totals.replied
  ? totals.replyMs / totals.replied : null;
```

As linhas agrupam em conjunto as conversas concluídas por horário de
conclusão, país do destinatário, tipo/tamanho/origem da primeira mensagem
enviada e faixa de quantidade de dispositivos vinculados. Filtrar as linhas
cruza esses valores sem deduzir cruzamentos a partir de totais independentes.
O país do destinatário descreve o país do número, não a localização nem a
nacionalidade da pessoa. As contagens de dispositivos vinculados excluem o
dispositivo principal; metadados de país ou de quantidade ausentes continuam
como Desconhecido. As contagens de mensagens por plataforma são observações
separadas e não podem ser cruzadas com o país a partir dessas linhas.

## Busque os dispositivos vinculados atuais de um destinatário

Use a API de Contatos existente com `contacts:read` e um número de
Dispositivos vinculados conectado. O ID do contato é um número de telefone com
o código do país, apenas com dígitos.

```typescript theme={null}
const devices = await client.messaging.contacts.devices(numberId, "5511999999999");
for (const device of devices.data.data) {
  console.log(device.device);
}
```

Isso faz uma consulta em tempo real. Não cria um diretório de dispositivos de
clientes retido nas Análises. Os índices de dispositivos retornados não
estabelecem plataforma, modelo, propriedade nem identidade de hardware. Mantenha
a retenção de dados por pessoa da sua aplicação separada dessas medições
agregadas das Análises.

## Leia a atividade dos dispositivos dos destinatários

```typescript theme={null}
const activity = result.data.summary?.recipientActivity;
const selected = activity?.rows.filter((row) =>
  row.recipientCountry === "BR" && row.recipientDeviceCount === "one_linked"
) ?? [];

for (const row of selected) {
  console.log(row.ts, row.deviceSource, row.incomingMessages);
  console.log(row.deliveryReceipts, row.readReceipts);
  console.log(row.quietGaps, row.quietGapMs, row.averageQuietGapMs);
}
```

`deviceSource` é `primary`, `linked` ou `unknown`. As faixas de quantidade de
dispositivos do destinatário são `primary_only`, `one_linked`,
`two_plus_linked` e `unknown`; as contagens de dispositivos vinculados excluem
o dispositivo principal. É preciso ter observado a lista completa; listas
desatualizadas ou invalidadas continuam como Desconhecido. O país descreve o
país de numeração inferido, não a localização física. Linhas de conversas mais
antigas sem esses campos continuam como Desconhecido.

As confirmações de entrega e de leitura são observações de dispositivo
separadas, incluindo as confirmações de tique cinza. A duração de um intervalo
de silêncio é o tempo entre sinais observados, não um estado offline nem de
energia. Some `quietGapMs` e divida pelo total de `quietGaps` para obter uma
média ponderada apenas quando a cobertura estiver completa. Nenhum inventário
ou identificador de dispositivos dos destinatários é retornado. Leia as
[definições de atividade dos destinatários](/pt-br/console/analytics#atividade-dos-destinatários-e-horário-comercial).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.