Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Adrian Catalan - Party_like_it_s_1970 - Convers...
Search
droidcon Berlin
July 17, 2018
Programming
49
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Adrian Catalan - Party_like_it_s_1970 - Conversational_interfaces_are_back__into_your_Android_app
droidcon Berlin
July 17, 2018
More Decks by droidcon Berlin
See All by droidcon Berlin
Jon Markoff - Best practice for apps
droidcon_berlin_2018
0
230
Jon Markoff - Voice in the enterprise
droidcon_berlin_2018
0
86
Michael Jess - Enabling enterprise mobility with SAP
droidcon_berlin_2018
0
140
Ronen Sabag - Lean async code with Kotlin’s coroutines
droidcon_berlin_2018
0
90
Boris Farber & Nikita Kozlov - The_Build_Side_of_Android_App
droidcon_berlin_2018
0
220
Zan Markan - The state of Kotlin
droidcon_berlin_2018
0
88
Miquel Beltran - No More □ (tofu) Mastering Emoji on Android
droidcon_berlin_2018
0
150
Laurent Gasser & Jeremy Rochot - Sharing a success story - A low cost, Customer driven and co-developed Android EMM
droidcon_berlin_2018
0
340
Hoi Lam - Adding ML Kit to Android Things And some TensorFlow things
droidcon_berlin_2018
1
250
Other Decks in Programming
See All in Programming
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
600
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
970
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
210
Heart of Swift Concurrency
koher
0
1k
Webの地図
yosuke_furukawa
PRO
6
4.9k
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.1k
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
210
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
210
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
180
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
210
setup-vp GitLab対応の裏側
naokihaba
0
140
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
140
Featured
See All Featured
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
910
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
410
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
HDC tutorial
michielstock
2
920
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
460
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
How Software Deployment tools have changed in the past 20 years
geshan
2
34k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Prompt Engineering for Job Search
mfonobong
0
460
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Transcript
PARTY LIKE IT'S 1970: CONVERSATIONAL INTERFACES ARE BACK (INTO YOUR
APP) Adrián Catalán @ykro https://goo.gl/yYoRAs
(very) BRIEF HISTORY LESSON #DCBERLIN18
• 1952 - Audrey(Bell Labs), recognized strings of digits •
1970 – Hidden Markov Model (HMM), which helped speech recognition move away from literal matching to prediction • 70's - DARPA Projects
• 80's - Template based brute-force & HMM become popular
• 1984 – Speechworks, Automated Speech Recognition over IVR • 90's - Industry starts
• 1997 - Dragon NaturallySpeaking, recognition of continuous speech •
2007 - Siri • 2014 - Amazon Echo • 2016 - Google Home
DESIGN PROCESS #DCBERLIN18
https://www.pexels.com/photo/fashion-sunglasses-woman-girl-46244/ CREATE A PERSONA
https://www.pexels.com/photo/red-vintage-shoes-sport-1994/ • Tone • Style • Word and phrase choices
• Technique • Voice • Functional design
https://www.pexels.com/photo/wood-explosion-fire-hot-8504/ DESTROY THE BOX!
TRADITIONAL THINKING WON’T HELP
https://www.flickr.com/photos/81909228@N07/36169378343 WRITE A SCREENPLAY
https://www.pexels.com/photo/ball-close-up-colors-dark-593467/ COOPERATION! Turn-taking Context Threading “Reading between the lines”
https://www.flickr.com/photos/16105375@N00/1764118705 THERE ARE NO ERRORS
REAL LIFE CAN, SOMETIMES, SUCK... http://depts.washington.edu/antiwar/may1970strike.shtml
UNDERSTANDING IS KEY http://depts.washington.edu/antiwar/may1970strike.shtml
USERS RULE!
THEY KNOW HOW TO TALK
THEY KNOW WHAT THEY WANT
THEY WANT TO HELP
CONTEXT MATTERS
BACK UP PLAN
USER GOOGLE ASSISTANT NUMBER GENIE USER NUMBER GENIE USER NUMBER
GENIE Canonical “Happy path” First time experience Tapered experience (Return user) Repair SAMPLE DIALOGS
SAMPLE DIALOGS USER GOOGLE ASSISTANT NUMBER GENIE USER NUMBER GENIE
USER NUMBER GENIE Canonical “Happy path” First time experience Tapered experience (Return user) Repair
SNACKS #DCBERLIN18
• Avoid written language and use spoken one • Kick
off the conversation
• Guide user through the conversation • Keep our TTS
(Text to speech) short and clear
• Avoid data points unrelated to user query • Follow
natural turn taking in the conversation
• Use conversational makers
ADDING MACHINE LEARNING #DCBERLIN18
“ — — @
https://dialogflow.com/docs/agents
INVOKE Say Hello Start the experience with the agent
INTENT
TRAINING PHRASES
ENTITIES
FULLFILLMENT Backend APP
RESPONSE
CONTEXT move between intents achieve more fluid conversations
Integrating with AIService class MainActivity : AppCompatActivity(), AIListener { val
config = AIConfiguration( "ACCESS_TOKEN", ai.api.AIConfiguration.SupportedLanguages.English, AIConfiguration.RecognitionEngine.System ) aiService = AIService.getService(this, config) aiService.setListener(this) btnListen.setOnClickListener { aiService.startListening() } }
override fun onResult(response: AIResponse?) { var strParameters = "" val
result = response?.result result?.parameters?.let { params -> params.forEach { key, value -> strParameters += "($key,$value)" } txtResult.text = "Query: ${result.resolvedQuery}" + "\nAction: ${result.action}" + "\nParameters: $strParameters" } } Integrating with AIService
PARTY LIKE IT'S 1970: CONVERSATIONAL INTERFACES ARE BACK (INTO YOUR
APP) Adrián Catalán @ykro https://goo.gl/yYoRAs