Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Google Assistant 対応アプリを作ってみた
Search
Tiny Mouse
April 26, 2018
Programming
0
570
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
40
今年がんばったこと
tinymouse
0
89
【LT会】インプット・アウトプットどうしてる?
tinymouse
0
49
今年がんばったこと
tinymouse
0
170
.NET MAUI+Blazor を使ってみた
tinymouse
0
180
【LT会】この技術書がすごい
tinymouse
1
190
蔵書管理アプリを作り直した
tinymouse
1
1k
Windows アプリの開発手段の選択肢をまとめてみた
tinymouse
0
150
蔵書管理アプリを作りました
tinymouse
0
640
Other Decks in Programming
See All in Programming
AtCoder Conference 2025
shindannin
0
560
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
3
600
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
460
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.3k
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
140
愛される翻訳の秘訣
kishikawakatsumi
3
350
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
150
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
590
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
170
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
740
Cell-Based Architecture
larchanjo
0
140
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
350
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
106
220k
Typedesign – Prime Four
hannesfritz
42
2.9k
Ruling the World: When Life Gets Gamed
codingconduct
0
100
Information Architects: The Missing Link in Design Systems
soysaucechin
0
720
First, design no harm
axbom
PRO
1
1.1k
Skip the Path - Find Your Career Trail
mkilby
0
27
sira's awesome portfolio website redesign presentation
elsirapls
0
89
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1k
Paper Plane (Part 1)
katiecoart
PRO
0
2k
Thoughts on Productivity
jonyablonski
73
5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.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 対応 作