Ana Sayfa
EN

Webhook senkronu

Değerleri tek tek veya toplu gönderin; üstel geri çekilme, çevrimdışı kuyruk ve isteğe bağlı başlık.

Webhook senkronu, QCR Scanner’da topladığınız değerleri kendi sunucunuza, bir otomasyon aracına ya da bir Cloudflare Worker’a gerçek zamanlı olarak ulaştırmanın yoludur. Bir webhook URL’si tanımlarsınız; uygulama listeye eklenen her değeri (ya da seçtiğinizde tüm listeyi) bu adrese bir JSON gövdesiyle POST eder. Bağlantı koptuğunda istekler bir çevrimdışı kuyruğa alınır ve hat geri geldiğinde otomatik olarak gönderilir; geçici hatalar üstel geri çekilmeyle yeniden denenir. Böylece taranan veriler, telefonu hiç elinizden bırakmadan başka bir sistemde belirir.

Webhook’u yapılandırma

Webhook ayarlarına uygulamanın senkron bölümünden ulaşırsınız. İki alan vardır:

  • Webhook URL — İsteklerin gönderileceği https:// adresi. Bu, gövdeyi alıp işleyebilen herhangi bir uç nokta olabilir: kendi API’niz, bir otomasyon servisi ya da bir Cloudflare Worker.
  • Authorization başlığı (isteğe bağlı) — Doldurursanız, her isteğe olduğu gibi bir Authorization başlığı olarak eklenir. Uç noktanızı belirteç (token) ya da anahtarla korumak için kullanışlıdır. Boş bırakırsanız hiçbir yetkilendirme başlığı gönderilmez.

İsteklerin gövdesi her zaman JSON’dur ve Content-Type: application/json başlığıyla gönderilir.

İpucu: URL’yi yalnızca https:// ile başlayan bir adres olarak girin. Authorization başlığını uç noktanızın beklediği biçimde (örneğin Bearer ... ya da düz bir anahtar) yazın; uygulama değeri olduğu gibi iletir.

Bağlantıyı test etme

URL’yi kaydettikten sonra Test bağlantısı ile uç noktanıza ulaşıp ulaşamadığınızı doğrulayabilirsiniz. Bu, küçük bir JSON gövdesiyle tek bir POST gönderir:

{ "action": "ping" }

Uç noktanız 2xx aralığında bir yanıt dönerse test başarılı sayılır. Bir Worker ya da sunucu yazarken ping eylemini erken tanıyıp hızlıca 200 dönmek, yapılandırmanızı gerçek veri göndermeden doğrulamanın en kolay yoludur.

Tek tek mi, toplu mu?

Değerleri iki yolla gönderebilirsiniz.

Tek tek (auto-sync)

Otomatik senkron açıkken, listeye her yeni değer eklendiğinde anında tek bir POST gönderilir. Tarama sırasında veri akışını gerçek zamanlı izlemek istediğinizde idealdir — her doğrulanmış değer, eklendiği anda uç noktanıza ulaşır.

Toplu (“Send all”)

Send all (Tümünü gönder) ile aktif listedeki tüm öğeleri tek bir istekte gönderirsiniz. Çevrimdışı topladığınız bir listeyi sonradan tek seferde aktarmak ya da otomatik senkronu kapalı tutup yalnızca işiniz bittiğinde göndermek istediğinizde uygundur.

Yöntem Ne zaman Gövde
Tek tek (auto-sync) Her değer eklendiğinde anında Tek öğe (add)
Toplu (Send all) Siz tetikleyince, tüm liste Öğe dizisi (batch)

Gövde formatı

Her iki yöntem de tutarlı bir JSON yapısı kullanır; eylemi action alanı belirler.

Tek öğe (add)

Otomatik senkronda eklenen tek bir değer şu biçimde gönderilir:

{
  "action": "add",
  "listName": "Sayaçlar",
  "item": {
    "value": "AB-1234",
    "isQR": false,
    "source": "ocr",
    "createdAt": "2026-06-21T10:15:00.000Z",
    "isSeparator": false
  },
  "timestamp": "2026-06-21T10:15:00.000Z"
}

