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

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Principled Technologies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 

Recently uploaded (20)

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 

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