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

# Giden web kancaları

> Mesaj, konuşma, devre dışı bırakma ve şablon olaylarına abone olun. HMAC imzalarını doğrulayın, yeniden denemeleri işleyin ve yinelenen işlemleri önleyin.

Giden web kancaları, sistemlerinizin API'yi sorgulamadan Flowella'deki olaylara neredeyse gerçek zamanlı olarak tepki vermesini sağlar. Bir URL ve olay türlerinin bir listesini yapılandırırsınız ve Flowella bu olaylardan biri her ateşlendiğinde bu URL'ye imzalı bir JSON yükü POST eder.

## Bir web kancası yapılandırma

Sahip\*\* veya **Yönetici** rolüne ihtiyacınız var.

<Steps>
  <Step title="Ayarlar → Web Kancaları'nı açın">
    Flowella uygulamasında **Ayarlar → Web Kancaları** bölümüne gidin.
  </Step>

  <Step title="Web kancası ekleme">
    Webhook ekle\*\* seçeneğine tıklayın, uç noktanızın genel HTTPS URL'sini yapıştırın ve almak istediğiniz olay türlerini seçin.
  </Step>

  <Step title="İmzalama sırrını kaydedin">
    Flowella web kancası için benzersiz bir imzalama sırrı oluşturur. Kopyalayın - gelen talepleri doğrulamak için kullanacaksınız.
  </Step>

  <Step title="Bir test gönderin">
    Hemen bir `webhook.test` yükü göndermek için **Send test** seçeneğine tıklayın. Uç noktanızın bunu aldığını ve 2xx ile yanıt verdiğini kontrol edin.
  </Step>
</Steps>

## Olay türleri

Bu ürün etkinliklerinden herhangi birine abone olabilirsiniz:

| Olay                      | Ateşlendiğinde                                                                                    |
| ------------------------- | ------------------------------------------------------------------------------------------------- |
| `message.received`        | Bir kişiden gelen bir WhatsApp mesajı geldi                                                       |
| `message.sent`            | Flowella giden mesajınızı kabul etti ve Meta'ye gönderdi                                          |
| `message.delivered`       | Meta mesajın alıcının cihazına teslim edildiğini doğruladı                                        |
| `message.read`            | Alıcı mesajı açtı                                                                                 |
| `message.failed`          | Meta mesajı için bir hata döndürdü                                                                |
| `conversation.opened`     | Bir görüşme açık duruma geçti                                                                     |
| `conversation.closed`     | Bir görüşme kapatıldı                                                                             |
| `optout.created`          | Bir kişi belirli bir kanalda devre dışı bırakıldı                                                 |
| `template.status_updated` | Meta bir şablonun durumunu değiştirdi (onaylandı, reddedildi, duraklatıldı, devre dışı bırakıldı) |

`webhook.test` yalnızca **Test gönder** seçeneğine tıkladığınızda gönderilir - buna açıkça abone olmazsınız.

## İstek biçimi

Flowella URL'nize bu başlıklarla birlikte bir JSON gövdesi POST eder:

```http theme={null}
POST https://your-endpoint.example.com/flowella
Content-Type: application/json
User-Agent: Flowella-Webhooks/1
X-Flowella-Signature: <hex digest>
```

Yükler **256 KB** ile sınırlandırılmıştır. Daha büyük nesneler özetlenir - ihtiyacınız varsa tüm kaydı kimliğe göre almak için API'yi kullanın.

Vücut şekli etkinliğe göre değişir ancak her zaman şunları içerir:

```json theme={null}
{
  "event": "message.delivered",
  "timestamp": "2025-01-15T14:30:00.000Z",
  "organizationId": "clxxxxxxxxxxxxxxxxxxxxxxxx",
  "data": { "...event-specific fields..." }
}
```

## İmzaların doğrulanması

Her istek bir `X-Flowella-Signature` başlığı içerir. Değer, web kancanızın imzalama sırrı ile anahtarlanmış **raw UTF-8 istek gövdesinin** **HMAC-SHA256 onaltılı özetidir**.

İşleme almadan önce doğrulayın:

