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
620
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
84
今年がんばったこと
tinymouse
0
130
【LT会】インプット・アウトプットどうしてる?
tinymouse
0
63
今年がんばったこと
tinymouse
0
190
.NET MAUI+Blazor を使ってみた
tinymouse
0
210
【LT会】この技術書がすごい
tinymouse
1
220
蔵書管理アプリを作り直した
tinymouse
1
1.1k
Windows アプリの開発手段の選択肢をまとめてみた
tinymouse
0
190
蔵書管理アプリを作りました
tinymouse
0
690
Other Decks in Programming
See All in Programming
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.9k
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
5
1.9k
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
430
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
160
Google Apps Script で Ruby を動かす
kawahara
0
270
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
220
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
530
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
240
今さら聞けない .NET CLI
htkym
0
200
VibeCodingからAgenticWorkflowへ
starfish719
0
650
SlackアプリとLambdaの 連携を構築した話
pawn_4_s
1
120
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
420
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
300
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
210
Believing is Seeing
oripsolob
1
190
Mind Mapping
helmedeiros
PRO
1
320
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
210
Game over? The fight for quality and originality in the time of robots
wayneb77
1
240
We Have a Design System, Now What?
morganepeng
55
8.3k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
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 対応 作