Zum Hauptinhalt springen

Praktische Anwendungsfälle

Diese Seite ordnet häufige Otto-Automatisierungsworkflows den schnellsten zuverlässigen Befehlspfaden zu. Verwenden Sie die Szenariomatrix, um Ihren Ablauf auszuwählen, und folgen Sie dann dem passenden Runbook.

Szenariomatrix

SzenarioHauptzielStartbefehl
Erster Befehl bei frischem SetupEnd-to-End-Konnektivität bestätigenotto commands list
Neuen Befehl hinzufügen und validierenMetadaten, Ausführung und Tests überprüfenotto test <site> <command>
Stream-Test und -AbbauListener-Korrelation und Abbruch bestätigenotto test <site> <streamCommand> --stream-follow-ms <ms> --json
ACL-Genehmigung für Controller-ClientNode-gerichtetes Routing autorisierenotto client register + Node-Genehmigungsablauf
requestId-KorrelationEine Ausführung über alle Komponenten verfolgenotto logs list --request-id <id> --source all
Seiten-Screenshots erfassenVisuelles Artefakt aus verwaltetem Tab erhaltenotto cmd --action primitive.page.screenshot

Anwendungsfall 1: Erster Befehl bei frischem Setup

Ziel: End-to-End-Konnektivität nach der ersten Installation von Otto validieren.

# Ausstehende Kopplungscodes aus Erweiterung bestätigen
otto authcode

# Kopplungscode genehmigen
otto pair 123-456

# Bestätigen, dass Node verbunden ist und Befehle sichtbar sind
otto commands list

# Verwalteten Tab öffnen
otto cmd --action primitive.tab.open --payload '{"url":"https://www.reddit.com"}'

# Seitenbefehl ausführen (verwenden Sie tabSessionId aus tab.open-Ergebnis)
otto cmd --action command.run \
--payload '{"site":"reddit.com","command":"getPosts"}' \
--tab-session <tabSessionId>

Überprüfen: commands list gibt ein JSON-Array zurück. command.run gibt messageType: result zurück und beendet sich mit Code 0.

Anwendungsfall 2: Neuen Befehl hinzufügen und validieren

Ziel: Einen neuen Seitenbefehl implementieren und bestätigen, dass er alle Validierungstoren besteht.

  1. Erstellen Sie das Befehlsmodul (siehe Befehlsautorenschaft).
  2. Registrieren Sie es im Seitenbundle-Index.
  3. Führen Sie die Arbeitsbereichsvalidierung aus:
npm run check
npm run lint
npm run build
npm run -ws --if-present test
  1. Überprüfen Sie Discovery und Ausführung:
otto commands list --site example.com
otto test example.com getItems
otto test example.com getItems --payload '{"limit": 5}'

Anwendungsfall 3: Stream-Test und -Abbau

Ziel: Listener-Manifeste, Stream-Follow-Verhalten und Abbruch-Abbau-Semantik validieren.

otto test reddit.com getChatMessages --stream-follow-ms 45000 --json

Erwartet: Listener-Updates werden durch Subscribe-requestId korreliert. Ctrl+C löst command_cancel aus und schließt den automatisch geöffneten Tab.

Für rohe Listener-Validierung vor dem Debuggen der Befehlsverrohrung:

otto listener subscribe-network \
--tab-session <tabSessionId> \
--site reddit.com \
--pattern 'https://matrix.redditspace.com/_matrix/client/v3/*' \
--mode network \
--max-body-bytes 200000

Anwendungsfall 4: ACL-Genehmigung für einen Controller-Client

Ziel: Einen registrierten Controller-Client autorisieren, Befehle an einen Node weiterzuleiten.

Controller-Registrierung und Token-Austausch sind erfolgreich, bevor Node-Routingzugriff gewährt wird. Die node-eigene ACL-Genehmigung ist das finale Gate für node-gerichtete Befehle.

# 1. Client registrieren
otto client register --name "automation-worker"

# 2. Token ausstellen
otto client login

# 3. Genehmigung vom Node über Relay-ACL-Endpunkt
# POST /api/controller/access (Node-Bearer-Token erforderlich)

Ohne die Genehmigung schlägt das Befehlsrouting mit acl_missing_node_grant fehl.

Anwendungsfall 5: requestId-Protokollkorrelation

Ziel: Eine fehlgeschlagene Anfrage über Controller, Relay und Erweiterungs-Node verfolgen.

# Live-Protokoll-Verfolgung für alle Quellen starten
otto logs follow --source all

# In einem anderen Terminal den Fehler reproduzieren
otto test reddit.com getChatMessages --json 2>&1 | grep requestId

# Begrenzte Node-Beweise abfragen, die auf diese requestId beschränkt sind
otto logs list --source node --latest 300

Schritt-für-Schritt-Verfahren finden Sie unter requestId-Korrelations-Runbook.

Anwendungsfall 6: Seiten-Screenshots erfassen

Ziel: Ein visuelles Artefakt aus einem verwalteten Tab als Teil eines Automatisierungsworkflows erhalten.

# Screenshot des aktuellen Viewports
otto cmd --action primitive.page.screenshot \
--payload '{"tabSessionId":"<tabSessionId>","mode":"viewport","format":"png"}'

# Vollständiger Seiten-Screenshot von einer URL (öffnet und schließt automatisch einen Hintergrundtab)
otto cmd --action primitive.page.screenshot \
--payload '{"url":"https://example.com","mode":"full_page","format":"jpeg","quality":85,"maxBytes":1200000}'

Nächste Schritte