# WhatsApp

Lumate, WhatsApp'a **bağlı cihaz** olarak bağlanır; WhatsApp Web ile aynı yöntemdir. Şirketin numarası telefonunda çalışmaya devam eder. Lumate bu numaradaki bire bir sohbetleri görür, müşteri kartlarında gösterir, ajanların yanıt taslağı yazmasını sağlar ve bir kişinin onayladığını gönderir.

## Nasıl çalışır

![Şema: Nasıl çalışır](/docs-diagrams/b0f37f945425b64f.png)

- **Çalıştırıcı (worker)** her şirket için tek bir oturum tutar ve bunu kendi birimi içinde şifreli saklar. Mesajları alır ve bir insanın hızında gönderir.
- **Sunucu** her mesajı saklar, telefon numarasına göre bir müşteri kartına bağlar ve kartın ajanını **tek bir taslak** yazması için uyandırır.

## Başlamadan önce

- **Ayrılmış bir iş numarası kullanın.** Telefon şarjlı olmalı ve en geç birkaç günde bir çevrimiçi olmalıdır. Telefon yaklaşık iki hafta çevrimdışı kalırsa bağlı cihaz çalışmayı bırakır.
- **WhatsApp Business uygulaması da, normal WhatsApp da olur.**
- **Mesajlar burada, aramalar WhatsApp Web üzerinden.** Bu bağlantı mesajları taşır. Aramalar şirketin telefon hattından
  çıkar (masa telefonu için [Lumate Local](/tr/docs/install-windows) sayfasına bakın) ve bir yöneticinin başlattığı arama listelerinden yapılır.
  Hat kapalıyken Lumate'in arama rutini bunun yerine ofis tarayıcısında WhatsApp Web üzerinden arayabilir (bkz.
  [Office browser → Calls through WhatsApp Web](/tr/docs/office-browser#calls-through-whatsapp-web)). Hiçbir ajan kendi
  başına WhatsApp araması yapmaz. **WhatsApp aramaları BAE'de bağlanmaz.**
- **Bağlı cihazlar resmi bir API değildir.** Toplu mesaj göndermek veya size hiç yazmamış kişilere mesaj atmak numaranın yasaklanmasına yol açabilir. Lumate hızı düşük tutar (aşağıdaki sınırlara bakın), ancak numaranın nasıl kullanıldığından şirket sorumludur.

## Bağlama

1. WhatsApp servisi Lumate ile birlikte gelir: sunucu sürümü onu çalıştırır (`whatsapp` servisi, bkz.
   [Sunucu sürümü](/tr/docs/install-server#what-runs)), Lumate Local ise kendisi başlatır (bkz.
   [Lumate Local](/tr/docs/install-windows#whatsapp)).
2. **Settings → WhatsApp** sayfasını açın (yalnızca yöneticiler) ve birini seçin:
   - **QR code:** telefonda WhatsApp → Settings → Linked devices → Link a device yolunu izleyin ve kodu okutun;
   - **Pairing code:** numarayı ülke koduyla yazın (+971…, +90…), sonra telefonda "Link with phone number instead"
     altında 8 karakterlik kodu girin. Sayfa, kodun hangi numara için olduğunu gösterir. WhatsApp kodu reddederse
     sayfa kod göstermek yerine nedenini yazar. O durumda QR koduyla bağlayın.
3. Durum **Connected** olur ve numara ile ad görünür.

Telefon cihazı bağlayamadığını söylerse:
- Sayfayı şu anki haliyle yeniden okutun: QR her 20 saniyede bir değişir.
- 2026 ortasından beri WhatsApp, siz okuturken QR'ın bağlantı sırrını da yenileyebilir. Lumate bunu 1.7.1 sürümünden itibaren izler.
- `whatsapp.log` (tepsi simgesinden: günlükler klasörünü açın) her bağlama denemesini ve nasıl bittiğini kaydeder.

| Durum | Anlamı | Ne yapmalı |
|---|---|---|
| Not linked | Henüz numara yok | Bir numara bağlayın |
| Linking | QR okutulması veya kod girilmesi bekleniyor | Bir dakika içinde okutun veya yazın; süre dolunca yeni kod çıkar |
| Connected | Çalışıyor | — |
| Disconnected | Geçici olarak çevrimdışı (ağ, telefon) | Kendi kendine yeniden bağlanır; telefonun internetini kontrol edin |
| Logged out | Telefon bağlı cihazı kaldırdı | Yeniden bağlayın |
| Blocked | WhatsApp numarayı reddetti (403) | Numarayı WhatsApp uygulamasında kontrol edin; WhatsApp desteğiyle iletişime geçin |
| Replaced | Oturum başka bir yerde açıldı (440) | Burada yeniden bağlayın; aynı numarada iki Lumate kurulumu çalıştırmayın |

**Unlink**, oturumu Lumate'ten kaldırır. Daha önce saklanan mesajlar kartlarda kalır.

## Günlük kullanım

### Bir müşteri yazdığında
1. Mesaj müşterinin **müşteri kartında** (WhatsApp bölümü ve History) ve **Messages** sayfasında görünür.
2. Numara yeniyse onun için bir kart açılır ve WhatsApp'tan geldiği işaretlenir.
3. Metin, kartın konuşmasında dış veri olarak alıntılanır ve kartın ajanı uyandırılır.
4. Ajan **tek bir taslak** yazar. Kendi başına asla göndermez.
5. Yöneticilere bildirim gider:
   - uygulamada;
   - bildirim telefonu belirlemişlerse WhatsApp'ta, müşteri başına en fazla 30 dakikada bir.

Fotoğraflar, videolar, belgeler, çıkartmalar, konumlar ve kişiler, varsa açıklamalarıyla birlikte `[photo]`, `[document]` gibi görünür. Grup sohbetleri ve durum paylaşımları yok sayılır.

### Sesli mesajlar (2.14.0'dan beri)
Sesli mesaj, ajan okumadan önce metne çevrilir: OpenAI'nin Whisper'ı onu şirketin kendi OpenAI anahtarıyla
(Settings → Secrets; sesli aramaların kullandığı anahtar) metne döker. Mesaj bundan sonra
`[voice note] Cumartesi daireyi görmek istiyorum` diye okunur ve ancak o zaman kartın konuşmasına, ajanına ve
bildirimlere ulaşır (birkaç saniye sonra).
- Ses, metne çevrilir çevrilmez silinir. Başka hiçbir yerde tutulmaz.
- **Personal** etiketli sohbetler önce elenir: onların sesli mesajları hiçbir yere gönderilmez.
- 15 dakikadan uzun veya 16 MB'tan büyük mesajlar, anahtar yoksa ya da **Settings → WhatsApp → Write out voice notes**
  kapalıysa tüm mesajlar eskisi gibi `[voice note]` olarak okunur. OpenAI'nin çeviremediği bir mesaj
  `[voice note] (it could not be written out)` olarak okunur.

### Telefonun kendisinden yazdıklarınız (2.14.0'dan beri)
Şirket telefonunda yazdığınız mesajlar da Lumate'e ulaşır:
- kişinin kartı varsa kartın konuşmasında görünür ("from the phone"), böylece ajan ne konuşulduğunu bilir; kimseyi uyandırmaz;
- kişinin henüz kartı yoksa cevabı bir kart açar ve kart önceki mesajlarınızı alır; bunlar kartın konuşmasında bir kez
  **Earlier on WhatsApp** olarak görünür. Ajan taslak yazmadan önce tüm konuşmayı (`whatsapp_history`) okur.

### WhatsApp göndericinin numarasını gizlediğinde
WhatsApp bazen göndereni yalnızca özel bir kimlikle ("LID") belirtir ve numarasını biraz sonra ayrıca yollar.
- Lumate numarayı bekler (en fazla 2 dakika), sonra mesajı her zamanki gibi gösterir. **Settings → WhatsApp** sayfası kaç mesajın beklediğini gösterir.
- Numara hiç gelmezse (örneğin gönderen numarasını bir WhatsApp kullanıcı adıyla gizliyorsa) mesaj yine de görünür: **Messages** içinde **number hidden** işaretli bir sohbet olarak, göndericinin adını taşıyan bir kartta. Siz ve ajanlar bunu her zamanki gibi yanıtlarsınız.
- WhatsApp numarayı sonradan bildirirse sohbet ve kart o numaranınkilerle birleşir.
- Numarası olmayan bir kart asla aranmaz.

### Yanıtlama
Kartta veya **Messages → konuşma** içinde:
- Ajanın taslağını olduğu gibi **Send** ile gönderin;
- **Edit** ile düzenleyin, sonra gönderin;
- **Discard** ile silin;
- veya yazı alanına kendi mesajınızı yazın.

### Bir ajandan göndermesini istemek
Bir sohbette veya kartın konuşmasında ajana söyleyin: "Sara'ya görüntüleme saatini WhatsApp'tan gönder". Ajan **yalnızca** o konuşmada bir yönetici ondan istediğinde gönderebilir. Aksi halde taslak yazar.

**Dosyalar** (2.18.0'dan beri). Dosyayı mesajınıza ekleyin (ya da kartın konuşmasında olsun) ve isteyin: "Sara'ya
Riverside broşürünü WhatsApp'tan gönder". Ajan bir seferde en çok üç dosya gönderir: PDF'ler, resimler (JPG, PNG),
Office dosyaları ve metin dosyaları, her biri 16 MB'a kadar. Her dosya ayrı bir WhatsApp mesajıdır ve yazdığınız metin
ilkiyle gider; resim, resim olarak ulaşır. Sohbet her dosyayı gösterir (resim kendisi olarak, diğer dosyalar açılan bir
kart olarak). Web sayfaları ve programlar asla gönderilmez.

### İşaretler ne anlama gelir

| İşaret | Anlamı |
|---|---|
| 🕓 | Çalıştırıcıda sırada |
| ✓ | Gönderildi |
| ✓✓ | Teslim edildi |
| ✓✓ (mavi) | Okundu |
| waiting (limit) | Hız sınırları yüzünden bekletiliyor, sonra kendiliğinden gönderilir |
| not sent | Başarısız oldu, nedeniyle birlikte (örneğin numara WhatsApp'ta yok) |

### Ekibinize WhatsApp'ta bildirimler
Herkes Settings → Your account altında **Your phone for notifications** alanını belirleyebilir. Şirketin WhatsApp'ı bağlıyken şu bildirimler o telefona da gider:
- devirler (hand-off);
- randevu istekleri;
- günlük rapor;
- yeni müşteri mesajları.

Bir ekip arkadaşınız böyle bir bildirimi yanıtlarsa yanıt, Messages içinde "Ad (team)" olarak görünür. Müşteri sayılmaz.

## Sınırlar (numarayı korumak için)

| Sınır | Değer |
|---|---|
| Saatte mesaj | 30 |
| Günde mesaj | 200 |
| Müşteri başına günde mesaj | 15 |
| Her mesajdan önce yazıyor görünme | 2–6 saniye |
| Mesajlar arası bekleme | 3–8 saniye |
| Yöneticilere WhatsApp bildirimi | müşteri başına 30 dakikada en fazla bir |

Sınırı aşan mesajlar bekler ve sınır izin verince gider. İşaret "waiting (limit)" gösterir.

## Gizlilik

- **Oturum**, `WHATSAPP_STATE_KEY` ile şifreli saklanır.
- **Günlükler** hiçbir zaman mesaj metni veya tam telefon numarası içermez.
- **Mesaj metinleri dış veridir:** ajanlar bunları bilgi olarak okur, asla talimat olarak değil. Metne çevrilmiş sesli mesajlar da öyledir.
- **Sesli mesajlar** OpenAI'ye yalnızca metne çevrilmek için, şirketin kendi anahtarıyla gider; sesleri ardından silinir.
- **Bağlantıyı kaldırmak (Unlink)** oturumu siler. Daha önce saklanan mesajlar müşteri kartlarında kalır.
