· Nacho Coll · Guides  · 9 мин четене

X Alerts API: Програмни абонаменти и история на уведомленията

Създайте персонализирани интеграции върху WALLAWHATS. Добавяйте и премахвайте X абонаменти, насочвайте сигнали към канали, извличайте история на уведомленията — всичко чрез REST.

Създайте персонализирани интеграции върху WALLAWHATS. Добавяйте и премахвайте X абонаменти, насочвайте сигнали към канали, извличайте история на уведомленията — всичко чрез REST.

Когато сигналите в реално време от X (Twitter) станат критично важни за вашия бизнес, ръчното управление чрез табло достига предел. Независимо дали създавате табла за клиентска интелигентност, автоматизирате работни процеси за мониторинг на бранда или правите персонализирани системи за уведомления за търговски маси, имате нужда от програмен контрол върху вашите X абонаменти за сигнали.

WALLAWHATS предоставя REST API, който ви позволява да създавате, управлявате и одитирате X абонаменти за сигнали без да докосвате уеб интерфейса. Добавяйте или премахвайте наблюдавани профили, извличайте история на уведомленията със статус на доставка и интегрирайте X сигнали в реално време във всяка система, която „говори” HTTP.

API keys management page with create / revoke controls

Защо да използвате WALLAWHATS API?

Таблото работи отлично за ръчни работни процеси, но достъпът до API отключва сценарии за автоматизация, които се мащабират отвъд човешкото управление:

Платформи за клиентска интелигентност: Автоматично абонирайте за новоидентифицирани конкурентни ръководители, продуктови лидери или индустриални анализатори, докато бъдат открити чрез изследователски инструменти или CRM интеграции.

Търговски и финансови работни процеси: Програмно наблюдавайте регулаторни профили, CEO акаунти или специфични за сектора журналисти въз основа на промени в портфейла или пазарни събития — без ръчно управление на абонаменти.

Мониторинг на бранд в мащаб: Добавяйте или премахвайте проследяване на споменавания на бранда, докато се стартират нови кампании, доставят се продукти или се развиват кризисни ситуации.

Мултитенантни SaaS приложения: White-label мониторинг на X в реално време за вашите клиенти, с програмно управление на абонаменти зад кулисите.

Системи за съответствие и одит: Извличайте пълна история на уведомленията със статус на доставка за регулаторни отчети, вътрешни одитни следи или мониторинг на SLA.

API автентикация и достъп

Всеки WALLAWHATS план включва API достъп с мащабируеми квоти за ключове:

  • Free: 1 API ключ
  • Pro: 1 API ключ
  • Pro+: 2 API ключа
  • Business: 5 API ключа
  • Enterprise: 20 API ключа

Автентикацията използва хедъра x-api-key (не Authorization: Bearer). Генерирайте вашите ключове от API секцията на таблото и ги третирайте като пароли — те носят пълни привилегии на профила.

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

Основни API крайни точки

WALLAWHATS API предоставя пет основни групи ресурси за създаване на интеграции:

Управление на абонаменти

Създайте нов абонамент:

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

{
  "xUsername": "elonmusk"
}

Изброй на всички абонаменти:

GET /subscriptions
x-api-key: your_api_key_here

Премахнете абонамент:

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

Забележете, че delete крайната точка приема X username като path параметър — не вътрешен subscription ID.

История на уведомленията и одит

Извличане на история на уведомленията със статус на доставка:

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

Крайната точка notifications връща страници с резултати, като всеки ред представлява един сигнал, доставен на един канал. Стойностите на статуса включват:

  • queued: Сигналът е приет, чака доставка
  • sent: Изпратен до доставчика на канала
  • delivered: Потвърдено получен от дестинацията
  • read: Отворен от получателя (само WhatsApp, изисква включени потвърждения за прочитане)
  • failed: Неуспешен опит за доставка

Управление на канали

Изброй на конфигурираните канали:

GET /channels
x-api-key: your_api_key_here

Добавете нов канал:

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

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

Премахнете канал:

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

Tweet снимки

Достъп до галерията със снимки:

