SlideShare a Scribd company logo
1 of 39
Download to read offline
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Implementing bots and Alexa Skills
using
Azure Cognitive Services
Andrea Saltarello
CTO @ Managed Designs
Microsoft Regional Director – Microsoft MVP
https://twitter.com/andysal74
https://github.com/andysal
https://www.linkedin.com/in/andysal/
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Many thanks to our sponsors & partners!
GOLD
SILVER
PARTNERS
PLATINUM
POWERED BY
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Me.About();
• CTO @ Managed Designs
• Microsoft MVP since 2003
• Microsoft Regional Director since 2015
• Author, along with Dino, of .NET: Architecting
Applications for the Enterprise (Microsoft Press)
• Basically, a software architect eager to write code J
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
This is not your umpteenth talk about the Microsoft Bot Framework
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
The problem
(from a CTO’s perspective)
Sharing as much code as possible between
an Alexa skill and an Azure Bot Service-backed bot.
Why should I do that? Well, when I speak to
a person they usually behave coherently in spite of
the communication channel J
N.B.: All the code we’ll be looking at is available on
GitHub under AGPL 3.0
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
1. A user produces an utterance (es: «Hi, how are you?»)
2. The utterance is sent via a communication channel to a
cognitive service which tries to guess the user’s intent
3. The cognitive service’s analysis result is sent to a program
which produces an appropriate response
• If needed, the program might save info about the
conversation
4. The response is actuated
Scenario
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
The stack
7
Azure Alexa
Communication ch. Channel + Bot Connector Device/Alexa App
Cognitive Service LUIS Lex
Program Bot App AWS Lambda
Conversation State Blob/CosmosDB DynamoDB
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Given that both Alexa and the Bot Framework require
our custom logic to be accessible via http, we will:
1. Implement an Alexa viable https endpoint
2. Implement a Bot Framework https endpoint
3. Build both the above mentioned http endpoints with
ASP.NET Core, so to share the code which produces
the response
The Solution
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Alexa skills at a glance
WPC2018 10
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
• Create a skill
• Choose an invocation name
• Define intents
• Define utterances (and slots)
• Provide the intents handler url (by default, it’s an AWS
lambda)
–The Alexa.NET nuget package might be of help
Implementing an Alexa skill
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
DEMO
Alexa Skill
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Attention, please!
• Spaces are not allowed within intent names
• Utterances:
–Can’t contain punctuation (e.g.: "?")
–Numbers have to be written in words (e.g.: 5235 -> five
thousand two hundred and thirty five)
–Capital letters will be read expanded (e.g.: EL -> /e/ /l/)
–Slots are «private» to a specific intent
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
DEMO
Martin @ Alexa
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Bots, the Azure way
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
• Create a Bot App
• Create a LUIS app
–Define intents
–Define utterances (and entities)
Implementing an Azure-hosted bot
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
It all begins creating a bot app via the dashboard,
choosing:
• an App type
– Azure Function
– Web App
• a Pricing tier
– F0 (unlimited messages via standard ch., 10K msg/mese via direct line. No SLA)
– S1 (unlimited messages via standard ch., €0.422 per 1,000 messages via direct line. SLA 99,9%)
Creating a Bot App
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Functions Bots
Functions Bots support:
• SDK v3 only, with support up to 31/12/2019
• C#/NET46, JS/Node
• Basic, Echo, LUIS
• App Service plan, Consumption
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Web App Bots
Web App Bots can be developed with both SDK v3 and
v4
• v3 – NodeJS, ASP .NET WebAPI 2
• v4 – NodeJS, ASP .NET Core
Further templates are available here
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
DEMO
Creating a bot app
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
DEMO
LUIS
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
• Free: 10000 transactions per month (5 calls/sec)
• Standard:
–Text requests: €1,265 EUR per 1000 transactions (50
call/sec)
–Speech: €4,639 EUR per 1000 transactions (50 call/sec)
N.B.: 1 transaction == 500 characters
LUIS pricing
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Bot Framework: Channels vs direct line
As per the Bot Framework’s jargon:
• Channels: are the user agents supported out of the
box
• Direct line: is the API available for custom user agents
The web chat is an open source web-based client for the
Bot Framework V4 SDK which uses the direct line and:
• Can be embedded as is via an iframe element
• Supports customisations
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
DEMO
Web chat
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
web chat <3 human voice
The web chat component:
1. Can record a spoken utterance
2. Converts the recording to text either using the browser or
Speech Services
3. Send the text to LUIS, which triggers our program
4. Pronounces the response either using the browser or Speech
Services
Speech Services pricing:
• Free: 1 req, 5 hours/month S2T, 5M char/month T2S
• Standard: 20 req, € 0,844/hour S2T, € 3,374 1M chars T2S
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
DEMO
Voce @ Web chat
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Channels
Out of the box support for:
Cortana Email Facebook GroupMe
Kik Microsoft Teams Skype Skype 4 Business
Slack Telegram Twilio (Web chat)
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Facebook Messenger
The recipe:
1. Create a Facebook page
2. Create a Facebook app
3. Create the channel specifying: page id, app id and
secret
4. Configure the FB app, allowing API access in
«Advanced options»
5. Configure the channel via the Azure Dashboard
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
DEMO
Facebook Messenger
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
TL;DR; Authentication isn’t provided out of the box
Channels are unaware of who the user is, so we have to map
the request to an ASP.NET Core Identity profile:
• For an Alexa skill, via the account linking feature
• For a Bot App, sending an adaptive card to the channel to
have it asking for user credentials
From now on, the conversation will be authenticated (up to
web app’s shutdown)
Channels vs. authentication
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
DEMO
Authentication
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
By default, every utterance is independent from
previous ones: to create a connection between them
(==a conversation), our bot/skill has to persist some
state.
Alexa and the Bot Framework support both in-memory,
ephemeral conversations and durable ones:
• Alexa: DynamoDB
• Bot Framework: Azure Table Storage, CosmosDb
Conversation State
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Given the rule of thumb:
1 LUIS/Lex app == 1 language
To support multiple languages we could either:
• Build as many bot apps/skills as the # of languages
• Build a polyglot bot/skill by picking the right LUIS/Lex
app at runtime
Multi language support
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Ad hoc Polyglot
Pros • Independent language support lifecycle • One app to deploy them all
• More natural behaviour
Cons • More deploys
• NNUI effect (Not-so-Natural User Interface J)
• Must wait for all languages to support every intent
• Costs
Ad hoc vs. Polyglot
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
• Step 1: understand the utterance
–add a new interaction model for your language via the
AWS portal
• Step 2: Retrieve the Locale
–Retrieve the Locale provided by the request (e.g.:
skillRequest.Request.Locale property)
• Step 3: produce a response
–Use the locale to pick up the strings from a resource file
Implementing polyglotism, the Alexa way
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
• Step 1: Choose a language picking strategy
–Have a user setting stored somewhere (e.g.: identity profile,
conversation state) stating the language to be used *or*
–Use a cognitive service (e.g.: Azure’s Text Analytics API) to
guess the language from an utterance
• Step 2: understand the utterance
–Send the utterance the appropriate LUIS app
• Step 3: produce a response
–Use the locale to pick up the strings from a resource file
Implementing polyglotism, the Bot FX way
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Billing/Pricing model
• Bot Framework:
– Web app: 0 - 0,422 EUR per 1000 messages (S1)
– Compute
• LUIS: 1,265 EUR/m (S1)
• [Speech to Text: 3,374 EUR per 1000 utterances]
• [Text to Speech: 3,374 EUR per 1000 messages]
• CosmosDB: 18 EUR/m (400 RU, 1Gb)
Each tx:
• Voice: 0,8 cent (0,026 EUR including CosmosDB)
• Text: 0,013 cent (0,02 EUR including CosmosDB)
@ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Q & A

