Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Google Assistant 対応アプリを作ってみた
Search
Tiny Mouse
April 26, 2018
Programming
0
520
Google Assistant 対応アプリを作ってみた
Mobile Act NAGOYA 2018/4/26
Tiny Mouse
April 26, 2018
Tweet
Share
More Decks by Tiny Mouse
See All by Tiny Mouse
今年がんばったこと
tinymouse
0
130
.NET MAUI+Blazor を使ってみた
tinymouse
0
120
【LT会】この技術書がすごい
tinymouse
1
160
蔵書管理アプリを作り直した
tinymouse
1
780
Windows アプリの開発手段の選択肢をまとめてみた
tinymouse
0
83
蔵書管理アプリを作りました
tinymouse
0
570
Google Apps Script アプリを配付する
tinymouse
0
79
蔵書管理アプリを作っています
tinymouse
1
480
サーバサイドを Google Apps Script で書く
tinymouse
0
320
Other Decks in Programming
See All in Programming
Contemporary Test Cases
maaretp
0
140
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
890
Figma Dev Modeで変わる!Flutterの開発体験
watanave
0
140
Snowflake x dbtで作るセキュアでアジャイルなデータ基盤
tsoshiro
2
520
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
300
.NET のための通信フレームワーク MagicOnion 入門 / Introduction to MagicOnion
mayuki
1
1.7k
Compose 1.7のTextFieldはPOBox Plusで日本語変換できない
tomoya0x00
0
190
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
110
[Do iOS '24] Ship your app on a Friday...and enjoy your weekend!
polpielladev
0
110
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
8
540
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
250
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Code Reviewing Like a Champion
maltzj
520
39k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
Agile that works and the tools we love
rasmusluckow
327
21k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Teambox: Starting and Learning
jrom
133
8.8k
How STYLIGHT went responsive
nonsquared
95
5.2k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Building Your Own Lightsaber
phodgson
103
6.1k
Building Applications with DynamoDB
mza
90
6.1k
Transcript
Tiny Mouse Google Assistant 対応 作 Mobile Act NAGOYA 2018/4/27
自己紹介 @tinymouse_jp SI 企業 SE 日曜
二児 父 静岡県浜松市出身 東京都品川区在住 名古屋市在住 Windows 愛用 iPhone Android Android 会浜松支部 Android 会 Tiny Mouse
Google Home 使
Google Home Mini 買
照明 消
作 Google Assistant 対応
Google Assistant 対応 動作
Google Assistant 対応 動作 Fulfillment
Amazon Alexa 対応 動作
None
Fulfillment hello •Training Phrase •Response 簡単 簡単
Fulfillment hello •Training Phrase •Response •Fulfillment Enable webhook call intentMap.set('hello',
sayHello); function sayHello(app) { app.tell(" "); } 動 動
Fulfillment let intentMap = new Map; intentMap.set('hello', sayHello); const {WebhookClient}
= require('dialogflow-fulfillment'); const agent = new WebhookClient({request, response}); function sayHello(agent) { agent.add(" "); } let actionMap = new Map; actionMap.set('hello_action', sayHello); const App = require('actions-on- google').DialogflowApp; const app = new App({request, response}); function sayHello(app) { app.tell(" "); } SDK v1 v2 移行 直後 自動生成
続 教
続 教 Fulfillment reqAbout •Training Phrase 教 •Parameters what @sys.any
•Parameters what @sys.any $what •Fulfillment Enable webhook call intentMap.set('reqAbout', sayAbout); function sayAbout(agent) { var what = agent.parameters.what; agent.add(what + " "); } 入力内容 渡 入力内容 渡
続 今日 運勢 大吉
続 今日 運勢 大吉 Fulfillment reqUnsei •Training Phrase 今日 運勢
•Response •Fulfillment Enable webhook call intentMap.set('reqUnsei', sayUnsei); function sayUnsei(agent) { agent.add("大吉 "); }
続 今日 運勢 大吉 Fulfillment reqUnsei •Training Phrase 今日 運勢
•Response •Fulfillment Enable webhook call intentMap.set('reqUnsei', sayUnsei); function sayUnsei(agent) { agent.setFollowupEvent({ name: 'say_unsei', parameters: { unsei: "大吉" } }); } 出力内容 渡 出力内容 渡 sayUnsei •Events say_unsei •Parameters unsei @sys.any #say_unsei.unsei •Response $unsei
作 忘 物 忘 物 携帯電話 財布
作 忘 物 忘 物 reqCheck •Training Phrase 忘 物
•Fulfillment Enable webhook call var list; var count; function startCheck(agent) { list = [ "携帯電話", "財布" ]; count = 0; agent.setFollowupEvent({ name: 'say_check', parameters: { item: list[cont] } }); } function sayCheck(agent) { count++; agent.setFollowupEvent({ .... 変数 値 保持 変数 値 保持 sayCheck •Events say_check •Parameters item @sys.any #say_check.item •Response $item 携帯電話 財布 sayCheck - yes •Training Phrase •Fulfillment Enable webhook call follow-up intent
作 忘 物 忘 物 reqCheck •Training Phrase 忘 物
•Fulfillment Enable webhook call function startCheck(agent) { var list = [ "携帯電話", "財布" ]; var count = 0; agent.setContext({ name: 'list', parameters: { value: list, count: count, item: list[count] } }); agent.setFollowupEvent('say_check); } function sayCheck(agent) { var context = agent.getContext('list'); var list = context.parameters.list; var count = context.parameters.count; .... 値 保持 値 保持 sayCheck •Events say_check •Context list •Parameters item @sys.any #list.item •Response $item 携帯電話 財布 sayCheck - yes •Training Phrase •Fulfillment Enable webhook call follow-up intent
作 忘 物 忘 物 reqCheck •Training Phrase 忘 物
•Fulfillment intentMap.set('reqCheck', startCheck); intentMap.set('startCheck - yes', sayCheck); intentMap.set('sayCheck - yes', sayCheck); function startCheck(agent) { ... agent.setFollowupEvent('start_check); } function sayCheck(agent) { ... agent.setFolloupEvent('say_check'); } startCheck •Events start_check 携帯電話 財布 startCheck - yes •Training Phrase •Fulfillment sayCheck •Events say_check sayCheck - yes •Training Phrase •Fulfillment 事前 名前 流 図 事前 名前 流 図
作 動 Google Assistant 対応
Google Assistant 対応 作