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
SiriKit
Search
Sing Jie Lee
July 22, 2016
Technology
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SiriKit
Sing Jie Lee
July 22, 2016
More Decks by Sing Jie Lee
See All by Sing Jie Lee
Infocomm Media Youth Festival 2016 - Career Talk
singjie
0
58
Sprite Kit
singjie
0
59
React Native
singjie
1
90
Arduino
singjie
0
45
Software Engineering
singjie
0
57
Advanced Core Data
singjie
0
42
Amazon Echo and Home Integration
singjie
0
100
CS3216 Garena Project X
singjie
0
53
Life
singjie
0
43
Other Decks in Technology
See All in Technology
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
150
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
4
770
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
180
自宅LLMの話
jacopen
1
720
Lightning近況報告
kozy4324
0
220
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
2
630
Microsoft のサポートとフィードバック総まとめ
murachiakira
PRO
0
110
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
240
iOS アプリの「これって不具合ですか?」を AI に調べてもらう
miichan
0
140
FPGAの開発コンペでZephyrを使ってみた
iotengineer22
0
200
時期が悪い!それでもRaspberry Piを買って遊んで活用するには / 20260627-osc26do-rpi-jikigawarui
akkiesoft
0
800
フルAIで個人開発して学んだあれこれ / yuruai vol.1
isaoshimizu
0
110
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Bash Introduction
62gerente
615
220k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
370
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
430
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
450
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
How GitHub (no longer) Works
holman
316
150k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
200
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Transcript
SIRIKIT lee sing jie
SIRI 2011
SIRI • Interact with Apple's apps - Maps, Phone •
Launch 3rd party apps
SIRIKIT 2016
None
“Send payment using AirPay” “To whom?” “Vincent” “How much?” “$100”
“Send $10 to Vincent using AirPay”
“Please do me a favour and send $10 to Vincent
by launching the AirPay app”
“Hey Siri, please do me a favour and send my
precious earned $10 by launching the AirPay app”
“Hey Siri, please do me a favour and send my
precious earned $10 by launching the AirPay app” “To whom?” “Vincent”
SIRIKIT WORKS IN DOMAINS
Messaging VOIP calling Payments Workouts Ride booking Photo search DOMAINS
Messaging VOIP calling Payments Workouts Ride booking Photo search DOMAINS
ONLY
“Buy iPhone case on Shopee”
“Buy iPhone case on Shopee”
SIRIKIT Intents Intents UI App
SIRIKIT Intents Intents UI App
SIRIKIT Intents
SIRIKIT Intents Resolve Resolve Resolve
SIRIKIT Intents Resolve Resolve Resolve Resolve Resolve Resolve Resolve Resolve
Resolve Resolve
SIRIKIT Intents Resolve Resolve Resolve Resolve Resolve Resolve Resolve Resolve
Resolve Resolve Confirm
SIRIKIT Intents Resolve Resolve Resolve Resolve Resolve Resolve Resolve Resolve
Resolve Resolve Confirm Handle
SIRIKIT Intents Resolve Resolve Resolve Resolve Resolve Resolve Resolve Resolve
Resolve Resolve Confirm Handle
RESOLVE Communicate with user Determine the values needed Provide response
“Send $10 to Vincent using AirPay”
RESOLVE Payee “Send $10 to Vincent using AirPay” Amount
needsValue RESOLVE PAYEE
confirmationRequired(with:) RESOLVE PAYEE
disambiguation(with:) RESOLVE PAYEE
unsupported RESOLVE PAYEE
needMoreDetails(with:) RESOLVE PAYEE
needMoreDetails(with:) RESOLVE PAYEE HUH?
needsMoreDetails(with:) RESOLVE PAYEE
notRequired RESOLVE PAYEE
RESOLVE PAYEE success(with:)
SIRIKIT Intents Resolve Resolve Resolve Resolve Resolve Resolve Resolve Resolve
Resolve Resolve Confirm Handle
CONFIRM Overall impression Check details
SIRIKIT Intents Resolve Resolve Resolve Resolve Resolve Resolve Resolve Resolve
Resolve Resolve Confirm Handle
HANDLE Perform the requested action
IMPLEMENTATION
Messaging VOIP calling Payments Workouts Ride booking Photo search DOMAINS
INSearchForMessagesIntent.h INSendMessageIntent.h INSetMessageAttributeIntent.h Ride INGetRideStatusIntent.h INListRideOptionsIntent.h INRequestRideIntent.h Payment INRequestPaymentIntent.h INSendPaymentIntent.h
VOIP INSearchCallHistoryIntent.h INStartAudioCallIntent.h INStartVideoCallIntent.h Messaging INSearchForPhotosIntent.h INStartPhotoPlaybackIntent.h Photos Workout INCancelWorkoutIntent.h INEndWorkoutIntent.h INPauseWorkoutIntent.h INResumeWorkoutIntent.h INStartWorkoutIntent.h
INSearchForMessagesIntent.h INSendMessageIntent.h INSetMessageAttributeIntent.h Ride INGetRideStatusIntent.h INListRideOptionsIntent.h INRequestRideIntent.h Payment INRequestPaymentIntent.h INSendPaymentIntent.h
VOIP INSearchCallHistoryIntent.h INStartAudioCallIntent.h INStartVideoCallIntent.h Messaging INSearchForPhotosIntent.h INStartPhotoPlaybackIntent.h Photos Workout INCancelWorkoutIntent.h INEndWorkoutIntent.h INPauseWorkoutIntent.h INResumeWorkoutIntent.h INStartWorkoutIntent.h
@interface INSendMessageIntent : INIntent - (instancetype)initWithRecipients:(nullable NSArray<INPerson *> *)recipients content:(nullable
NSString *)content groupName:(nullable NSString *)groupName serviceName:(nullable NSString *)serviceName sender:(nullable INPerson *)sender; // Contacts to whom the message should be sent. @property (readonly, copy, nonatomic) NSArray<INPerson *> *recipients; // Body text of the message. @property (readonly, copy, nonatomic) NSString *content; @property (readonly, copy, nonatomic) NSString *groupName; // Specified service for the message. @property (readonly, copy, nonatomic) NSString *serviceName; // The person, or account, sending the message. @property (readonly, copy, nonatomic) INPerson *sender; @end INSendMessageIntent.h
protocol INSendMessageIntentHandling <NSObject> @required - (void)handleSendMessage:(INSendMessageIntent *)intent completion:(void (^)(INSendMessageIntentResponse *response))completion;
@optional - (void)confirmSendMessage:(INSendMessageIntent *)intent completion:(void (^)(INSendMessageIntentResponse *response))completion; - (void)resolveRecipientsForSendMessage:(INSendMessageIntent *)intent withCompletion:(void (^)(NSArray<INPersonResolutionResult *> *resolutionResults))completion; - (void)resolveContentForSendMessage:(INSendMessageIntent *)intent withCompletion:(void (^)(INStringResolutionResult *resolutionResult))completion; - (void)resolveGroupNameForSendMessage:(INSendMessageIntent *)intent withCompletion:(void (^)(INStringResolutionResult *resolutionResult))completion; - (void)resolveServiceNameForSendMessage:(INSendMessageIntent *)intent withCompletion:(void (^)(INStringResolutionResult *resolutionResult))completion; - (void)resolveSenderForSendMessage:(INSendMessageIntent *)intent withCompletion:(void (^)(INPersonResolutionResult *resolutionResult))completion; @end INSendMessageIntentHandling.h
LET'S BUILD
None
“Message Vincent I miss him using BeeTalk.”
“Message Vincent I miss him using BeeTalk.” Domain: Messaging
“Message Vincent I miss him using BeeTalk.” Domain: Messaging Intent:
sendMessage
“Message Vincent I miss him using BeeTalk.” Domain: Messaging Intent:
sendMessage User: Vincent
“Message Vincent I miss him using BeeTalk.” Domain: Messaging Intent:
sendMessage User: Vincent Content: I miss him
“Message Vincent I miss him using BeeTalk.” Domain: Messaging Intent:
sendMessage App: BeeTalk User: Vincent Content: I miss him
DEMO
APP VOCABULARY User-Specific Global Vocabulary Contact names Photo tags Photo
album names Workout names Ride options Workout names
DEMO
LOCALIZATION
DEMO
SIRIKIT Intents Intents UI App
SIRIKIT Intents UI Domains Ride Messaging Payment Workout
NO CONTROL
DEMO
Q&A