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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Tiny Mouse
April 26, 2018
Programming
600
0
Share
Google Assistant 対応アプリを作ってみた
Mobile Act NAGOYA 2018/4/26
Tiny Mouse
April 26, 2018
More Decks by Tiny Mouse
See All by Tiny Mouse
今年がんばったこと
tinymouse
0
57
今年がんばったこと
tinymouse
0
110
【LT会】インプット・アウトプットどうしてる?
tinymouse
0
56
今年がんばったこと
tinymouse
0
180
.NET MAUI+Blazor を使ってみた
tinymouse
0
190
【LT会】この技術書がすごい
tinymouse
1
210
蔵書管理アプリを作り直した
tinymouse
1
1k
Windows アプリの開発手段の選択肢をまとめてみた
tinymouse
0
160
蔵書管理アプリを作りました
tinymouse
0
660
Other Decks in Programming
See All in Programming
おれのAgentic Coding 2026/03
tsukasagr
1
120
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
1.2k
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
430
ネイティブアプリとWebフロントエンドのAPI通信ラッパーにおける共通化の勘所
suguruooki
0
230
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
110
「速くなった気がする」をデータで疑う
senleaf24
0
110
脱 雰囲気実装!AgentCoreを良い感じにWEBアプリケーションに組み込むために
takuyay0ne
3
420
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
260
AI時代のシステム設計:ドメインモデルで変更しやすさを守る設計戦略
masuda220
PRO
6
1.1k
Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー
n4mlz
0
260
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
250
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
1.2k
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
64
54k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Building Applications with DynamoDB
mza
96
7k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.8k
Rails Girls Zürich Keynote
gr2m
96
14k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
210
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
91
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
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 対応 作