More Related Content

What's hot

ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...
ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...
ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...ITCamp
 
Developing PowerShell Tools - Razvan Rusu
Developing PowerShell Tools - Razvan RusuDeveloping PowerShell Tools - Razvan Rusu
Developing PowerShell Tools - Razvan RusuITCamp
 
Blockchain for mere mortals - understand the fundamentals and start building ...
Blockchain for mere mortals - understand the fundamentals and start building ...Blockchain for mere mortals - understand the fundamentals and start building ...
Blockchain for mere mortals - understand the fundamentals and start building ...ITCamp
 
Using Bluemix and Node-RED for Fast Prototyping
Using Bluemix and Node-RED for Fast PrototypingUsing Bluemix and Node-RED for Fast Prototyping
Using Bluemix and Node-RED for Fast PrototypingPenn State EdTech Network
 
Getting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and AndroidGetting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and AndroidEmbarcadero Technologies
 
CCI2019 - Governance di una Conversational AI
CCI2019 - Governance di una Conversational AICCI2019 - Governance di una Conversational AI
CCI2019 - Governance di una Conversational AIwalk2talk srl
 
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream ProjectsITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream ProjectsITCamp
 
The fight for surviving in the IoT world - Radu Vunvulea
The fight for surviving in the IoT world - Radu VunvuleaThe fight for surviving in the IoT world - Radu Vunvulea
The fight for surviving in the IoT world - Radu VunvuleaITCamp
 

