SlideShare a Scribd company logo
1 of 158
Download to read offline
G O O G L E A S S I STA N T J U Ż P O P O L S K U
D E V E L O P E R S K I P U N K T W I D Z E N I A
A R T U R S KO W R O Ń S K I  
U Ż Y T K O W N I K Ó W S M A R T G Ł O Ś N I K Ó W W U S A
57M
M I L I A R D Ó W U Ż Y T K O W N I K Ó W A S Y S T E N T Ó W W 2 0 2 3
1.2
Z E W N Ę T R Z N Y C H PA R T N E R Ó W P O D C Z A S C E S
76
M I N O R I T Y R E P O R T
?2 0 0 2
T E L E F O N Y K O M Ó R K O W E
2 0 0 9
K I N E C T
2 0 1 0
N AT U R A L U S E R I N T E R FA C E S
2 0 1 0
K I N E C T
M Ę C Z Ą C Y
N I E P R A K T Y C Z N Y
M I N O R I T Y R E P O R T
2 0 0 2
2 0 0 9
S I R I
2 0 1 1
S I R I N I E Z A C H W Y C A
A M A Z O N E C H O
2 0 1 4
A M A Z O N A L E X A
I V O N A S O F T WA R E
2 0 1 3
S I R I N I E Z A C H W Y C A
P R O B L E M Y S I R I - T E L E F O N Y
K O N T E K S T U Ż Y C I A
P R O B L E M Y S I R I - I N T E G R A C J E
M A R K E T P L A C E
I R U S Z Y L I
R O D Z I N A A M A Z O N E C H O
C O R TA N A F R O M M I C R O S O F T
B I X B Y O D S A M S U N G
H O M E P O D
G O O G L E A S S I S TA N T
G O O G L E N O W
2 0 1 2
2 0 1 6
S M A R T S P E A K E R S
A N D R O I D
A N D R O I D A U T O
A N D R O I D W E A R
S Ł U C H A W K I
A N D R O I D T V / C H R O M E C A S T
A N D R O I D T V / C H R O M E C A S TN I E T Y L K O G Ł O S
A N D R O I D T V / C H R O M E C A S TG Ł O S O C E N T RY C Z N Y
A N D R O I D T V / C H R O M E C A S TI N T E N C J O - C E N T RY C Z N O Ś Ć
A N D R O I D T V / C H R O M E C A S TI L U Z J A R E A L N E J O S O B Y
G O O G L E I D Z I E Z N A C Z N I E S Z E R Z E J
G O O G L E B A R D Z I E J A M B I T N E
FRAGMENTACJA
O K , C Z A S N A D E V E L O P M E N T
L AY E R S
K O N W E R S A C J A
INTENCJE
GŁOŚNIK
“LOGIKA
BIZNESOWA”
“ M Ą D R O - G Ł U P I ” G Ł O Ś N I K
“ M Ą D R O - G Ł U P I ” G Ł O Ś N I K
Hey Google
“ M Ą D R O - G Ł U P I ” G Ł O Ś N I K
Hey Google
“ M Ą D R O - G Ł U P I ” G Ł O Ś N I K
Hey Google, porozmawiaj z
4Developers
“ M Ą D R O - G Ł U P I ” G Ł O Ś N I K
Hey Google, porozmawiaj z
4Developers
C H M U R A O B L I C Z E N I O WA
Speech-To-Text
Natural Language Understanding
Processing Request
Text-To-Speech
K O N W E R S A C J A
INTENCJE
GŁOŚNIK
“LOGIKA
BIZNESOWA”
K O N W E R S A C J A
INTENCJE
“LOGIKA
BIZNESOWA”
GŁOŚNIK
BUSINESS LOGIC LAYER
2 0 1 4
ACTIONS ON GOOGLE SDK
ACTIONS ON GOOGLE CONSOLE
https://console.actions.google.com/u/0/
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent('actions.intent.MAIN', (conv) => {
conv.close(‘Cześć, 4Developers’);
});
export const academyAssistant = functions.https.onRequest(app);
PROSTA AKCJA
PROSTA AKCJA
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent('actions.intent.MAIN', (conv) => {
conv.close(‘Cześć, 4Developers’);
});
export const academyAssistant = functions.https.onRequest(app);
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent('actions.intent.MAIN', (conv) => {
conv.close(‘Cześć, 4Developers’);
});
export const academyAssistant = functions.https.onRequest(app);
PROSTA AKCJA
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent('actions.intent.MAIN', (conv) => {
conv.close(‘Cześć, 4Developers’);
});
export const academyAssistant = functions.https.onRequest(app);
PROSTA AKCJA
C O N V E R S AT I O N F L O W
INTENCJE
“LOGIKA
BIZNESOWA”
GŁOŚNIK
C O N V E R S AT I O N F L O W
INTENCJE
GŁOŚNIK
“LOGIKA
BIZNESOWA”
INTENT LAYER
INTENCJE
Hey Google, porozmawiaj z Pizza Portal
INTENCJE
INTENTLAYER
Hey Google, porozmawiaj z Pizza Portal
INTENCJE
INTENTLAYER
MAIN_INTENT
Hey Google, porozmawiaj z Pizza Portal
INTENCJE
INTENTLAYER
Cześć, jestem Pizza Portal
Hey Google, porozmawiaj z Pizza Portal
RESPONSE
{
"actions": [
{
"description": "Pizza Portal Intent",
"name": "MAIN",
"fulfillment": {
"conversationName": "PizzaPortal"
},
"intent": {
"name": "actions.intent.MAIN",
"trigger": {
"queryPatterns": [
“mów do Pizza Portal”
]
}
}
}
],
"conversations": {
"PizzaPortal": {
"name": "PizzaPortal",
"url": "https://us-central1-pizzaportal.cloudfunctions.net/main"
}
},
"locale": "en"
}
RESPONSE
{
"actions": [
{
"description": "Pizza Portal Intent",
"name": "MAIN",
"fulfillment": {
"conversationName": "PizzaPortal"
},
"intent": {
"name": "actions.intent.MAIN",
"trigger": {
"queryPatterns": [
“mów do Pizza Portal”
]
}
}
}
],
"conversations": {
"PizzaPortal": {
"name": "PizzaPortal",
"url": "https://us-central1-pizzaportal.cloudfunctions.net/main"
}
},
"locale": "en"
}
RESPONSE
{
"actions": [
{
"description": "Pizza Portal Intent",
"name": "MAIN",
"fulfillment": {
"conversationName": "PizzaPortal"
},
"intent": {
"name": "actions.intent.MAIN",
"trigger": {
"queryPatterns": [
“mów do Pizza Portal”
]
}
}
}
],
"conversations": {
"PizzaPortal": {
"name": "PizzaPortal",
"url": "https://us-central1-pizzaportal.cloudfunctions.net/main"
}
},
"locale": "en"
}
RESPONSE
{
"actions": [
{
"description": "Pizza Portal Intent",
"name": "MAIN",
"fulfillment": {
"conversationName": "PizzaPortal"
},
"intent": {
"name": "actions.intent.MAIN",
"trigger": {
"queryPatterns": [
“mów do Pizza Portal”
]
}
}
}
],
"conversations": {
"PizzaPortal": {
"name": "PizzaPortal",
"url": "https://us-central1-pizzaportal.cloudfunctions.net/main"
}
},
"locale": "en"
}
RESPONSE
{
"actions": [
{
"description": "Pizza Portal Intent",
"name": "MAIN",
"fulfillment": {
"conversationName": "PizzaPortal"
},
"intent": {
"name": "actions.intent.MAIN",
"trigger": {
"queryPatterns": [
“mów do Pizza Portal”
]
}
}
}
],
"conversations": {
"PizzaPortal": {
"name": "PizzaPortal",
"url": "https://us-central1-pizzaportal.cloudfunctions.net/main"
}
},
"locale": "en"
}
ROZMOWA
ROZMOWA
Hey Google, porozmawiaj z Pizza Portal
ROZMOWA
INTENTLAYER
Hey Google, porozmawiaj z Pizza Portal
ROZMOWA
INTENTLAYER
MAIN_INTENT
Hey Google, porozmawiaj z Pizza Portal
ROZMOWA
INTENTLAYER
Cześć, na co masz dzisiaj
ochotę?
Hey Google, porozmawiaj z Pizza Portal
ROZMOWA
INTENTLAYER
Chciałbym zamówić Pizzę
Hey Google, porozmawiaj z Pizza Portal
ROZMOWA
Chciałbym zamówić Pizzę
INTENTLAYER
ORDER_PIZZA_INTENT
Hey Google, porozmawiaj z Pizza Portal
ROZMOWA
Chciałbym zamówić Pizzę
INTENTLAYER
Pizza zamówiona
Hey Google, porozmawiaj z Pizza Portal
DODATKOWA INTENCJA
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent('actions.intent.MAIN', (conv) => {
conv.ask('Cześć, na co masz dzisiaj ochotę?’);
});
app.intent('com.artuskowronski.ORDER_PIZZA', (conv) => {
return orderPizza().then(()=>
conv.close(‘Pizza zamówiona’);
);
});
export const academyAssistant = functions.https.onRequest(app);
DODATKOWA INTENCJA
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent('actions.intent.MAIN', (conv) => {
conv.ask('Cześć, na co masz dzisiaj ochotę?’);
});
app.intent('com.artuskowronski.ORDER_PIZZA', (conv) => {
return orderPizza().then(()=>
conv.close(‘Pizza zamówiona’);
);
});
export const academyAssistant = functions.https.onRequest(app);
DODATKOWA INTENCJA
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent('actions.intent.MAIN', (conv) => {
conv.ask('Cześć, na co masz dzisiaj ochotę?’);
});
app.intent('com.artuskowronski.ORDER_PIZZA', (conv) => {
return orderPizza().then(()=>
conv.close(‘Pizza zamówiona’);
);
});
export const academyAssistant = functions.https.onRequest(app);
DODATKOWA INTENCJA
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent('actions.intent.MAIN', (conv) => {
conv.ask('Cześć, na co masz dzisiaj ochotę?’);
});
app.intent('com.artuskowronski.ORDER_PIZZA', (conv) => {
return orderPizza().then(()=>
conv.close(‘Pizza zamówiona’);
);
});
export const academyAssistant = functions.https.onRequest(app);
DODATKOWA INTENCJA
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent('actions.intent.MAIN', (conv) => {
conv.ask('Cześć, na co masz dzisiaj ochotę?’);
});
app.intent('com.artuskowronski.ORDER_PIZZA', (conv) => {
return orderPizza().then(()=>
conv.close(‘Pizza zamówiona’);
);
});
export const academyAssistant = functions.https.onRequest(app);
INVOCATION MODEL
{
"actions": [
{
"description": "Pizza Portal Intent",
"name": "MAIN",
"fulfillment": {"conversationName": "PizzaPortal"},
"intent": {
"name": "actions.intent.MAIN",
"trigger": {
"queryPatterns": [“mów do Pizza Portal”]
}}},
{
"name": “ORDER_PIZZA_INTENT",
"intent": {
"name": “com.artuskowronski.ORDER_PIZZA",
"trigger": {
"queryPatterns": [“zamów Pizzę”]}
},
}
"fulfillment": {
"conversationName": "PizzaPortal"
}
}
],
(…)
"locale": "en"
}
INVOCATION MODEL
{
"actions": [
{
"description": "Pizza Portal Intent",
"name": "MAIN",
"fulfillment": {"conversationName": "PizzaPortal"},
"intent": {
"name": "actions.intent.MAIN",
"trigger": {
"queryPatterns": [“mów do Pizza Portal”]
}}},
{
"name": “ORDER_PIZZA_INTENT",
"intent": {
"name": “com.artuskowronski.ORDER_PIZZA",
"trigger": {
"queryPatterns": [“zamów Pizzę”]}
},
}
"fulfillment": {
"conversationName": "PizzaPortal"
}
}
],
(…)
"locale": "en"
}
INVOCATION MODEL
{
"actions": [
{
"description": "Pizza Portal Intent",
"name": "MAIN",
"fulfillment": {"conversationName": "PizzaPortal"},
"intent": {
"name": "actions.intent.MAIN",
"trigger": {
"queryPatterns": [“mów do Pizza Portal”]
}}},
{
"name": “ORDER_PIZZA_INTENT",
"intent": {
"name": “com.artuskowronski.ORDER_PIZZA",
"trigger": {
"queryPatterns": [“zamów Pizzę”]}
},
}
"fulfillment": {
"conversationName": "PizzaPortal"
}
}
],
(…)
"locale": "en"
}
INVOCATION MODEL
{
"actions": [
{
"description": "Pizza Portal Intent",
"name": "MAIN",
"fulfillment": {"conversationName": "PizzaPortal"},
"intent": {
"name": "actions.intent.MAIN",
"trigger": {
"queryPatterns": [“mów do Pizza Portal”]
}}},
{
"name": “ORDER_PIZZA_INTENT",
"intent": {
"name": “com.artuskowronski.ORDER_PIZZA",
"trigger": {
"queryPatterns": [“zamów Pizzę”]}
},
}
"fulfillment": {
"conversationName": "PizzaPortal"
}
}
],
(…)
"locale": "en"
}
INVOCATION MODEL
{
"actions": [
{
"description": "Pizza Portal Intent",
"name": "MAIN",
"fulfillment": {"conversationName": "PizzaPortal"},
"intent": {
"name": "actions.intent.MAIN",
"trigger": {
"queryPatterns": [“mów do Pizza Portal”]
}}},
{
"name": “ORDER_PIZZA_INTENT",
"intent": {
"name": “com.artuskowronski.ORDER_PIZZA",
"trigger": {
"queryPatterns": [“zamów Pizzę”]}
},
}
"fulfillment": {
"conversationName": "PizzaPortal"
}
}
],
(…)
"locale": "en"
}
INTENCJA
Hey Google, powiedz Pizza Portal…
…zamów Pizzę
INTENTLAYER
INTENCJA
Hey Google, powiedz Pizza Portal…
…zamów Pizzę
INTENTLAYER
Pizza zamówiona
INVOCATION MODEL
{
"actions": [
(…)
{
"name": “ORDER_PIZZA_INTENT",
"intent": {
"name": “com.artuskowronski.ORDER_PIZZA",
"trigger": {
"queryPatterns": [
“zamów Pizzę”
]
}
},
"fulfillment": {
"conversationName": "PizzaPortal"
}
}
(…)
}
BUDOWA WYPOWIEDZI
Hey Google, powiedz Pizza Portal zamów Pizzę
BUDOWA WYPOWIEDZI
Wake Word
Hey Google, powiedz Pizza Portal zamów Pizzę
BUDOWA WYPOWIEDZI
Operacja
Hey Google, powiedz Pizza Portal zamów Pizzę
BUDOWA WYPOWIEDZI
Nazwa Akcji
Hey Google, powiedz Pizza Portal zamów Pizzę
BUDOWA WYPOWIEDZI
Zapytanie
Hey Google, powiedz Pizza Portal zamów Pizzę
REQUEST
{
"user": {
"userId": "ABwppHFbm5dVKjOKFRjp_FARbS_wYSOGvXL2YlCz_stVkrxgkB3rKdvsqUZGLBYzhg8PraP1SoUm4Jn7DQ",
"locale": "en-EN",
"lastSeen": "2019-01-26T11:05:14Z"
},
"conversation": {
"conversationId": "ABwppHHrdE72AtK5OIXlil4EpwU8TZjQcRsQAp-3BJR9CzJ1u4IJCGSLnY5vwGJRksBkYQ3BMHnla_RtcQ",
"type": "NEW"
},
"inputs": [
{
"intent": "actions.intent.ORDER_PIZZA_INTENT",
"rawInputs": [
{
"inputType": "SPEAK",
"query": “zamów Pizzę”
}
]
}
],
"surface": {
"capabilities": [
{"name": "actions.capability.SCREEN_OUTPUT"},
{"name": "actions.capability.WEB_BROWSER"},
{"name": "actions.capability.ACCOUNT_LINKING"},
{"name": "actions.capability.AUDIO_OUTPUT"},
{"name": "actions.capability.MEDIA_RESPONSE_AUDIO"}
]
},
"isInSandbox": true,
"requestType": "DEVICE"
}
REQUEST
{
"user": {
"userId": "ABwppHFbm5dVKjOKFRjp_FARbS_wYSOGvXL2YlCz_stVkrxgkB3rKdvsqUZGLBYzhg8PraP1SoUm4Jn7DQ",
"locale": "en-EN",
"lastSeen": "2019-01-26T11:05:14Z"
},
"conversation": {
"conversationId": "ABwppHHrdE72AtK5OIXlil4EpwU8TZjQcRsQAp-3BJR9CzJ1u4IJCGSLnY5vwGJRksBkYQ3BMHnla_RtcQ",
"type": "NEW"
},
"inputs": [
{
"intent": “actions.intent.ORDER_PIZZA_INTENT”,
"rawInputs": [
{
"inputType": "SPEAK",
"query": “zamów Pizzę”
}
]
}
],
"surface": {
"capabilities": [
{"name": "actions.capability.SCREEN_OUTPUT"},
{"name": "actions.capability.WEB_BROWSER"},
{"name": "actions.capability.ACCOUNT_LINKING"},
{"name": "actions.capability.AUDIO_OUTPUT"},
{"name": "actions.capability.MEDIA_RESPONSE_AUDIO"}
]
},
"isInSandbox": true,
"requestType": "DEVICE"
}
REQUEST
{
"user": {
"userId": "ABwppHFbm5dVKjOKFRjp_FARbS_wYSOGvXL2YlCz_stVkrxgkB3rKdvsqUZGLBYzhg8PraP1SoUm4Jn7DQ",
"locale": "en-EN",
"lastSeen": "2019-01-26T11:05:14Z"
},
"conversation": {
"conversationId": "ABwppHHrdE72AtK5OIXlil4EpwU8TZjQcRsQAp-3BJR9CzJ1u4IJCGSLnY5vwGJRksBkYQ3BMHnla_RtcQ",
"type": "NEW"
},
"inputs": [
{
"intent": "actions.intent.ORDER_PIZZA_INTENT",
"rawInputs": [
{
"inputType": "SPEAK",
"query": “zamów Pizzę”
}
]
}
],
"surface": {
"capabilities": [
{"name": "actions.capability.SCREEN_OUTPUT"},
{"name": "actions.capability.WEB_BROWSER"},
{"name": "actions.capability.ACCOUNT_LINKING"},
{"name": "actions.capability.AUDIO_OUTPUT"},
{"name": "actions.capability.MEDIA_RESPONSE_AUDIO"}
]
},
"isInSandbox": true,
"requestType": "DEVICE"
}
RESPONSE
{
"expectUserResponse": false,
"finalResponse": {
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": “Pizza Zamówiona”
}
}
]
}
}
}
WARIANTY
Hey Google, powiedz Pizza Portal…
…chcę zamówić pizzę
…że chce moją ulubioną pizzę
…jestem głodny
INVOCATION MODEL
{
"actions": [
(…)
{
"name": “ORDER_PIZZA_INTENT",
"intent": {
"name": “com.artuskowronski.ORDER_PIZZA",
"trigger": {
"queryPatterns": [
"chcę zamówić pizzę",
"że chce moją ulubioną pizzę”,
“jestem głodny",
]
}
},
"fulfillment": {
"conversationName": "PizzaPortal"
}
}
(…)
}
INVOCATION MODEL
{
"actions": [
(…)
{
"name": “ORDER_PIZZA_INTENT",
"intent": {
"name": “com.artuskowronski.ORDER_PIZZA",
"trigger": {
"queryPatterns": [
"chcę zamówić pizzę",
"że chce moją ulubioną pizzę”,
“jestem głodny",
]
}
},
"fulfillment": {
"conversationName": "PizzaPortal"
}
}
(…)
}
WARIANTY
ORDER_PIZZA_INTENT
INTENTLAYER
Hey Google, powiedz Pizza Portal…
…chcę zamówić pizzę
…że chce moją ulubioną pizzę
…jestem głodny
N I E T R A K T U J J A K T E R M I N A L
S S M L
SSML
app.intent(‘actions.intent.MAIN’, (conv) => {
conv.ask('<speak>
Cześć
<audio src="https://actions.google.com/sounds/v1/cartoon/cartoon_boing.ogg"/>
Dzięki SSML
<prosody rate="fast">możesz przyśpieszyć mowę.</prosody>
<prosody rate="slow">Albo ją zwolnić.</prosody>
<prosody pitch="high">Możesz zmienić ton głosu na wyższy.</prosody>
<prosody pitch="low">Albo na niższy.</prosody>
<prosody volume="loud">Głos może być głośny.</prosody>
<prosody volume="soft">Albo cichy.</prosody>
<prosody rate="fast" pitch="low" volume=“x-loud">
Możesz też zastosować wszystkie te ustawienia naraz.
</prosody>
<break/>
Możesz mi dać zadanie numer <say-as interpret-as="cardinal">1</say-as>
w którym trzeba przeliterować nazwę jakiegoś koloru. Na przykład niebieski<break time="0.5s"/>
<say-as interpret-as="characters">niebieski</say-as>
Spróbuj! <break time=“2" /> Po prostu zacznij edytować ten kod.
</speak>’);
});
SSML
Hey Google, otwórz 4 Developers…
Hey, Pizza zamówiona
<break time=“2s” />.
Smacznego
INTENTLAYER
PA R A M E T RY
PARAMETRYZOWANIE WYPOWIEDZI
Hey Google, powiedz Pizza Portal…
…że chcę Pepperoni
INTENTLAYER
ZAPYTANIE Z PARAMETREM
Zapytanie
Hey Google, powiedz Pizza Portal że chcę Peperoni
ZAPYTANIE Z PARAMETREM
Parametr
Hey Google, powiedz Pizza Portal że chcę Peperoni
INTENT LAYER
INTENTLAYER
ORDER_PIZZA_INTENT
Parameters:
KIND: PEPPERONI
Hey Google, powiedz Pizza Portal…
…że chcę Pepperoni
RESPONSE
{
"actions": [
(…)
{
"name": “ORDER_PIZZA_INTENT",
"intent": {
"name": “com.artuskowronski.ORDER_PIZZA”,
"parameters": [
{
"name": "kind",
"type": "org.schema.type.Food"
}
],
"trigger": {
"queryPatterns": [
“że chcę $org.schema.type.Food:kind",
]
}
},
(…)
}
“ S U R FA C E S ” - P O W I E R Z C H N I E
INNE PREZENTACJE
INTENTLAYER
Hey Google, powiedz Pizza Portal…
…że chcę Pepperoni
AKCJA Z RÓŻNĄ PREZENTACJĄ
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent(‘actions.intent.pizza’, (conv) => {
conv.ask('Hey, Pizza zamówiona <break time=“2s” />. Smacznego’);
});
export const academyAssistant = functions.https.onRequest(app);
AKCJA Z RÓŻNĄ PREZENTACJĄ
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent(‘actions.intent.pizza’, (conv) => {
conv.ask(new SimpleResponse({
speech: 'Hey, Pizza zamówiona <break time=“2s” />. Smacznego’,
text: ‘Pizza zamówiona’,
}));
});
export const academyAssistant = functions.https.onRequest(app);
AKCJA Z RÓŻNĄ PREZENTACJĄ
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent(‘actions.intent.pizza’, (conv) => {
conv.ask(new SimpleResponse({
speech: 'Hey, Pizza zamówiona <break time=“2s” />. Smacznego’,
text: ‘Pizza zamówiona’,
}));
});
export const academyAssistant = functions.https.onRequest(app);
AKCJA Z RÓŻNĄ PREZENTACJĄ
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent(‘actions.intent.pizza’, (conv) => {
conv.ask(new SimpleResponse({
speech: 'Hey, Pizza zamówiona <break time=“2s” />. Smacznego’,
text: ‘Pizza zamówiona’,
}));
});
export const academyAssistant = functions.https.onRequest(app);
AKCJA Z RÓŻNĄ PREZENTACJĄ
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent(‘actions.intent.pizza’, (conv) => {
conv.ask(new SimpleResponse({
speech: 'Hey, Pizza zamówiona <break time=“2s” />. Smacznego’,
text: ‘Pizza zamówiona’,
}));
});
export const academyAssistant = functions.https.onRequest(app);
G R A P H I C T E X T
S M A R T S C R E E N
CAPABILITIES - MOŻLIWOŚCI
const hasScreen =
conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT');
const hasAudio =
conv.surface.capabilities.has('actions.capability.AUDIO_OUTPUT');
const hasMediaPlayback =
conv.surface.capabilities.has('actions.capability.MEDIA_RESPONSE_AUDIO');
const hasWebBrowser =
conv.surface.capabilities.has('actions.capability.WEB_BROWSER');
BARDZIEJ ZŁOŻONA PREZENTACJA
conv.close('This is a basic card example.');
conv.close(new BasicCard({
text: `This is response.
subtitle: 'This is a subtitle',
title: 'Title: this is a title',
buttons: new Button({
title: 'This is a button',
url: 'https://assistant.google.com/',
}),
image: new Image({
url: 'https://example.com/image.png',
alt: 'Image alternate text',
})
}));
BARDZIEJ ZŁOŻONA PREZENTACJA
conv.close('This is a basic card example.');
conv.close(new BasicCard({
text: `This is response.
subtitle: 'This is a subtitle',
title: 'Title: this is a title',
buttons: new Button({
title: 'This is a button',
url: 'https://assistant.google.com/',
}),
image: new Image({
url: 'https://example.com/image.png',
alt: 'Image alternate text',
})
}));
K A R T Y
T Ł U M A C Z E N I A
action.pl.json
{
"actions": [
{
"description": "Pizza Portal Intent",
"name": "MAIN",
"fulfillment": {
"conversationName": "PizzaPortal"
},
"intent": {
"name": "actions.intent.MAIN",
"trigger": {
"queryPatterns": [
“mów do Pizza Portal”
]
}
}
}
],
(…)
"locale": “pl-PL”
}
action.en.json
{
"actions": [
{
"description": "Pizza Portal Intent",
"name": "MAIN",
"fulfillment": {
"conversationName": "PizzaPortal"
},
"intent": {
"name": "actions.intent.MAIN",
"trigger": {
"queryPatterns": [
“open Pizza Portal”
]
}
}
}
],
(…),
"locale": “en-EN”
}
ZLOKALIZOWANY SKILL
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent(‘actions.intent.pizza’, (conv) => {
if(conv.user.locale == “pl-PL”){
conv.close(‘Pizza została zamówiona’);
} else {
conv.close(‘Pizza was ordered’);
}
});
export const academyAssistant = functions.https.onRequest(app);
ZLOKALIZOWANY SKILL
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent(‘actions.intent.pizza’, (conv) => {
if(conv.user.locale == “pl-PL”){
conv.close(‘Pizza została zamówiona’);
} else {
conv.close(‘Pizza was ordered’);
}
});
export const academyAssistant = functions.https.onRequest(app);
ZLOKALIZOWANY SKILL
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent(‘actions.intent.pizza’, (conv) => {
if(conv.user.locale == “pl-PL”){
conv.close(‘Pizza została zamówiona’);
} else {
conv.close(‘Pizza was ordered’);
}
});
export const academyAssistant = functions.https.onRequest(app);
ZLOKALIZOWANY SKILL
import * as functions from 'firebase-functions';
import { actionssdk } from 'actions-on-google';
const app = actionssdk({debug: true});
app.intent(‘actions.intent.pizza’, (conv) => {
if(conv.user.locale == “pl-PL”){
conv.close(‘Pizza została zamówiona’);
} else {
conv.close(‘Pizza was ordered’);
}
});
export const academyAssistant = functions.https.onRequest(app);
API.AI
2 0 1 6
DIALOGFLOW
I N T E R N E T O F T H I N G S
G O O G L E A S S I S TA N T S D K
M O N E T Y Z A C J A
Z A K A Z R E K L A M
R E K L A M A “ B E A U T Y & B E A S T ”
G O O G L E D A L E J P R Ó B U J E
R E K L A M A B U R G E R K I N G ’ S
G O O G L E PAY
G O O G L E I N P O L A N D
https://assistant.google.com/explore
G O O G L E D U P L E X
A N D R O I D E C O S Y S T E M
G O O G L E M A P O T E N C J A Ł
C Z E K A M Y N A G Ł O Ś N I K
0 7 . 0 5 . 2 0 1 9
GP Y TA N I A ?

More Related Content

What's hot

Spring Roo 2.0 Preview at Spring I/O 2016
Spring Roo 2.0 Preview at Spring I/O 2016 Spring Roo 2.0 Preview at Spring I/O 2016
Spring Roo 2.0 Preview at Spring I/O 2016 DISID
 
هندسة التغيير
هندسة التغييرهندسة التغيير
هندسة التغييرHani Al-Menaii
 
هندسة الأفكار - تيداكس جدة - هاني المنيعي
هندسة الأفكار  -  تيداكس جدة - هاني المنيعيهندسة الأفكار  -  تيداكس جدة - هاني المنيعي
هندسة الأفكار - تيداكس جدة - هاني المنيعيHani Al-Menaii
 
Golden Gate - 2, 3 e 4 quartos - Centro Nova Iguaçu
 Golden Gate - 2, 3 e 4 quartos - Centro Nova Iguaçu Golden Gate - 2, 3 e 4 quartos - Centro Nova Iguaçu
Golden Gate - 2, 3 e 4 quartos - Centro Nova IguaçuAntonio Neto
 
Safe Reinforcement Learning
Safe Reinforcement LearningSafe Reinforcement Learning
Safe Reinforcement LearningDongmin Lee
 
إجراءات الترانزيت
إجراءات الترانزيتإجراءات الترانزيت
إجراءات الترانزيتMohamed Hendawy
 

What's hot (6)

Spring Roo 2.0 Preview at Spring I/O 2016
Spring Roo 2.0 Preview at Spring I/O 2016 Spring Roo 2.0 Preview at Spring I/O 2016
Spring Roo 2.0 Preview at Spring I/O 2016
 
هندسة التغيير
هندسة التغييرهندسة التغيير
هندسة التغيير
 
هندسة الأفكار - تيداكس جدة - هاني المنيعي
هندسة الأفكار  -  تيداكس جدة - هاني المنيعيهندسة الأفكار  -  تيداكس جدة - هاني المنيعي
هندسة الأفكار - تيداكس جدة - هاني المنيعي
 
Golden Gate - 2, 3 e 4 quartos - Centro Nova Iguaçu
 Golden Gate - 2, 3 e 4 quartos - Centro Nova Iguaçu Golden Gate - 2, 3 e 4 quartos - Centro Nova Iguaçu
Golden Gate - 2, 3 e 4 quartos - Centro Nova Iguaçu
 
Safe Reinforcement Learning
Safe Reinforcement LearningSafe Reinforcement Learning
Safe Reinforcement Learning
 
إجراءات الترانزيت
إجراءات الترانزيتإجراءات الترانزيت
إجراءات الترانزيت
 

Similar to Google Assistant po polsku - developerski punkt widzenia

Whitepaper - Spinbackup Overview
Whitepaper - Spinbackup OverviewWhitepaper - Spinbackup Overview
Whitepaper - Spinbackup OverviewSpinbackup
 
Apple Watch - Jak tworzyć aplikacje na SmartWatcha z problemami wieku dziecię...
Apple Watch - Jak tworzyć aplikacje na SmartWatcha z problemami wieku dziecię...Apple Watch - Jak tworzyć aplikacje na SmartWatcha z problemami wieku dziecię...
Apple Watch - Jak tworzyć aplikacje na SmartWatcha z problemami wieku dziecię...Maciej Kołek
 
Construir productos y transformación digital mezclando tecnología y educación...
Construir productos y transformación digital mezclando tecnología y educación...Construir productos y transformación digital mezclando tecnología y educación...
Construir productos y transformación digital mezclando tecnología y educación...Rosa Cano
 
Sopa de letras y crucigrama
Sopa de letras y crucigramaSopa de letras y crucigrama
Sopa de letras y crucigramamalatest
 
Rosa Cano_openexpo2018_sin_texto
Rosa Cano_openexpo2018_sin_textoRosa Cano_openexpo2018_sin_texto
Rosa Cano_openexpo2018_sin_textoRosa Cano
 
Trends, organisatie impact en social media presentatie
Trends, organisatie impact en social media presentatieTrends, organisatie impact en social media presentatie
Trends, organisatie impact en social media presentatieMirror Wise
 
Project Management & Innovation
Project Management & InnovationProject Management & Innovation
Project Management & Innovationmade4gov
 
StoreMotion company profile 2015
StoreMotion company profile 2015StoreMotion company profile 2015
StoreMotion company profile 2015EMILE BLONDET
 
EVENT TECH 2016: THE THINGS YOU NEED TO KNOW
EVENT TECH 2016: THE THINGS YOU NEED TO KNOWEVENT TECH 2016: THE THINGS YOU NEED TO KNOW
EVENT TECH 2016: THE THINGS YOU NEED TO KNOWJosh King
 
Competency-Based LMS
Competency-Based LMSCompetency-Based LMS
Competency-Based LMSFidelis
 
WWDC 2019 Cheatsheet
WWDC 2019 CheatsheetWWDC 2019 Cheatsheet
WWDC 2019 CheatsheetWanbok Choi
 
PORTFOLIO-Ankush Tripathi
PORTFOLIO-Ankush Tripathi PORTFOLIO-Ankush Tripathi
PORTFOLIO-Ankush Tripathi Ankush Tripathi
 
OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...
OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...
OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...NETWAYS
 
OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...
OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...
OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...NETWAYS
 
XD Immersive: Jessica Outlaw, Augmented Reality and the Future of Immersive E...
XD Immersive: Jessica Outlaw, Augmented Reality and the Future of Immersive E...XD Immersive: Jessica Outlaw, Augmented Reality and the Future of Immersive E...
XD Immersive: Jessica Outlaw, Augmented Reality and the Future of Immersive E...UX STRAT
 

Similar to Google Assistant po polsku - developerski punkt widzenia (20)

Whitepaper - Spinbackup Overview
Whitepaper - Spinbackup OverviewWhitepaper - Spinbackup Overview
Whitepaper - Spinbackup Overview
 
Apple Watch - Jak tworzyć aplikacje na SmartWatcha z problemami wieku dziecię...
Apple Watch - Jak tworzyć aplikacje na SmartWatcha z problemami wieku dziecię...Apple Watch - Jak tworzyć aplikacje na SmartWatcha z problemami wieku dziecię...
Apple Watch - Jak tworzyć aplikacje na SmartWatcha z problemami wieku dziecię...
 
BS portfolio
BS portfolioBS portfolio
BS portfolio
 
Construir productos y transformación digital mezclando tecnología y educación...
Construir productos y transformación digital mezclando tecnología y educación...Construir productos y transformación digital mezclando tecnología y educación...
Construir productos y transformación digital mezclando tecnología y educación...
 
Sopa de letras y crucigrama
Sopa de letras y crucigramaSopa de letras y crucigrama
Sopa de letras y crucigrama
 
Rosa Cano_openexpo2018_sin_texto
Rosa Cano_openexpo2018_sin_textoRosa Cano_openexpo2018_sin_texto
Rosa Cano_openexpo2018_sin_texto
 
Trends, organisatie impact en social media presentatie
Trends, organisatie impact en social media presentatieTrends, organisatie impact en social media presentatie
Trends, organisatie impact en social media presentatie
 
EL fogon llanero y algo mas
EL fogon llanero y algo mas EL fogon llanero y algo mas
EL fogon llanero y algo mas
 
Project Management & Innovation
Project Management & InnovationProject Management & Innovation
Project Management & Innovation
 
Startup InsurTech Award - P9
Startup InsurTech Award - P9Startup InsurTech Award - P9
Startup InsurTech Award - P9
 
StoreMotion company profile 2015
StoreMotion company profile 2015StoreMotion company profile 2015
StoreMotion company profile 2015
 
EVENT TECH 2016: THE THINGS YOU NEED TO KNOW
EVENT TECH 2016: THE THINGS YOU NEED TO KNOWEVENT TECH 2016: THE THINGS YOU NEED TO KNOW
EVENT TECH 2016: THE THINGS YOU NEED TO KNOW
 
Competency-Based LMS
Competency-Based LMSCompetency-Based LMS
Competency-Based LMS
 
WWDC 2019 Cheatsheet
WWDC 2019 CheatsheetWWDC 2019 Cheatsheet
WWDC 2019 Cheatsheet
 
PORTFOLIO-Ankush Tripathi
PORTFOLIO-Ankush Tripathi PORTFOLIO-Ankush Tripathi
PORTFOLIO-Ankush Tripathi
 
OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...
OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...
OSDC 2017 | Developing a SaaS platform based on Open Source Software by Sebas...
 
OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...
OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...
OSDC 2017 - Sebastian Saemann - Developing a saa s platform based on open sou...
 
SANDRA PATRICIA PULIDO
SANDRA PATRICIA PULIDOSANDRA PATRICIA PULIDO
SANDRA PATRICIA PULIDO
 
Machines
MachinesMachines
Machines
 
XD Immersive: Jessica Outlaw, Augmented Reality and the Future of Immersive E...
XD Immersive: Jessica Outlaw, Augmented Reality and the Future of Immersive E...XD Immersive: Jessica Outlaw, Augmented Reality and the Future of Immersive E...
XD Immersive: Jessica Outlaw, Augmented Reality and the Future of Immersive E...
 

More from Artur Skowroński

Kopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVM
Kopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVMKopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVM
Kopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVMArtur Skowroński
 
The State of the Green IT at the beginning of 2024
The State of the Green IT at the beginning of 2024The State of the Green IT at the beginning of 2024
The State of the Green IT at the beginning of 2024Artur Skowroński
 
My chcemy grać w Zielone! Czyli stan świata Green Technology końcówką 2023
My chcemy grać w Zielone! Czyli stan świata Green Technology końcówką 2023My chcemy grać w Zielone! Czyli stan świata Green Technology końcówką 2023
My chcemy grać w Zielone! Czyli stan świata Green Technology końcówką 2023Artur Skowroński
 
GraalVM, CRaC, Leyden and friends
GraalVM, CRaC, Leyden and friendsGraalVM, CRaC, Leyden and friends
GraalVM, CRaC, Leyden and friendsArtur Skowroński
 
Od Czarnoksiężnik z krainy Oz do modeli na produkcji
Od Czarnoksiężnik z krainy Oz do modeli na produkcjiOd Czarnoksiężnik z krainy Oz do modeli na produkcji
Od Czarnoksiężnik z krainy Oz do modeli na produkcjiArtur Skowroński
 
JVM Iceberg... we need to go deeper
JVM Iceberg... we need to go deeperJVM Iceberg... we need to go deeper
JVM Iceberg... we need to go deeperArtur Skowroński
 
JVM Iceberg... we need to go deeper
JVM Iceberg... we need to go deeperJVM Iceberg... we need to go deeper
JVM Iceberg... we need to go deeperArtur Skowroński
 
Panie, kto tu Panu tak ... - czyli porozmawiajmy o Legacy
Panie, kto tu Panu tak ... - czyli porozmawiajmy o LegacyPanie, kto tu Panu tak ... - czyli porozmawiajmy o Legacy
Panie, kto tu Panu tak ... - czyli porozmawiajmy o LegacyArtur Skowroński
 
Panie, kto tu Panu tak ... - czyli porozmawiajmy o Legacy
Panie, kto tu Panu tak ... - czyli porozmawiajmy o LegacyPanie, kto tu Panu tak ... - czyli porozmawiajmy o Legacy
Panie, kto tu Panu tak ... - czyli porozmawiajmy o LegacyArtur Skowroński
 
Ciąg dalszy nastąpi - o wielowątkowości, Projekcie Loom i kotlinowych Korutynach
Ciąg dalszy nastąpi - o wielowątkowości, Projekcie Loom i kotlinowych KorutynachCiąg dalszy nastąpi - o wielowątkowości, Projekcie Loom i kotlinowych Korutynach
Ciąg dalszy nastąpi - o wielowątkowości, Projekcie Loom i kotlinowych KorutynachArtur Skowroński
 
Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...
Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...
Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...Artur Skowroński
 
Ten Typ tak ma - O systemach typów na przykładzie TypeScript’a
Ten Typ tak ma - O systemach typów na przykładzie TypeScript’aTen Typ tak ma - O systemach typów na przykładzie TypeScript’a
Ten Typ tak ma - O systemach typów na przykładzie TypeScript’aArtur Skowroński
 
Type Systems on the example of TypeScript
Type Systems on the example of TypeScriptType Systems on the example of TypeScript
Type Systems on the example of TypeScriptArtur Skowroński
 
To Be Continued - multithreading with Project Loom and Kotlin's Coroutines
To Be Continued - multithreading with Project Loom and Kotlin's CoroutinesTo Be Continued - multithreading with Project Loom and Kotlin's Coroutines
To Be Continued - multithreading with Project Loom and Kotlin's CoroutinesArtur Skowroński
 
To be Continued - multithreading with Project Loom and Kotlin's Coroutines
To be Continued - multithreading with Project Loom and Kotlin's CoroutinesTo be Continued - multithreading with Project Loom and Kotlin's Coroutines
To be Continued - multithreading with Project Loom and Kotlin's CoroutinesArtur Skowroński
 
Blockchain: Developer's Perspective (Java Edition)
Blockchain: Developer's Perspective (Java Edition)Blockchain: Developer's Perspective (Java Edition)
Blockchain: Developer's Perspective (Java Edition)Artur Skowroński
 
Blockchain: Developer Perspective
Blockchain: Developer PerspectiveBlockchain: Developer Perspective
Blockchain: Developer PerspectiveArtur Skowroński
 
Alexa, nice to meet(js) you!
Alexa, nice to meet(js) you!Alexa, nice to meet(js) you!
Alexa, nice to meet(js) you!Artur Skowroński
 
Change Detection Anno Domini 2016
Change Detection Anno Domini 2016Change Detection Anno Domini 2016
Change Detection Anno Domini 2016Artur Skowroński
 

More from Artur Skowroński (20)

Kopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVM
Kopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVMKopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVM
Kopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVM
 
The State of the Green IT at the beginning of 2024
The State of the Green IT at the beginning of 2024The State of the Green IT at the beginning of 2024
The State of the Green IT at the beginning of 2024
 
My chcemy grać w Zielone! Czyli stan świata Green Technology końcówką 2023
My chcemy grać w Zielone! Czyli stan świata Green Technology końcówką 2023My chcemy grać w Zielone! Czyli stan świata Green Technology końcówką 2023
My chcemy grać w Zielone! Czyli stan świata Green Technology końcówką 2023
 
GraalVM, CRaC, Leyden and friends
GraalVM, CRaC, Leyden and friendsGraalVM, CRaC, Leyden and friends
GraalVM, CRaC, Leyden and friends
 
Od Czarnoksiężnik z krainy Oz do modeli na produkcji
Od Czarnoksiężnik z krainy Oz do modeli na produkcjiOd Czarnoksiężnik z krainy Oz do modeli na produkcji
Od Czarnoksiężnik z krainy Oz do modeli na produkcji
 
JVM Iceberg... we need to go deeper
JVM Iceberg... we need to go deeperJVM Iceberg... we need to go deeper
JVM Iceberg... we need to go deeper
 
JVM Iceberg... we need to go deeper
JVM Iceberg... we need to go deeperJVM Iceberg... we need to go deeper
JVM Iceberg... we need to go deeper
 
Panie, kto tu Panu tak ... - czyli porozmawiajmy o Legacy
Panie, kto tu Panu tak ... - czyli porozmawiajmy o LegacyPanie, kto tu Panu tak ... - czyli porozmawiajmy o Legacy
Panie, kto tu Panu tak ... - czyli porozmawiajmy o Legacy
 
Panie, kto tu Panu tak ... - czyli porozmawiajmy o Legacy
Panie, kto tu Panu tak ... - czyli porozmawiajmy o LegacyPanie, kto tu Panu tak ... - czyli porozmawiajmy o Legacy
Panie, kto tu Panu tak ... - czyli porozmawiajmy o Legacy
 
Ciąg dalszy nastąpi - o wielowątkowości, Projekcie Loom i kotlinowych Korutynach
Ciąg dalszy nastąpi - o wielowątkowości, Projekcie Loom i kotlinowych KorutynachCiąg dalszy nastąpi - o wielowątkowości, Projekcie Loom i kotlinowych Korutynach
Ciąg dalszy nastąpi - o wielowątkowości, Projekcie Loom i kotlinowych Korutynach
 
Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...
Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...
Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...
 
Ten Typ tak ma - O systemach typów na przykładzie TypeScript’a
Ten Typ tak ma - O systemach typów na przykładzie TypeScript’aTen Typ tak ma - O systemach typów na przykładzie TypeScript’a
Ten Typ tak ma - O systemach typów na przykładzie TypeScript’a
 
Type Systems on the example of TypeScript
Type Systems on the example of TypeScriptType Systems on the example of TypeScript
Type Systems on the example of TypeScript
 
To Be Continued - multithreading with Project Loom and Kotlin's Coroutines
To Be Continued - multithreading with Project Loom and Kotlin's CoroutinesTo Be Continued - multithreading with Project Loom and Kotlin's Coroutines
To Be Continued - multithreading with Project Loom and Kotlin's Coroutines
 
To be Continued - multithreading with Project Loom and Kotlin's Coroutines
To be Continued - multithreading with Project Loom and Kotlin's CoroutinesTo be Continued - multithreading with Project Loom and Kotlin's Coroutines
To be Continued - multithreading with Project Loom and Kotlin's Coroutines
 
Blockchain: Developer's Perspective (Java Edition)
Blockchain: Developer's Perspective (Java Edition)Blockchain: Developer's Perspective (Java Edition)
Blockchain: Developer's Perspective (Java Edition)
 
Blockchain: Developer Perspective
Blockchain: Developer PerspectiveBlockchain: Developer Perspective
Blockchain: Developer Perspective
 
Alexa, nice to meet you!
Alexa, nice to meet you! Alexa, nice to meet you!
Alexa, nice to meet you!
 
Alexa, nice to meet(js) you!
Alexa, nice to meet(js) you!Alexa, nice to meet(js) you!
Alexa, nice to meet(js) you!
 
Change Detection Anno Domini 2016
Change Detection Anno Domini 2016Change Detection Anno Domini 2016
Change Detection Anno Domini 2016
 

Recently uploaded

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 

Google Assistant po polsku - developerski punkt widzenia

  • 1. G O O G L E A S S I STA N T J U Ż P O P O L S K U D E V E L O P E R S K I P U N K T W I D Z E N I A A R T U R S KO W R O Ń S K I  
  • 2. U Ż Y T K O W N I K Ó W S M A R T G Ł O Ś N I K Ó W W U S A 57M
  • 3. M I L I A R D Ó W U Ż Y T K O W N I K Ó W A S Y S T E N T Ó W W 2 0 2 3 1.2
  • 4. Z E W N Ę T R Z N Y C H PA R T N E R Ó W P O D C Z A S C E S 76
  • 5. M I N O R I T Y R E P O R T ?2 0 0 2
  • 6. T E L E F O N Y K O M Ó R K O W E 2 0 0 9
  • 7. K I N E C T 2 0 1 0
  • 8. N AT U R A L U S E R I N T E R FA C E S 2 0 1 0
  • 9. K I N E C T
  • 10. M Ę C Z Ą C Y
  • 11. N I E P R A K T Y C Z N Y
  • 12. M I N O R I T Y R E P O R T 2 0 0 2
  • 13. 2 0 0 9
  • 14.
  • 15. S I R I 2 0 1 1
  • 16. S I R I N I E Z A C H W Y C A
  • 17. A M A Z O N E C H O 2 0 1 4
  • 18. A M A Z O N A L E X A
  • 19. I V O N A S O F T WA R E 2 0 1 3
  • 20. S I R I N I E Z A C H W Y C A
  • 21. P R O B L E M Y S I R I - T E L E F O N Y
  • 22. K O N T E K S T U Ż Y C I A
  • 23. P R O B L E M Y S I R I - I N T E G R A C J E
  • 24. M A R K E T P L A C E
  • 25. I R U S Z Y L I
  • 26. R O D Z I N A A M A Z O N E C H O
  • 27. C O R TA N A F R O M M I C R O S O F T
  • 28. B I X B Y O D S A M S U N G
  • 29. H O M E P O D
  • 30. G O O G L E A S S I S TA N T
  • 31. G O O G L E N O W 2 0 1 2
  • 32. 2 0 1 6
  • 33. S M A R T S P E A K E R S
  • 34. A N D R O I D
  • 35. A N D R O I D A U T O
  • 36. A N D R O I D W E A R
  • 37. S Ł U C H A W K I
  • 38. A N D R O I D T V / C H R O M E C A S T
  • 39. A N D R O I D T V / C H R O M E C A S TN I E T Y L K O G Ł O S
  • 40. A N D R O I D T V / C H R O M E C A S TG Ł O S O C E N T RY C Z N Y
  • 41. A N D R O I D T V / C H R O M E C A S TI N T E N C J O - C E N T RY C Z N O Ś Ć
  • 42. A N D R O I D T V / C H R O M E C A S TI L U Z J A R E A L N E J O S O B Y
  • 43. G O O G L E I D Z I E Z N A C Z N I E S Z E R Z E J G O O G L E B A R D Z I E J A M B I T N E
  • 44.
  • 46. O K , C Z A S N A D E V E L O P M E N T
  • 47. L AY E R S
  • 48. K O N W E R S A C J A INTENCJE GŁOŚNIK “LOGIKA BIZNESOWA”
  • 49. “ M Ą D R O - G Ł U P I ” G Ł O Ś N I K
  • 50. “ M Ą D R O - G Ł U P I ” G Ł O Ś N I K Hey Google
  • 51. “ M Ą D R O - G Ł U P I ” G Ł O Ś N I K Hey Google
  • 52. “ M Ą D R O - G Ł U P I ” G Ł O Ś N I K Hey Google, porozmawiaj z 4Developers
  • 53. “ M Ą D R O - G Ł U P I ” G Ł O Ś N I K Hey Google, porozmawiaj z 4Developers
  • 54. C H M U R A O B L I C Z E N I O WA Speech-To-Text Natural Language Understanding Processing Request Text-To-Speech
  • 55. K O N W E R S A C J A INTENCJE GŁOŚNIK “LOGIKA BIZNESOWA”
  • 56. K O N W E R S A C J A INTENCJE “LOGIKA BIZNESOWA” GŁOŚNIK
  • 59. ACTIONS ON GOOGLE CONSOLE https://console.actions.google.com/u/0/
  • 60. import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent('actions.intent.MAIN', (conv) => { conv.close(‘Cześć, 4Developers’); }); export const academyAssistant = functions.https.onRequest(app); PROSTA AKCJA
  • 61. PROSTA AKCJA import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent('actions.intent.MAIN', (conv) => { conv.close(‘Cześć, 4Developers’); }); export const academyAssistant = functions.https.onRequest(app);
  • 62. import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent('actions.intent.MAIN', (conv) => { conv.close(‘Cześć, 4Developers’); }); export const academyAssistant = functions.https.onRequest(app); PROSTA AKCJA
  • 63. import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent('actions.intent.MAIN', (conv) => { conv.close(‘Cześć, 4Developers’); }); export const academyAssistant = functions.https.onRequest(app); PROSTA AKCJA
  • 64. C O N V E R S AT I O N F L O W INTENCJE “LOGIKA BIZNESOWA” GŁOŚNIK
  • 65. C O N V E R S AT I O N F L O W INTENCJE GŁOŚNIK “LOGIKA BIZNESOWA”
  • 70. INTENCJE INTENTLAYER Cześć, jestem Pizza Portal Hey Google, porozmawiaj z Pizza Portal
  • 71. RESPONSE { "actions": [ { "description": "Pizza Portal Intent", "name": "MAIN", "fulfillment": { "conversationName": "PizzaPortal" }, "intent": { "name": "actions.intent.MAIN", "trigger": { "queryPatterns": [ “mów do Pizza Portal” ] } } } ], "conversations": { "PizzaPortal": { "name": "PizzaPortal", "url": "https://us-central1-pizzaportal.cloudfunctions.net/main" } }, "locale": "en" }
  • 72. RESPONSE { "actions": [ { "description": "Pizza Portal Intent", "name": "MAIN", "fulfillment": { "conversationName": "PizzaPortal" }, "intent": { "name": "actions.intent.MAIN", "trigger": { "queryPatterns": [ “mów do Pizza Portal” ] } } } ], "conversations": { "PizzaPortal": { "name": "PizzaPortal", "url": "https://us-central1-pizzaportal.cloudfunctions.net/main" } }, "locale": "en" }
  • 73. RESPONSE { "actions": [ { "description": "Pizza Portal Intent", "name": "MAIN", "fulfillment": { "conversationName": "PizzaPortal" }, "intent": { "name": "actions.intent.MAIN", "trigger": { "queryPatterns": [ “mów do Pizza Portal” ] } } } ], "conversations": { "PizzaPortal": { "name": "PizzaPortal", "url": "https://us-central1-pizzaportal.cloudfunctions.net/main" } }, "locale": "en" }
  • 74. RESPONSE { "actions": [ { "description": "Pizza Portal Intent", "name": "MAIN", "fulfillment": { "conversationName": "PizzaPortal" }, "intent": { "name": "actions.intent.MAIN", "trigger": { "queryPatterns": [ “mów do Pizza Portal” ] } } } ], "conversations": { "PizzaPortal": { "name": "PizzaPortal", "url": "https://us-central1-pizzaportal.cloudfunctions.net/main" } }, "locale": "en" }
  • 75. RESPONSE { "actions": [ { "description": "Pizza Portal Intent", "name": "MAIN", "fulfillment": { "conversationName": "PizzaPortal" }, "intent": { "name": "actions.intent.MAIN", "trigger": { "queryPatterns": [ “mów do Pizza Portal” ] } } } ], "conversations": { "PizzaPortal": { "name": "PizzaPortal", "url": "https://us-central1-pizzaportal.cloudfunctions.net/main" } }, "locale": "en" }
  • 80. ROZMOWA INTENTLAYER Cześć, na co masz dzisiaj ochotę? Hey Google, porozmawiaj z Pizza Portal
  • 81. ROZMOWA INTENTLAYER Chciałbym zamówić Pizzę Hey Google, porozmawiaj z Pizza Portal
  • 83. ROZMOWA Chciałbym zamówić Pizzę INTENTLAYER Pizza zamówiona Hey Google, porozmawiaj z Pizza Portal
  • 84. DODATKOWA INTENCJA import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent('actions.intent.MAIN', (conv) => { conv.ask('Cześć, na co masz dzisiaj ochotę?’); }); app.intent('com.artuskowronski.ORDER_PIZZA', (conv) => { return orderPizza().then(()=> conv.close(‘Pizza zamówiona’); ); }); export const academyAssistant = functions.https.onRequest(app);
  • 85. DODATKOWA INTENCJA import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent('actions.intent.MAIN', (conv) => { conv.ask('Cześć, na co masz dzisiaj ochotę?’); }); app.intent('com.artuskowronski.ORDER_PIZZA', (conv) => { return orderPizza().then(()=> conv.close(‘Pizza zamówiona’); ); }); export const academyAssistant = functions.https.onRequest(app);
  • 86. DODATKOWA INTENCJA import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent('actions.intent.MAIN', (conv) => { conv.ask('Cześć, na co masz dzisiaj ochotę?’); }); app.intent('com.artuskowronski.ORDER_PIZZA', (conv) => { return orderPizza().then(()=> conv.close(‘Pizza zamówiona’); ); }); export const academyAssistant = functions.https.onRequest(app);
  • 87. DODATKOWA INTENCJA import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent('actions.intent.MAIN', (conv) => { conv.ask('Cześć, na co masz dzisiaj ochotę?’); }); app.intent('com.artuskowronski.ORDER_PIZZA', (conv) => { return orderPizza().then(()=> conv.close(‘Pizza zamówiona’); ); }); export const academyAssistant = functions.https.onRequest(app);
  • 88. DODATKOWA INTENCJA import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent('actions.intent.MAIN', (conv) => { conv.ask('Cześć, na co masz dzisiaj ochotę?’); }); app.intent('com.artuskowronski.ORDER_PIZZA', (conv) => { return orderPizza().then(()=> conv.close(‘Pizza zamówiona’); ); }); export const academyAssistant = functions.https.onRequest(app);
  • 89. INVOCATION MODEL { "actions": [ { "description": "Pizza Portal Intent", "name": "MAIN", "fulfillment": {"conversationName": "PizzaPortal"}, "intent": { "name": "actions.intent.MAIN", "trigger": { "queryPatterns": [“mów do Pizza Portal”] }}}, { "name": “ORDER_PIZZA_INTENT", "intent": { "name": “com.artuskowronski.ORDER_PIZZA", "trigger": { "queryPatterns": [“zamów Pizzę”]} }, } "fulfillment": { "conversationName": "PizzaPortal" } } ], (…) "locale": "en" }
  • 90. INVOCATION MODEL { "actions": [ { "description": "Pizza Portal Intent", "name": "MAIN", "fulfillment": {"conversationName": "PizzaPortal"}, "intent": { "name": "actions.intent.MAIN", "trigger": { "queryPatterns": [“mów do Pizza Portal”] }}}, { "name": “ORDER_PIZZA_INTENT", "intent": { "name": “com.artuskowronski.ORDER_PIZZA", "trigger": { "queryPatterns": [“zamów Pizzę”]} }, } "fulfillment": { "conversationName": "PizzaPortal" } } ], (…) "locale": "en" }
  • 91. INVOCATION MODEL { "actions": [ { "description": "Pizza Portal Intent", "name": "MAIN", "fulfillment": {"conversationName": "PizzaPortal"}, "intent": { "name": "actions.intent.MAIN", "trigger": { "queryPatterns": [“mów do Pizza Portal”] }}}, { "name": “ORDER_PIZZA_INTENT", "intent": { "name": “com.artuskowronski.ORDER_PIZZA", "trigger": { "queryPatterns": [“zamów Pizzę”]} }, } "fulfillment": { "conversationName": "PizzaPortal" } } ], (…) "locale": "en" }
  • 92. INVOCATION MODEL { "actions": [ { "description": "Pizza Portal Intent", "name": "MAIN", "fulfillment": {"conversationName": "PizzaPortal"}, "intent": { "name": "actions.intent.MAIN", "trigger": { "queryPatterns": [“mów do Pizza Portal”] }}}, { "name": “ORDER_PIZZA_INTENT", "intent": { "name": “com.artuskowronski.ORDER_PIZZA", "trigger": { "queryPatterns": [“zamów Pizzę”]} }, } "fulfillment": { "conversationName": "PizzaPortal" } } ], (…) "locale": "en" }
  • 93. INVOCATION MODEL { "actions": [ { "description": "Pizza Portal Intent", "name": "MAIN", "fulfillment": {"conversationName": "PizzaPortal"}, "intent": { "name": "actions.intent.MAIN", "trigger": { "queryPatterns": [“mów do Pizza Portal”] }}}, { "name": “ORDER_PIZZA_INTENT", "intent": { "name": “com.artuskowronski.ORDER_PIZZA", "trigger": { "queryPatterns": [“zamów Pizzę”]} }, } "fulfillment": { "conversationName": "PizzaPortal" } } ], (…) "locale": "en" }
  • 94. INTENCJA Hey Google, powiedz Pizza Portal… …zamów Pizzę INTENTLAYER
  • 95. INTENCJA Hey Google, powiedz Pizza Portal… …zamów Pizzę INTENTLAYER Pizza zamówiona
  • 96. INVOCATION MODEL { "actions": [ (…) { "name": “ORDER_PIZZA_INTENT", "intent": { "name": “com.artuskowronski.ORDER_PIZZA", "trigger": { "queryPatterns": [ “zamów Pizzę” ] } }, "fulfillment": { "conversationName": "PizzaPortal" } } (…) }
  • 97. BUDOWA WYPOWIEDZI Hey Google, powiedz Pizza Portal zamów Pizzę
  • 98. BUDOWA WYPOWIEDZI Wake Word Hey Google, powiedz Pizza Portal zamów Pizzę
  • 99. BUDOWA WYPOWIEDZI Operacja Hey Google, powiedz Pizza Portal zamów Pizzę
  • 100. BUDOWA WYPOWIEDZI Nazwa Akcji Hey Google, powiedz Pizza Portal zamów Pizzę
  • 101. BUDOWA WYPOWIEDZI Zapytanie Hey Google, powiedz Pizza Portal zamów Pizzę
  • 102. REQUEST { "user": { "userId": "ABwppHFbm5dVKjOKFRjp_FARbS_wYSOGvXL2YlCz_stVkrxgkB3rKdvsqUZGLBYzhg8PraP1SoUm4Jn7DQ", "locale": "en-EN", "lastSeen": "2019-01-26T11:05:14Z" }, "conversation": { "conversationId": "ABwppHHrdE72AtK5OIXlil4EpwU8TZjQcRsQAp-3BJR9CzJ1u4IJCGSLnY5vwGJRksBkYQ3BMHnla_RtcQ", "type": "NEW" }, "inputs": [ { "intent": "actions.intent.ORDER_PIZZA_INTENT", "rawInputs": [ { "inputType": "SPEAK", "query": “zamów Pizzę” } ] } ], "surface": { "capabilities": [ {"name": "actions.capability.SCREEN_OUTPUT"}, {"name": "actions.capability.WEB_BROWSER"}, {"name": "actions.capability.ACCOUNT_LINKING"}, {"name": "actions.capability.AUDIO_OUTPUT"}, {"name": "actions.capability.MEDIA_RESPONSE_AUDIO"} ] }, "isInSandbox": true, "requestType": "DEVICE" }
  • 103. REQUEST { "user": { "userId": "ABwppHFbm5dVKjOKFRjp_FARbS_wYSOGvXL2YlCz_stVkrxgkB3rKdvsqUZGLBYzhg8PraP1SoUm4Jn7DQ", "locale": "en-EN", "lastSeen": "2019-01-26T11:05:14Z" }, "conversation": { "conversationId": "ABwppHHrdE72AtK5OIXlil4EpwU8TZjQcRsQAp-3BJR9CzJ1u4IJCGSLnY5vwGJRksBkYQ3BMHnla_RtcQ", "type": "NEW" }, "inputs": [ { "intent": “actions.intent.ORDER_PIZZA_INTENT”, "rawInputs": [ { "inputType": "SPEAK", "query": “zamów Pizzę” } ] } ], "surface": { "capabilities": [ {"name": "actions.capability.SCREEN_OUTPUT"}, {"name": "actions.capability.WEB_BROWSER"}, {"name": "actions.capability.ACCOUNT_LINKING"}, {"name": "actions.capability.AUDIO_OUTPUT"}, {"name": "actions.capability.MEDIA_RESPONSE_AUDIO"} ] }, "isInSandbox": true, "requestType": "DEVICE" }
  • 104. REQUEST { "user": { "userId": "ABwppHFbm5dVKjOKFRjp_FARbS_wYSOGvXL2YlCz_stVkrxgkB3rKdvsqUZGLBYzhg8PraP1SoUm4Jn7DQ", "locale": "en-EN", "lastSeen": "2019-01-26T11:05:14Z" }, "conversation": { "conversationId": "ABwppHHrdE72AtK5OIXlil4EpwU8TZjQcRsQAp-3BJR9CzJ1u4IJCGSLnY5vwGJRksBkYQ3BMHnla_RtcQ", "type": "NEW" }, "inputs": [ { "intent": "actions.intent.ORDER_PIZZA_INTENT", "rawInputs": [ { "inputType": "SPEAK", "query": “zamów Pizzę” } ] } ], "surface": { "capabilities": [ {"name": "actions.capability.SCREEN_OUTPUT"}, {"name": "actions.capability.WEB_BROWSER"}, {"name": "actions.capability.ACCOUNT_LINKING"}, {"name": "actions.capability.AUDIO_OUTPUT"}, {"name": "actions.capability.MEDIA_RESPONSE_AUDIO"} ] }, "isInSandbox": true, "requestType": "DEVICE" }
  • 105. RESPONSE { "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": “Pizza Zamówiona” } } ] } } }
  • 106. WARIANTY Hey Google, powiedz Pizza Portal… …chcę zamówić pizzę …że chce moją ulubioną pizzę …jestem głodny
  • 107. INVOCATION MODEL { "actions": [ (…) { "name": “ORDER_PIZZA_INTENT", "intent": { "name": “com.artuskowronski.ORDER_PIZZA", "trigger": { "queryPatterns": [ "chcę zamówić pizzę", "że chce moją ulubioną pizzę”, “jestem głodny", ] } }, "fulfillment": { "conversationName": "PizzaPortal" } } (…) }
  • 108. INVOCATION MODEL { "actions": [ (…) { "name": “ORDER_PIZZA_INTENT", "intent": { "name": “com.artuskowronski.ORDER_PIZZA", "trigger": { "queryPatterns": [ "chcę zamówić pizzę", "że chce moją ulubioną pizzę”, “jestem głodny", ] } }, "fulfillment": { "conversationName": "PizzaPortal" } } (…) }
  • 109. WARIANTY ORDER_PIZZA_INTENT INTENTLAYER Hey Google, powiedz Pizza Portal… …chcę zamówić pizzę …że chce moją ulubioną pizzę …jestem głodny
  • 110. N I E T R A K T U J J A K T E R M I N A L
  • 111. S S M L
  • 112. SSML app.intent(‘actions.intent.MAIN’, (conv) => { conv.ask('<speak> Cześć <audio src="https://actions.google.com/sounds/v1/cartoon/cartoon_boing.ogg"/> Dzięki SSML <prosody rate="fast">możesz przyśpieszyć mowę.</prosody> <prosody rate="slow">Albo ją zwolnić.</prosody> <prosody pitch="high">Możesz zmienić ton głosu na wyższy.</prosody> <prosody pitch="low">Albo na niższy.</prosody> <prosody volume="loud">Głos może być głośny.</prosody> <prosody volume="soft">Albo cichy.</prosody> <prosody rate="fast" pitch="low" volume=“x-loud"> Możesz też zastosować wszystkie te ustawienia naraz. </prosody> <break/> Możesz mi dać zadanie numer <say-as interpret-as="cardinal">1</say-as> w którym trzeba przeliterować nazwę jakiegoś koloru. Na przykład niebieski<break time="0.5s"/> <say-as interpret-as="characters">niebieski</say-as> Spróbuj! <break time=“2" /> Po prostu zacznij edytować ten kod. </speak>’); });
  • 113. SSML Hey Google, otwórz 4 Developers… Hey, Pizza zamówiona <break time=“2s” />. Smacznego INTENTLAYER
  • 114. PA R A M E T RY
  • 115. PARAMETRYZOWANIE WYPOWIEDZI Hey Google, powiedz Pizza Portal… …że chcę Pepperoni INTENTLAYER
  • 116. ZAPYTANIE Z PARAMETREM Zapytanie Hey Google, powiedz Pizza Portal że chcę Peperoni
  • 117. ZAPYTANIE Z PARAMETREM Parametr Hey Google, powiedz Pizza Portal że chcę Peperoni
  • 118. INTENT LAYER INTENTLAYER ORDER_PIZZA_INTENT Parameters: KIND: PEPPERONI Hey Google, powiedz Pizza Portal… …że chcę Pepperoni
  • 119. RESPONSE { "actions": [ (…) { "name": “ORDER_PIZZA_INTENT", "intent": { "name": “com.artuskowronski.ORDER_PIZZA”, "parameters": [ { "name": "kind", "type": "org.schema.type.Food" } ], "trigger": { "queryPatterns": [ “że chcę $org.schema.type.Food:kind", ] } }, (…) }
  • 120. “ S U R FA C E S ” - P O W I E R Z C H N I E
  • 121. INNE PREZENTACJE INTENTLAYER Hey Google, powiedz Pizza Portal… …że chcę Pepperoni
  • 122. AKCJA Z RÓŻNĄ PREZENTACJĄ import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent(‘actions.intent.pizza’, (conv) => { conv.ask('Hey, Pizza zamówiona <break time=“2s” />. Smacznego’); }); export const academyAssistant = functions.https.onRequest(app);
  • 123. AKCJA Z RÓŻNĄ PREZENTACJĄ import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent(‘actions.intent.pizza’, (conv) => { conv.ask(new SimpleResponse({ speech: 'Hey, Pizza zamówiona <break time=“2s” />. Smacznego’, text: ‘Pizza zamówiona’, })); }); export const academyAssistant = functions.https.onRequest(app);
  • 124. AKCJA Z RÓŻNĄ PREZENTACJĄ import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent(‘actions.intent.pizza’, (conv) => { conv.ask(new SimpleResponse({ speech: 'Hey, Pizza zamówiona <break time=“2s” />. Smacznego’, text: ‘Pizza zamówiona’, })); }); export const academyAssistant = functions.https.onRequest(app);
  • 125. AKCJA Z RÓŻNĄ PREZENTACJĄ import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent(‘actions.intent.pizza’, (conv) => { conv.ask(new SimpleResponse({ speech: 'Hey, Pizza zamówiona <break time=“2s” />. Smacznego’, text: ‘Pizza zamówiona’, })); }); export const academyAssistant = functions.https.onRequest(app);
  • 126. AKCJA Z RÓŻNĄ PREZENTACJĄ import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent(‘actions.intent.pizza’, (conv) => { conv.ask(new SimpleResponse({ speech: 'Hey, Pizza zamówiona <break time=“2s” />. Smacznego’, text: ‘Pizza zamówiona’, })); }); export const academyAssistant = functions.https.onRequest(app);
  • 127. G R A P H I C T E X T
  • 128. S M A R T S C R E E N
  • 129. CAPABILITIES - MOŻLIWOŚCI const hasScreen = conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT'); const hasAudio = conv.surface.capabilities.has('actions.capability.AUDIO_OUTPUT'); const hasMediaPlayback = conv.surface.capabilities.has('actions.capability.MEDIA_RESPONSE_AUDIO'); const hasWebBrowser = conv.surface.capabilities.has('actions.capability.WEB_BROWSER');
  • 130. BARDZIEJ ZŁOŻONA PREZENTACJA conv.close('This is a basic card example.'); conv.close(new BasicCard({ text: `This is response. subtitle: 'This is a subtitle', title: 'Title: this is a title', buttons: new Button({ title: 'This is a button', url: 'https://assistant.google.com/', }), image: new Image({ url: 'https://example.com/image.png', alt: 'Image alternate text', }) }));
  • 131. BARDZIEJ ZŁOŻONA PREZENTACJA conv.close('This is a basic card example.'); conv.close(new BasicCard({ text: `This is response. subtitle: 'This is a subtitle', title: 'Title: this is a title', buttons: new Button({ title: 'This is a button', url: 'https://assistant.google.com/', }), image: new Image({ url: 'https://example.com/image.png', alt: 'Image alternate text', }) }));
  • 132.
  • 133. K A R T Y
  • 134.
  • 135. T Ł U M A C Z E N I A
  • 136. action.pl.json { "actions": [ { "description": "Pizza Portal Intent", "name": "MAIN", "fulfillment": { "conversationName": "PizzaPortal" }, "intent": { "name": "actions.intent.MAIN", "trigger": { "queryPatterns": [ “mów do Pizza Portal” ] } } } ], (…) "locale": “pl-PL” }
  • 137. action.en.json { "actions": [ { "description": "Pizza Portal Intent", "name": "MAIN", "fulfillment": { "conversationName": "PizzaPortal" }, "intent": { "name": "actions.intent.MAIN", "trigger": { "queryPatterns": [ “open Pizza Portal” ] } } } ], (…), "locale": “en-EN” }
  • 138. ZLOKALIZOWANY SKILL import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent(‘actions.intent.pizza’, (conv) => { if(conv.user.locale == “pl-PL”){ conv.close(‘Pizza została zamówiona’); } else { conv.close(‘Pizza was ordered’); } }); export const academyAssistant = functions.https.onRequest(app);
  • 139. ZLOKALIZOWANY SKILL import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent(‘actions.intent.pizza’, (conv) => { if(conv.user.locale == “pl-PL”){ conv.close(‘Pizza została zamówiona’); } else { conv.close(‘Pizza was ordered’); } }); export const academyAssistant = functions.https.onRequest(app);
  • 140. ZLOKALIZOWANY SKILL import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent(‘actions.intent.pizza’, (conv) => { if(conv.user.locale == “pl-PL”){ conv.close(‘Pizza została zamówiona’); } else { conv.close(‘Pizza was ordered’); } }); export const academyAssistant = functions.https.onRequest(app);
  • 141. ZLOKALIZOWANY SKILL import * as functions from 'firebase-functions'; import { actionssdk } from 'actions-on-google'; const app = actionssdk({debug: true}); app.intent(‘actions.intent.pizza’, (conv) => { if(conv.user.locale == “pl-PL”){ conv.close(‘Pizza została zamówiona’); } else { conv.close(‘Pizza was ordered’); } }); export const academyAssistant = functions.https.onRequest(app);
  • 144. I N T E R N E T O F T H I N G S
  • 145. G O O G L E A S S I S TA N T S D K
  • 146. M O N E T Y Z A C J A
  • 147. Z A K A Z R E K L A M
  • 148. R E K L A M A “ B E A U T Y & B E A S T ”
  • 149. G O O G L E D A L E J P R Ó B U J E
  • 150. R E K L A M A B U R G E R K I N G ’ S
  • 151. G O O G L E PAY
  • 152. G O O G L E I N P O L A N D https://assistant.google.com/explore
  • 153. G O O G L E D U P L E X
  • 154. A N D R O I D E C O S Y S T E M
  • 155. G O O G L E M A P O T E N C J A Ł
  • 156. C Z E K A M Y N A G Ł O Ś N I K
  • 157. 0 7 . 0 5 . 2 0 1 9
  • 158. GP Y TA N I A ?