Eine Webanwendung ist die Benutzeroberfläche (UI) für eine Aktion, die den interaktiven Canvas verwendet. Sie können vorhandene Webtechnologien wie HTML, CSS, JavaScript und WebAssembly) zum Entwerfen und Entwickeln Ihrer Webanwendung. Größtenteils sind interaktive Canvas kann Webinhalte wie ein Browser rendern. Es gibt jedoch einige Einschränkungen. um den Datenschutz und die Sicherheit für Nutzer zu gewährleisten. Bevor Sie mit dem Entwerfen der Benutzeroberfläche beginnen, Beachten Sie die in den Designrichtlinien beschriebenen Designprinzipien. Wir empfehlen die Verwendung von Firebase Hosting. um Ihre Webanwendung bereitzustellen.
Der HTML- und JavaScript-Code für Ihre Webanwendung führt folgende Schritte aus:
- Initialisieren Sie die JavaScript-Bibliothek für interaktive Canvas.
- Registrieren Sie Callbacks für interaktive Canvas-Ereignisse.
- Stellen Sie eine benutzerdefinierte Logik für die Aktualisierung Ihrer Webanwendung basierend auf dem Status bereit.
Auf dieser Seite werden die empfohlenen Methoden zum Erstellen Ihrer Webanwendung, die Aktivierung Kommunikation zwischen Ihrer Konversationsaktion und Ihrer Webanwendung sowie allgemeine Richtlinien und Einschränkungen.
Empfohlene Bibliotheken
Sie können zwar jede Methode zum Erstellen Ihrer UI verwenden, Google empfiehlt jedoch die Verwendung des folgenden Bibliotheken:
- Greensock: Zum Erstellen komplizierter Animationen.
- Pixi.js: Zum Zeichnen von 2D-Grafiken mit WebGL
- Three.js: Zum Zeichnen von 3D-Grafiken in WebGL
- HTML5-Canvas-Zeichnung: Für einfache Zeichnungen
Architektur
Google empfiehlt dringend die Verwendung einer Single-Page-Anwendungsarchitektur. Dieses -Ansatz sorgt für optimale Leistung und unterstützt kontinuierliche Kommunikation User Experience aus. Interactive Canvas kann in Verbindung mit Frontend verwendet werden. Frameworks wie Vue, Angular und React, die beim Staatsmanagement helfen.
HTML-Datei
Die HTML-Datei definiert, wie Ihre Benutzeroberfläche aussieht. Mit dieser Datei wird auch die interaktive Canvas API, die die Kommunikation zwischen Ihrer Webanwendung ermöglicht und Ihre Konversationsaktion.
HTML
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Interactive Canvas Sample</title> <!-- Disable favicon requests --> <link rel="shortcut icon" type="image/x-icon" href="data:image/x-icon;,"> <!-- Load Interactive Canvas JavaScript --> <script src="https://www.gstatic.com/assistant/interactivecanvas/api/interactive_canvas.min.js"></script> <!-- Load PixiJS for graphics rendering --> <script src="https://cdnjs.cloudflare.com/ajax/libs/pixi.js/4.8.7/pixi.min.js"></script> <!-- Load Stats.js for fps monitoring --> <script src="https://cdnjs.cloudflare.com/ajax/libs/stats.js/r16/Stats.min.js"></script> <!-- Load custom CSS --> <link rel="stylesheet" href="css/main.css"> </head> <body> <div id="view" class="view"> <div class="debug"> <div class="stats"></div> <div class="logs"></div> </div> </div> <!-- Load custom JavaScript after elements are on page --> <script src="js/log.js"></script> <script type="module" src="js/main.js"></script> </body> </html>
Kommunikation zwischen Konversationsaktion und Web-App
Nachdem Sie Ihre Webanwendung und Konversationsaktion erstellt und in den interaktiven Canvas-Bibliothek in Ihrer Web-App-Datei fest, müssen Sie festlegen, wie Ihre Webanwendung und Interaktion von Konversationsaktionen. Ändern Sie dazu die Dateien, die Ihre Webanwendung enthalten. Logik.
action.js
Diese Datei enthält den Code zum Definieren von Callbacks und zum Aufrufen von
Methoden bis interactiveCanvas
. Rückrufe ermöglichen es Ihrem Web,
App verwendet, um auf Informationen oder Anfragen von der Conversational Action zu reagieren, während Methoden
ermöglichen, Informationen oder Anfragen an die Konversationsaktion zu senden.
Fügen Sie interactiveCanvas.ready(callbacks);
zu Ihrer HTML-Datei hinzu, um sie zu initialisieren und
Registrieren Sie Callbacks:
JavaScript
/** * This class is used as a wrapper for Google Assistant Canvas Action class * along with its callbacks. */ export class Action { /** * @param {Phaser.Scene} scene which serves as a container of all visual * and audio elements. */ constructor(scene) { this.canvas = window.interactiveCanvas; this.gameScene = scene; const that = this; this.intents = { GUESS: function(params) { that.gameScene.guess(params); }, DEFAULT: function() { // do nothing, when no command is found }, }; } /** * Register all callbacks used by the Interactive Canvas Action * executed during game creation time. */ setCallbacks() { const that = this; // Declare the Interactive Canvas action callbacks. const callbacks = { onUpdate(data) { const intent = data[0].google.intent; that.intents[intent ? intent.name.toUpperCase() : 'DEFAULT'](intent.params); }, }; // Called by the Interactive Canvas web app once web app has loaded to // register callbacks. this.canvas.ready(callbacks); } }
main.js
Das JavaScript-Modul main.js
importiert die Dateien action.js
und scene.js
sowie
erstellt beim Laden der Webanwendung Instanzen von jedem dieser Elemente. In diesem Modul
registriert Callbacks für Interactive Canvas.
JavaScript
import {Action} from './action.js'; import {Scene} from './scene.js'; window.addEventListener('load', () => { window.scene = new Scene(); // Set Google Assistant Canvas Action at scene level window.scene.action = new Action(scene); // Call setCallbacks to register Interactive Canvas window.scene.action.setCallbacks(); });
scene.js
Die Datei scene.js
erstellt die Szene für Ihre Webanwendung. Im Folgenden finden Sie
Auszug aus scene.js
:
JavaScript
const view = document.getElementById('view'); // initialize rendering and set correct sizing this.radio = window.devicePixelRatio; this.renderer = PIXI.autoDetectRenderer({ transparent: true, antialias: true, resolution: this.radio, width: view.clientWidth, height: view.clientHeight, }); this.element = this.renderer.view; this.element.style.width = `${this.renderer.width / this.radio}px`; this.element.style.height = `${(this.renderer.height / this.radio)}px`; view.appendChild(this.element); // center stage and normalize scaling for all resolutions this.stage = new PIXI.Container(); this.stage.position.set(view.clientWidth / 2, view.clientHeight / 2); this.stage.scale.set(Math.max(this.renderer.width, this.renderer.height) / 1024); // load a sprite from a svg file this.sprite = PIXI.Sprite.from('triangle.svg'); this.sprite.anchor.set(0.5); this.sprite.tint = 0x00FF00; // green this.sprite.spin = true; this.stage.addChild(this.sprite); // toggle spin on touch events of the triangle this.sprite.interactive = true; this.sprite.buttonMode = true; this.sprite.on('pointerdown', () => { this.sprite.spin = !this.sprite.spin; });
Touch-Interaktionen unterstützen
Ihre interaktive Canvas-Aktion kann sowohl auf die Berührung als auch auf die ihre gesprochenen Inhalte. Gemäß den Designrichtlinien für interaktiven Canvas sollten Sie Ihre Aktion sprachorientiert entwickeln. Einige intelligente Funktionen unterstützen Touch-Interaktionen.
Der unterstützende Touch ist ähnlich wie die Unterstützung dialogorientierter Antworten. Allerdings statt einer Sprachantwort des Nutzers, sieht das clientseitige für Touch-Interaktionen und verwendet diese, um Elemente in der Web-App zu ändern.
Ein Beispiel hierfür finden Sie im Beispiel. Pixi.js-Bibliothek:
JavaScript
… this.sprite = PIXI.Sprite.from('triangle.svg'); … this.sprite.interactive = true; // Enables interaction events this.sprite.buttonMode = true; // Changes `cursor` property to `pointer` for PointerEvent this.sprite.on('pointerdown', () => { this.sprite.spin = !this.sprite.spin; });
Fehlerbehebung
In der Actions Console können Sie mit dem Simulator Ihre interaktiven Canvas-Aktion während der Entwicklung können Sie auch Fehler sehen, die in Ihrem Interaktive Canvas-Web-App auf der Geräte in der Produktion. Sie können diese Fehler in Ihren Google Cloud Platform-Logs.
So rufen Sie diese Fehlermeldungen in Google Cloud auf: für Plattformlogs gehen Sie so vor:
- Öffnen Sie Ihr Actions-Projekt in der Actions Console.
- Klicken Sie im oberen Navigationsbereich auf Test.
- Klicken Sie auf den Link Logs in Google Cloud Platform ansehen.
Fehler von Nutzern Geräte in der Loganzeige in chronologischer Reihenfolge.
Fehlertypen
In den Google Cloud Platform-Protokollen können Sie drei Arten von Webanwendungsfehlern sehen:
- Zeitüberschreitungen, die auftreten, wenn
ready
nicht innerhalb von 10 Sekunden aufgerufen wird - Zeitüberschreitungen, die auftreten, wenn das von
onUpdate()
zurückgegebene Versprechen nicht erfüllt wird innerhalb von 10 Sekunden - JavaScript-Laufzeitfehler, die von Ihrer Webanwendung nicht abgefangen werden
Details zu JavaScript-Fehlern ansehen
Die Details zu JavaScript-Laufzeitfehlern in Ihrer Webanwendung sind nicht standardmäßig verfügbar. Ausführliche Informationen zu JavaScript-Laufzeitfehlern finden Sie unter diese Schritte:
- Achten Sie darauf, dass Sie die entsprechende Cross-Origin Resource Sharing-Konfiguration konfiguriert haben HTTP-Antwortheader (CORS) in den Dateien Ihrer Webanwendung. Weitere Informationen Siehe Cross-Origin Resource Sharing.
- Fügen Sie den importierten
<script>
-Tagscrossorigin="anonymous"
hinzu in Ihrem HTML-Datei, wie im folgenden Code-Snippet gezeigt:
<script crossorigin="anonymous" src="<SRC>"></script>
Richtlinien und Einschränkungen
Berücksichtigen Sie bei der Entwicklung die folgenden Richtlinien und Einschränkungen: Ihrer Webanwendung:
- Keine Cookies
- Kein lokaler Speicher
- Keine Standortbestimmung
- Keine Kameranutzung
- Keine Audio- oder Videoaufzeichnung
- Keine Pop-ups
- Das Arbeitsspeicherlimit von 200 MB nicht überschreiten
- Berücksichtigen Sie beim Rendern von Inhalten den Header „Aktionsname“ (Belegung oberer Teil des Bildschirms)
- Auf Videos können keine Stile angewendet werden
- Es darf jeweils nur ein Medienelement verwendet werden
- Keine Web SQL-Datenbank
- Die
SpeechRecognition
-Schnittstelle der Web Speech API wird nicht unterstützt. - Einstellung für dunklen Modus nicht zutreffend
- Die Videowiedergabe wird auf Smart Displays unterstützt. Weitere Informationen zur Unterstützte Mediencontainerformate und -Codecs finden Sie unter Google Nest Hub-Codecs.
Cross-Origin Resource Sharing
Weil Interactive Canvas-Web-Apps in einem iFrame gehostet werden und der Ursprung festgelegt ist auf null setzen, müssen Sie Cross-Origin Resource Sharing (CORS) aktivieren. für Ihre Webserver und Speicherressourcen. So können Ihre Assets Anfragen von Null-Ursprüngen akzeptieren.
- Wenn Ihre Medien und Bilder mit Firebase gehostet werden, lesen Sie Erstellen Sie benutzerdefinierte dynamische Links für die Domain, um CORS zu konfigurieren.
- Wenn sich Ihre Medien und Bilder in Cloud Storage befinden, lesen Sie Cross-Origin Resource Sharing (CORS) konfigurieren um CORS zu konfigurieren.
Nächste Schritte
Informationen zum Hinzufügen weiterer Funktionen zu Ihrer Webanwendung finden Sie unter Mit dem Kunden oder serverseitige Auftragsausführung.