What's hot (8)

ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...
ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...
ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...
 
Developing PowerShell Tools - Razvan Rusu
Developing PowerShell Tools - Razvan RusuDeveloping PowerShell Tools - Razvan Rusu
Developing PowerShell Tools - Razvan Rusu
 
Blockchain for mere mortals - understand the fundamentals and start building ...
Blockchain for mere mortals - understand the fundamentals and start building ...Blockchain for mere mortals - understand the fundamentals and start building ...
Blockchain for mere mortals - understand the fundamentals and start building ...
 
Using Bluemix and Node-RED for Fast Prototyping
Using Bluemix and Node-RED for Fast PrototypingUsing Bluemix and Node-RED for Fast Prototyping
Using Bluemix and Node-RED for Fast Prototyping
 
Getting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and AndroidGetting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and Android
 
CCI2019 - Governance di una Conversational AI
CCI2019 - Governance di una Conversational AICCI2019 - Governance di una Conversational AI
CCI2019 - Governance di una Conversational AI
 
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream ProjectsITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
 
The fight for surviving in the IoT world - Radu Vunvulea
The fight for surviving in the IoT world - Radu VunvuleaThe fight for surviving in the IoT world - Radu Vunvulea
The fight for surviving in the IoT world - Radu Vunvulea
 

Similar to ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Azure Cognitive Services.pdf

Azure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
Azure tales: a real world CQRS and ES Deep Dive - Andrea SaltarelloAzure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
Azure tales: a real world CQRS and ES Deep Dive - Andrea SaltarelloITCamp
 
The fight for surviving in the IoT world
The fight for surviving in the IoT worldThe fight for surviving in the IoT world
The fight for surviving in the IoT worldRadu Vunvulea
 
ITCamp 2011 - Mihai Tataran, Tudor Damian - Keynote
ITCamp 2011 - Mihai Tataran, Tudor Damian - KeynoteITCamp 2011 - Mihai Tataran, Tudor Damian - Keynote
ITCamp 2011 - Mihai Tataran, Tudor Damian - KeynoteITCamp
 
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016Radu Vunvulea
 
Rome 2017: Building advanced voice assistants and chat bots
Rome 2017: Building advanced voice assistants and chat botsRome 2017: Building advanced voice assistants and chat bots
Rome 2017: Building advanced voice assistants and chat botsCisco DevNet
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2Enea Gabriel
 
ITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
ITCamp 2019 - Mihai Tataran - Governing your Cloud ResourcesITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
ITCamp 2019 - Mihai Tataran - Governing your Cloud ResourcesITCamp
 
