SlideShare une entreprise Scribd logo
1  sur  32
Voice Applications
Next Generation Intelligent Interfaces
@VineetSinha
Vineet Sinha, Director R&D Executive Immersion
Voice is a natural interface
for us to work with
Computers
Voice is a natural interface
for us to work with
Computers
Voice Applications
Next Generation Intelligent Interfaces
@VineetSinha
Vineet Sinha, Director R&D Executive Immersion
Voice can be a Natural User Interface
Voice Interactions Today
Which restaurants are nearby?
Here are a few popular restaurants: ...
Which restaurants nearby serve alcohol?
Here are a few popular restaurants: ...
Typical Human Interactions
Where can I get dinner?
We have a few great Italian, Korean, and Indian
restaurants close by. Are you interested in any
of them?
Yes, but which ones they have alcohol?
Among restaurants that serve alcohol, we have
…
Voice apps today are primarily designed to just work in a command-response manner
In part because APIs focused around low-level implementation details
They end up having low Voice User Experience (VUX)
Building a Voice Application Easily
Getting Started
var violet = require(
'violet-conversations/lib/violet').script();
violet.respondTo({
expecting: "What next on my todo",
resolve: (response) => {
var nextItem = quipSvc.getNextItem();
response.out(`Next is ${nextItem}`);
}});
module.exports = violet;
1. Create Script (in Node.js)
- framework code
- input/output bits
- business logic
2. Run Locally – Use Web interface for
debugging
3. Follow registration instructions to use with
Amazon Echo, etc
Getting Started
var violet = require(
'violet-conversations/lib/violet').script();
violet.respondTo({
expecting: "What next on my todo",
resolve: (response) => {
var nextItem = quipSvc.getNextItem();
response.out(`Next is ${nextItem}`);
}});
module.exports = violet;
1. Create Script (in Node.js)
- framework code
- input/output bits
- business logic
2. Run Locally – Use Web interface for
debugging
3. Follow registration instructions to use with
Amazon Echo, etc
Getting Started
var violet = require(
'violet-conversations/lib/violet').script();
violet.respondTo({
expecting: "What next on my todo",
resolve: (response) => {
var nextItem = quipSvc.getNextItem();
response.out(`Next is ${nextItem}`);
}});
module.exports = violet;
1. Create Script (in Node.js)
- framework code
- input/output bits
- business logic
2. Run Locally – Use Web interface for
debugging
3. Follow registration instructions to use with
Amazon Echo, etc
Getting Started
var violet = require(
'violet-conversations/lib/violet').script();
violet.respondTo({
expecting: "What next on my todo",
resolve: (response) => {
var nextItem = quipSvc.getNextItem();
response.out(`Next is ${nextItem}`);
}});
module.exports = violet;
1. Create Script (in Node.js)
- framework code
- input/output bits
- business logic
2. Run Locally – Use Web interface for
debugging
3. Follow registration instructions to use with
Amazon Echo, etc
Getting Started
var violet = require(
'violet-conversations/lib/violet').script();
violet.respondTo({
expecting: "What next on my todo",
resolve: (response) => {
var nextItem = quipSvc.getNextItem();
response.out(`Next is ${nextItem}`);
}});
module.exports = violet;
1. Create Script (in Node.js)
- framework code
- input/output bits
- business logic
2. Run Locally – Use Web interface for
debugging
3. Follow registration instructions to use with
Amazon Echo, etc
How do you get data from users?
Getting data from users is easy
violet.addInputTypes({
'todoItem': LITERAL
});
violet.respondTo({
expecting: 'Remind me [[todoItem]]'],
response: (response) => {
todoList.add(response.get('todoItem'));
response.say('Added to your list');
}});
1. Declare variables
2. Build the script
Getting data from users is easy
violet.addInputTypes({
'todoItem': LITERAL
});
violet.respondTo({
expecting: 'Remind me [[todoItem]]'],
response: (response) => {
todoList.add(response.get('todoItem'));
response.say('Added to your list');
}});
1. Declare variables
2. Build the script
So, What is Violet?
A framework for building voice applications
• Based on Node.js and Express
With Violet you get
• Ease for building basic ‘skills’
• Support for sophisticated conversational bots
• Development able to focus on the Voice User Experience
• Plugins to make it easier to extend the framework, for example – integration with Salesforce.com
• Collection of pre-built easy-to-customize templates to get started quickly
Sophistication in Voice Experiences
Build Sophisticated Voice Apps using Conversational Goals
What if we could group a set of user and app responses?
• Essentially functions/methods for voice
Lets call these goals
• And conversation become a set of changing shared goals between the user and the app
Classic speech systems call these Dialogs
• Are focus is on primitives to make creating great Voice User Experience’s
Example: Adding an item to one of two categories
violet.respondTo({
expecting: 'Remind me [[todoItem]]',
resolve: (response) => {
if (quipSvc.getCategoryCount() > 1)
return findCategory();
//...
}});
var findCategory = () => {
response.prompt(’Which category?');
response.addGoal('getCategory');
}
violet.respondTo({
expecting: 'Category [[categoryNo]]',
resolve: (response) => {
if (response.hasGoal('getCaegory'))
//...
//...
}});
1. Check when things need to be complex
2. Prompt and trigger the goal
3. When getting a response validate the goal
Example: Adding an item to one of two categories
violet.respondTo({
expecting: 'Remind me [[todoItem]]',
resolve: (response) => {
if (quipSvc.getCategoryCount() > 1)
return findCategory();
//...
}});
var findCategory = () => {
response.prompt(’Which category?');
response.addGoal('getCategory');
}
violet.respondTo({
expecting: 'Category [[categoryNo]]',
resolve: (response) => {
if (response.hasGoal('getCaegory'))
//...
//...
}});
1. Check when things need to be complex
2. Prompt and trigger the goal
3. When getting a response validate the goal
Example: Adding an item to one of two categories
violet.respondTo({
expecting: 'Remind me [[todoItem]]',
resolve: (response) => {
if (quipSvc.getCategoryCount() > 1)
return findCategory();
//...
}});
var findCategory = () => {
response.prompt(’Which category?');
response.addGoal('getCategory');
}
violet.respondTo({
expecting: 'Category [[categoryNo]]',
resolve: (response) => {
if (response.hasGoal('getCategory'))
//...
//...
}});
1. Check when things need to be complex
2. Prompt and trigger the goal
3. When getting a response validate the goal
Example: Adding an item to one of two categories (better)
violet.respondTo({
expecting: 'Remind me [[todoItem]]',
resolve: (response) => {
if (quipSvc.getCategoryCount() > 1)
return findCategory();
//...
}});
var findCategory = () => {
response.prompt(’Which category?');
response.addGoal('getCategory');
}
violet.respondTo({
expecting: 'Category [[categoryNo]]',
resolve: (response) => {
if (response.hasGoal('getCategory'))
//...
//...
}});
violet.respondTo({
expecting: 'Remind me [[todoItem]]',
resolve: (response) => {
if (quipSvc.getCategoryCount() > 1)
response.addGoal('getCategory');
//...
}});
violet.defineGoal({
goal: 'getCategory',
prompt: 'Which category?',
respondTo: [{
expecting: 'Category [[categoryNo]]',
resolve: (response) => {
if (response.hasGoal('getCategory'))
//...
//...
}]});
A Little Magic to Get Results Quick
Easy Salesforce Integration
var sfStore = require(’violetStoreSF.js')(v);
sfStore.store.propOfInterest = {
'Lead*': ['Name*', 'Company*'],
'Case*': ['CaseNumber*', 'Contact*.Name*’
'Status*', 'Priority*']}
1. Load the Salesforce Store Plugin
2. Configure fields that you care about
3. Use Salesforce as a store:
- Query: For eg, Check for any new leads
- Store Data: For eg, Create a new lead
- Update: For eg, Change priority on a case
Easy Salesforce Integration
var sfStore = require(’violetStoreSF.js')(v);
sfStore.store.propOfInterest = {
'Lead*': ['Name*', 'Company*'],
'Case*': ['CaseNumber*', 'Contact*.Name*’
'Status*', 'Priority*']}
var results = yield response.load(
'Lead*', 'CreatedDate = TODAY');
if (results.length == 0) {
response.say(‘You have no new leads.');
}
1. Load the Salesforce Store Plugin
2. Configure fields that you care about
3. Use Salesforce as a store:
- Query: For eg, Check for any new leads
- Store Data: For eg, Create a new lead
- Update: For eg, Change priority on a case
Easy Salesforce Integration
var sfStore = require(’violetStoreSF.js')(v);
sfStore.store.propOfInterest = {
'Lead*': ['Name*', 'Company*'],
'Case*': ['CaseNumber*', 'Contact*.Name*’
'Status*', 'Priority*']}
response.store('Lead*', {
'FirstName*': names[0],
'LastName*': names[1],
'Company*': leadCompany});
1. Load the Salesforce Store Plugin
2. Configure fields that you care about
3. Use Salesforce as a store:
- Query: For eg, Check for any new leads
- Store Data: For eg, Create a new lead
- Update: For eg, Change priority on a case
Easy Salesforce Integration
var sfStore = require(’violetStoreSF.js')(v);
sfStore.store.propOfInterest = {
'Lead*': ['Name*', 'Company*'],
'Case*': ['CaseNumber*', 'Contact*.Name*’
'Status*', 'Priority*']}
response.update('Case*',
'CaseNumber*', caseNumber,
{ 'Priority*': casePriority });
1. Load the Salesforce Store Plugin
2. Configure fields that you care about
3. Use Salesforce as a store:
- Query: For eg, Check for any new leads
- Store Data: For eg, Create a new lead
- Update: For eg, Change priority on a case
And a collection of templates to get you moving faster
Launch & configure a pre-built voice script for your org
• See the violet-templates project
Customize it to your needs
• Use the templates as example code and put them together
Create new templates
• We would love to see what you come up with
What’s Next
We want to see what you build…
Check out Violet and try:
1. Deploying one of the existing voice-script
and using it.
2. Customize a script to your needs.
3. Extend Violet:
• Support Google Home or other devices
• Try supporting sentiment analysis or chat-bots
with it
Let us know how it goes
For more info:
https://github.com/salesforce/violet-conversations
http://HelloViolet.ai
Ashita Saluja Gina Nguyen John Brunswick
Built with incredible insights from …
Nilan Fernando
Voice Applications - Next Generation Intelligent Interfaces
Voice Applications - Next Generation Intelligent Interfaces

Contenu connexe

Dernier

%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 

Dernier (20)

Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 

En vedette

Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

En vedette (20)

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 

Voice Applications - Next Generation Intelligent Interfaces

  • 1. Voice Applications Next Generation Intelligent Interfaces @VineetSinha Vineet Sinha, Director R&D Executive Immersion
  • 2. Voice is a natural interface for us to work with Computers
  • 3. Voice is a natural interface for us to work with Computers
  • 4. Voice Applications Next Generation Intelligent Interfaces @VineetSinha Vineet Sinha, Director R&D Executive Immersion
  • 5. Voice can be a Natural User Interface Voice Interactions Today Which restaurants are nearby? Here are a few popular restaurants: ... Which restaurants nearby serve alcohol? Here are a few popular restaurants: ... Typical Human Interactions Where can I get dinner? We have a few great Italian, Korean, and Indian restaurants close by. Are you interested in any of them? Yes, but which ones they have alcohol? Among restaurants that serve alcohol, we have … Voice apps today are primarily designed to just work in a command-response manner In part because APIs focused around low-level implementation details They end up having low Voice User Experience (VUX)
  • 6. Building a Voice Application Easily
  • 7. Getting Started var violet = require( 'violet-conversations/lib/violet').script(); violet.respondTo({ expecting: "What next on my todo", resolve: (response) => { var nextItem = quipSvc.getNextItem(); response.out(`Next is ${nextItem}`); }}); module.exports = violet; 1. Create Script (in Node.js) - framework code - input/output bits - business logic 2. Run Locally – Use Web interface for debugging 3. Follow registration instructions to use with Amazon Echo, etc
  • 8. Getting Started var violet = require( 'violet-conversations/lib/violet').script(); violet.respondTo({ expecting: "What next on my todo", resolve: (response) => { var nextItem = quipSvc.getNextItem(); response.out(`Next is ${nextItem}`); }}); module.exports = violet; 1. Create Script (in Node.js) - framework code - input/output bits - business logic 2. Run Locally – Use Web interface for debugging 3. Follow registration instructions to use with Amazon Echo, etc
  • 9. Getting Started var violet = require( 'violet-conversations/lib/violet').script(); violet.respondTo({ expecting: "What next on my todo", resolve: (response) => { var nextItem = quipSvc.getNextItem(); response.out(`Next is ${nextItem}`); }}); module.exports = violet; 1. Create Script (in Node.js) - framework code - input/output bits - business logic 2. Run Locally – Use Web interface for debugging 3. Follow registration instructions to use with Amazon Echo, etc
  • 10. Getting Started var violet = require( 'violet-conversations/lib/violet').script(); violet.respondTo({ expecting: "What next on my todo", resolve: (response) => { var nextItem = quipSvc.getNextItem(); response.out(`Next is ${nextItem}`); }}); module.exports = violet; 1. Create Script (in Node.js) - framework code - input/output bits - business logic 2. Run Locally – Use Web interface for debugging 3. Follow registration instructions to use with Amazon Echo, etc
  • 11. Getting Started var violet = require( 'violet-conversations/lib/violet').script(); violet.respondTo({ expecting: "What next on my todo", resolve: (response) => { var nextItem = quipSvc.getNextItem(); response.out(`Next is ${nextItem}`); }}); module.exports = violet; 1. Create Script (in Node.js) - framework code - input/output bits - business logic 2. Run Locally – Use Web interface for debugging 3. Follow registration instructions to use with Amazon Echo, etc
  • 12. How do you get data from users?
  • 13. Getting data from users is easy violet.addInputTypes({ 'todoItem': LITERAL }); violet.respondTo({ expecting: 'Remind me [[todoItem]]'], response: (response) => { todoList.add(response.get('todoItem')); response.say('Added to your list'); }}); 1. Declare variables 2. Build the script
  • 14. Getting data from users is easy violet.addInputTypes({ 'todoItem': LITERAL }); violet.respondTo({ expecting: 'Remind me [[todoItem]]'], response: (response) => { todoList.add(response.get('todoItem')); response.say('Added to your list'); }}); 1. Declare variables 2. Build the script
  • 15. So, What is Violet? A framework for building voice applications • Based on Node.js and Express With Violet you get • Ease for building basic ‘skills’ • Support for sophisticated conversational bots • Development able to focus on the Voice User Experience • Plugins to make it easier to extend the framework, for example – integration with Salesforce.com • Collection of pre-built easy-to-customize templates to get started quickly
  • 16. Sophistication in Voice Experiences
  • 17. Build Sophisticated Voice Apps using Conversational Goals What if we could group a set of user and app responses? • Essentially functions/methods for voice Lets call these goals • And conversation become a set of changing shared goals between the user and the app Classic speech systems call these Dialogs • Are focus is on primitives to make creating great Voice User Experience’s
  • 18. Example: Adding an item to one of two categories violet.respondTo({ expecting: 'Remind me [[todoItem]]', resolve: (response) => { if (quipSvc.getCategoryCount() > 1) return findCategory(); //... }}); var findCategory = () => { response.prompt(’Which category?'); response.addGoal('getCategory'); } violet.respondTo({ expecting: 'Category [[categoryNo]]', resolve: (response) => { if (response.hasGoal('getCaegory')) //... //... }}); 1. Check when things need to be complex 2. Prompt and trigger the goal 3. When getting a response validate the goal
  • 19. Example: Adding an item to one of two categories violet.respondTo({ expecting: 'Remind me [[todoItem]]', resolve: (response) => { if (quipSvc.getCategoryCount() > 1) return findCategory(); //... }}); var findCategory = () => { response.prompt(’Which category?'); response.addGoal('getCategory'); } violet.respondTo({ expecting: 'Category [[categoryNo]]', resolve: (response) => { if (response.hasGoal('getCaegory')) //... //... }}); 1. Check when things need to be complex 2. Prompt and trigger the goal 3. When getting a response validate the goal
  • 20. Example: Adding an item to one of two categories violet.respondTo({ expecting: 'Remind me [[todoItem]]', resolve: (response) => { if (quipSvc.getCategoryCount() > 1) return findCategory(); //... }}); var findCategory = () => { response.prompt(’Which category?'); response.addGoal('getCategory'); } violet.respondTo({ expecting: 'Category [[categoryNo]]', resolve: (response) => { if (response.hasGoal('getCategory')) //... //... }}); 1. Check when things need to be complex 2. Prompt and trigger the goal 3. When getting a response validate the goal
  • 21. Example: Adding an item to one of two categories (better) violet.respondTo({ expecting: 'Remind me [[todoItem]]', resolve: (response) => { if (quipSvc.getCategoryCount() > 1) return findCategory(); //... }}); var findCategory = () => { response.prompt(’Which category?'); response.addGoal('getCategory'); } violet.respondTo({ expecting: 'Category [[categoryNo]]', resolve: (response) => { if (response.hasGoal('getCategory')) //... //... }}); violet.respondTo({ expecting: 'Remind me [[todoItem]]', resolve: (response) => { if (quipSvc.getCategoryCount() > 1) response.addGoal('getCategory'); //... }}); violet.defineGoal({ goal: 'getCategory', prompt: 'Which category?', respondTo: [{ expecting: 'Category [[categoryNo]]', resolve: (response) => { if (response.hasGoal('getCategory')) //... //... }]});
  • 22. A Little Magic to Get Results Quick
  • 23. Easy Salesforce Integration var sfStore = require(’violetStoreSF.js')(v); sfStore.store.propOfInterest = { 'Lead*': ['Name*', 'Company*'], 'Case*': ['CaseNumber*', 'Contact*.Name*’ 'Status*', 'Priority*']} 1. Load the Salesforce Store Plugin 2. Configure fields that you care about 3. Use Salesforce as a store: - Query: For eg, Check for any new leads - Store Data: For eg, Create a new lead - Update: For eg, Change priority on a case
  • 24. Easy Salesforce Integration var sfStore = require(’violetStoreSF.js')(v); sfStore.store.propOfInterest = { 'Lead*': ['Name*', 'Company*'], 'Case*': ['CaseNumber*', 'Contact*.Name*’ 'Status*', 'Priority*']} var results = yield response.load( 'Lead*', 'CreatedDate = TODAY'); if (results.length == 0) { response.say(‘You have no new leads.'); } 1. Load the Salesforce Store Plugin 2. Configure fields that you care about 3. Use Salesforce as a store: - Query: For eg, Check for any new leads - Store Data: For eg, Create a new lead - Update: For eg, Change priority on a case
  • 25. Easy Salesforce Integration var sfStore = require(’violetStoreSF.js')(v); sfStore.store.propOfInterest = { 'Lead*': ['Name*', 'Company*'], 'Case*': ['CaseNumber*', 'Contact*.Name*’ 'Status*', 'Priority*']} response.store('Lead*', { 'FirstName*': names[0], 'LastName*': names[1], 'Company*': leadCompany}); 1. Load the Salesforce Store Plugin 2. Configure fields that you care about 3. Use Salesforce as a store: - Query: For eg, Check for any new leads - Store Data: For eg, Create a new lead - Update: For eg, Change priority on a case
  • 26. Easy Salesforce Integration var sfStore = require(’violetStoreSF.js')(v); sfStore.store.propOfInterest = { 'Lead*': ['Name*', 'Company*'], 'Case*': ['CaseNumber*', 'Contact*.Name*’ 'Status*', 'Priority*']} response.update('Case*', 'CaseNumber*', caseNumber, { 'Priority*': casePriority }); 1. Load the Salesforce Store Plugin 2. Configure fields that you care about 3. Use Salesforce as a store: - Query: For eg, Check for any new leads - Store Data: For eg, Create a new lead - Update: For eg, Change priority on a case
  • 27. And a collection of templates to get you moving faster Launch & configure a pre-built voice script for your org • See the violet-templates project Customize it to your needs • Use the templates as example code and put them together Create new templates • We would love to see what you come up with
  • 29. We want to see what you build… Check out Violet and try: 1. Deploying one of the existing voice-script and using it. 2. Customize a script to your needs. 3. Extend Violet: • Support Google Home or other devices • Try supporting sentiment analysis or chat-bots with it Let us know how it goes For more info: https://github.com/salesforce/violet-conversations http://HelloViolet.ai
  • 30. Ashita Saluja Gina Nguyen John Brunswick Built with incredible insights from … Nilan Fernando

Notes de l'éditeur

  1. From the Abstract: Natural conversations with machines was always a dream since the first Star Trek episodes. Latest since the introduction of Siri, Amazon Echo or Google Home it's now part of our everyday lives. Have you ever dreamt of building your own intuitive voice experience? Then come and learn what open source tools we at Salesforce have build to achieve that. Walk away from the session with an understanding of the tools and how to create your own voice applications with the power of Salesforce.
  2. Todo: update numbers to latest as they get released http://www.businessinsider.com/amazon-voice-assistant-alexa-could-soon-start-talking-to-you-on-its-own-2016-9 http://www.businessinsider.com/amazon-echo-vs-google-home-sales-estimates-chart-2017-5 https://1reddrop.com/2017/01/24/24-million-amazon-echo-and-google-home-devices-will-be-sold-in-2017-voice-report/ “Amazon’s voice assistant Alexa could be a $10 billion 'mega-hit' by 2020: Research” https://www.cnbc.com/2017/03/10/amazon-alexa-voice-assistan-could-be-a-10-billion-mega-hit-by-2020-research.html
  3. Todo: update numbers to latest as they get released http://www.businessinsider.com/amazon-voice-assistant-alexa-could-soon-start-talking-to-you-on-its-own-2016-9 http://www.businessinsider.com/amazon-echo-vs-google-home-sales-estimates-chart-2017-5 https://1reddrop.com/2017/01/24/24-million-amazon-echo-and-google-home-devices-will-be-sold-in-2017-voice-report/ “Amazon’s voice assistant Alexa could be a $10 billion 'mega-hit' by 2020: Research” https://www.cnbc.com/2017/03/10/amazon-alexa-voice-assistan-could-be-a-10-billion-mega-hit-by-2020-research.html
  4. From the Abstract: Natural conversations with machines was always a dream since the first Star Trek episodes. Latest since the introduction of Siri, Amazon Echo or Google Home it's now part of our everyday lives. Have you ever dreamt of building your own intuitive voice experience? Then come and learn what open source tools we at Salesforce have build to achieve that. Walk away from the session with an understanding of the tools and how to create your own voice applications with the power of Salesforce.
  5. Goal: pure response code + debug + deploy
  6. Goal: pure response code + debug + deploy
  7. Goal: pure response code + debug + deploy
  8. Goal: pure response code + debug + deploy
  9. Goal: pure response code + debug + deploy
  10. Need a sentence above
  11. Need a sentence above
  12. Need a simpler example
  13. Goal: pure response code + debug + deploy
  14. Goal: pure response code + debug + deploy
  15. Goal: pure response code + debug + deploy
  16. Goal: pure response code + debug + deploy
  17. Need a simpler example
  18. Need a simpler example
  19. Need a simpler example
  20. Need a simpler example
  21. To be decided
  22. Move this somewhere – but where? Need a 2-minute version of some of the classic presentations that are 1-hr long Notes from: https://salesforce.quip.com/oWf6Ah4XOauM http://www.macadamian.com/wp-content/uploads/going-voice-first-webinar-slides.pdf (esp slide 17)
  23. Need a simpler example