Zum Hauptinhalt springen

Menschliche Unterstützung

LCC.assist ermöglicht es einem Geräteskript, eine Unterstützungsanfrage an die Zentrale zu senden. Das Skript kann einen Screenshot und Anweisungen anhängen, auf das Ergebnis der Bedienperson warten und anschließend fortfahren.

Anfragetypen​

TypAPIGeeignete SzenarienÜbliche Verarbeitung im Skript
TextantwortLCC.assist.ask_text()Captcha, SMS-Code, Passwort, Einmal-Tokenresult.text in das aktuelle Eingabefeld eingeben
Punkt auswählenLCC.assist.pick_point()Die Bedienperson muss eine Stelle auswählen, etwa eine Grafikschaltfläche oder eine Schaltfläche in einem FehlerdialogDirekt touch.tap(result.x, result.y) aufrufen
FernsteuerungLCC.assist.request_control()Schieber, Mensch-Maschine-Prüfungen, Anmeldung, Sicherheitsprüfungen, Berechtigungsdialoge und andere instabile AbläufeNach Abschluss der Fernsteuerung erneut screenshotten und weiterprüfen

Anweisungen für die Bedienperson sollten konkret und ausführbar sein. Vermeiden Sie abstrakte Angaben wie „Weitere Informationen“ und schreiben Sie beispielsweise „Steuern Sie das Gerät fern, schließen Sie die aktuelle Prüfung ab und klicken Sie auf Erledigt“, „Geben Sie das Captcha aus dem Screenshot ein“ oder „Klicken Sie auf die Mitte der Bestätigungsschaltfläche“.

Screenshot-Quellen​

Eine Unterstützungsanfrage kann auf mehrere Arten ein Bild enthalten:

  • screenshotLocalPath: lokaler Bildpfad auf dem Gerät; das SDK lädt die Datei zur Zentrale unter files/_temp/assist/lua-script/<udid>/<request-id>/... hoch.
  • screenshotPath: relativer Pfad, wenn das Bild bereits unter dem files-Stammverzeichnis der Zentrale liegt.
  • screenshotImage: XXTouch-ImageObject; das SDK wandelt es ohne vorheriges Speichern in eine Data-URL um.
  • screenshotImageData: binäre PNG-/JPEG-Bilddaten; das SDK wandelt sie in eine Data-URL um.
  • input.imageSrc: Wenn das Skript bereits eine Bildadresse wie data:image/..., http(s)://... oder /api/... besitzt, kann sie in input zur Anzeige an das Frontend weitergereicht werden.

Das SDK überschreibt input.imageSrc nicht. Nur wenn weder input.imageSrc noch ein Screenshotpfad übergeben wurde, wandelt es screenshotImage oder screenshotImageData in input.imageSrc um.

Lebenszyklus​

Eine Anfrage beginnt mit pending, wird beim Öffnen des Werkzeugs in der Zentrale zu active und nach dem Übermitteln des Ergebnisses zu submitted. Abbruch durch Benutzer oder Skript, Warte-Timeout oder Ablauf führt zu cancelled / expired.

Auf Skriptseite gibt es zwei Bereinigungsebenen:

  • Bei einem Warte-Timeout von LCC.assist.request() wird die Anfrage abgebrochen und nil, "timeout", task zurückgegeben.
  • Beim Beenden des Skripts ruft XXTLanControl.lua cancel_all() auf und bricht nicht abgeschlossene Anfragen des aktuellen Skripts ab.

Wenn die Zentrale für ein Gerät den Status „Skript gestoppt“ empfängt, bricht sie die Anfragen dieses Geräts mit source = "lua-script" ab, die sich noch in pending / active befinden. Anfragen anderer Geräte und bereits übermittelte Anfragen bleiben unverändert.

Unterstützungsaufgaben werden im aktuellen Aufgabenbestand der Zentrale im Arbeitsspeicher gespeichert; nach einem Backend-Neustart bleiben nicht abgeschlossene Aufgaben nicht erhalten.

Wenn die Anfrage über input.imageSrc, screenshotImage oder screenshotImageData ein eingebettetes Bild enthält, gibt die Zentrale dessen Inhalt nach Übermittlung, Abbruch oder Ablauf der Aufgabe frei. Aufgabenstatus, Ergebnis und weitere strukturierte Informationen bleiben erhalten.

Nach einem abnormalen Programmende werden beim erneuten Öffnen nicht abgeschlossene Aufgaben nicht wiederhergestellt. Beim Start löscht die Zentrale Screenshots aus Skript-Unterstützungsanfragen unter files/_temp/assist/lua-script/ und bereinigt außerdem alte Uploads unter files/assist/lua-script/ oder files/assist/<udid>/<request-id>/, wenn die Anfrage-ID eine UUID ist.

API-Übersicht​