Azure Microservices in Practice - Radu Vunvulea
Azure Microservices in Practice - Radu VunvuleaAzure Microservices in Practice - Radu Vunvulea
Azure Microservices in Practice - Radu VunvuleaITCamp
 
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...Codemotion
 
Breizhcamp: Créer un bot, pas si simple. Faisons le point.
Breizhcamp: Créer un bot, pas si simple. Faisons le point.Breizhcamp: Créer un bot, pas si simple. Faisons le point.
Breizhcamp: Créer un bot, pas si simple. Faisons le point.Cisco DevNet
 
Chatbots 101: design, code, deploy - Cisco Live Orlando 2018 - DEVNET-2896
Chatbots 101: design, code, deploy - Cisco Live Orlando 2018 - DEVNET-2896Chatbots 101: design, code, deploy - Cisco Live Orlando 2018 - DEVNET-2896
Chatbots 101: design, code, deploy - Cisco Live Orlando 2018 - DEVNET-2896Cisco DevNet
 
ITCamp 2013 - Petru Jucovschi - Application ecosystems
ITCamp 2013 - Petru Jucovschi - Application ecosystemsITCamp 2013 - Petru Jucovschi - Application ecosystems
ITCamp 2013 - Petru Jucovschi - Application ecosystemsITCamp
 
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...ITCamp
 
Xamarin Under The Hood - Dan Ardelean
 Xamarin Under The Hood - Dan Ardelean Xamarin Under The Hood - Dan Ardelean
Xamarin Under The Hood - Dan ArdeleanITCamp
 
Xamarin - Under the bridge
Xamarin - Under the bridgeXamarin - Under the bridge
Xamarin - Under the bridgeDan Ardelean
 
Mihai Tataran - Building Windows 8 Applications with HTML5 and JS
Mihai Tataran - Building Windows 8 Applications with HTML5 and JSMihai Tataran - Building Windows 8 Applications with HTML5 and JS
Mihai Tataran - Building Windows 8 Applications with HTML5 and JSITCamp
 
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016Cisco DevNet
 
SharePoint Saturday Warsaw - Conversational AI applications in Microsoft Teams
SharePoint Saturday Warsaw - Conversational AI applications in Microsoft TeamsSharePoint Saturday Warsaw - Conversational AI applications in Microsoft Teams
SharePoint Saturday Warsaw - Conversational AI applications in Microsoft TeamsThomas Gölles
 
Everyone Loves Docker Containers Before They Understand Docker Containers - A...
Everyone Loves Docker Containers Before They Understand Docker Containers - A...Everyone Loves Docker Containers Before They Understand Docker Containers - A...
Everyone Loves Docker Containers Before They Understand Docker Containers - A...ITCamp
 
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud StoryITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud StoryITCamp
 

Similar to ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Azure Cognitive Services.pdf (20)

Azure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
Azure tales: a real world CQRS and ES Deep Dive - Andrea SaltarelloAzure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
Azure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
 
The fight for surviving in the IoT world
The fight for surviving in the IoT worldThe fight for surviving in the IoT world
The fight for surviving in the IoT world
 
ITCamp 2011 - Mihai Tataran, Tudor Damian - Keynote
ITCamp 2011 - Mihai Tataran, Tudor Damian - KeynoteITCamp 2011 - Mihai Tataran, Tudor Damian - Keynote
ITCamp 2011 - Mihai Tataran, Tudor Damian - Keynote
 
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016
 
Rome 2017: Building advanced voice assistants and chat bots
Rome 2017: Building advanced voice assistants and chat botsRome 2017: Building advanced voice assistants and chat bots
Rome 2017: Building advanced voice assistants and chat bots
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
 
ITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
ITCamp 2019 - Mihai Tataran - Governing your Cloud ResourcesITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
ITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
 
Azure Microservices in Practice - Radu Vunvulea
Azure Microservices in Practice - Radu VunvuleaAzure Microservices in Practice - Radu Vunvulea
Azure Microservices in Practice - Radu Vunvulea
 
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...
 
