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

# Device Connected

> Event perangkat/channel tersedia

## Pengenalan

Event `device.connected` dipicu ketika perangkat atau channel komunikasi menjadi terhubung dan tersedia untuk digunakan.

<Callout>
  Gunakan event ini untuk memonitor uptime dan ketersediaan channel.
</Callout>

## Trigger Event

```
Perangkat terhubung
       ↓
   Platform CSKU AI
       ↓
   Trigger webhook device.connected
       ↓
   HTTP POST → URL Webhook Anda
```

## Struktur Payload

```json theme={null}
{
  "event": "device.connected",
  "timestamp": 1738056000,
  "device": {
    "id": "device_abc123",
    "name": "WhatsApp Business Device",
    "channel": {
      "id": "channel_merchant_id",
      "name": "WhatsApp Business",
      "engine": "wa"
    },
    "bisnis": {
      "id": "biz_123",
      "name": "My Business"
    },
    "user": {
      "id": "merchant_456",
      "name": "Merchant Name"
    }
  },
  "status": "connected"
}
```

## Deskripsi Field

| Field                   | Tipe    | Deskripsi                            |
| ----------------------- | ------- | ------------------------------------ |
| `event`                 | string  | Identifier event: `device.connected` |
| `timestamp`             | integer | Unix timestamp saat event terjadi    |
| `device.id`             | string  | Identifier perangkat unik            |
| `device.name`           | string  | Nama tampilan perangkat              |
| `device.channel.id`     | string  | Identifier channel                   |
| `device.channel.name`   | string  | Nama channel                         |
| `device.channel.engine` | string  | Tipe engine channel                  |
| `device.bisnis.id`      | string  | ID Bisnis                            |
| `device.bisnis.name`    | string  | Nama bisnis                          |
| `device.user.id`        | string  | ID user merchant                     |
| `device.user.name`      | string  | Nama merchant                        |
| `status`                | string  | Status perangkat: `connected`        |

## Use Case

<AccordionGroup>
  <Accordion title="Monitoring Uptime">
    Lacak ketersediaan channel dan downtime.
  </Accordion>

  <Accordion title="Sistem Alert">
    Notifikasi tim ketika perangkat kembali online setelah offline.
  </Accordion>

  <Accordion title="Perencanaan Kapasitas">
    Monitor channel mana yang tersedia untuk menangani pesan pelanggan.
  </Accordion>

  <Accordion title="Penjadwalan Maintenance">
    Jadwalkan maintenance saat waktu sepi berdasarkan pola koneksi.
  </Accordion>
</AccordionGroup>

## Implementasi

```javascript theme={null}
app.post('/webhook', async (req, res) => {
  const { event, device } = req.body;
  
  if (event === 'device.connected') {
    console.log(`Perangkat ${device.name} sekarang terhubung`);
    
    // Update status perangkat
    await db.devices.update(device.id, {
      status: 'connected',
      last_connected: new Date(req.body.timestamp * 1000)
    });
    
    // Kirim notifikasi ke tim
    await notifyTeam(`Perangkat ${device.name} sudah online`);
  }
  
  res.status(200).send('OK');
});
```

## Event Terkait

<Card title="Device Disconnected" icon="wifi-off" href="/webhooks/events/device-disconnected">
  Perangkat menjadi offline
</Card>
