· Nacho Coll · Guides  · 8 dk okuma

X Uyarıları API: Programatik Abonelikler ve Bildirim Geçmişi

WALLAWHATS üzerine özel entegrasyonlar geliştirin. X aboneliklerini ekleyin/kaldırın, uyarıları kanallara yönlendirin, bildirim geçmişini çekin — hepsi REST ile.

WALLAWHATS üzerine özel entegrasyonlar geliştirin. X aboneliklerini ekleyin/kaldırın, uyarıları kanallara yönlendirin, bildirim geçmişini çekin — hepsi REST ile.

Gerçek zamanlı X (Twitter) uyarıları işinizde kritik hale geldiğinde, manuel dashboard yönetimi yetersiz kalır. İster müşteri zekası dashboardları oluşturun, ister marka izleme iş akışlarını otomatikleştirin, isterse trading masaları için özel bildirim sistemleri yaratın — X uyarı abonelikleriniz üzerinde programatik kontrole ihtiyacınız vardır.

WALLAWHATS, web arayüzüne dokunmadan X uyarı aboneliklerini oluşturmanıza, yönetmenize ve denetlemenize olanak sağlayan bir REST API sunar. İzlenen hesapları ekleyin veya kaldırın, teslimat durumuyla birlikte bildirim geçmişini çekin ve gerçek zamanlı X uyarılarını HTTP konuşan herhangi bir sisteme entegre edin.

API anahtarları yönetim sayfası oluştur / iptal kontrolleri ile

WALLAWHATS API’sini Neden Kullanmalısınız?

Dashboard manuel iş akışları için harika çalışır, ancak API erişimi insan yönetiminin ötesine geçen otomasyon senaryolarının kilidini açar:

Müşteri Zekası Platformları: Araştırma araçları veya CRM entegrasyonları aracılığıyla keşfedilen yeni rakip yöneticileri, ürün liderleri veya sektör analistlerine otomatik olarak abone olun.

Trading ve Finansal İş Akışları: Portföy değişiklikleri veya piyasa olaylarına dayalı düzenleyici hesapları, CEO hesaplarını veya sektöre özgü gazetecileri programatik olarak izleyin — manuel abonelik yönetimi olmadan.

Ölçekte Marka İzleme: Yeni kampanyalar başladığında, ürünler sevk edildiğinde veya kriz durumları geliştiğinde marka bahsetme takibini ekleyin veya kaldırın.

Çok Kiracılı SaaS Uygulamaları: Müşterileriniz için white-label gerçek zamanlı X izleme, perde arkasında programatik abonelik yönetimiyle.

Uyumluluk ve Denetim Sistemleri: Düzenleyici raporlama, dahili denetim izleri veya SLA izleme için teslimat durumuyla birlikte tam bildirim geçmişini çekin.

API Kimlik Doğrulama ve Erişim

Her WALLAWHATS planı, ölçekli anahtar kotalarıyla API erişimi içerir:

  • Free: 1 API anahtarı
  • Pro: 1 API anahtarı
  • Pro+: 2 API anahtarı
  • Business: 5 API anahtarı
  • Enterprise: 20 API anahtarı

Kimlik doğrulama x-api-key header’ını kullanır (Authorization: Bearer değil). Anahtarlarınızı dashboard’un API bölümünden oluşturun ve bunları şifre gibi düşünün — tam hesap ayrıcalıklarını taşırlar.

curl -H "x-api-key: buraya_api_anahtariniz" \
     https://api.wallawhats.com/subscriptions

Temel API Uç Noktaları

WALLAWHATS API, entegrasyonlar oluşturmak için beş ana kaynak grubu sağlar:

Abonelik Yönetimi

Yeni abonelik oluştur:

POST /subscriptions
Content-Type: application/json
x-api-key: buraya_api_anahtariniz

{
  "xUsername": "elonmusk"
}

Tüm abonelikleri listele:

GET /subscriptions
x-api-key: buraya_api_anahtariniz

Aboneliği kaldır:

DELETE /subscriptions/elonmusk
x-api-key: buraya_api_anahtariniz

Silme uç noktasının dahili abonelik ID’si değil, X handle’ını path parametresi olarak aldığını unutmayın.

Bildirim Geçmişi ve Denetim

Teslimat durumuyla bildirim geçmişini çek:

GET /notifications?from=1704067200000&to=1704153600000
x-api-key: buraya_api_anahtariniz