Breizhcamp: Créer un bot, pas si simple. Faisons le point.
Breizhcamp: Créer un bot, pas si simple. Faisons le point.Breizhcamp: Créer un bot, pas si simple. Faisons le point.
Breizhcamp: Créer un bot, pas si simple. Faisons le point.
 
Chatbots 101: design, code, deploy - Cisco Live Orlando 2018 - DEVNET-2896
Chatbots 101: design, code, deploy - Cisco Live Orlando 2018 - DEVNET-2896Chatbots 101: design, code, deploy - Cisco Live Orlando 2018 - DEVNET-2896
Chatbots 101: design, code, deploy - Cisco Live Orlando 2018 - DEVNET-2896
 
ITCamp 2013 - Petru Jucovschi - Application ecosystems
ITCamp 2013 - Petru Jucovschi - Application ecosystemsITCamp 2013 - Petru Jucovschi - Application ecosystems
ITCamp 2013 - Petru Jucovschi - Application ecosystems
 
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
 
Xamarin Under The Hood - Dan Ardelean
 Xamarin Under The Hood - Dan Ardelean Xamarin Under The Hood - Dan Ardelean
Xamarin Under The Hood - Dan Ardelean
 
Xamarin - Under the bridge
Xamarin - Under the bridgeXamarin - Under the bridge
Xamarin - Under the bridge
 
Mihai Tataran - Building Windows 8 Applications with HTML5 and JS
Mihai Tataran - Building Windows 8 Applications with HTML5 and JSMihai Tataran - Building Windows 8 Applications with HTML5 and JS
Mihai Tataran - Building Windows 8 Applications with HTML5 and JS
 
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
 
SharePoint Saturday Warsaw - Conversational AI applications in Microsoft Teams
SharePoint Saturday Warsaw - Conversational AI applications in Microsoft TeamsSharePoint Saturday Warsaw - Conversational AI applications in Microsoft Teams
SharePoint Saturday Warsaw - Conversational AI applications in Microsoft Teams
 
Everyone Loves Docker Containers Before They Understand Docker Containers - A...
Everyone Loves Docker Containers Before They Understand Docker Containers - A...Everyone Loves Docker Containers Before They Understand Docker Containers - A...
Everyone Loves Docker Containers Before They Understand Docker Containers - A...
 
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud StoryITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
 

More from ITCamp

ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...ITCamp
 
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...ITCamp
 
ITCamp 2019 - Peter Leeson - Managing Skills
ITCamp 2019 - Peter Leeson - Managing SkillsITCamp 2019 - Peter Leeson - Managing Skills
ITCamp 2019 - Peter Leeson - Managing SkillsITCamp
 
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UXITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UXITCamp
 
ITCamp 2019 - Florin Coros - Implementing Clean Architecture
ITCamp 2019 - Florin Coros - Implementing Clean ArchitectureITCamp 2019 - Florin Coros - Implementing Clean Architecture
ITCamp 2019 - Florin Coros - Implementing Clean ArchitectureITCamp
 
ITCamp 2019 - Florin Loghiade - Azure Kubernetes in Production - Field notes...
ITCamp 2019 - Florin Loghiade -  Azure Kubernetes in Production - Field notes...ITCamp 2019 - Florin Loghiade -  Azure Kubernetes in Production - Field notes...
ITCamp 2019 - Florin Loghiade - Azure Kubernetes in Production - Field notes...ITCamp
 
ITCamp 2019 - Florin Flestea - How 3rd Level support experience influenced m...
ITCamp 2019 - Florin Flestea -  How 3rd Level support experience influenced m...ITCamp 2019 - Florin Flestea -  How 3rd Level support experience influenced m...
ITCamp 2019 - Florin Flestea - How 3rd Level support experience influenced m...ITCamp
 
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...ITCamp
 
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The EnterpriseITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The EnterpriseITCamp
 
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal TrendsITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal TrendsITCamp
 
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data LakeITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data LakeITCamp
 
