{"id":21079,"date":"2018-02-22T07:23:58","date_gmt":"2018-02-22T06:23:58","guid":{"rendered":"http:\/\/www.inovex.de\/blog\/?p=12645"},"modified":"2026-03-17T08:32:48","modified_gmt":"2026-03-17T07:32:48","slug":"actions-on-google-tutorial","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/","title":{"rendered":"Actions on Google Tutorial: Apps f\u00fcr Google Assistant selbst schreiben"},"content":{"rendered":"<p>Voice Assistants wie Google Home und Amazons Alexa unterst\u00fctzen uns zu Hause nicht mehr nur bei Standardaufgaben wie der Wetterabfrage oder dem Stellen eines Timers. Mit der M\u00f6glichkeit, eigene Apps, so genannte Actions on Google bzw. Skills, f\u00fcr die Plattformen zu schreiben, erschlie\u00dfen auch immer mehr Drittanbieter die M\u00f6glichkeiten, ihre Dienste \u00fcber Sprachassistenten anzubieten.<\/p>\n<p>Als innovatives IT-Projekthaus entwickeln und betreuen wir bereits f\u00fcr Kunden L\u00f6sungen f\u00fcr diese <a href=\"https:\/\/www.inovex.de\/de\/leistungen\/apps\/\" target=\"_blank\" rel=\"noopener\">neuen Plattformen<\/a>. In diesem Tutorial soll daher gezeigt werden, wie man f\u00fcr die Actions-on-Google-Plattform eine eigene Action umsetzt und welche M\u00f6glichkeiten bzw. Limitierungen es noch gibt.<\/p>\n<p><!--more--><\/p>\n<p>Wir werden in diesem Beitrag eine Action on Google erstellen und deployen, die uns ein paar Witze erz\u00e4hlen kann.<\/p>\n<p>[appbox googleplay com.google.android.apps.googleassistant]<\/p>\n<p>[appbox appstore id1220976145]<\/p>\n<p>Unsere Action wird auf allen Assistant-f\u00e4higen Ger\u00e4ten verwendbar sein \u2013 sprich Google Home und Smartphone. Ob iPhone oder Android-Ger\u00e4t ist dabei egal, denn der Assistant hat als App schon l\u00e4ngst seinen Weg auf Apples mobile Plattform gefunden. W\u00e4hrend wir bei den Home Ger\u00e4ten von Google aktuell nur die M\u00f6glichkeit der Sprach-Bedienung haben, k\u00f6nnen wir dem Nutzer auf dem Smartphone \u00fcber die Assistant App auch auch visuelle Informationen liefern. Zum Beispiel mit den bekannten Cards oder auch Carousel Ansichten.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12679\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/screener_1519134339195-569x1024.png\" alt=\"\" width=\"431\" height=\"776\" \/><\/p>\n<p>&nbsp;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Was-brauchen-wir\" >Was brauchen wir?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Wie-funktionieren-eigentlich-Actions-on-Google\" >Wie funktionieren eigentlich Actions on Google?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Projekte-erstellen\" >Projekte erstellen<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#DialogFlow-Firebase-Function\" >DialogFlow &amp; Firebase Function<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Actions-on-Google\" >Actions on Google<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Der-eigentliche-Spass\" >Der eigentliche Spa\u00df<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Intents\" >Intents<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Firebase-Function\" >Firebase Function<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Fulfillment\" >Fulfillment<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Welcome-Intent\" >Welcome Intent<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Another-Joke-Intent\" >Another Joke Intent<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Yes-No-Entity\" >Yes No Entity<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Intent\" >Intent<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Ergebnis\" >Ergebnis<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Fazit-und-Einschaetzung\" >Fazit und Einsch\u00e4tzung<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#Join-us\" >Join us!<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Was-brauchen-wir\"><\/span>Was brauchen wir?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>Google Account<\/li>\n<li>Editor<\/li>\n<li>Rudiment\u00e4re Javascript\/Node.js-Kenntnisse<\/li>\n<li>Terminal<\/li>\n<\/ul>\n<p>Alles vorhanden? Wunderbar!<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Wie-funktionieren-eigentlich-Actions-on-Google\"><\/span>Wie funktionieren eigentlich Actions on Google?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-12671\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-19-um-15.35.34-1-1024x197.png\" alt=\"\" width=\"1024\" height=\"197\" \/><\/p>\n<p>Die Entwicklung unserer Action ist in 3 Teile gegliedert:<\/p>\n<ul>\n<li>DialogFlow\u00a0\u2013 verarbeitet die Benutzereingaben und f\u00fchrt unsere (noch zu definierenden) Aktionen aus<\/li>\n<li><a href=\"https:\/\/developers.google.com\/actions\/\" target=\"_blank\" rel=\"noopener\">Actions<\/a> on Google \u2013 Integration zwischen DialogFlow und dem Assistant. DialogFlow verf\u00fcgbar allerdings auch \u00fcber weitere Integrationen (u.a. Facebook Messenger und Telegram).<\/li>\n<li><a href=\"https:\/\/firebase.google.com\/docs\/functions\/\" target=\"_blank\" rel=\"noopener\">Cloud Functions for Firebase<\/a> \u2013\u00a0hier wird die Logik unserer Assistant-Action abgebildet.<\/li>\n<\/ul>\n<p>Die ersten beiden Teile sind komplett im Browser einstell- und konfigurierbar. F\u00fcr unsere Function ist dann etwas Javascript notwendig.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Projekte-erstellen\"><\/span>Projekte erstellen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"DialogFlow-Firebase-Function\"><\/span>DialogFlow &amp; Firebase Function<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Wir fangen damit an, in der <a href=\"https:\/\/console.dialogflow.com\/api-client\/#\/newAgent\" target=\"_blank\" rel=\"noopener\">DialogFlow Console<\/a> ein neues Projekt anzulegen.<\/p>\n<p><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-09.54.28.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12648 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-09.54.28-300x153.png\" alt=\"\" width=\"300\" height=\"153\" \/><\/a><\/p>\n<p>Der Name spielt hierbei keine Rolle, wir w\u00e4hlen als Sprache die Deutsche Sprache aus und lassen den Rest so wie es ist. Das passt f\u00fcr unseren Fall.<\/p>\n<p>Mit dem Erstellen des Projekts in DialogFlow wird uns auch automatisch ein Firebase-Projekt erstellt. 2 Fliegen mit einer Klappe geschlagen!<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Actions-on-Google\"><\/span>Actions on Google<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Um nun noch an unser Actions-on-Google-Projekt zu kommen, werden wir\u00a0 in DialogFlow im Bereich <em>Integrations<\/em> die Google Assistant Integration ausw\u00e4hlen, lassen auch hier alle Einstellungen, wie sie sind, und dr\u00fccken auf den Button <em>Test<\/em>. Dadurch wird im Hintergrund unser Projekt auch hier angelegt und wir k\u00f6nnen sogar direkt im Test-Simulator unsere Action testen. Wobei testen vielleicht etwas viel gesagt ist: Unsere Action antwortet uns zumindest. Zum Test-Simulator kommen wir aber sp\u00e4ter noch einmal zur\u00fcck.<\/p>\n<p><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-10.03.27.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-12649 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-10.03.27-300x267.png\" alt=\"\" width=\"300\" height=\"267\" \/><\/a>\u00a0\u27a1\ufe0f\u00a0<a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-10.09.26.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12650 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-10.09.26-224x300.png\" alt=\"\" width=\"224\" height=\"300\" \/><\/a><\/p>\n<p>Vom Simulator aus gehen wir innerhalb unserer Action noch einmal in die Overview-Ansicht und stellen dort ein paar Sachen, zum Beispiel wie unsere Action aufgerufen wird oder wie sie hei\u00dft. Auch im Bereich der App-Informationen m\u00fcssen wir noch einige Informationen hinterlegen, damit unsere Action auch auf dem Smartphone verf\u00fcgbar ist (siehe Screenshot).<\/p>\n<p><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-10.23.36.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12651 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-10.23.36-300x248.png\" alt=\"\" width=\"300\" height=\"248\" \/><\/a> <a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-10.23.54.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12652 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-10.23.54-300x250.png\" alt=\"\" width=\"300\" height=\"250\" \/><\/a><\/p>\n<p>Die Eingaben sollten selbsterkl\u00e4rend sein. F\u00fcr <em>passende<\/em> \u2013 zumindest von der Gr\u00f6\u00dfe her \u2013 Bilder k\u00f6nnt ihr auf <a href=\"https:\/\/picsum.photos\/\" target=\"_blank\" rel=\"noopener\">Picsum<\/a> zugreifen.<\/p>\n<p>Nachdem wir unsere \u00c4nderungen gespeichert und auf <em>Test Draft<\/em> geklickt haben, k\u00f6nnen wir unsere Action auch sofort auf dem Smartphone nutzen. Dort m\u00fcssen wir lediglich darauf achten, dass wir den selben Google Account wie bei der Einrichtung verwenden. Ansonsten m\u00fcssen wir die App f\u00fcr weitere Accounts freigeben (mit weiteren Google Accounts muss einmalig auf <em>Test Draft<\/em> geklickt werden, damit die Action auch auf dem Smartphone f\u00fcr diesen User verf\u00fcgbar ist).<\/p>\n<p><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Screenshot_20180215-102454.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12653 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Screenshot_20180215-102454-300x296.jpg\" alt=\"\" width=\"300\" height=\"296\" \/><\/a><\/p>\n<p>Wir haben nun unsere erste nutzbare Action erstellt, die auf den Welcome-Intent entsprechend reagiert. Allerdings ist das ja noch etwas langweilig.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Der-eigentliche-Spass\"><\/span>Der eigentliche Spa\u00df<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Wie eingangs erw\u00e4hnt wollen wir erreichen, dass uns unsere Assistant Action Witze erz\u00e4hlt. Bisher sagt sie uns aber lediglich <em>Hallo\u00a0<\/em>und teilt uns dann mit, dass sie irgendetwas nicht verstanden hat.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Intents\"><\/span>Intents<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Zur\u00fcck in <a href=\"https:\/\/console.dialogflow.com\" target=\"_blank\" rel=\"noopener\">DialogFlow<\/a> widmen wir uns nun den Intents. Wie in der App-Entwicklung ist ein Intent verantwortlich f\u00fcr das Mapping zwischen der Benutzer-Eingaben und der Aktion, die daraufhin ausgef\u00fchrt werden soll. Klingt kompliziert?<\/p>\n<p>Jedes DialogFlow-Projekt kommt von Haus aus mit 2 Intents daher, einem <em>Willkommen<\/em>-Intent und einem <em>Fallback-<\/em>Intent. Der Willkommen-Intent wird aufgerufen, sobald die Action gestartet wurde (nach <em>Mit Witze Test sprechen<\/em> z.B). Der Fallback-Intent reagiert, wenn Benutzereingaben nicht gematcht werden k\u00f6nnen und DialogFlow nicht wei\u00df, was es damit anfangen soll. Durch die definierten Antworten wird (im Moment) festgelegt, wie unsere Action dem Nutzer antwortet.<\/p>\n<p><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-10.41.13.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12654 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-10.41.13-175x300.png\" alt=\"\" width=\"175\" height=\"300\" \/><\/a><\/p>\n<p>Wir werden, was die Intents angeht, hier erstmal einen Cut machen und uns etwas dem Code widmen. Denn wir wollen erreichen, dass unsere Firebase Function f\u00fcr die Antworten zust\u00e4ndig ist.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Firebase-Function\"><\/span>Firebase Function<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ich habe die Firebase Function, die wir ben\u00f6tigen,\u00a0<a href=\"https:\/\/github.com\/inovex\/Sample-Assistant-Action\" target=\"_blank\" rel=\"noopener\">hier<\/a> schon mal hinterlegt. Der Code ist mit seinen knapp 40 Zeilen sehr \u00fcberschaubar. Was wir damit erledigen werden:<\/p>\n<ul>\n<li>Der Benutzer startet die Action und wird in den <span class=\"lang:java decode:true crayon-inline \">welcomeIntent<\/span> gef\u00fchrt, in dem ein Witz ausgegeben wird und der Benutzer w\u00e4hlen kann, ob er einen weiteren h\u00f6ren m\u00f6chte oder nicht.<\/li>\n<li>Wenn der Benutzer dies bejaht, wird ein weiterer ausgegeben (usw.).<\/li>\n<li>Wenn der Benutzer keinen weiteren Witz h\u00f6ren will, wird mit einem <span class=\"lang:java decode:true crayon-inline \">.tell<\/span>\u00a0die Unterhaltung beendet.<\/li>\n<\/ul>\n<p>Um die Firebase Function nun von Github in euer Firebase-Projekt zu deployen, sind folgende Schritte notwendig:<\/p>\n<ul>\n<li><span class=\"lang:sh decode:true crayon-inline \">git clone git@github.com:inovex\/Sample-Assistant-Action.git<\/span><\/li>\n<li><a href=\"https:\/\/firebase.google.com\/docs\/cli\/\" target=\"_blank\" rel=\"noopener\">Firebase CLI installieren<\/a>\u00a0<span class=\"lang:sh decode:true crayon-inline \">npm install -g firebase-tools<\/span><\/li>\n<li><span class=\"lang:sh decode:true crayon-inline \">cd Sample-Assistant-Action<\/span><\/li>\n<li><span class=\"lang:sh decode:true crayon-inline \">firebase login<\/span><\/li>\n<li><span class=\"lang:sh decode:true crayon-inline \">firebase init<\/span>\n<ul>\n<li>Den Punkt <em>Functions<\/em> mit der Leertaste ausw\u00e4hlen, mit Enter best\u00e4tigen<\/li>\n<li>Das entsprechende Projekt ausw\u00e4hlen<\/li>\n<li>Als Sprache Javascript ausw\u00e4hlen<\/li>\n<li><span class=\"lang:sh decode:true crayon-inline \">functions\/package.json<\/span> nicht \u00fcberschreiben<\/li>\n<li><span class=\"lang:sh decode:true crayon-inline \">functions\/index.js<\/span> nicht \u00fcberschreiben<\/li>\n<li>npm-Abh\u00e4ngigkeiten installieren<\/li>\n<\/ul>\n<\/li>\n<li>Anschlie\u00dfend wird die Function mit einem einfachen <span class=\"lang:sh decode:true crayon-inline \">firebase deploy &#8211;only functions<\/span> deployt.<\/li>\n<\/ul>\n<p>Eurer Firebase Projekt, das ihr in der <a href=\"https:\/\/console.firebase.google.com\" target=\"_blank\" rel=\"noopener\">Firebase-Konsole<\/a>\u00a0ausw\u00e4hlt, sollte nun im Bereich Functions wie folgt aussehen:<\/p>\n<p><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-11.40.14.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12655 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-11.40.14-300x147.png\" alt=\"\" width=\"300\" height=\"147\" \/><\/a><\/p>\n<p>Die URL der Function kopieren wir uns schon mal.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Fulfillment\"><\/span>Fulfillment<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Was wir nun n\u00e4mlich machen werden, ist DialogFlow mit unserer Firebase Function zu verheiraten. Das ist relativ simpel und kann mit wenigen Klicks in der DialogFlow Console erledigt werden.<\/p>\n<p>Im Men\u00fcreiter <em>Fulfillment<\/em> aktivieren wir den Webhook, tragen unsere URL ein und speichern das Ganze.<\/p>\n<p><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-14.33.45.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12656 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-14.33.45-300x258.png\" alt=\"\" width=\"300\" height=\"258\" \/><\/a><\/p>\n<p>Dadurch teilen wir DialogFlow mit, dass wir in der Lage sind, eingehende Requests \u00fcber einen Web-Service abzufr\u00fchst\u00fccken.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Welcome-Intent\"><\/span>Welcome Intent<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Im Welcome Intent gibt es nun einen neuen Bereich \u2013 n\u00e4mlich Fulfillment. Hier m\u00fcssen wir die Option\u00a0<em>Use Webhook<\/em> aktivieren. Die 2. Option bleibt unangetastet.<\/p>\n<p>Bleiben wir beim Welcome Intent. Hier muss sichergestellt werden, dass im Bereich\u00a0<em>Action<\/em>\u00a0<span class=\"lang:sh decode:true crayon-inline \">input.welcome<\/span> eingetragen ist. Damit wei\u00df DialogFlow, welchen Intent es in unserem Code aufrufen soll ( <span class=\"lang:java decode:true crayon-inline \">actionMap.set(&#8218;input.welcome&#8216;, welcomeIntent)<\/span>).<\/p>\n<p>Nun sind auch die Antworten, die in diesem Intent definiert sind, nicht mehr wichtig, da wir die Antworten ab sofort aus unserem Code heraus geben.<\/p>\n<p>Das Ganze k\u00f6nnen wir nun auch schon im Actions Simulator oder auf dem Smartphone\/Google Home ausprobieren. Allerdings fehlt hier noch etwas&#8230;<\/p>\n<p><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-14.56.04.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12657 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-14.56.04-300x254.png\" alt=\"\" width=\"300\" height=\"254\" \/><\/a><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Another-Joke-Intent\"><\/span>Another Joke Intent<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Wir ben\u00f6tigen einen 2. Intent. Im Code haben wir diesen zwar bereits definiert, in DialogFlow fehlt er aber noch. Wir wollen auf ein\u00a0<em>Ja, Nein, N\u00f6, Jo<\/em> als Benutzeingabe reagieren.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Yes-No-Entity\"><\/span>Yes No Entity<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Bevor wir den 2. Intent anlegen, werden wir eine Entity anlegen. Eine Entity repr\u00e4sentiert verschiedene Benutzereingaben. Wir k\u00f6nnen im Intent auch vordefinierte Entities nutzen \u2013 allerdings gibt es bei Google Assistant, anders als bei Alexa, keine vordefinierte\u00a0<em>Yes\/No<\/em> Entity; die m\u00fcssen wir uns selbst anlegen.<\/p>\n<p>Wir legen also im Bereich Entities folgende Entity an:<\/p>\n<p><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-15.01.26.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12658 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-15.01.26-300x124.png\" alt=\"\" width=\"300\" height=\"124\" \/><\/a><\/p>\n<p>Was wir hiermit definieren, ist ein Mapping zwischen m\u00f6glichen Benutzereingaben (<em>ja, jo, ja bitte, gerne, klar)<\/em> und einer Value (<em>yes<\/em> bzw.\u00a0<em>no<\/em>).<\/p>\n<p>Wir speichern das Ganze und legen nun unseren 2. Intent an.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Intent\"><\/span>Intent<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Unser Intent wird folgenderma\u00dfen aussehen:<\/p>\n<p><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-15.06.31.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12660 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-15.06.31-300x261.png\" alt=\"\" width=\"300\" height=\"261\" \/><\/a><\/p>\n<p>Wir haben im\u00a0<em>User says<\/em> Bereich 2 Eingaben definiert,\u00a0<em>ja<\/em> und\u00a0<em>nein<\/em>. DialogFlow hat automatisch erkannt, dass es sich hierbei um eine Entity handeln k\u00f6nnte. Dem entsprechend m\u00fcssen wir auch keine weiteren <em>Aliase<\/em> mehr angeben.<\/p>\n<p>Als Action, die ausgef\u00fchrt werden soll, wird, wie im Code schon vorgesehen <span class=\"lang:js decode:true crayon-inline \">input.anotherjoke<\/span> eingetragen. Denn wir wollen ja entsprechend aufgerufen werden. Wir geben zudem an, dass wir unbedingt die Yes\/No Entity brauchen und haben auch ein Prompt definiert, falls eine unvorhergesehene Eingabe erfolgt. DialogFlow wird also beim User nachfragen (<em>Ja oder nein?<\/em>) Damit ist sichergestellt, dass wir immer mit der jeweiligen Antwort aufgerufen werden.<\/p>\n<p>Zu guter Letzt sagen wir auch f\u00fcr diesen Intent, dass wir einen Webhook verwenden wollen.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ergebnis\"><\/span>Ergebnis<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Et voil\u00e0! Das Ganze sollte nun so aussehen:<\/p>\n<p><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-15.14.33.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12661 size-medium\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/Bildschirmfoto-2018-02-15-um-15.14.33-223x300.png\" alt=\"\" width=\"223\" height=\"300\" \/><\/a><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Fazit-und-Einschaetzung\"><\/span>Fazit und Einsch\u00e4tzung<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Nachdem wir bei inovex nun bereits einige Projekte im Assistant- und Alexa Umfeld umgesetzt haben, kann ich ohne schlechtes Gewissen sagen: es macht Spa\u00df! Die ersten H\u00fcrden m\u00f6gen etwas schwierig sein (Stichwort OAuth Account Linking, wenn man f\u00fcr seine Action einen Login ben\u00f6tigt), aber hat man erstmal verstanden, wie alles zusammenspielt, kann man damit durchaus Freude haben.<\/p>\n<p>Um dem Ganzen noch etwas Seitenhieb-Charakter zu verleihen: Ich pers\u00f6nlich finde, dass es wesentlich einfacher ist, eine Google-Assistant-Action zu erstellen, als einen Alexa Skill. Das liegt haupts\u00e4chlich daran, dass sich Google sehr viel M\u00fche damit gegeben hat, wie das Ganze konfiguriert, erstellt und eingerichtet wird. Auch der Test-Simulator ist sehr brauchbar und bietet die M\u00f6glichkeit, sowohl einen Test auf einem \u201eSmartphone\u201c als auch auf einem \u201eHome-Ger\u00e4t\u201c zu simulieren. \u00dcberdies lohnt es sich, den Trainingsbereich in DialogFlow mal anzusehen. Hier erscheinen User-Eingaben, die nicht gematcht werden konnten. Mit einfachen Klicks kann man die Eingaben aber auf Wunsch mappen und so sein Modell verbessern.<\/p>\n<p>Was die Entdeckungsm\u00f6glichkeit neuer Actions angeht, so sollte Google allerdings noch etwas nachbessern. Bislang ist es relativ kompliziert neue Actions zu entdecken, auch wenn mittlerweile vom Assistant vereinzelt Actions auch vorgeschlagen werden. Sucht man zum Beispiel nach Rezepten, so kann es vorkommen, dass Google einem vorschl\u00e4gt, doch mal die Action von Anbieter xyz auszuprobieren.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Join-us\"><\/span>Join us!<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u00dcberzeugt? Du m\u00f6chtest selbst Actions on Google und Alexa Skills f\u00fcr den Produktveinsatz entwickeln und dabei in einem engagierten und inspirierenden Umfeld arbeiten? Dann bewirb dich bei uns als Software-Entwickler\/in!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voice Assistants wie Google Home und Amazons Alexa unterst\u00fctzen uns zu Hause nicht mehr nur bei Standardaufgaben wie der Wetterabfrage oder dem Stellen eines Timers. Mit der M\u00f6glichkeit, eigene Apps, so genannte Actions on Google bzw. Skills, f\u00fcr die Plattformen zu schreiben, erschlie\u00dfen auch immer mehr Drittanbieter die M\u00f6glichkeiten, ihre Dienste \u00fcber Sprachassistenten anzubieten. Als [&hellip;]<\/p>\n","protected":false},"author":56,"featured_media":13316,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[510],"service":[420],"coauthors":[{"id":56,"display_name":"Christopher Jakob","user_nicename":"cjakob"}],"class_list":["post-21079","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-apps-2","service-apps"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Actions on Google Tutorial: Apps f\u00fcr Google Assistant selbst schreiben<\/title>\n<meta name=\"description\" content=\"In diesem Artikel zeige ich an einem Beispiel und Code Templates, wie man Actions on Google f\u00fcr den Assistant auf Google Home und Smartphones entwickelt.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Actions on Google Tutorial: Apps f\u00fcr Google Assistant selbst schreiben\" \/>\n<meta property=\"og:description\" content=\"In diesem Artikel zeige ich an einem Beispiel und Code Templates, wie man Actions on Google f\u00fcr den Assistant auf Google Home und Smartphones entwickelt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2018-02-22T06:23:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-17T07:32:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/actions-on-google-tutorial.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1921\" \/>\n\t<meta property=\"og:image:height\" content=\"1081\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Christopher Jakob\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/actions-on-google-tutorial-1024x576.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Christopher Jakob\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Christopher Jakob\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/actions-on-google-tutorial\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/actions-on-google-tutorial\\\/\"},\"author\":{\"name\":\"Christopher Jakob\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/c266a0abd8422c5cabc881b84740beba\"},\"headline\":\"Actions on Google Tutorial: Apps f\u00fcr Google Assistant selbst schreiben\",\"datePublished\":\"2018-02-22T06:23:58+00:00\",\"dateModified\":\"2026-03-17T07:32:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/actions-on-google-tutorial\\\/\"},\"wordCount\":1715,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/actions-on-google-tutorial\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/actions-on-google-tutorial.png\",\"keywords\":[\"Apps\"],\"articleSection\":[\"Applications\",\"General\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/actions-on-google-tutorial\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/actions-on-google-tutorial\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/actions-on-google-tutorial\\\/\",\"name\":\"Actions on Google Tutorial: Apps f\u00fcr Google Assistant selbst schreiben\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/actions-on-google-tutorial\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/actions-on-google-tutorial\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/actions-on-google-tutorial.png\",\"datePublished\":\"2018-02-22T06:23:58+00:00\",\"dateModified\":\"2026-03-17T07:32:48+00:00\",\"description\":\"In diesem Artikel zeige ich an einem Beispiel und Code Templates, wie man Actions on Google f\u00fcr den Assistant auf Google Home und Smartphones entwickelt.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/actions-on-google-tutorial\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/actions-on-google-tutorial\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/actions-on-google-tutorial\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/actions-on-google-tutorial.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/actions-on-google-tutorial.png\",\"width\":1921,\"height\":1081,\"caption\":\"Erz\u00e4hl mir nen Witz mit Actions on Google!\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/actions-on-google-tutorial\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Actions on Google Tutorial: Apps f\u00fcr Google Assistant selbst schreiben\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/c266a0abd8422c5cabc881b84740beba\",\"name\":\"Christopher Jakob\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3d0f657dd7efee2b54cd0e7793e61f2eac1b93735fc6614e1c172c5135075e1e?s=96&d=retro&r=g1410dc23bb681b59bd0017eb27d50541\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3d0f657dd7efee2b54cd0e7793e61f2eac1b93735fc6614e1c172c5135075e1e?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3d0f657dd7efee2b54cd0e7793e61f2eac1b93735fc6614e1c172c5135075e1e?s=96&d=retro&r=g\",\"caption\":\"Christopher Jakob\"},\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/cjakob\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Actions on Google Tutorial: Apps f\u00fcr Google Assistant selbst schreiben","description":"In diesem Artikel zeige ich an einem Beispiel und Code Templates, wie man Actions on Google f\u00fcr den Assistant auf Google Home und Smartphones entwickelt.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/","og_locale":"de_DE","og_type":"article","og_title":"Actions on Google Tutorial: Apps f\u00fcr Google Assistant selbst schreiben","og_description":"In diesem Artikel zeige ich an einem Beispiel und Code Templates, wie man Actions on Google f\u00fcr den Assistant auf Google Home und Smartphones entwickelt.","og_url":"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2018-02-22T06:23:58+00:00","article_modified_time":"2026-03-17T07:32:48+00:00","og_image":[{"width":1921,"height":1081,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/actions-on-google-tutorial.png","type":"image\/png"}],"author":"Christopher Jakob","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/actions-on-google-tutorial-1024x576.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Christopher Jakob","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten","Written by":"Christopher Jakob"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/"},"author":{"name":"Christopher Jakob","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/c266a0abd8422c5cabc881b84740beba"},"headline":"Actions on Google Tutorial: Apps f\u00fcr Google Assistant selbst schreiben","datePublished":"2018-02-22T06:23:58+00:00","dateModified":"2026-03-17T07:32:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/"},"wordCount":1715,"commentCount":1,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/actions-on-google-tutorial.png","keywords":["Apps"],"articleSection":["Applications","General"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/","url":"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/","name":"Actions on Google Tutorial: Apps f\u00fcr Google Assistant selbst schreiben","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/actions-on-google-tutorial.png","datePublished":"2018-02-22T06:23:58+00:00","dateModified":"2026-03-17T07:32:48+00:00","description":"In diesem Artikel zeige ich an einem Beispiel und Code Templates, wie man Actions on Google f\u00fcr den Assistant auf Google Home und Smartphones entwickelt.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/actions-on-google-tutorial.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/05\/actions-on-google-tutorial.png","width":1921,"height":1081,"caption":"Erz\u00e4hl mir nen Witz mit Actions on Google!"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/actions-on-google-tutorial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"Actions on Google Tutorial: Apps f\u00fcr Google Assistant selbst schreiben"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/c266a0abd8422c5cabc881b84740beba","name":"Christopher Jakob","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/3d0f657dd7efee2b54cd0e7793e61f2eac1b93735fc6614e1c172c5135075e1e?s=96&d=retro&r=g1410dc23bb681b59bd0017eb27d50541","url":"https:\/\/secure.gravatar.com\/avatar\/3d0f657dd7efee2b54cd0e7793e61f2eac1b93735fc6614e1c172c5135075e1e?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3d0f657dd7efee2b54cd0e7793e61f2eac1b93735fc6614e1c172c5135075e1e?s=96&d=retro&r=g","caption":"Christopher Jakob"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/cjakob\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21079","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/56"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=21079"}],"version-history":[{"count":6,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21079\/revisions"}],"predecessor-version":[{"id":66575,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21079\/revisions\/66575"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/13316"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=21079"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=21079"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=21079"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=21079"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}