Zum Inhalt springen
  • Dunkel
  • Hell
  • System

Fetch URL Setup für externe APIs

Streamer.bot kann externe Web-APIs aufrufen via Core Network Fetch URL . Damit baust du Commands die externe Daten holen (Wetter, Witze, Cat-Facts) ohne eine Zeile C#.

Was gehtWas nicht geht
GET-RequestsPOST / PUT / DELETE / PATCH
Custom HeadersRequest Body
JSON-Response parsenStatus-Code abfragen
Variable mit Response-BodyCookies / Sessions

Für POST/PUT/DELETE und für HTTP-Status-Codes: C# nötig. Wir bleiben hier bei GET.

FeldBedeutung
URLVollständige Ziel-URL inkl. Query-Parameter
Variable NameVariable in die die Response geschrieben wird
Parse result as JSONToggle: wenn an, wird JSON in %<var>.<key>% aufgesplittet
HeadersOptional, z.B. User-Agent, Accept, API-Keys

%<variableName>% enthält die komplette Response als String.

Beispiel: API liefert {"fact": "Katzen schlafen 16h", "length": 23}, Variable Name cat:

  • %cat.fact% = Katzen schlafen 16h
  • %cat.length% = 23

Nested funktioniert: %data.user.name%, %data.user.age%.

Stattdessen prüfen wir den Response-Body. Bei JSON-Parsing reicht ein Null-Check auf den erwarteten Key:

1. Fetch URL: https://api.example.com/data → meinResult (JSON-Parse aktiv)
2. If/Else: %meinResult.feld% Is Null or Empty
├── Send Message: "@%user% API gerade nicht erreichbar."
└── Break
3. Send Message: "@%user% Antwort: %meinResult.feld%"

Bei Plain-Text-APIs (zum Beispiel wttr.in) prüfst du den Response-String:

1. Fetch URL: https://wttr.in/München?format=3 → wetter (JSON-Parse aus)
2. If/Else: %wetter% Is Null or Empty
├── Send Message: "@%user% Wetter-API nicht erreichbar."
└── Break
3. Send Message: "@%user% %wetter%"

User-Input gehört encoded:

URL: https://wttr.in/$urlencode(%rawInput%)$?format=3

Oder die vom Trigger gesetzte Variable %input0URLEncoded%. Bei Umlauten (München) Pflicht.

Manche APIs verlangen Header. User-Agent ist häufig sinnvoll, weil Default-Agents blockiert werden:

HeaderWert
User-AgentAzaCraft Streamer.bot/1.0
Acceptapplication/json
X-API-Keydein Key

Statt hartkodieren:

  1. Einmalig im UI: Globals+ AddweatherApiKey = "abc123" (Persisted Global).
  2. In Fetch-URL: &appid=~weatherApiKey~.

Damit liegt der Key nicht im Action-Export. Beim Import-String genauso: der Key ist nicht eingefroren.

CommandAPIAufwand
!weather <stadt>wttr.in (kostenlos, ohne Key)einsteiger
!jokeicanhazdadjoke (Header-Pflicht)einsteiger
!catfactcatfact.ninja (kostenlos)einsteiger
  • POST/PUT: geht nicht über Fetch URL. Nur C#.
  • Rate-Limit (429): kostenlose APIs haben oft 1000/Tag. Mit Cooldown bremsen.
  • CORS: irrelevant, SB ist kein Browser.
  • JSON-Toggle vergessen: ohne Toggle ist %var% der Raw-String, mit Toggle gesplittet.
  • Lange Responses: Twitch 500-Zeichen-Limit. Nur Teilfeld posten, nicht das ganze JSON.
  • Schema-Änderung: kostenlose APIs sind nicht stabil. Bei „leeres Feld“ Verdacht: Doku checken.