ITCamp 2019 - Andy Cross - Business Outcomes from AI
ITCamp 2019 - Andy Cross - Business Outcomes from AIITCamp 2019 - Andy Cross - Business Outcomes from AI
ITCamp 2019 - Andy Cross - Business Outcomes from AIITCamp
 
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...ITCamp
 
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go NowITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go NowITCamp
 
ITCamp 2019 - Peter Leeson - Vitruvian Quality
ITCamp 2019 - Peter Leeson - Vitruvian QualityITCamp 2019 - Peter Leeson - Vitruvian Quality
ITCamp 2019 - Peter Leeson - Vitruvian QualityITCamp
 
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World ApplicationITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World ApplicationITCamp
 
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...ITCamp
 
ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...
ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...
ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...ITCamp
 
ITCamp 2018 - Magnus Mårtensson - Azure Global Application Perspectives
ITCamp 2018 - Magnus Mårtensson - Azure Global Application PerspectivesITCamp 2018 - Magnus Mårtensson - Azure Global Application Perspectives
ITCamp 2018 - Magnus Mårtensson - Azure Global Application PerspectivesITCamp
 
ITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The Win
ITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The WinITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The Win
ITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The WinITCamp
 

More from ITCamp (20)

ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
 
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
 
ITCamp 2019 - Peter Leeson - Managing Skills
ITCamp 2019 - Peter Leeson - Managing SkillsITCamp 2019 - Peter Leeson - Managing Skills
ITCamp 2019 - Peter Leeson - Managing Skills
 
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UXITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
 
ITCamp 2019 - Florin Coros - Implementing Clean Architecture
ITCamp 2019 - Florin Coros - Implementing Clean ArchitectureITCamp 2019 - Florin Coros - Implementing Clean Architecture
ITCamp 2019 - Florin Coros - Implementing Clean Architecture
 
ITCamp 2019 - Florin Loghiade - Azure Kubernetes in Production - Field notes...
ITCamp 2019 - Florin Loghiade -  Azure Kubernetes in Production - Field notes...ITCamp 2019 - Florin Loghiade -  Azure Kubernetes in Production - Field notes...
ITCamp 2019 - Florin Loghiade - Azure Kubernetes in Production - Field notes...
 
ITCamp 2019 - Florin Flestea - How 3rd Level support experience influenced m...
ITCamp 2019 - Florin Flestea -  How 3rd Level support experience influenced m...ITCamp 2019 - Florin Flestea -  How 3rd Level support experience influenced m...
ITCamp 2019 - Florin Flestea - How 3rd Level support experience influenced m...
 
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
 
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The EnterpriseITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
 
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal TrendsITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
 
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data LakeITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
 
ITCamp 2019 - Andy Cross - Business Outcomes from AI
ITCamp 2019 - Andy Cross - Business Outcomes from AIITCamp 2019 - Andy Cross - Business Outcomes from AI
ITCamp 2019 - Andy Cross - Business Outcomes from AI
 
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
 
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go NowITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
 
ITCamp 2019 - Peter Leeson - Vitruvian Quality
ITCamp 2019 - Peter Leeson - Vitruvian QualityITCamp 2019 - Peter Leeson - Vitruvian Quality
ITCamp 2019 - Peter Leeson - Vitruvian Quality
 
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World ApplicationITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
 
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
 
ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...
ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...
ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...
 
ITCamp 2018 - Magnus Mårtensson - Azure Global Application Perspectives
ITCamp 2018 - Magnus Mårtensson - Azure Global Application PerspectivesITCamp 2018 - Magnus Mårtensson - Azure Global Application Perspectives
ITCamp 2018 - Magnus Mårtensson - Azure Global Application Perspectives
 
ITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The Win
ITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The WinITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The Win
ITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The Win
 

Recently uploaded

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 

