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

SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 

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 ?