· Nacho Coll · Guides  · 9 min branja

API za X opozorila: Programske naročnine in zgodovina obvestil

Zgradite prilagojene integracije na WALLAWHATS. Dodajajte in odstranjujte X naročnine, usmerjajte opozorila v kanale, povlecite zgodovino obvestil — vse prek REST-a.

Zgradite prilagojene integracije na WALLAWHATS. Dodajajte in odstranjujte X naročnine, usmerjajte opozorila v kanale, povlecite zgodovino obvestil — vse prek REST-a.

Ko postanejo opozorila X (Twitter) v realnem času ključna za vaše poslovanje, ročno upravljanje nadzorne plošče doseže svoj limit. Ne glede na to, ali gradite nadzorne plošče za obveščenost o strankah, avtomatizirate poteke dela za spremljanje blagovne znamke ali ustvarjate prilagojene sisteme obveščanja za trgovske mize, potrebujete programski nadzor nad svojimi X naročninami za opozorila.

WALLAWHATS ponuja REST API, ki vam omogoča ustvarjanje, upravljanje in nadzor X naročnin za opozorila brez dotikanja spletnega vmesnika. Dodajte ali odstranite spremljane račune, povlecite zgodovino obvestil s statusom dostave in integrirajte opozorila X v realnem času v kateri koli sistem, ki govori HTTP.

API keys management page with create / revoke controls

Zakaj uporabiti WALLAWHATS API?

Nadzorna plošča odlično deluje za ročne poteke dela, vendar dostop do API-ja omogoča avtomatizacijske scenarije, ki presegajo človeško upravljanje:

Platforme za obveščenost o strankah: Samodejno se naročite na na novo identificirane vodilne konkurente, vodje izdelkov ali industrijske analitike, ko so odkrite prek raziskovalnih orodij ali CRM integracij.

Trgovski in finančni poteki dela: Programsko spremljajte regulativne račune, CEO-jeve ročice ali sektorsko specifične novinarje na podlagi sprememb portfelja ali tržnih dogodkov — brez ročnega upravljanja naročnin.

Spremljanje blagovne znamke v obsegu: Dodajte ali odstranite sledenje omembam blagovne znamke, ko se lansirajo nove kampanje, pošiljajo izdelki ali razvijajo krizne situacije.

Večstanovanjske SaaS aplikacije: Bela etiketa spremljanja X v realnem času za vaše stranke, s programskim upravljanjem naročnin v ozadju.

Sistemi skladnosti in nadzora: Povlecite celotno zgodovino obvestil s statusom dostave za regulativno poročanje, notranje revizijske sledi ali spremljanje SLA.

Preverjanje pristnosti in dostop do API-ja

Vsak WALLAWHATS načrt vključuje dostop do API-ja z razširljivimi kvotami ključev:

  • Free: 1 API ključ
  • Pro: 1 API ključ
  • Pro+: 2 API ključa
  • Business: 5 API ključev
  • Enterprise: 20 API ključev

Preverjanje pristnosti uporablja glavo x-api-key (ne Authorization: Bearer). Generirajte svoje ključe v API odseku nadzorne plošče in jih obravnavajte kot gesla — nosijo polne privilgije računa.

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

Glavni API končni točki

WALLAWHATS API ponuja pet glavnih skupin virov za gradnjo integracij:

Upravljanje naročnin

Ustvarite novo naročnino:

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

{
  "xUsername": "elonmusk"
}

Seznam vseh naročnin:

GET /subscriptions
x-api-key: your_api_key_here

Odstranite naročnino:

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

Opomba: končna točka za brisanje sprejme X ročico kot parameter poti — ne notranjega ID-ja naročnine.

Zgodovina obvestil in nadzor

Povlecite zgodovino obvestil s statusom dostave:

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

Končna točka za obvestila vrača postranirane rezultate z vsako vrstico, ki predstavlja eno opozorilo, dostavljeno v en kanal. Vrednosti statusa vključujejo:

  • queued: Opozorilo sprejeto, čaka na dostavo
  • sent: Poslano ponudniku kanala
  • delivered: Potrjeno prejeto v cilju
  • read: Odprto s strani prejemnika (samo WhatsApp, zahteva omogočene potrditve o branju)
  • failed: Poskus dostave neuspešen