GET /snapshots
x-api-key: your_api_key_here

Изтрийте конкретна снимка:

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

Създаване на интеграции: Примери с код

Node.js интеграция

Ето Node.js пример, който добавя абонамент и проверява за нови уведомления:

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}`);
    }
  }
}

// Пример за употреба
async function monitorCompetitor() {
  const client = new WallaWhatsClient('your_api_key_here');
  
  // Добавете нов абонамент
  await client.addSubscription('vercel');
  console.log('Сега наблюдаваме @vercel');
  
  // Проверете скорошните уведомления
  const oneDayAgo = Date.now() - (24 * 60 * 60 * 1000);
  const notifications = await client.getNotifications(oneDayAgo, Date.now());
  
  console.log(`Намерени ${notifications.items.length} скорошни сигнали`);
  notifications.items.forEach(notification => {
    console.log(`${notification.xUsername}: ${notification.status} в ${notification.timestamp}`);
  });
}

Python интеграция

За Python работни процеси, ето клас, който обработва управлението на абонаменти и проверката за уведомления:

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):
        """Добавете нов X профил за наблюдение"""
        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 профил от наблюдение"""
        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):
        """Извличане на история на уведомленията с пагинация"""
        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):
        """Извличане на всички уведомления в определен период, обработвайки пагинацията"""
        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):
        """Получете всички текущи абонаменти"""
        response = requests.get(
            f'{self.base_url}/subscriptions',
            headers=self.headers
        )
        response.raise_for_status()
        return response.json()

# Пример: Дневен одитен отчет
def generate_daily_report():
    api = WallaWhatsAPI('your_api_key_here')
    
    # Получете вчерашните уведомления
    end_time = int(time.time() * 1000)
    start_time = end_time - (24 * 60 * 60 * 1000)
    
    notifications = api.get_all_notifications(start_time, end_time)
    
    # Групирайте по профил и статус
    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(f"Дневен отчет за сигнали - {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']} сигнала, {success_rate:.1f}% доставени")

Разбиране на насочването на канали

WALLAWHATS използва глобален модел за насочване на канали — всеки сигнал от всеки абонамент се разпространява до всички включени и верифицирани канали. Не можете да насочите специфични профили към специфични дестинации чрез API (като „@elonmusk → WhatsApp, @vercel → имейл”).

Селекцията на канал се случва на ниво профил в страницата Канали. Когато добавите канал чрез API, той става достъпен за всички сигнали след верификация. Когато премахнете канал, той спира да получава сигнали от всички абонаменти.

Този дизайн опростява автоматизацията, като предотвратява фрагментацията на сигналите. Вашият интеграционен код не трябва да проследява правила за насочване по абонамент — просто управлявайте кои профили да наблюдавате и кои канали да включите.

Ограничения на скоростта и ограничения за скорост

WALLAWHATS прилага ограничения за скорост на ниво потребител, за да предотврати спам със сигнали по време на периоди с висока активност:

  • Free: 2 сигнала/час
  • Pro: 5 сигнала/час
  • Pro+: 15 сигнала/час
  • Business: 30 сигнала/час
  • Enterprise: 100 сигнала/час

Когато ограниченията за скорост бъдат превишени, допълнителните туитове се буферират в обобщени съобщения и се доставят на всеки 15 минути. Вашата API интеграция ще види тези като отделни записи за уведомления — един за незабавния сигнал и един за всяка обобщена партида.

Самото API не налага отделни ограничения на скоростта за управление на абонаменти или заявки за уведомления. Въпреки това, избягвайте да бомбардирате крайните точки с ненужни заявки — кеширайте списъците с абонаменти локално и групирайте заявките за уведомления ефективно.

Обработка на грешки и отстраняване на неизправности

Общи модели на API грешки и как да ги обработите:

Неуспехи при автентикация (401):

  • Проверете дали вашият API ключ е правилен и не е отменен
  • Уверете се, че използвате хедъра x-api-key, не Authorization

Конфликти при абонаменти (409):

  • Профилът вече се наблюдава: Абонаментът съществува, третирайте като успех
  • Защитен/частен профил: WALLAWHATS ги отказва по дизайн

Ограничение на скоростта (429):

  • Отступете експоненциално преди повтарящ опит
  • Проверете дали се приближавате до ограниченията на плана за наблюдавани профили

Проблеми с верификацията на канала:

  • Новите канали изискват OTP верификация преди получаване на сигнали
  • Програмно добавените канали няма да работят, докато потребителят не завърши верификацията

Мониторинг и алармиране на вашите интеграции

Тъй като WALLAWHATS става критична инфраструктура при интегриране в бизнес работни процеси, наблюдавайте здравето на вашата интеграция:

Откриване на отклонение в абонаментите:

// Проверете дали очакваните абонаменти са все още активни
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.join(', ')}`);
  }
  
  return missing;
}