Recently uploaded (20)

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 

ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Azure Cognitive Services.pdf

  • 1. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Implementing bots and Alexa Skills using Azure Cognitive Services Andrea Saltarello CTO @ Managed Designs Microsoft Regional Director – Microsoft MVP https://twitter.com/andysal74 https://github.com/andysal https://www.linkedin.com/in/andysal/
  • 2. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Many thanks to our sponsors & partners! GOLD SILVER PARTNERS PLATINUM POWERED BY
  • 3. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Me.About(); • CTO @ Managed Designs • Microsoft MVP since 2003 • Microsoft Regional Director since 2015 • Author, along with Dino, of .NET: Architecting Applications for the Enterprise (Microsoft Press) • Basically, a software architect eager to write code J
  • 4. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals This is not your umpteenth talk about the Microsoft Bot Framework
  • 5. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals The problem (from a CTO’s perspective) Sharing as much code as possible between an Alexa skill and an Azure Bot Service-backed bot. Why should I do that? Well, when I speak to a person they usually behave coherently in spite of the communication channel J N.B.: All the code we’ll be looking at is available on GitHub under AGPL 3.0
  • 6. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals 1. A user produces an utterance (es: «Hi, how are you?») 2. The utterance is sent via a communication channel to a cognitive service which tries to guess the user’s intent 3. The cognitive service’s analysis result is sent to a program which produces an appropriate response • If needed, the program might save info about the conversation 4. The response is actuated Scenario
  • 7. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals The stack 7 Azure Alexa Communication ch. Channel + Bot Connector Device/Alexa App Cognitive Service LUIS Lex Program Bot App AWS Lambda Conversation State Blob/CosmosDB DynamoDB
  • 8. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Given that both Alexa and the Bot Framework require our custom logic to be accessible via http, we will: 1. Implement an Alexa viable https endpoint 2. Implement a Bot Framework https endpoint 3. Build both the above mentioned http endpoints with ASP.NET Core, so to share the code which produces the response The Solution
  • 10. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Alexa skills at a glance WPC2018 10
  • 11. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals • Create a skill • Choose an invocation name • Define intents • Define utterances (and slots) • Provide the intents handler url (by default, it’s an AWS lambda) –The Alexa.NET nuget package might be of help Implementing an Alexa skill
  • 12. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals DEMO Alexa Skill
  • 13. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Attention, please! • Spaces are not allowed within intent names • Utterances: –Can’t contain punctuation (e.g.: "?") –Numbers have to be written in words (e.g.: 5235 -> five thousand two hundred and thirty five) –Capital letters will be read expanded (e.g.: EL -> /e/ /l/) –Slots are «private» to a specific intent
  • 14. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals DEMO Martin @ Alexa
  • 16. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Bots, the Azure way
  • 17. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals • Create a Bot App • Create a LUIS app –Define intents –Define utterances (and entities) Implementing an Azure-hosted bot
  • 18. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals It all begins creating a bot app via the dashboard, choosing: • an App type – Azure Function – Web App • a Pricing tier – F0 (unlimited messages via standard ch., 10K msg/mese via direct line. No SLA) – S1 (unlimited messages via standard ch., €0.422 per 1,000 messages via direct line. SLA 99,9%) Creating a Bot App
  • 19. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Functions Bots Functions Bots support: • SDK v3 only, with support up to 31/12/2019 • C#/NET46, JS/Node • Basic, Echo, LUIS • App Service plan, Consumption
  • 20. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Web App Bots Web App Bots can be developed with both SDK v3 and v4 • v3 – NodeJS, ASP .NET WebAPI 2 • v4 – NodeJS, ASP .NET Core Further templates are available here
  • 21. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals DEMO Creating a bot app
  • 22. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals DEMO LUIS
  • 23. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals • Free: 10000 transactions per month (5 calls/sec) • Standard: –Text requests: €1,265 EUR per 1000 transactions (50 call/sec) –Speech: €4,639 EUR per 1000 transactions (50 call/sec) N.B.: 1 transaction == 500 characters LUIS pricing
  • 24. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Bot Framework: Channels vs direct line As per the Bot Framework’s jargon: • Channels: are the user agents supported out of the box • Direct line: is the API available for custom user agents The web chat is an open source web-based client for the Bot Framework V4 SDK which uses the direct line and: • Can be embedded as is via an iframe element • Supports customisations
  • 25. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals DEMO Web chat
  • 26. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals web chat <3 human voice The web chat component: 1. Can record a spoken utterance 2. Converts the recording to text either using the browser or Speech Services 3. Send the text to LUIS, which triggers our program 4. Pronounces the response either using the browser or Speech Services Speech Services pricing: • Free: 1 req, 5 hours/month S2T, 5M char/month T2S • Standard: 20 req, € 0,844/hour S2T, € 3,374 1M chars T2S
  • 27. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals DEMO Voce @ Web chat
  • 28. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Channels Out of the box support for: Cortana Email Facebook GroupMe Kik Microsoft Teams Skype Skype 4 Business Slack Telegram Twilio (Web chat)
  • 29. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Facebook Messenger The recipe: 1. Create a Facebook page 2. Create a Facebook app 3. Create the channel specifying: page id, app id and secret 4. Configure the FB app, allowing API access in «Advanced options» 5. Configure the channel via the Azure Dashboard
  • 30. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals DEMO Facebook Messenger
  • 31. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals TL;DR; Authentication isn’t provided out of the box Channels are unaware of who the user is, so we have to map the request to an ASP.NET Core Identity profile: • For an Alexa skill, via the account linking feature • For a Bot App, sending an adaptive card to the channel to have it asking for user credentials From now on, the conversation will be authenticated (up to web app’s shutdown) Channels vs. authentication
  • 32. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals DEMO Authentication
  • 33. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals By default, every utterance is independent from previous ones: to create a connection between them (==a conversation), our bot/skill has to persist some state. Alexa and the Bot Framework support both in-memory, ephemeral conversations and durable ones: • Alexa: DynamoDB • Bot Framework: Azure Table Storage, CosmosDb Conversation State
  • 34. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Given the rule of thumb: 1 LUIS/Lex app == 1 language To support multiple languages we could either: • Build as many bot apps/skills as the # of languages • Build a polyglot bot/skill by picking the right LUIS/Lex app at runtime Multi language support
  • 35. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Ad hoc Polyglot Pros • Independent language support lifecycle • One app to deploy them all • More natural behaviour Cons • More deploys • NNUI effect (Not-so-Natural User Interface J) • Must wait for all languages to support every intent • Costs Ad hoc vs. Polyglot
  • 36. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals • Step 1: understand the utterance –add a new interaction model for your language via the AWS portal • Step 2: Retrieve the Locale –Retrieve the Locale provided by the request (e.g.: skillRequest.Request.Locale property) • Step 3: produce a response –Use the locale to pick up the strings from a resource file Implementing polyglotism, the Alexa way
  • 37. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals • Step 1: Choose a language picking strategy –Have a user setting stored somewhere (e.g.: identity profile, conversation state) stating the language to be used *or* –Use a cognitive service (e.g.: Azure’s Text Analytics API) to guess the language from an utterance • Step 2: understand the utterance –Send the utterance the appropriate LUIS app • Step 3: produce a response –Use the locale to pick up the strings from a resource file Implementing polyglotism, the Bot FX way
  • 38. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Billing/Pricing model • Bot Framework: – Web app: 0 - 0,422 EUR per 1000 messages (S1) – Compute • LUIS: 1,265 EUR/m (S1) • [Speech to Text: 3,374 EUR per 1000 utterances] • [Text to Speech: 3,374 EUR per 1000 messages] • CosmosDB: 18 EUR/m (400 RU, 1Gb) Each tx: • Voice: 0,8 cent (0,026 EUR including CosmosDB) • Text: 0,013 cent (0,02 EUR including CosmosDB)
  • 39. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals Q & A