Skip to content

Externe Server

Marc Staebler edited this page Mar 25, 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.getResponseCode();
        KnuddelsServer.getDefaultLogger().info('Antwort: ' + responseData);
    },
    onFailure: function(responseData, externalServerResponse) {
        KnuddelsServer.getDefaultLogger().error('Fehler: ' + responseData);
    }
});

POST-Request

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

POST mit Daten

extServer.postURL('https://api.example.com/data', {
    data: { query: 'test', format: 'json' },
    onSuccess: function(responseData) {
        // ...
    },
    onFailure: function(responseData) {
        // ...
    }
});

Hinweis: Der data-Parameter erwartet ein JSON-Objekt, keinen String. Die postURL-Methode unterstützt keinen headers-Parameter.


Domain-Freigabe

Externe Requests sind nur an freigegebene Domains möglich. Welche Domains für deine App freigeschaltet sind, kannst du programmatisch abfragen. Für eigene Domains muss eine Freigabe beantragt werden.

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

Praxisbeispiel: Wetter-App

// Innerhalb von var App = { ... };
chatCommands: {
    wetter: function(user, params, command) {
        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