```js theme={null}
import { createHmac, timingSafeEqual } from "node:crypto";

function verify(rawBody, signatureHeader, secret) {
  const expected = createHmac("sha256", secret).update(rawBody).digest("hex");
  const a = Buffer.from(expected, "hex");
  const b = Buffer.from(signatureHeader, "hex");
  return a.length === b.length && timingSafeEqual(a, b);
}
```

```python theme={null}
import hmac, hashlib

def verify(raw_body: bytes, signature_header: str, secret: str) -> bool:
    expected = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, signature_header)
```

<Warning>
  Herhangi bir JSON ayrıştırma veya ara yazılım yükü yeniden biçimlendirmeden önce her zaman **ham gövde baytları** üzerinden imzalayın. Çerçeveniz JSON'u yeniden serileştiriyorsa, imza eşleşmeyecektir.
</Warning>

## Yanıtlar, yeniden denemeler ve zaman aşımları

* Zaman aşımı\*\*: Flowella, uç noktanızın yanıt vermesi için **10 saniye** kadar bekler.
* Başarılı\*\*: herhangi bir `2xx` yanıtı başarılı teslimat olarak kabul edilir.
* Yeniden denemeler\*\*: başarısız teslimatlar, geri alma ile **3 denemeye** kadar yeniden denenir.
* Otomatik devre dışı bırakma\*\*: bir web kancası **10 ardışık başarısızlık** biriktirirse, Flowella onu devre dışı bırakır. Uç noktanızı düzelttikten sonra **Ayarlar → Web Kancaları** bölümünden yeniden etkinleştirmeniz gerekecektir.

Uç noktanız mümkün olduğunca hızlı dönmelidir - ağır işlemleri kendi tarafınızdaki bir arka plan kuyruğuna erteleyin.

## Idempotency

Web kancaları yeniden denenebilir, bu nedenle aynı mantıksal olay birden fazla kez gelebilir. Güvenli bir şekilde işlemek için:

* Olayın `data.id`'sini (veya `event + data.messageId` gibi türetilmiş bir anahtarı) idempotans anahtarı olarak kullanın.
* İşlenmiş anahtarların kısa ömürlü bir önbelleğini tutun (yeniden denemeler için birkaç saat yeterlidir).
* Mükerrerlere işlem yapılmayacakmış gibi davranın.

## Teslimatları listeleme ve yönetme

**Ayarlar → Web Kancaları** web kancası başına son teslimat denemelerini gösterir:

* Zaman Damgası
* Etkinlik türü
* Yanıt durumu
* Hata ayıklama için kesilmiş bir yanıt gövdesi (\~1 KB'a kadar)

Bir web kancası tekrarlanan hatalar nedeniyle devre dışı bırakılırsa, aynı sayfa onu yeniden etkinleştirmenizi sağlar.

## Yerel kalkınma

Yerel olarak web kancalarına karşı geliştirme yapmanın en basit yolu, genel bir tüneli (örneğin, ngrok veya Cloudflare Tunnel) geliştirme sunucunuza yönlendirmek ve web kancası URL'sini tünel ana bilgisayarına yönlendirmektir. Gerçek WhatsApp etkinliğini beklemeden talep üzerine yükleri ateşlemek için **Send test** kullanın.

<Tip>
  Listede olmayan etkinliklere tepki vermeniz mi gerekiyor? Bize [support](https://flowella.io/support) adresinden bildirin - müşterilerimiz talep ettikçe etkinlikler ekliyoruz.
</Tip>

## İlgili

<CardGroup cols={2}>
  <Card title="Ayarlar → Web kancaları" icon="webhook" href="/tr/settings/webhooks">
    Uygulamada uç noktaları, imzalama gizli dizilerini ve yeniden denemeleri yapılandırın.
  </Card>

  <Card title="API tanıtımı" icon="code" href="/tr/api-reference/introduction">
    REST API için kimlik doğrulama, hatalar, sayfalandırma ve oran sınırları.
  </Card>

  <Card title="API anahtarları" icon="key" href="/tr/settings/api-keys">
    Uç noktanızın ihtiyaç duyabileceği taşıyıcı belirteçleri oluşturun ve döndürün.
  </Card>

  <Card title="Bildirim etkinlikleri" icon="bell" href="/tr/app/notification-events">
    Aynı etkinlikler uygulama içi akışa ve e-postaya iletilir.
  </Card>
</CardGroup>
