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

# Pub/Sub

> Gerçek zamanlı kullanıcı davranışına dayalı otomatik Journeys'leri ve kişiselleştirilmiş mesajlaşma kampanyalarını tetiklemek için Google Pub/Sub'dan OneSignal'e özel olayları senkronize edin.

export const PLATFORM_0 = "Pub/Sub"

export const DATA_TYPE_0 = "message fields"

export const COLUMN_HEADER_0 = "Pub/Sub Message Field"

export const PROPERTIES_DESCRIPTION_0 = "JSON object with event details"

## Genel Bakış

OneSignal + Google Pub/Sub entegrasyonu, kullanıcı davranışına dayalı otomatik mesajlaşma kampanyalarını ve Journey'leri tetiklemek için Pub/Sub konularınızdan OneSignal'e özel olayların gerçek zamanlı senkronizasyonunu sağlar.

Pub/Sub, uygulamaların bağımsız bileşenler arasında mesaj göndermesine ve almasına olanak tanıyan Google'ın ölçeklenebilir mesajlaşma hizmetidir. OneSignal, Pub/Sub konularınıza abone olarak hareket eder ve kişiselleştirilmiş kullanıcı deneyimlerini tetiklemek için Pub/Sub'dan olay mesajlarını senkronize etmenize olanak tanır.

***

## Gereksinimler

* Access to [Event Streams](/docs/en/event-streams) for outbound message events (Plan limitations and overages apply)
* Access to [Custom Events](/docs/en/custom-events) for inbound event syncing (Plan limitations and overages apply)
* [Updated Account Plan](https://onesignal.com/pricing) (not available on free apps)

### Google Pub/Sub

* Pub/Sub etkinleştirilmiş **Google Cloud Projesi**
* Olay mesajları içeren **Pub/Sub konuları**
* Servis hesabı erişimini vermek için **IAM izinleri**
* Konularınızda **JSON formatında mesajlar**

***

## Kurulum

<Steps>
  <Step title="Pub/Sub bağlantısı oluşturun">
    In OneSignal, go to **Data > Integrations** and click **Add Integration**.

    1. Listeden **Google Pub/Sub**'ı seçin
    2. Pub/Sub konularınızın bulunduğu **GCP Project ID**'yi girin
    3. Kimlik doğrulama yöntemini seçin:
       * **Otomatik oluşturulan Servis Hesabı** (önerilir): OneSignal servis hesabını oluşturur ve yönetir
       * **Mevcut Servis Hesabı**: Kendi servis hesabı anahtar JSON dosyanızı sağlayın
    4. **Connect**'e tıklayın
  </Step>

  <Step title="Servis hesabına izin verin">
    OneSignal yeni bir servis hesabı oluşturacak ve size servis hesabı e-posta adresini sağlayacaktır.

    GCP projenizde bu servis hesabına **`roles/pubsub.editor`** rolünü verin:

    ```bash theme={null}
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
      --role roles/pubsub.editor
    ```

    OneSignal bu rolü şunlar için kullanır:

    * Olay konularınıza abonelikler oluşturma
    * Konulardan olay mesajlarını tüketme
    * Başarısız işlemler için hata konuları (Dead Letter Queue) oluşturma
  </Step>

  <Step title="Bağlantıyı test edin">
    Gerekli izinleri verdikten sonra, bağlantıyı doğrulamak için OneSignal'de **Save**'e tıklayın.

    OneSignal, Pub/Sub konularınıza erişebildiğini ve olay mesajlarını işlemeye hazır olduğunu doğrulayacaktır.
  </Step>
</Steps>

***

## Olay Veri Şeması

Özel olaylar için bir Pub/Sub konusu kullanmadan önce, olay mesajlarının şemasını tanımlamanız gerekir.

<Steps>
  <Step title="Olay şeması tanımına gidin">
    OneSignal'de, **Data > Integrations**'a gidin ve Pub/Sub bağlantınızı seçin.

    OneSignal, projenizden konu listesini otomatik olarak çeker. Listeyi manuel olarak yenilemek için **Refresh topics**'e tıklayın.
  </Step>

  <Step title="Olay mesajı şemasını tanımlayın">
    1. Olay verilerinizi içeren konunun adına tıklayın
    2. Mesaj formatı olarak **JSON**'u seçin (desteklenen tek format)
    3. **Import sample message**'a tıklayın ve örnek bir olay mesajı sağlayın
    4. Doğru alan eşlemesini sağlamak için algılanan şemayı inceleyin
    5. **Save Dataset**'e tıklayın
  </Step>
</Steps>

### Olay Mesajı Formatı

Pub/Sub mesajlarınız, OneSignal özel olayları için bu JSON yapısını izlemelidir:

```json theme={null}
{
  "event_name": "purchase_completed",
  "user_id": "user_12345",
  "timestamp": "2023-12-01T10:30:00Z",
  "properties": {
    "product_id": "prod_abc123",
    "price": 29.99,
    "category": "electronics",
    "payment_method": "credit_card"
  },
  "session_id": "session_789"
}
```

### Event data mapping

Map your {PLATFORM_0} {DATA_TYPE_0} to OneSignal's custom events format:

| OneSignal Field | {COLUMN_HEADER_0} | Description                | Required |
| --------------- | ----------------- | -------------------------- | -------- |
| `name`          | `event_name`      | Event identifier           | Yes      |
| `external_id`   | `user_id`         | User identifier            | Yes      |
| `timestamp`     | `event_timestamp` | When event occurred        | No       |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0} | No       |