Upravljanje kanalov

Seznam konfiguriranih kanalov:

GET /channels
x-api-key: your_api_key_here

Dodajte nov kanal:

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

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

Odstranite kanal:

DELETE /channels/channel_id_here
x-api-key: your_api_key_here

Posnetki tvitov

Dostop do galerije posnetkov:

GET /snapshots
x-api-key: your_api_key_here

Izbrišite določen posnetek:

DELETE /snapshots/tweet_id_here
x-api-key: your_api_key_here

Gradnja integracij: Primeri kode

Node.js integracija

Tukaj je Node.js primer, ki doda naročnino in poizveduje za nova obvestila:

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(`Failed to add subscription: ${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(`Failed to fetch notifications: ${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(`Failed to list subscriptions: ${error.response?.data?.message || error.message}`);
    }
  }
}

// Usage example
async function monitorCompetitor() {
  const client = new WallaWhatsClient('your_api_key_here');
  
  // Add a new subscription
  await client.addSubscription('vercel');
  console.log('Now monitoring @vercel');
  
  // Check recent notifications
  const oneDayAgo = Date.now() - (24 * 60 * 60 * 1000);
  const notifications = await client.getNotifications(oneDayAgo, Date.now());
  
  console.log(`Found ${notifications.items.length} recent alerts`);
  notifications.items.forEach(notification => {
    console.log(`${notification.xUsername}: ${notification.status} at ${notification.timestamp}`);
  });
}

Python integracija

Za Python poteke dela tukaj je razred, ki obravnava upravljanje naročnin in poizvedovanje obvestil:

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):
        """Add a new X account to monitor"""
        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):
        """Remove an X account from monitoring"""
        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):
        """Fetch notification history with pagination"""
        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):
        """Fetch all notifications in a time range, handling pagination"""
        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):
        """Get all current subscriptions"""
        response = requests.get(
            f'{self.base_url}/subscriptions',
            headers=self.headers
        )
        response.raise_for_status()
        return response.json()

# Example: Daily audit report
def generate_daily_report():
    api = WallaWhatsAPI('your_api_key_here')
    
    # Get yesterday's notifications
    end_time = int(time.time() * 1000)
    start_time = end_time - (24 * 60 * 60 * 1000)
    
    notifications = api.get_all_notifications(start_time, end_time)
    
    # Group by account and status
    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
    
    # Print summary
    print(f"Daily Alert Report - {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']} alerts, {success_rate:.1f}% delivered")

Razumevanje usmerjanja kanalov

WALLAWHATS uporablja globalni model usmerjanja kanalov — vsako opozorilo vseh naročnin se razširi v vse omogočene in preverjene kanale. Ne morete usmerjati določenih računov v določene cilje prek API-ja (kot „@elonmusk → WhatsApp, @vercel → email”).

Izbira kanala se dogaja na ravni računa na strani Kanali. Ko dodate kanal prek API-ja, postane dostopen za vsa opozorila, ko je preverjen. Ko odstranite kanal, preneha prejemati opozorila vseh naročnin.

Ta zasnova poenostavi avtomatizacijo in hkrati prepreči fragmentacijo opozoril. Vaša integracijska koda ne potrebuje slediti pravilom usmerjanja za posamezne naročnine — samo upravljajte, katere račune spremljati in katere kanale omogočiti.

Omejitve hitrosti in omejitve hitrosti

WALLAWHATS implementira omejitve hitrosti na ravni uporabnika, da prepreči spam opozoril med obdobji visoke aktivnosti:

  • Free: 2 opozorili/uro
  • Pro: 5 opozoril/uro
  • Pro+: 15 opozoril/uro
  • Business: 30 opozoril/uro
  • Enterprise: 100 opozoril/uro

Ko so omejitve hitrosti presežene, se dodatni tviti shranijo v povzetek sporočil in dostavljajo vsakih 15 minut. Vaša API integracija bo to videla kot ločene zapise obvestil — enega za takojšnje opozorilo in enega za vsako serijo povzetka.