Bildirimler uç noktası, her satırın bir kanala gönderilen bir uyarıyı temsil ettiği sayfalanmış sonuçlar döner. Durum değerleri şunları içerir:

  • queued: Uyarı kabul edildi, teslimat bekleniyor
  • sent: Kanal sağlayıcısına gönderildi
  • delivered: Hedef tarafından alındığı onaylandı
  • read: Alıcı tarafından açıldı (yalnızca WhatsApp, okundu bilgilerinin etkin olmasını gerektirir)
  • failed: Teslimat denemesi başarısız oldu

Kanal Yönetimi

Yapılandırılmış kanalları listele:

GET /channels
x-api-key: buraya_api_anahtariniz

Yeni kanal ekle:

POST /channels
Content-Type: application/json
x-api-key: buraya_api_anahtariniz

{
  "type": "email",
  "destination": "alerts@yourcompany.com"
}

Kanalı kaldır:

DELETE /channels/buraya_kanal_id
x-api-key: buraya_api_anahtariniz

Tweet Anlık Görüntüleri

Anlık görüntü galerisine eriş:

GET /snapshots
x-api-key: buraya_api_anahtariniz

Belirli anlık görüntüyü sil:

DELETE /snapshots/buraya_tweet_id
x-api-key: buraya_api_anahtariniz

Entegrasyonlar Oluşturma: Kod Örnekleri

Node.js Entegrasyonu

İşte abonelik ekleyen ve yeni bildirimler için yoklama yapan bir Node.js örneği:

const axios = require('axios');

class WallaWhatsClient {
  constructor(apiKey) {
    this.apiKey = apiKey;
    this.baseURL = 'https://api.wallawhats.com';
  }

  async addSubscription(xUsername) {
    try {
      const response = await axios.post(
        `${this.baseURL}/subscriptions`,
        { xUsername },
        { headers: { 'x-api-key': this.apiKey } }
      );
      return response.data;
    } catch (error) {
      throw new Error(`Abonelik ekleme başarısız: ${error.response?.data?.message || error.message}`);
    }
  }

  async getNotifications(from, to, lastKey = null) {
    try {
      let url = `${this.baseURL}/notifications?from=${from}&to=${to}`;
      if (lastKey) url += `&lastKey=${lastKey}`;
      
      const response = await axios.get(url, {
        headers: { 'x-api-key': this.apiKey }
      });
      return response.data;
    } catch (error) {
      throw new Error(`Bildirim alma başarısız: ${error.response?.data?.message || error.message}`);
    }
  }

  async listSubscriptions() {
    try {
      const response = await axios.get(
        `${this.baseURL}/subscriptions`,
        { headers: { 'x-api-key': this.apiKey } }
      );
      return response.data;
    } catch (error) {
      throw new Error(`Abonelik listeleme başarısız: ${error.response?.data?.message || error.message}`);
    }
  }
}

// Kullanım örneği
async function monitorCompetitor() {
  const client = new WallaWhatsClient('buraya_api_anahtariniz');
  
  // Yeni abonelik ekle
  await client.addSubscription('vercel');
  console.log('@vercel artık izleniyor');
  
  // Son bildirimleri kontrol et
  const oneDayAgo = Date.now() - (24 * 60 * 60 * 1000);
  const notifications = await client.getNotifications(oneDayAgo, Date.now());
  
  console.log(`${notifications.items.length} son uyarı bulundu`);
  notifications.items.forEach(notification => {
    console.log(`${notification.xUsername}: ${notification.status} at ${notification.timestamp}`);
  });
}

Python Entegrasyonu

Python iş akışları için, abonelik yönetimi ve bildirim yoklamasını işleyen bir sınıf:

import requests
import time
from datetime import datetime, timedelta

class WallaWhatsAPI:
    def __init__(self, api_key):
        self.api_key = api_key
        self.base_url = 'https://api.wallawhats.com'
        self.headers = {'x-api-key': api_key}

    def add_subscription(self, x_username):
        """İzlemek için yeni X hesabı ekle"""
        response = requests.post(
            f'{self.base_url}/subscriptions',
            json={'xUsername': x_username},
            headers=self.headers
        )
        response.raise_for_status()
        return response.json()

    def remove_subscription(self, x_username):
        """X hesabını izlemeden kaldır"""
        response = requests.delete(
            f'{self.base_url}/subscriptions/{x_username}',
            headers=self.headers
        )
        response.raise_for_status()
        return response.status_code == 200

    def get_notifications(self, from_ms, to_ms, last_key=None):
        """Sayfalama ile bildirim geçmişini al"""
        params = {'from': from_ms, 'to': to_ms}
        if last_key:
            params['lastKey'] = last_key
            
        response = requests.get(
            f'{self.base_url}/notifications',
            params=params,
            headers=self.headers
        )
        response.raise_for_status()
        return response.json()

    def get_all_notifications(self, from_ms, to_ms):
        """Zaman aralığındaki tüm bildirimleri al, sayfalamayı işle"""
        all_notifications = []
        last_key = None
        
        while True:
            batch = self.get_notifications(from_ms, to_ms, last_key)
            all_notifications.extend(batch['items'])
            
            if not batch.get('lastKey'):
                break
            last_key = batch['lastKey']
        
        return all_notifications

    def list_subscriptions(self):
        """Mevcut tüm abonelikleri al"""
        response = requests.get(
            f'{self.base_url}/subscriptions',
            headers=self.headers
        )
        response.raise_for_status()
        return response.json()