<Warning>
  Örnek mesajlara müşteri PII veya hassas veriler eklemeyin. OneSignal, mesaj örneklerini veri kümesi tanımının bir parçası olarak saklar.
</Warning>

***

## Gerçek Zamanlı Olay İşleme

Toplu entegrasyonların aksine, Pub/Sub gerçek zamanlıya yakın olay işlemeyi sağlar:

* **Düşük Gecikme**: Olaylar, konulara yayınlandıktan sonraki saniyeler içinde işlenir
* **Otomatik Abonelikler**: OneSignal her konu için özel abonelikler oluşturur
* **Hata İşleme**: Başarısız olaylar, inceleme için Dead Letter Queue konularına gönderilir
* **Ölçeklenebilir İşleme**: Yüksek hacimli olay akışlarını otomatik olarak işler

***

## Gelişmiş Yapılandırma

### Dead Letter Queue

OneSignal, işlemenin başarısız olduğu olaylar için otomatik olarak hata konuları oluşturur:

* **Otomatik Oluşturma**: Hata konuları abonelik başına oluşturulur
* **Başarısız Olay Depolama**: İşlenemeyen olaylar hata ayıklama için saklanır
* **Manuel İnceleme**: Sorun giderme için Google Cloud Console üzerinden başarısız olaylara erişin

### Mesaj Onaylama

OneSignal, Pub/Sub mesaj onaylamasını otomatik olarak işler:

* **Başarılı İşleme**: Mesajlar, başarılı olay oluşturulduktan sonra onaylanır
* **Başarısız İşleme**: Mesajlar negatif olarak onaylanır ve Dead Letter Queue'ya gönderilir
* **Yeniden Deneme Mantığı**: Geçici hatalar için yerleşik yeniden deneme işleme

***

## Sınırlamalar

* Yalnızca JSON mesaj formatı desteklenir
* Mesaj örnekleri veri kümesi tanımlarının bir parçası olarak saklanır (PII'den kaçının)
* Proje düzeyinde `roles/pubsub.editor` izinleri gerektirir
* Maksimum mesaj boyutu Google Pub/Sub limitlerini takip eder (10MB)

***

## SSS

### Olaylar ne kadar hızlı işlenir?

Olaylar genellikle Pub/Sub konunuza yayınlandıktan sonraki saniyeler içinde işlenir, bu da gerçek zamanlıya yakın Journey tetiklemesini sağlar.

### OneSignal bir olayı işleyemezse ne olur?

Başarısız olaylar, OneSignal'in oluşturduğu bir Dead Letter Queue konusuna otomatik olarak gönderilir. Hata ayıklama için bu olayları Google Cloud Console'da inceleyebilirsiniz.

### Farklı olay türleri için birden fazla konu kullanabilir miyim?

Evet, aynı GCP projesi içinde birden fazla konu için şemalar tanımlayabilirsiniz. Her konu, kendi şema tanımlarıyla farklı olay türlerini içerebilir.