Мониторинг на процента на успех при доставка:

def check_delivery_health():
    # Проверете последните 6 часа
    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:
        # Алармирайте вашия оперативен екип
        print(f"ВНИМАНИЕ: Процентът на успех при доставка падна до {success_rate:.1f}%")
    
    return success_rate

Интеграционни модели и най-добри практики

Обработка в стил webhook: Въпреки че WALLAWHATS не предоставя webhooks директно, можете да проверявате крайната точка notifications за нови сигнали и да ги обработвате в почти реално време:

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') {
      // Обработете сигнала - изпратете до Slack, обновете база данни и т.н.
      await processAlert(notification);
    }
  }
  
  localStorage.setItem('lastNotificationCheck', now);
}

// Проверявайте на всеки 30 секунди
setInterval(pollForNewAlerts, 30000);

Условно управление на абонаменти: Динамично добавяйте или премахвайте абонаменти въз основа на външни тригери:

def update_competitor_monitoring(portfolio_companies):
    """Обновете X мониторинга въз основа на текущия портфейл"""
    current_subs = {s['xUsername'] for s in api.list_subscriptions()}
    
    # Профили, които трябва да наблюдаваме
    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'])
    
    # Добавете липсващи абонаменти
    for account in target_accounts - current_subs:
        try:
            api.add_subscription(account)
            print(f"Започна наблюдението на @{account}")
        except Exception as e:
            print(f"Неуспешно добавяне на @{account}: {e}")
    
    # Премахнете остарели абонаменти
    for account in current_subs - target_accounts:
        api.remove_subscription(account)
        print(f"Спря наблюдението на @{account}")

WALLAWHATS API трансформира X сигналите в реално време от ръчен инструмент за табло в програмируем инфраструктурен компонент. Независимо дали създавате персонализирани работни процеси за интелигентност, автоматизирате мониторинг на бранд или създавате white-label услуги за уведомления, API предоставя контрола и възможностите за одит, необходими за производствена интеграция.

Искате да разширите наблюдението си отвъд конкурентите? Вижте нашия ръководител за наблюдение на крипто Twitter за пазарни сигнали или научете как журналистите използват WALLAWHATS за наблюдение на източници в реално време.

Никога повече не пропускайте важна публикация. Създайте безплатен профил — 1 WhatsApp номер, сигнали в реално време, без нужда от кредитна карта.

Назад към Блога

Свързани статии

Вижте всички статии »
WhatsApp известия за Crypto Twitter — Заловете постовете, движещи пазара за секунди

WhatsApp известия за Crypto Twitter — Заловете постовете, движещи пазара за секунди

Спрете да скролирате Crypto Twitter. Получавайте WhatsApp известия в секундата, в която ключовите акаунти публикуват — основатели, борси, анализатори. Създадено за трейдъри, които не могат да си позволят да пропуснат туит.

TweetDeck се скри зад платена стена — ето безплатна алтернатива, която изпраща известия в WhatsApp

TweetDeck се скри зад платена стена — ето безплатна алтернатива, която изпраща известия в WhatsApp

TweetDeck (сега X Pro) изисква платен абонамент за X. Ако сте го използвали за наблюдение на конкретни акаунти, WallaWhats е безплатна алтернатива без инсталация — известията идват директно в WhatsApp.