# Örnek: Günlük denetim raporu
def generate_daily_report():
    api = WallaWhatsAPI('buraya_api_anahtariniz')
    
    # Dünkü bildirimleri al
    end_time = int(time.time() * 1000)
    start_time = end_time - (24 * 60 * 60 * 1000)
    
    notifications = api.get_all_notifications(start_time, end_time)
    
    # Hesap ve duruma göre grupla
    report = {}
    for notification in notifications:
        account = notification['xUsername']
        status = notification['status']
        
        if account not in report:
            report[account] = {'total': 0, 'delivered': 0, 'failed': 0}
        
        report[account]['total'] += 1
        if status in ['delivered', 'read']:
            report[account]['delivered'] += 1
        elif status == 'failed':
            report[account]['failed'] += 1
    
    # Özeti yazdır
    print(f"Günlük Uyarı Raporu - {datetime.now().strftime('%Y-%m-%d')}")
    print("-" * 50)
    for account, stats in report.items():
        success_rate = (stats['delivered'] / stats['total']) * 100 if stats['total'] > 0 else 0
        print(f"@{account}: {stats['total']} uyarı, %{success_rate:.1f} teslim edildi")

Kanal Yönlendirmeyi Anlama

WALLAWHATS global kanal yönlendirme modeli kullanır — her abonelikten gelen her uyarı, etkin ve doğrulanmış tüm kanallara yayılır. API aracılığıyla belirli hesapları belirli hedeflere yönlendiremezsiniz (“@elonmusk → WhatsApp, @vercel → e-posta” gibi).

Kanal seçimi Kanallar sayfasında hesap düzeyinde gerçekleşir. API aracılığıyla kanal eklediğinizde, doğrulandıktan sonra tüm uyarılar için kullanılabilir hale gelir. Kanalı kaldırdığınızda, tüm aboneliklerden uyarı almayı durdurur.

Bu tasarım otomasyonu basitleştirirken uyarı parçalanmasını önler. Entegrasyon kodunuzun abonelik başına yönlendirme kurallarını takip etmesi gerekmez — sadece hangi hesapları izleyeceğinizi ve hangi kanalları etkinleştireceğinizi yönetin.

Hız Limitleri ve Hız Kapakları

WALLAWHATS, yüksek etkinlik dönemlerinde uyarı spam’ini önlemek için kullanıcı düzeyinde hız kapakları uygular:

  • Free: 2 uyarı/saat
  • Pro: 5 uyarı/saat
  • Pro+: 15 uyarı/saat
  • Business: 30 uyarı/saat
  • Enterprise: 100 uyarı/saat

Hız kapakları aşıldığında, ek tweet’ler özet mesajlarına tamponlanır ve her 15 dakikada bir teslim edilir. API entegrasyonunuz bunları ayrı bildirim kayıtları olarak görür — biri anında uyarı için, biri de her özet batch’i için.

API’nin kendisi abonelik yönetimi veya bildirim sorguları üzerinde ayrı hız limitleri uygulamaz. Ancak uç noktaları gereksiz isteklerle bombardımana tutmaktan kaçının — abonelik listelerini yerel olarak önbelleğe alın ve bildirim sorgularını verimli şekilde toplu halde gerçekleştirin.

Hata İşleme ve Sorun Giderme

Yaygın API hata kalıpları ve nasıl işleneceği:

Kimlik doğrulama başarısızlıkları (401):

  • API anahtarınızın doğru olduğunu ve iptal edilmediğini doğrulayın
  • Authorization değil, x-api-key header’ını kullandığınızdan emin olun

Abonelik çakışmaları (409):

  • Hesap zaten izleniyor: Abonelik mevcut, başarı olarak değerlendirin
  • Hesap korumalı/özel: WALLAWHATS bunları tasarım gereği reddeder

Hız sınırlama (429):

  • Yeniden denemeden önce üssel olarak geri çekilin
  • İzlenen hesaplarda plan limitlerini yaklaştığınızı kontrol edin

