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
| Typ | API | Geeignete Szenarien | Übliche Verarbeitung im Skript |
|---|---|---|---|
| Textantwort | LCC.assist.ask_text() | Captcha, SMS-Code, Passwort, Einmal-Token | result.text in das aktuelle Eingabefeld eingeben |
| Punkt auswählen | LCC.assist.pick_point() | Die Bedienperson muss eine Stelle auswählen, etwa eine Grafikschaltfläche oder eine Schaltfläche in einem Fehlerdialog | Direkt touch.tap(result.x, result.y) aufrufen |
| Fernsteuerung | LCC.assist.request_control() | Schieber, Mensch-Maschine-Prüfungen, Anmeldung, Sicherheitsprüfungen, Berechtigungsdialoge und andere instabile Abläufe | Nach 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 unterfiles/_temp/assist/lua-script/<udid>/<request-id>/...hoch.screenshotPath: relativer Pfad, wenn das Bild bereits unter demfiles-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 wiedata:image/...,http(s)://...oder/api/...besitzt, kann sie ininputzur 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 undnil, "timeout", taskzurückgegeben. - Beim Beenden des Skripts ruft
XXTLanControl.luacancel_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
- Gemeinsame Optionen und Rückgabeobjekte
- Eine Unterstützungsanfrage erstellen
LCC.assist.create() - Auf ein Unterstützungsergebnis warten
LCC.assist.wait() - Anfrage erstellen und abwarten
LCC.assist.request() - Textantwort anfordern
LCC.assist.ask_text() - Ausgewählten Punkt anfordern
LCC.assist.pick_point() - Fernsteuerung anfordern
LCC.assist.request_control() - Eine Anfrage abbrechen
LCC.assist.cancel() - Anfragen des aktuellen Skripts abbrechen
LCC.assist.cancel_all()