Skip to content

Externe Server

Marc Staebler edited this page Mar 24, 2026 · 6 revisions

Externe Server-Kommunikation

Mit ExternalServerAccess kann deine UserApp HTTP-Requests an externe APIs senden – zum Beispiel für Wetterdaten, KI-Dienste, Datenbanken oder Webhooks.


ExternalServerAccess

var extServer = KnuddelsServer.getExternalServerAccess();

GET-Request

extServer.getAllAccessibleDomains();  // Verfügbare Domains abrufen

extServer.getURL('https://api.example.com/data', {
    onSuccess: function(responseData, externalServerResponse) {
        var statusCode = externalServerResponse.getStatusCode();
        KnuddelsServer.getDefaultLogger().info('Antwort: ' + responseData);
    },
    onFailure: function(responseData, externalServerResponse) {
        KnuddelsServer.getDefaultLogger().error('Fehler: ' + responseData);
    }
});

POST-Request

extServer.postURL('https://api.example.com/submit', {
    data: JSON.stringify({ name: 'Test', value: 42 }),
    onSuccess: function(responseData, externalServerResponse) {
        var result = JSON.parse(responseData);
        // Ergebnis verarbeiten...
    },
    onFailure: function(responseData, externalServerResponse) {
        KnuddelsServer.getDefaultLogger().error('POST fehlgeschlagen');
    }
});

Request mit Headers

extServer.postURL('https://api.example.com/data', {
    data: JSON.stringify({ query: 'test' }),
    headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer DEIN_TOKEN'
    },
    onSuccess: function(responseData) {
        // ...
    },
    onFailure: function(responseData) {
        // ...
    }
});

Domain-Freigabe

Externe Requests sind nur an freigegebene Domains möglich. Standardmäßig sind bestimmte öffentliche APIs erreichbar. Für eigene Domains muss eine Freigabe beantragt werden.

// Alle freigegebenen Domains auflisten
var domains = extServer.getAllAccessibleDomains();

Praxisbeispiel: Wetter-App

App.chatCommands.wetter = function(user, params, func) {
    if (!params || params.trim().length === 0) {
        user.sendPrivateMessage('Bitte gib eine Stadt an: /wetter Berlin');
        return;
    }

    var stadt = params.trim();
    var extServer = KnuddelsServer.getExternalServerAccess();

    extServer.getURL('https://api.example.com/weather?city=' + encodeURIComponent(stadt), {
        onSuccess: function(responseData) {
            var daten = JSON.parse(responseData);
            user.sendPrivateMessage(
                'Wetter in ' + stadt + ': ' + daten.temp + '°C, ' + daten.description
            );
        },
        onFailure: function() {
            user.sendPrivateMessage('Konnte Wetterdaten für ' + stadt + ' nicht abrufen.');
        }
    });
};

API-Referenz


← Zurück zur Übersicht

Navigation

Einstieg

Kernkonzepte

Features

Tutorials

Referenz & Hilfe

Clone this wiki locally