Kanal doğrulama sorunları:

  • Yeni kanallar uyarı almadan önce OTP doğrulaması gerektirir
  • Programatik olarak eklenen kanallar kullanıcı doğrulamayı tamamlayana kadar çalışmaz

Entegrasyonlarınızı İzleme ve Uyarma

WALLAWHATS işletme iş akışlarına entegre edildiğinde kritik altyapı haline geldiğinden, entegrasyon sağlığınızı izleyin:

Abonelik Sapma Tespiti:

// Beklenen aboneliklerin hala etkin olup olmadığını kontrol et
async function auditSubscriptions(expectedHandles) {
  const current = await client.listSubscriptions();
  const currentHandles = current.map(s => s.xUsername);
  
  const missing = expectedHandles.filter(h => !currentHandles.includes(h));
  if (missing.length > 0) {
    console.warn(`Eksik abonelikler: ${missing.join(', ')}`);
  }
  
  return missing;
}

Teslimat Başarı Oranı İzleme:

def check_delivery_health():
    # Son 6 saati kontrol et
    end_time = int(time.time() * 1000)
    start_time = end_time - (6 * 60 * 60 * 1000)
    
    notifications = api.get_all_notifications(start_time, end_time)
    if not notifications:
        return None
    
    delivered = sum(1 for n in notifications if n['status'] in ['delivered', 'read'])
    total = len(notifications)
    success_rate = (delivered / total) * 100
    
    if success_rate < 95:
        # Operasyon ekibinizi uyarın
        print(f"UYARI: Teslimat başarı oranı %{success_rate:.1f}'e düştü")
    
    return success_rate

Entegrasyon Kalıpları ve En İyi Uygulamalar

Webhook Tarzı İşleme: WALLAWHATS doğrudan webhook sağlamasa da, yeni uyarılar için bildirimler uç noktasını yoklayabilir ve gerçek zamanlıya yakın şekilde işleyebilirsiniz:

async function pollForNewAlerts() {
  const lastCheck = localStorage.getItem('lastNotificationCheck') || Date.now() - 300000;
  const now = Date.now();
  
  const notifications = await client.getNotifications(lastCheck, now);
  
  for (const notification of notifications.items) {
    if (notification.status === 'delivered') {
      // Uyarıyı işle - Slack'e gönder, veritabanını güncelle, vb.
      await processAlert(notification);
    }
  }
  
  localStorage.setItem('lastNotificationCheck', now);
}

// Her 30 saniyede bir yokla
setInterval(pollForNewAlerts, 30000);

Koşullu Abonelik Yönetimi: Harici tetikleyicilere dayalı olarak abonelikleri dinamik olarak ekleyin veya kaldırın:

def update_competitor_monitoring(portfolio_companies):
    """Mevcut portföye dayalı X izlemeyi güncelle"""
    current_subs = {s['xUsername'] for s in api.list_subscriptions()}
    
    # İzlememiz gereken hesaplar
    target_accounts = set()
    for company in portfolio_companies:
        if company.get('ceo_twitter_handle'):
            target_accounts.add(company['ceo_twitter_handle'])
        if company.get('company_twitter_handle'):
            target_accounts.add(company['company_twitter_handle'])
    
    # Eksik abonelikleri ekle
    for account in target_accounts - current_subs:
        try:
            api.add_subscription(account)
            print(f"@{account} izlenmeye başlandı")
        except Exception as e:
            print(f"@{account} eklenemedi: {e}")
    
    # Eski abonelikleri kaldır
    for account in current_subs - target_accounts:
        api.remove_subscription(account)
        print(f"@{account} izlenmesi durduruldu")

WALLAWHATS API, gerçek zamanlı X uyarılarını manuel dashboard aracından programlanabilir altyapı bileşenine dönüştürür. İster özel zeka iş akışları oluşturun, ister marka izlemeyi otomatikleştirin, isterse white-label bildirim hizmetleri yaratın — API, prodüksiyon entegrasyonu için gereken kontrol ve denetim yeteneklerini sağlar.

İzlemenizi rakiplerin ötesine genişletmek mi istiyorsunuz? Piyasa sinyalleri için kripto Twitter’ı izleme rehberimize göz atın veya gazetecilerin gerçek zamanlı kaynak izleme için WALLAWHATS’ı nasıl kullandığını öğrenin.

Bir daha önemli bir gönderiyi kaçırmayın. Ücretsiz hesap oluşturun — 1 WhatsApp numarası, gerçek zamanlı uyarılar, kredi kartı gereksiz.

Blog'a Dön

İlgili Yazılar

Tüm Yazıları Gör »