Alanların anlamı:

  • listName — Değerin ait olduğu listenin adı.
  • item.value — Taranan ya da sesle girilen değerin kendisi.
  • item.isQR — Değer bir QR koddan mı geldi (true) yoksa OCR/ses gibi başka bir kaynaktan mı (false).
  • item.source — Değerin kaynağı (örneğin ocr).
  • item.createdAt — Öğenin oluşturulduğu an (ISO 8601).
  • item.isSeparator — Öğe bir ayraç mı (tarih/başlık gibi) yoksa normal bir değer mi.
  • timestamp — İsteğin gönderildiği an.

Toplu (batch)

Send all tetiklendiğinde, eylem batch olur ve tüm öğeler bir dizide, bir de count ile taşınır:

{
  "action": "batch",
  "listName": "Sayaçlar",
  "count": 2,
  "items": [
    {
      "value": "AB-1234",
      "isQR": false,
      "source": "ocr",
      "createdAt": "2026-06-21T10:15:00.000Z",
      "isSeparator": false
    },
    {
      "value": "CD-5678",
      "isQR": true,
      "source": "qr",
      "createdAt": "2026-06-21T10:16:30.000Z",
      "isSeparator": false
    }
  ],
  "timestamp": "2026-06-21T10:17:00.000Z"
}

items dizisindeki her öğe, tek öğe gövdesindeki item ile aynı alanlara sahiptir. count, dizideki öğe sayısını verir.

Üstel geri çekilme

Bir istek geçici bir hatayla başarısız olursa, uygulama onu sessizce bırakmaz: en fazla 3 deneme yapar ve denemeler arasında bekleme süresini ikiye katlar. Bekleme aralıkları 1 sn → 2 sn → 4 sn şeklindedir. Kısa bir ağ dalgalanması ya da uç noktanızın anlık yoğunluğu çoğu zaman bu pencerede kendiliğinden düzelir; üç deneme de başarısız olursa istek çevrimdışı kuyruğa devredilir.

Çevrimdışı kuyruk (outbox)

QCR Scanner saha koşulları için tasarlandı; bu yüzden bağlantı olmadan da çalışmaya devam eder.

  • Gönderim sırasında hat yoksa (ya da tüm denemeler başarısız olursa), istek bir outbox kuyruğuna alınır.
  • Bağlantı geri geldiğinde, kuyruktaki istekler otomatik olarak gönderilir.
  • Uygulama yeniden öne geldiğinde (ön plana çıktığında) da kuyruk bir kez daha denenir.

Böylece çevrimdışıyken topladığınız değerler kaybolmaz; telefon yeniden çevrimiçi olur olmaz uç noktanıza sırasıyla ulaşırlar.

Not: OCR ve QR taraması zaten tamamen cihazda, ağ olmadan çalışır. Webhook senkronu yalnızca topladığınız değerleri dışarı göndermek için ağ kullanır; tarama yeteneğiniz çevrimdışıyken de tam olarak çalışmaya devam eder.

Cloudflare Worker örneği

Webhook’u alacak tarafı sıfırdan yazmak istemiyorsanız, bir Cloudflare Worker bunun için pratik bir seçenektir: ücretsiz katmanda çalışır, https uç noktasını size hazır verir ve ping, add, batch eylemlerini birkaç satırda ayrıştırabilir. Worker içinde gelen action alanına bakıp ping için hemen 200 döner, add ve batch için gövdeyi kendi depolamanıza ya da bir tabloya yazarsınız. Authorization başlığını da Worker’da doğrulayarak uç noktanızı koruyabilirsiniz.

İpucu: Hangi yöntemi kullanırsanız kullanın, uç noktanızı ping eylemini tanıyacak ve 2xx dönecek şekilde yazın; bu sayede Test bağlantısı düğmesi anlamlı bir sonuç verir.

Webhook senkronu, ReviseTouch tarafından geliştirilen QCR Scanner’ın bir parçasıdır.

Sonraki adımlar