API sam ne nalaga ločenih omejitev hitrosti za upravljanje naročnin ali poizvedbe obvestil. Vendar se izogibajte bombardiranju končnih točk z nepotrebnimi zahtevami — lokalno predpomnite sezname naročnin in učinkovito grupiraje poizvedbe obvestil.

Obravnavanje napak in odpravljanje težav

Pogosti vzorci API napak in kako jih obravnavati:

Napake pri preverjanju pristnosti (401):

  • Preverite, da je vaš API ključ pravilen in ni bil preklican
  • Zagotovite, da uporabljate glavo x-api-key, ne Authorization

Konflikti naročnin (409):

  • Račun že spremljen: Naročnina obstaja, obravnavajte kot uspeh
  • Račun zaščiten/zaseben: WALLAWHATS jih zavrača po zasnovi

Omejevanje hitrosti (429):

  • Eksponentno se umaknite pred ponovnim poskusom
  • Preverite, ali se približujete omejitvam načrta za spremljane račune

Težave s preverjanjem kanala:

  • Novi kanali zahtevajo OTP preverjanje pred prejemanjem opozoril
  • Programsko dodani kanali ne bodo delovali, dokler uporabnik ne zaključi preverjanja

Spremljanje in opozarjanje vaših integracij

Ker WALLAWHATS postane kritična infrastruktura, ko je integrirana v poslovne poteke dela, spremljajte zdravje svoje integracije:

Zaznavanje odmika naročnin:

// Check if expected subscriptions are still active
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(`Missing subscriptions: ${missing.join(', ')}`);
  }
  
  return missing;
}

Spremljanje stopnje uspešnosti dostave:

def check_delivery_health():
    # Check last 6 hours
    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:
        # Alert your ops team
        print(f"WARNING: Delivery success rate dropped to {success_rate:.1f}%")
    
    return success_rate

Vzorci integracij in najboljše prakse

Obdelava v slogu webhook: Čeprav WALLAWHATS ne ponuja webhook-ov neposredno, lahko poizvedujete končno točko obvestil za nova opozorila in jih obdelate v skoraj realnem času:

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') {
      // Process the alert - send to Slack, update database, etc.
      await processAlert(notification);
    }
  }
  
  localStorage.setItem('lastNotificationCheck', now);
}

// Poll every 30 seconds
setInterval(pollForNewAlerts, 30000);

Pogojno upravljanje naročnin: Dinamično dodajanje ali odstranjevanje naročnin na podlagi zunanjih sprožilcev:

def update_competitor_monitoring(portfolio_companies):
    """Update X monitoring based on current portfolio"""
    current_subs = {s['xUsername'] for s in api.list_subscriptions()}
    
    # Accounts we should be monitoring
    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'])
    
    # Add missing subscriptions
    for account in target_accounts - current_subs:
        try:
            api.add_subscription(account)
            print(f"Started monitoring @{account}")
        except Exception as e:
            print(f"Failed to add @{account}: {e}")
    
    # Remove outdated subscriptions
    for account in current_subs - target_accounts:
        api.remove_subscription(account)
        print(f"Stopped monitoring @{account}")

WALLAWHATS API pretvarja opozorila X v realnem času iz orodja ročne nadzorne plošče v programabilno infrastrukturno komponento. Ne glede na to, ali gradite prilagojene obveščevalne poteke dela, avtomatizirate spremljanje blagovne znamke ali ustvarjate storitve obveščanja z belo etiketo, API zagotavlja nadzor in revizijske zmogljivosti, potrebne za proizvodno integracijo.

Želite razširiti svoje spremljanje onkraj konkurentov? Preverite naš vodnik za spremljanje kripto Twitter-ja za tržne signale ali se naučite, kako novinarji uporabljajo WALLAWHATS za spremljanje virov v realnem času.

Nikoli več ne zamudite pomembnega objave. Ustvarite brezplačen račun — 1 WhatsApp številka, opozorila v realnem času, kreditna kartica ni potrebna.

Nazaj na Blog

Povezani članki

Ogled vseh člankov »