From 2f904539af12d54aff62659b1b060facb2651744 Mon Sep 17 00:00:00 2001 From: Ted Date: Wed, 17 Jul 2019 22:44:00 -0700 Subject: [PATCH 01/10] add notification sample --- .../EnterpriseNotification.sln | 37 + .../EventHandler/.gitignore | 264 ++++ .../EventHandler/EventDataType.cs | 9 + .../EventHandler/EventHandler.csproj | 25 + .../EventHandler/Function1.cs | 103 ++ .../EventHandler/UserPreference.cs | 14 + .../EventHandler/host.json | 3 + .../EventProducer/EventProducer.csproj | 22 + .../EventProducer/Program.cs | 58 + .../EventProducer/appsettings.json | 4 + samples/EnterpriseNotification/README.md | 89 ++ .../VirtualAssistant/.filenesting.json | 15 + .../Adapters/DefaultAdapter.cs | 43 + .../Adapters/DefaultWebSocketAdapter.cs | 43 + .../VirtualAssistant/Bots/DialogBot.cs | 51 + .../ConnectedService.json | 7 + .../Content/NewUserGreeting.de.json | 69 + .../Content/NewUserGreeting.es.json | 69 + .../Content/NewUserGreeting.fr.json | 69 + .../Content/NewUserGreeting.it.json | 69 + .../Content/NewUserGreeting.json | 64 + .../Content/NewUserGreeting.zh.json | 69 + .../Content/ReturningUserGreeting.de.json | 56 + .../Content/ReturningUserGreeting.es.json | 56 + .../Content/ReturningUserGreeting.fr.json | 56 + .../Content/ReturningUserGreeting.it.json | 56 + .../Content/ReturningUserGreeting.json | 56 + .../Content/ReturningUserGreeting.zh.json | 56 + .../Controllers/BotController.cs | 43 + .../Deployment/Resources/LU/de/general.lu | 523 +++++++ .../Deployment/Resources/LU/en/general.lu | 521 +++++++ .../Deployment/Resources/LU/es/general.lu | 523 +++++++ .../Deployment/Resources/LU/fr/general.lu | 523 +++++++ .../Deployment/Resources/LU/it/general.lu | 523 +++++++ .../Deployment/Resources/LU/zh/general.lu | 523 +++++++ .../Deployment/Resources/QnA/de/chitchat.lu | 1227 +++++++++++++++ .../Deployment/Resources/QnA/de/faq.lu | 387 +++++ .../Deployment/Resources/QnA/en/chitchat.lu | 1237 +++++++++++++++ .../Deployment/Resources/QnA/en/faq.lu | 395 +++++ .../Deployment/Resources/QnA/es/chitchat.lu | 1227 +++++++++++++++ .../Deployment/Resources/QnA/es/faq.lu | 387 +++++ .../Deployment/Resources/QnA/fr/chitchat.lu | 1227 +++++++++++++++ .../Deployment/Resources/QnA/fr/faq.lu | 387 +++++ .../Deployment/Resources/QnA/it/chitchat.lu | 1227 +++++++++++++++ .../Deployment/Resources/QnA/it/faq.lu | 387 +++++ .../Deployment/Resources/QnA/zh/chitchat.lu | 1199 ++++++++++++++ .../Deployment/Resources/QnA/zh/faq.lu | 387 +++++ .../Resources/Skills/en/automotive.lu | 1068 +++++++++++++ .../Resources/Skills/en/calendar.lu | 1320 ++++++++++++++++ .../Deployment/Resources/Skills/en/email.lu | 711 +++++++++ .../Deployment/Resources/Skills/en/news.lu | 27 + .../Resources/Skills/en/pointofinterest.lu | 1388 +++++++++++++++++ .../Resources/Skills/en/restaurant.lu | 71 + .../Deployment/Resources/Skills/en/todo.lu | 598 +++++++ .../Resources/parameters.template.json | 22 + .../Deployment/Resources/template.json | 366 +++++ .../Deployment/Scripts/add_remote_skill.ps1 | 302 ++++ .../Deployment/Scripts/deploy.ps1 | 235 +++ .../Scripts/deploy_cognitive_models.ps1 | 190 +++ .../Deployment/Scripts/luis_functions.ps1 | 108 ++ .../Deployment/Scripts/publish.ps1 | 44 + .../Deployment/Scripts/qna_functions.ps1 | 87 ++ .../Deployment/Scripts/remove_skill.ps1 | 119 ++ .../Deployment/Scripts/skill_functions.ps1 | 74 + .../Scripts/update_cognitive_models.ps1 | 121 ++ .../VirtualAssistant/Dialogs/CancelDialog.cs | 70 + .../Dialogs/EscalateDialog.cs | 36 + .../VirtualAssistant/Dialogs/MainDialog.cs | 445 ++++++ .../Dialogs/OnboardingDialog.cs | 74 + .../VirtualAssistant/Models/EventData.cs | 14 + .../Models/OnboardingState.cs | 14 + .../Pipeline/VirtualAssistantSample.yml | 61 + .../VirtualAssistant/Program.cs | 21 + .../Properties/launchSettings.json | 27 + .../Responses/Cancel/CancelResponses.cs | 64 + .../Cancel/CancelStrings.Designer.cs | 99 ++ .../Responses/Cancel/CancelStrings.de.resx | 132 ++ .../Responses/Cancel/CancelStrings.es.resx | 132 ++ .../Responses/Cancel/CancelStrings.fr.resx | 132 ++ .../Responses/Cancel/CancelStrings.it.resx | 132 ++ .../Responses/Cancel/CancelStrings.resx | 132 ++ .../Responses/Cancel/CancelStrings.zh.resx | 132 ++ .../Responses/Escalate/EscalateResponses.cs | 46 + .../Escalate/EscalateStrings.Designer.cs | 83 + .../Escalate/EscalateStrings.de.resx | 123 ++ .../Escalate/EscalateStrings.es.resx | 123 ++ .../Escalate/EscalateStrings.fr.resx | 123 ++ .../Escalate/EscalateStrings.it.resx | 123 ++ .../Responses/Escalate/EscalateStrings.resx | 123 ++ .../Escalate/EscalateStrings.zh.resx | 123 ++ .../Responses/Main/MainResponses.cs | 139 ++ .../Responses/Main/MainStrings.Designer.cs | 216 +++ .../Responses/Main/MainStrings.de.resx | 168 ++ .../Responses/Main/MainStrings.es.resx | 168 ++ .../Responses/Main/MainStrings.fr.resx | 168 ++ .../Responses/Main/MainStrings.it.resx | 168 ++ .../Responses/Main/MainStrings.resx | 171 ++ .../Responses/Main/MainStrings.zh.resx | 168 ++ .../Onboarding/OnboardingResponses.cs | 82 + .../Onboarding/OnboardingStrings.Designer.cs | 138 ++ .../Onboarding/OnboardingStrings.de.resx | 138 ++ .../Onboarding/OnboardingStrings.es.resx | 138 ++ .../Onboarding/OnboardingStrings.fr.resx | 138 ++ .../Onboarding/OnboardingStrings.it.resx | 138 ++ .../Onboarding/OnboardingStrings.resx | 138 ++ .../Onboarding/OnboardingStrings.zh.resx | 138 ++ .../VirtualAssistant/Services/BotServices.cs | 65 + .../VirtualAssistant/Services/BotSettings.cs | 14 + .../VirtualAssistant/Services/DispatchLuis.cs | 69 + .../VirtualAssistant/Services/GeneralLuis.cs | 90 ++ .../VirtualAssistant/Startup.cs | 163 ++ .../VirtualAssistant/VirtualAssistant.csproj | 121 ++ .../VirtualAssistant/appsettings.json | 21 + .../VirtualAssistant/cognitivemodels.json | 37 + .../VirtualAssistant/readme.md | 1 + .../VirtualAssistant/skills.json | 2 + .../VirtualAssistant/wwwroot/default.htm | 422 +++++ 117 files changed, 27239 insertions(+) create mode 100644 samples/EnterpriseNotification/EnterpriseNotification.sln create mode 100644 samples/EnterpriseNotification/EventHandler/.gitignore create mode 100644 samples/EnterpriseNotification/EventHandler/EventDataType.cs create mode 100644 samples/EnterpriseNotification/EventHandler/EventHandler.csproj create mode 100644 samples/EnterpriseNotification/EventHandler/Function1.cs create mode 100644 samples/EnterpriseNotification/EventHandler/UserPreference.cs create mode 100644 samples/EnterpriseNotification/EventHandler/host.json create mode 100644 samples/EnterpriseNotification/EventProducer/EventProducer.csproj create mode 100644 samples/EnterpriseNotification/EventProducer/Program.cs create mode 100644 samples/EnterpriseNotification/EventProducer/appsettings.json create mode 100644 samples/EnterpriseNotification/README.md create mode 100644 samples/EnterpriseNotification/VirtualAssistant/.filenesting.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultAdapter.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultWebSocketAdapter.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Bots/DialogBot.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Connected Services/Application Insights/ConnectedService.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.de.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.es.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.fr.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.it.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.zh.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.de.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.es.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.fr.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.it.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.zh.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Controllers/BotController.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/de/general.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/en/general.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/es/general.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/fr/general.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/it/general.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/zh/general.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/de/chitchat.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/de/faq.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/en/chitchat.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/en/faq.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/es/chitchat.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/es/faq.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/fr/chitchat.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/fr/faq.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/it/chitchat.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/it/faq.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/zh/chitchat.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/zh/faq.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/automotive.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/calendar.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/email.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/news.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/pointofinterest.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/restaurant.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/todo.lu create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/parameters.template.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/template.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/add_remote_skill.ps1 create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/deploy.ps1 create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/deploy_cognitive_models.ps1 create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/luis_functions.ps1 create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/publish.ps1 create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/qna_functions.ps1 create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/remove_skill.ps1 create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/skill_functions.ps1 create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/update_cognitive_models.ps1 create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Dialogs/CancelDialog.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Dialogs/EscalateDialog.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Dialogs/MainDialog.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Dialogs/OnboardingDialog.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Models/EventData.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Models/OnboardingState.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Pipeline/VirtualAssistantSample.yml create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Program.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Properties/launchSettings.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelResponses.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.Designer.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.de.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.es.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.fr.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.it.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.zh.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateResponses.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.Designer.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.de.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.es.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.fr.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.it.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.zh.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainResponses.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.Designer.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.de.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.es.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.fr.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.it.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.zh.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingResponses.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.Designer.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.de.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.es.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.fr.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.it.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.zh.resx create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Services/BotServices.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Services/BotSettings.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Services/DispatchLuis.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Services/GeneralLuis.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Startup.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj create mode 100644 samples/EnterpriseNotification/VirtualAssistant/appsettings.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/cognitivemodels.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/readme.md create mode 100644 samples/EnterpriseNotification/VirtualAssistant/skills.json create mode 100644 samples/EnterpriseNotification/VirtualAssistant/wwwroot/default.htm diff --git a/samples/EnterpriseNotification/EnterpriseNotification.sln b/samples/EnterpriseNotification/EnterpriseNotification.sln new file mode 100644 index 0000000000..af28928433 --- /dev/null +++ b/samples/EnterpriseNotification/EnterpriseNotification.sln @@ -0,0 +1,37 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29102.190 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventHandler", "EventHandler\EventHandler.csproj", "{CC6E0387-FED1-4D72-A089-6B2B81011A23}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VirtualAssistant", "VirtualAssistant\VirtualAssistant.csproj", "{E0A0D813-0D6A-45D8-BF09-4F0AC0269FE3}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventProducer", "EventProducer\EventProducer.csproj", "{843204E6-EA50-4DFF-8B8B-E6814D8E6642}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CC6E0387-FED1-4D72-A089-6B2B81011A23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CC6E0387-FED1-4D72-A089-6B2B81011A23}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CC6E0387-FED1-4D72-A089-6B2B81011A23}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CC6E0387-FED1-4D72-A089-6B2B81011A23}.Release|Any CPU.Build.0 = Release|Any CPU + {E0A0D813-0D6A-45D8-BF09-4F0AC0269FE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E0A0D813-0D6A-45D8-BF09-4F0AC0269FE3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E0A0D813-0D6A-45D8-BF09-4F0AC0269FE3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E0A0D813-0D6A-45D8-BF09-4F0AC0269FE3}.Release|Any CPU.Build.0 = Release|Any CPU + {843204E6-EA50-4DFF-8B8B-E6814D8E6642}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {843204E6-EA50-4DFF-8B8B-E6814D8E6642}.Debug|Any CPU.Build.0 = Debug|Any CPU + {843204E6-EA50-4DFF-8B8B-E6814D8E6642}.Release|Any CPU.ActiveCfg = Release|Any CPU + {843204E6-EA50-4DFF-8B8B-E6814D8E6642}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {0CBBA70E-7242-4EC3-A76B-FF444246A980} + EndGlobalSection +EndGlobal diff --git a/samples/EnterpriseNotification/EventHandler/.gitignore b/samples/EnterpriseNotification/EventHandler/.gitignore new file mode 100644 index 0000000000..ff5b00c506 --- /dev/null +++ b/samples/EnterpriseNotification/EventHandler/.gitignore @@ -0,0 +1,264 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# Azure Functions localsettings file +local.settings.json + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +project.fragment.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +#*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc \ No newline at end of file diff --git a/samples/EnterpriseNotification/EventHandler/EventDataType.cs b/samples/EnterpriseNotification/EventHandler/EventDataType.cs new file mode 100644 index 0000000000..67d7a18c77 --- /dev/null +++ b/samples/EnterpriseNotification/EventHandler/EventDataType.cs @@ -0,0 +1,9 @@ +namespace EventHandler +{ + public class EventDataType + { + public string UserId { get; set; } + + public string Message { get; set; } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/EventHandler/EventHandler.csproj b/samples/EnterpriseNotification/EventHandler/EventHandler.csproj new file mode 100644 index 0000000000..07302f08e0 --- /dev/null +++ b/samples/EnterpriseNotification/EventHandler/EventHandler.csproj @@ -0,0 +1,25 @@ + + + netcoreapp2.1 + v2 + + + + + + + + + + + Always + + + PreserveNewest + + + PreserveNewest + Never + + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/EventHandler/Function1.cs b/samples/EnterpriseNotification/EventHandler/Function1.cs new file mode 100644 index 0000000000..2d3a5efbcd --- /dev/null +++ b/samples/EnterpriseNotification/EventHandler/Function1.cs @@ -0,0 +1,103 @@ +using System; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Azure.Documents; +using Microsoft.Azure.Documents.Client; +using Microsoft.Azure.EventHubs; +using Microsoft.Azure.WebJobs; +using Microsoft.Bot.Connector.DirectLine; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; + +namespace EventHandler +{ + public static class Function1 + { + private static DocumentClient documentDbclient = new DocumentClient(new Uri(Environment.GetEnvironmentVariable("DocumentDbEndpointUrl")), Environment.GetEnvironmentVariable("DocumentDbPrimaryKey")); + + [FunctionName("EventHubTrigger")] + public static async Task Run([EventHubTrigger("bfvatestted-testhub", Connection = "EventHubConnection")] EventData[] events, ILogger log) + { + foreach (EventData eventData in events) + { + try + { + string messageBody = Encoding.UTF8.GetString(eventData.Body.Array, eventData.Body.Offset, eventData.Body.Count); + + var data = JsonConvert.DeserializeObject(messageBody); + await SendEventToBot(data); + await Task.Yield(); + } + catch { } + } + } + + private static async Task SendEventToBot(EventDataType eventData) + { + // read from user preference store to determine where to send notifications + var databaseName = "UserPreference"; + var databaseCollectionName = "UserPreferenceCollection"; + await documentDbclient.CreateDatabaseIfNotExistsAsync(new Database { Id = databaseName }); + await documentDbclient.CreateDocumentCollectionIfNotExistsAsync(UriFactory.CreateDatabaseUri(databaseName).ToString(), new DocumentCollection { Id = databaseCollectionName }); + + var userPreferences = documentDbclient.CreateDocumentQuery(UriFactory.CreateDocumentCollectionUri(databaseName, databaseCollectionName)).Where(r => r.UserId == eventData.UserId); + UserPreference userPreference = null; + + if (userPreferences.Count() > 0) + { + foreach (var preference in userPreferences) + { + userPreference = preference; + break; + } + } + + if (userPreference == null) + { + userPreference = new UserPreference + { + UserId = eventData.UserId, + SendNotificationToConversation = true, + SendNotificationToMobileDevice = true, + }; + await documentDbclient.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri(databaseName, databaseCollectionName), userPreference); + } + + // Post the notification to devices + if (userPreference.SendNotificationToMobileDevice) + { + // post the notification to devices using NotificationHub library Microsoft.Azure.NotificationHubs + // https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-aspnet-backend-ios-apple-apns-notification + } + else + { + Console.WriteLine($"Not sending the message to the device because the user preference has the setting as disabled for user {eventData.UserId}"); + } + + // Post the message to the Bot + if (userPreference.SendNotificationToConversation) + { + // Connect to the DirectLine service + var client = new DirectLineClient(Environment.GetEnvironmentVariable("DirectLineSecret")); + + var conversation = await client.Conversations.StartConversationAsync(); + + // Use the text passed to the method (by the user) + // to create a new message + var userMessage = Activity.CreateMessageActivity() as Activity; + userMessage.Text = eventData.Message; + userMessage.Type = ActivityTypes.Event; + userMessage.Name = "BroadcastEvent"; + userMessage.Value = eventData; + userMessage.From = new ChannelAccount("user1"); + + var response = await client.Conversations.PostActivityAsync(conversation.ConversationId, userMessage); + } + else + { + Console.WriteLine($"Not sending the message to the bot because the user preference has the setting as disabled for user {eventData.UserId}"); + } + } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/EventHandler/UserPreference.cs b/samples/EnterpriseNotification/EventHandler/UserPreference.cs new file mode 100644 index 0000000000..54f7bf756f --- /dev/null +++ b/samples/EnterpriseNotification/EventHandler/UserPreference.cs @@ -0,0 +1,14 @@ +using Newtonsoft.Json; + +namespace EventHandler +{ + public class UserPreference + { + [JsonProperty(PropertyName = "id")] + public string UserId { get; set; } + + public bool SendNotificationToConversation { get; set; } + + public bool SendNotificationToMobileDevice { get; set; } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/EventHandler/host.json b/samples/EnterpriseNotification/EventHandler/host.json new file mode 100644 index 0000000000..b9f92c0dee --- /dev/null +++ b/samples/EnterpriseNotification/EventHandler/host.json @@ -0,0 +1,3 @@ +{ + "version": "2.0" +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/EventProducer/EventProducer.csproj b/samples/EnterpriseNotification/EventProducer/EventProducer.csproj new file mode 100644 index 0000000000..9dd445a10f --- /dev/null +++ b/samples/EnterpriseNotification/EventProducer/EventProducer.csproj @@ -0,0 +1,22 @@ + + + + Exe + netcoreapp2.2 + + + + + + + + + + + + + Always + + + + diff --git a/samples/EnterpriseNotification/EventProducer/Program.cs b/samples/EnterpriseNotification/EventProducer/Program.cs new file mode 100644 index 0000000000..b3ca291ea0 --- /dev/null +++ b/samples/EnterpriseNotification/EventProducer/Program.cs @@ -0,0 +1,58 @@ +using System; +using System.IO; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Azure.EventHubs; +using Microsoft.Extensions.Configuration; + +namespace EventProducer +{ + class Program + { + private static EventHubClient eventHubClient; + private static IConfigurationRoot configurationRoot; + + static void Main(string[] args) + { + var builder = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); + + configurationRoot = builder.Build(); + MainAsync(args).GetAwaiter().GetResult(); + } + + private static async Task MainAsync(string[] args) + { + var connectionStringBuilder = new EventHubsConnectionStringBuilder(configurationRoot.GetValue("EventHubConnectionString")) + { + EntityPath = configurationRoot.GetValue("EventHubName") + }; + + eventHubClient = EventHubClient.CreateFromConnectionString(connectionStringBuilder.ToString()); + + await SendMessagesToEventHub(); + + await eventHubClient.CloseAsync(); + + Console.WriteLine("Press ENTER to exit."); + Console.ReadLine(); + } + + private static async Task SendMessagesToEventHub() + { + try + { + var message = "{'userid':'c7879ddc-9b7a-4ffb-b934-abc1b34a41ba','message':'heres an event'}"; + Console.WriteLine($"Sending message: {message}"); + await eventHubClient.SendAsync(new EventData(Encoding.UTF8.GetBytes(message))); + } + catch (Exception ex) + { + Console.WriteLine($"{DateTime.Now} > Exception: {ex.Message}"); + } + + Console.WriteLine("message sent."); + } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/EventProducer/appsettings.json b/samples/EnterpriseNotification/EventProducer/appsettings.json new file mode 100644 index 0000000000..653a95eaad --- /dev/null +++ b/samples/EnterpriseNotification/EventProducer/appsettings.json @@ -0,0 +1,4 @@ +{ + "EventHubName": "", + "EventHubConnectionString": "" +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/README.md b/samples/EnterpriseNotification/README.md new file mode 100644 index 0000000000..66137a633d --- /dev/null +++ b/samples/EnterpriseNotification/README.md @@ -0,0 +1,89 @@ +![Bot Framework Solutions](/docs/media/bot_framework_solutions_header.png) + +In Enterprise world, there is often the need of notifying employees for various things, on various channels. With the bots as part of the system, there's often the need of an approach to be able to broadcast notifications to employees through ongoing conversational channels such as Teams, as well as sending notifications directly onto employees' mobile devices. This sample is an MVP (minimum viable product) that demonstrates how to build the notification/broadcasting scenario with Virtual Assistant and various Azure resources. + +# Prerequisites: + +Azure Event Hub (https://azure.microsoft.com/en-us/services/event-hubs/) +Azure Function (https://azure.microsoft.com/en-us/services/functions/) +Azure Notification Hub (https://azure.microsoft.com/en-us/services/notification-hubs/) +Azure Cosmos DB (https://azure.microsoft.com/en-us/services/cosmos-db/) + +# Flow: + +> Azure Event Hub + +In this sample, Azure Event Hub is the centralized service that manages events gathered from different parts of the system. If we want any event to reach user eventually, it has to flow into the Azure Event Hub first. In this sample, we demonstrate how to achieve it by creating a console application that sends an event to the Azure Event Hub under: + +/samples/EnterpriseNotification/EventProducer + +In Program.cs, we simply use Azure EventHub library (Microsoft.Azure.EventHubs) to post an event to an Azure Event Hub service. + +> Azure Function + +After an event is posted to the Azure Event Hub, we use an Azure Function service to handle events. The reason we use Azure Function is as follows: +- Azure Function can easily setup triggers against different Azure services as sources, Event Hub trigger is one of those. +- Azure Function is easy to scale against Event Hub services by managing locks on partitions of the Azure Event Hub internally as part of the framework + +The Event Handler code is under: + +/samples/EnterpriseNotification/EventHandler + +The function we created is within Function1.cs, under the static method 'Run'. In there we can specify EventTrigger info using: + +```csharp +public static async Task Run([EventHubTrigger("bfvatestted-testhub", Connection = "EventHubConnection")] EventData[] events, ILogger log)` +``` + +The 'Connection' property is configured in AppSettings of the Azure Function. + +Once an event is posted into the Event Hub, an instance of the Azure Function will be created with the list of events being passed. Then the 'Run' function will launch. + +This function performs the following tasks: +- Unpack the event +- Read from a UserPreference store to check user's profile settings +- If the user has 'SendNotificationToMobileDevice' flag to be true, then send a notification to user's mobile device with the event content. +- If the user has 'SendNotificationToConversation' flag to be true, then send a message to the bot with the event content. + +We're using Cosmos DB as UserPreference store. The code will check if there's a record for the particular user existing. If yes then just read from the store, and if no then add a record with both settings to be true by default. + +When sending a notification to user's mobile device, this sample doesn't include the implementation for that because it requires a lot of configuration. You can check documentation // https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-aspnet-backend-ios-apple-apns-notification for reference. + +When sending a message to the bot to trigger a message sent to the user, the Azure Function requires a few more AppSettings to work: + +"DirectLineSecret" +"DocumentDbEndpointUrl" +"DocumentDbPrimaryKey" + +Once you add them into the AppSettings of the Azure Function the sample will work properly. + +The message the Event Handler is sending to the bot is an event, with the name 'BroadcastEvent' and value as the event it receives from the Event Hub. + +> Virtual Assistant + +This is the bot that will send the message it receives from the Event Handler back to the user. The code is under: + +/samples/EnterpriseNotification/VirtualAssistant + +This is the code that handles 'BroadcastEvent' event type: + +``` csharp +case "BroadcastEvent": + var eventData = JsonConvert.DeserializeObject(dc.Context.Activity.Value.ToString()); + + var proactiveModel = await _proactiveStateAccessor.GetAsync(dc.Context, () => new ProactiveModel()); + + var conversationReference = proactiveModel[MD5Util.ComputeHash(eventData.UserId)].Conversation; + await dc.Context.Adapter.ContinueConversationAsync(_appCredentials.MicrosoftAppId, conversationReference, ContinueConversationCallback(dc.Context, eventData.Message), cancellationToken); + break; +``` + +The '_proactiveStateAccessor' is the state that contains a mapping between user id and previously saved user conversation. It retrieves the proactive state from a store that was previously saved by enabling ProactiveStateMiddleware in DefaultAdapter.cs: + +``` csharp +Use(new ProactiveStateMiddleware(proactiveState)); +``` + +This middleware will save user's conversation reference objects into the state so it can be used later to send message to user proactively. + +With all this code in place when an event is being sent to a user through the bot the user will get the message in the ongoing conversation in a channel. Not all channels support proactive message at this moment. Webchat, directline and emulator are the ones we are certain that proactive messages can be supported. If you user other channels, it'll be up to the channel setting to determine whether that channel will route the message back to the user properly \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/.filenesting.json b/samples/EnterpriseNotification/VirtualAssistant/.filenesting.json new file mode 100644 index 0000000000..90c31b9e8a --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/.filenesting.json @@ -0,0 +1,15 @@ +{ + "help": "https://go.microsoft.com/fwlink/?linkid=866610", + "dependentFileProviders": { + "add": { + "pathSegment": { + "add": { + ".*": [ + ".json", + ".resx" + ] + } + } + } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultAdapter.cs b/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultAdapter.cs new file mode 100644 index 0000000000..a7912b2643 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultAdapter.cs @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Azure; +using Microsoft.Bot.Builder.Integration.AspNet.Core; +using Microsoft.Bot.Builder.Solutions.Middleware; +using Microsoft.Bot.Builder.Solutions.Proactive; +using Microsoft.Bot.Connector.Authentication; +using Microsoft.Bot.Schema; +using VirtualAssistant.Responses.Main; +using VirtualAssistant.Services; + +namespace VirtualAssistant.Adapters +{ + public class DefaultAdapter : BotFrameworkHttpAdapter + { + public DefaultAdapter( + BotSettings settings, + ICredentialProvider credentialProvider, + IBotTelemetryClient telemetryClient, + BotStateSet botStateSet, + ProactiveState proactiveState) + : base(credentialProvider) + { + OnTurnError = async (turnContext, exception) => + { + await turnContext.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"{exception.Message}")); + await turnContext.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"{exception.StackTrace}")); + await turnContext.SendActivityAsync(MainStrings.ERROR); + telemetryClient.TrackException(exception); + }; + + Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); + Use(new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: true)); + Use(new ShowTypingMiddleware()); + Use(new SetLocaleMiddleware(settings.DefaultLocale ?? "en-us")); + Use(new EventDebuggerMiddleware()); + Use(new AutoSaveStateMiddleware(botStateSet)); + Use(new ProactiveStateMiddleware(proactiveState)); + } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultWebSocketAdapter.cs b/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultWebSocketAdapter.cs new file mode 100644 index 0000000000..6a39c4be76 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultWebSocketAdapter.cs @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Azure; +using Microsoft.Bot.Builder.Solutions.Middleware; +using Microsoft.Bot.Connector.Authentication; +using Microsoft.Bot.Protocol.StreamingExtensions.NetCore; +using Microsoft.Bot.Schema; +using Microsoft.Extensions.Configuration; +using VirtualAssistant.Responses.Main; +using VirtualAssistant.Services; + +namespace VirtualAssistant.Adapters +{ + public class DefaultWebSocketAdapter : WebSocketEnabledHttpAdapter + { + public DefaultWebSocketAdapter( + IConfiguration config, + BotSettings settings, + ICredentialProvider credentialProvider, + IBotTelemetryClient telemetryClient, + BotStateSet botStateSet) + : base(config, credentialProvider) + { + OnTurnError = async (turnContext, exception) => + { + await turnContext.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"{exception.Message}")); + await turnContext.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"{exception.StackTrace}")); + await turnContext.SendActivityAsync(MainStrings.ERROR); + telemetryClient.TrackException(exception); + }; + + Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); + Use(new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: true)); + Use(new ShowTypingMiddleware()); + Use(new SetLocaleMiddleware(settings.DefaultLocale ?? "en-us")); + Use(new EventDebuggerMiddleware()); + Use(new AutoSaveStateMiddleware(botStateSet)); + Use(new SetSpeakMiddleware(settings.DefaultLocale ?? "en-us")); + } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Bots/DialogBot.cs b/samples/EnterpriseNotification/VirtualAssistant/Bots/DialogBot.cs new file mode 100644 index 0000000000..8583f76735 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Bots/DialogBot.cs @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Dialogs; +using Microsoft.Bot.Schema; +using Microsoft.Extensions.DependencyInjection; + +namespace VirtualAssistant.Bots +{ + public class DialogBot : ActivityHandler + where T : Dialog + { + private readonly IBotTelemetryClient _telemetryClient; + private DialogSet _dialogs; + + public DialogBot(IServiceProvider serviceProvider, T dialog) + { + var conversationState = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(ConversationState)); + _telemetryClient = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(IBotTelemetryClient)); + + var dialogState = conversationState.CreateProperty(nameof(VirtualAssistant)); + _dialogs = new DialogSet(dialogState); + _dialogs.Add(dialog); + } + + public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken) + { + // Client notifying this bot took to long to respond (timed out) + if (turnContext.Activity.Code == EndOfConversationCodes.BotTimedOut) + { + _telemetryClient.TrackTrace($"Timeout in {turnContext.Activity.ChannelId} channel: Bot took too long to respond.", Severity.Information, null); + return; + } + + var dc = await _dialogs.CreateContextAsync(turnContext); + + if (dc.ActiveDialog != null) + { + var result = await dc.ContinueDialogAsync(); + } + else + { + await dc.BeginDialogAsync(typeof(T).Name); + } + } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Connected Services/Application Insights/ConnectedService.json b/samples/EnterpriseNotification/VirtualAssistant/Connected Services/Application Insights/ConnectedService.json new file mode 100644 index 0000000000..d15936a838 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Connected Services/Application Insights/ConnectedService.json @@ -0,0 +1,7 @@ +{ + "ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider", + "Version": "8.13.10627.1", + "GettingStartedDocument": { + "Uri": "https://go.microsoft.com/fwlink/?LinkID=798432" + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.de.json b/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.de.json new file mode 100644 index 0000000000..54f16bd051 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.de.json @@ -0,0 +1,69 @@ +{ + "type": "AdaptiveCard", + "id": "NewUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Dark", + "text": "Hi, ich bin **dein** Virtueller Assistent", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Dark", + "text": "Lesen Sie mehr, um zu sehen, was ich tun kann.", + "wrap": true + } + ] + } + ], + "actions": [ + { + "type": "Action.Submit", + "title": "Loslegen", + "data": { + "action": "startOnboarding" + } + }, + { + "type": "Action.OpenUrl", + "title": "Dokumentation", + "url": "https://aka.ms/virtualassistantdocs" + }, + { + "type": "Action.OpenUrl", + "title": "Verbundene Konten", + "url": "https://aka.ms/linkedaccountsdocs" + }, + { + "type": "Action.OpenUrl", + "title": "Kompetenzen", + "url": "https://aka.ms/ConversationalAISkills" + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Hi, ich bin **dein** Virtueller Assistent! " +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.es.json b/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.es.json new file mode 100644 index 0000000000..a6e9051caa --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.es.json @@ -0,0 +1,69 @@ +{ + "type": "AdaptiveCard", + "id": "NewUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Dark", + "text": "Hola, soy tu Virtual Assistant", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Dark", + "text": "Lee más para ver lo que puedo hacer.", + "wrap": true + } + ] + } + ], + "actions": [ + { + "type": "Action.Submit", + "title": "Empezar", + "data": { + "action": "startOnboarding" + } + }, + { + "type": "Action.OpenUrl", + "title": "Documentación", + "url": "https://aka.ms/virtualassistantdocs" + }, + { + "type": "Action.OpenUrl", + "title": "Cuentas vinculadas", + "url": "https://aka.ms/linkedaccountsdocs" + }, + { + "type": "Action.OpenUrl", + "title": "Habilidades", + "url": "https://aka.ms/ConversationalAISkills" + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Hola, soy tu Virtual Assistant! Lee más para ver lo que puedo hacer." +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.fr.json b/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.fr.json new file mode 100644 index 0000000000..dd4d35a9c0 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.fr.json @@ -0,0 +1,69 @@ +{ + "type": "AdaptiveCard", + "id": "NewUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Dark", + "text": "Salut, je suis votre Virtual Assistant", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Dark", + "text": "Lire la suite pour voir ce que je peux faire.", + "wrap": true + } + ] + } + ], + "actions": [ + { + "type": "Action.Submit", + "title": "Commencer", + "data": { + "action": "startOnboarding" + } + }, + { + "type": "Action.OpenUrl", + "title": "Documentation", + "url": "https://aka.ms/virtualassistantdocs" + }, + { + "type": "Action.OpenUrl", + "title": "Comptes liés", + "url": "https://aka.ms/linkedaccountsdocs" + }, + { + "type": "Action.OpenUrl", + "title": "Compétences", + "url": "https://aka.ms/ConversationalAISkills" + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Salut, je suis votre Virtual Assistant! Lire la suite pour voir ce que je peux faire." +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.it.json b/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.it.json new file mode 100644 index 0000000000..b9132a9084 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.it.json @@ -0,0 +1,69 @@ +{ + "type": "AdaptiveCard", + "id": "NewUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Dark", + "text": "Ciao, sono il **tuo** Virtual Assistant", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Dark", + "text": "Ora che sono pronto, leggi di più per vedere cosa posso fare.", + "wrap": true + } + ] + } + ], + "actions": [ + { + "type": "Action.Submit", + "title": "Iniziare", + "data": { + "action": "startOnboarding" + } + }, + { + "type": "Action.OpenUrl", + "title": "Documentazione", + "url": "https://aka.ms/virtualassistantdocs" + }, + { + "type": "Action.OpenUrl", + "title": "Account collegati", + "url": "https://aka.ms/linkedaccountsdocs" + }, + { + "type": "Action.OpenUrl", + "title": "Abilità", + "url": "https://aka.ms/ConversationalAISkills" + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Ciao, sono il **tuo** Virtual Assistant! Ora che sono pronto, leggi di più per vedere cosa posso fare." +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.json b/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.json new file mode 100644 index 0000000000..1ebffe0758 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.json @@ -0,0 +1,64 @@ +{ + "type": "AdaptiveCard", + "id": "NewUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Light", + "text": "Hi, I'm **your** Virtual Assistant", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Light", + "text": "Now that I'm up and running, explore the links here to learn what I can do.", + "wrap": true + } + ] + } + ], + "actions": [ + { + "type": "Action.Submit", + "title": "Get started", + "data": { + "action": "startOnboarding" + } + }, + { + "type": "Action.OpenUrl", + "title": "Documentation", + "url": "https://aka.ms/virtualassistantdocs" + }, + { + "type": "Action.OpenUrl", + "title": "Skills", + "url": "https://aka.ms/botframeworkskills" + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Hi, I'm **your** Virtual Assistant. Now that I'm up and running, explore the links here to learn what I can do." +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.zh.json b/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.zh.json new file mode 100644 index 0000000000..7c77a5cce1 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Content/NewUserGreeting.zh.json @@ -0,0 +1,69 @@ +{ + "type": "AdaptiveCard", + "id": "NewUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Dark", + "text": "嗨, 我是你的虚拟助理", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Dark", + "text": "在这里探索, 看看我能做些什么。", + "wrap": true + } + ] + } + ], + "actions": [ + { + "type": "Action.Submit", + "title": "开始吧", + "data": { + "action": "startOnboarding" + } + }, + { + "type": "Action.OpenUrl", + "title": "文档", + "url": "https://aka.ms/virtualassistantdocs" + }, + { + "type": "Action.OpenUrl", + "title": "关联账户", + "url": "https://aka.ms/linkedaccountsdocs" + }, + { + "type": "Action.OpenUrl", + "title": "技能", + "url": "https://aka.ms/ConversationalAISkills" + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "嗨, 我是你的虚拟助理! 在这里探索, 看看我能做些什么。" +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.de.json b/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.de.json new file mode 100644 index 0000000000..1e66e219c9 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.de.json @@ -0,0 +1,56 @@ +{ + "type": "AdaptiveCard", + "id": "ReturningUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "items": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Light", + "text": "Willkommen zurück!", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Light", + "text": "Wie kann ich helfen?", + "wrap": true + } + ], + "width": "stretch" + } + ] + } + ] + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Willkommen zurück!" +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.es.json b/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.es.json new file mode 100644 index 0000000000..5e91322cc6 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.es.json @@ -0,0 +1,56 @@ +{ + "type": "AdaptiveCard", + "id": "ReturningUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "items": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Light", + "text": "Bienvenido!", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Light", + "text": "¿Cómo puedo ayudar?", + "wrap": true + } + ], + "width": "stretch" + } + ] + } + ] + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Bienvenido!" +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.fr.json b/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.fr.json new file mode 100644 index 0000000000..9868fcc5ba --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.fr.json @@ -0,0 +1,56 @@ +{ + "type": "AdaptiveCard", + "id": "ReturningUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "items": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Light", + "text": "Bienvenue!", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Light", + "text": "Comment puis-je aider?", + "wrap": true + } + ], + "width": "stretch" + } + ] + } + ] + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Bienvenue!" +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.it.json b/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.it.json new file mode 100644 index 0000000000..e46db73649 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.it.json @@ -0,0 +1,56 @@ +{ + "type": "AdaptiveCard", + "id": "ReturningUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "items": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Light", + "text": "Benvenuto!", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Light", + "text": "Come posso aiutarla?", + "wrap": true + } + ], + "width": "stretch" + } + ] + } + ] + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Benvenuto!" +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.json b/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.json new file mode 100644 index 0000000000..979be4b359 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.json @@ -0,0 +1,56 @@ +{ + "type": "AdaptiveCard", + "id": "ReturningUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "items": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Light", + "text": "Welcome back!", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Light", + "text": "How can I help?", + "wrap": true + } + ], + "width": "stretch" + } + ] + } + ] + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Welcome back!" +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.zh.json b/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.zh.json new file mode 100644 index 0000000000..f5571eb113 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Content/ReturningUserGreeting.zh.json @@ -0,0 +1,56 @@ +{ + "type": "AdaptiveCard", + "id": "ReturningUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "items": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Light", + "text": "欢迎回来", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Light", + "text": "我能帮上什么忙吗", + "wrap": true + } + ], + "width": "stretch" + } + ] + } + ] + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "欢迎回来!" +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Controllers/BotController.cs b/samples/EnterpriseNotification/VirtualAssistant/Controllers/BotController.cs new file mode 100644 index 0000000000..88b2443a54 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Controllers/BotController.cs @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Integration.AspNet.Core; +using Microsoft.Bot.Protocol.StreamingExtensions.NetCore; + +namespace VirtualAssistant.Controllers +{ + [Route("api/messages")] + [ApiController] + public class BotController : ControllerBase + { + private readonly IBotFrameworkHttpAdapter _adapter; + private readonly WebSocketEnabledHttpAdapter _webSocketEnabledHttpAdapter; + private readonly IBot _bot; + + public BotController(IBotFrameworkHttpAdapter httpAdapter, WebSocketEnabledHttpAdapter webSocketEnabledHttpAdapter, IBot bot) + { + _adapter = httpAdapter; + _webSocketEnabledHttpAdapter = webSocketEnabledHttpAdapter; + _bot = bot; + } + + [HttpPost] + public async Task PostAsync() + { + // Delegate the processing of the HTTP POST to the adapter. + // The adapter will invoke the bot. + await _adapter.ProcessAsync(Request, Response, _bot); + } + + [HttpGet] + public async Task StartWebSocketAsync() + { + // Delegate the processing of the Websocket Get request to the adapter. + // The adapter will invoke the bot. + await _webSocketEnabledHttpAdapter.ProcessAsync(Request, Response, _bot); + } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/de/general.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/de/general.lu new file mode 100644 index 0000000000..71039f2183 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/de/general.lu @@ -0,0 +1,523 @@ +> # Intent definitions + +## Cancel +- Abbrechen +- App stornieren +- Absage +- Absagen +- Streichung nie +- Absage +- Abgebrochen +- abgebrochen +- Nichts tun +- Tu das nicht +- Das nicht mehr tun +- Vergessen Sie es +- Gehen Sie weg +- Nur absagen +- Nur absagen +- Nervendenken +- Vergessen Sie es +- Egal, absagen +- Nichts dagegen, dass +- Keine Absage +- Keine Kündigung +- Kein Absagen +- Kein Absagen, dass +- Keine Ahnung +- Keine Absage +- Kein Absagen +- Nichts egal +- Nichts bitte +- oh absagen +- Oh nicht, dass +- Bitte nichts tun +- Beenden +- Tut mir leid, nicht + + +## Confirm +- Bestätigen +- Tu es +- Ende +- Für die +- Großartig +- Ich bin mir sicher +- Es ist in Ordnung +- Keine Zweifel +- Natürlich +- Oh ja +- Oh ja +- Okay +- OK für jetzt +- Okay +- perfekt +- Perfektes Dankeschön +- Richting +- Richtig ja +- Klingt gut +- Hört sich gut an +- Klingt gut +- Hört sich gut an +- Klingt großartig +- Klingt perfekt +- Sicher +- Sicher tut +- Sicher ist +- Sicher Sache +- Ja, ja +- Vielen Dank +- Danke ja +- Das ist richtig +- Das ist richtig +- Das Recht +- Das klingt gut +- Das ist in Ordnung +- Das ist gut +- Sehr gut +- Bereits +- Ja +- Ja Liebling +- Ja bro +- Ja, Kumpel +- Ja cool +- Ja voran +- Ja, los geht es +- Ja gut +- Ja + + +## Escalate +- Kann ich mit einer Person sprechen +- Kontaktaufnahme +- Kontakt zum Kundendienst +- Kundenservice +- Menschliche Dienste +- Ich brauche manuellen Kundenservice +- Ich brauche echte menschliche Hilfe +- Ich brauche Unterstützung +- Ich möchte mit einem Menschen sprechen +- Ich möchte mit einem echten Menschen sprechen +- Gibt es jemanden, mit dem ich sprechen kann +- Gibt es einen echten Menschen +- Gibt es eine echte Person +- Sprechen Sie mit einem Menschen + + +## FinishTask +- Alles fertig +- Alles gesetzt +- fertig +- Beenden +- Fertig +- Fertig mit +- Ich bin fertig +- Ich bin fertig +- Es endete +- Es ist geschafft +- Es ist fertig +- Nur nur sein +- Senden +- Einreichen + + +## GoBack +- Zurück +- Bitte zurück +- Zurück zu +- Zurück zum letzten +- Zurück zum letzten Schritt +- Ich melde mich wieder +- Bitte melden Sie sich +- Endlich wieder +- Zurück +- Zurück +- Gehen Sie bitte zurück +- Zurück zu +- Letzter Schritt +- No go back to +- No no go back to +- Bitte zurück +- Rückgabe + + +## Help +- Jede Hilfe +- Können Sie helfen +- Kannst du mir helfen +- Geben Sie mir Hilfe +- Hilfe +- Wie bekomme ich es +- Wie es geht +- Ich brauche Hilfe +- Ich brauche ein wenig Hilfe +- Ich brauche Hilfe +- Gibt es Hilfe +- Offene Hilfe +- Bitte helfen +- Einige Hilfe +- Wer kann mir helfen + +## Logout +- Unterschrift +- Vergesst mich +- Unterschreiben +- logout +- Log-out + +## None +- Alle +- Ich will sie alle +- Ich möchte sie alle + + +## ReadAloud +- Können Sie es lesen +- Können Sie lesen, dass +- Können Sie das für mich lesen +- Können Sie Seite laut lesen +- Könntest du mir sagen, was das sagt +- Details laut +- Ich lese das für mich +- Ich muss diese Seite hören +- Ich möchte, dass Sie das für mich lesen +- Lesen Sie diese Seite +- Lesen Sie +- Lesen Sie es +- Lesen Sie mir bitte die Seite +- Lesen Sie bitte meine neueste E-Mail +- Lesen Sie hier +- Bitte lesen Sie das laut +- Lesen Sie bitte diese Seite +- Bitte lesen Sie diese Seite laut +- Bitte lesen Sie diese Seite laut aus +- Lesen Sie das mir +- Lesen Sie alle auf dem Bildschirm zu mir +- Vorlesen +- Den aktuellen Text auf dem Bildschirm vorlesen +- Vorlesen Sie die Akte laut +- Lesen Sie es +- Vorlesen +- Lesen Sie es laut +- Lesen Sie es auslaut +- Lesen Sie es bitte +- Lesen Sie es mir +- Lesen Sie mir diese Seite +- Lesen Sie meine Liste +- Vorlesen vorlesen +- Leseseite +- Seite laut lesen +- Seite lesen +- Satz laut vorgelesen +- Text gelesen +- Text laut gelesen +- Lesen Sie, dass +- Lesen Sie das laut +- Lesen Sie die Seite +- Lesen Sie die Seite auf dem Bildschirm zu mir +- Die Seite laut vorlesen +- Lesen Sie die Seite zu mir +- Text zu mir lesen +- Lesen Sie die Wörter auf dieser Seite +- Lesen Sie das bitte für mich +- Lesen Sie diese Seite +- Lesen Sie diese Seite laut +- Diese Seite laut vorlesen +- Lesen Sie diese Seite zu mir +- Lesen Sie mir +- Lesen Sie, was mir gerade auf dem Bildschirm steht +- Sprechen Sie von dem, was auf dieser Seite ist +- Lesen Sie damit +- Erzähl mir die Informationen auf dem Bildschirm +- Sagen Sie mir den aktuellen Text auf dem Bildschirm +- Vokalisieren Sie, was s auf der Seite +- Was sagt die Seite +- Ich bitte Sie, das für mich zu lesen +- Würdest du das laut lesen bitte +- Das würden Sie mir bitte vorlesen + + +## Reject +- Ich mag es nicht +- Ich lehne ab +- Negative +- Nie +- Nein +- Nein, das will ich nicht +- Spätestens +- Kein Abschied +- Nicht mehr nein +- Oh nein +- Im Nein auf der +- Nein danke +- Nein, das nicht +- Keine Ablehnung +- Nein, danke +- Nein, danke +- Auf keinen Fall +- Kein Unrecht +- Nein +- Nicht +- Überhaupt nicht +- Nicht einmal nah +- Nicht genau +- Jetzt nicht +- Nicht ganz +- Nicht erst jetzt +- Nicht das +- Nicht viel +- Oh nein +- Ablehnen +- Absage + + +## Repeat +- Wieder +- Könntest du es noch einmal sagen +- Ich hörte nicht wieder +- Ich habe nicht gehört +- Entschuldigung +- Wiederholen +- Wiederholung bitte +- Wiederholen Sie das +- Sag noch einmal +- Sagen Sie bitte noch einmal +- Sagen Sie das noch einmal +- Tut mir Leid +- Was +- Was hast du gesagt +- Was war das wieder + + +## SelectAny +- Eins davon +- Jeder ist ok +- Jeder ist in Ordnung +- Etwas +- Wählen Sie jemanden +- Wählen Sie einen von ihm zufällig aus +- Entscheiden Sie sich für einen zufälligen +- Entscheiden Sie sich für irgendetwas +- Wählen Sie eine Zufallswahl aus +- Wählen Sie einen Zufallsfall aus +- Wählen Sie eine +- Wählen Sie jede Wahl +- Wählen Sie eine davon aus + + +## SelectItem +- Letzter wählen +- Wählen Sie die letzte +- Wählen Sie Nr. 2 +- Wählen Sie die {DirectionalReference=Unten links} +- Die erste Wahl treffen +- Wählen Sie die vierte +- Wählen Sie die {DirectionalReference=Oben links} Wahl +- Wählen Sie die {DirectionalReference=Oben rechts} Eine +- Wählen {DirectionalReference=Oben rechts} +- Wählen {DirectionalReference=Oben rechts} Eine +- Ich mag {DirectionalReference=Links} Eine +- Ich mag zweite +- Ich mag den zweiten +- Ich mag die {DirectionalReference=Unteres} Eine +- Ich mag den ersten +- Ich mag den dritten +- Ich mag die dritte Wahl +- Ich mag die {DirectionalReference=Oben rechts} Eine +- Ich mag die {DirectionalReference=Oben rechts} +- Ich mag {DirectionalReference=Oben rechts} +- Ich möchte {DirectionalReference=Unteres} +- Ich will Vierter +- Ich möchte {DirectionalReference=Links} +- Ich möchte {DirectionalReference=Richting} Eine +- Ich will den ersten +- Ich will die vierte Wahl +- Ich will die {DirectionalReference=Links} +- Ich will die {DirectionalReference=Niedriger} Wahl +- Ich will die {DirectionalReference=Richting} Eine +- Ich will den zweiten +- Ich will den dritten +- Ich möchte wählen {DirectionalReference=Unteres} Eine +- Ich möchte wählen {DirectionalReference=Unteres Recht} +- Ich möchte wählen {DirectionalReference=Richting} +- Ich möchte den zweiten wählen +- Ich möchte die erste auswählen +- Ich möchte den vierten wählen +- Ich möchte die letzte Wahl treffen +- Ich möchte die {DirectionalReference=Links} Eine +- Ich möchte die {DirectionalReference=Niedriger} Wahl +- Ich möchte die {DirectionalReference=Richting} +- Ich möchte den Dritten wählen +- Entscheiden Sie sich für den ersten +- Entscheiden Sie sich für Letzte +- Entscheiden Sie sich für {DirectionalReference=Links} +- Entscheiden Sie sich für {DirectionalReference=Richting} Eine +- Entscheiden Sie sich für den letzten +- Entscheiden Sie sich für die {DirectionalReference=Links} Eine +- Entscheiden Sie sich für die {DirectionalReference=Niedriger} Wahl +- Entscheiden Sie sich für die {DirectionalReference=Richting} +- Entscheiden Sie sich für die zweite +- Für die zweite Wahl entscheiden +- Wählen Sie den vierten +- Auswählen {DirectionalReference=Niedriger} Eine +- Wählen Sie Nr. 5 +- Wählen Sie die {DirectionalReference=Unteres} Wahl +- Wählen Sie die erste +- Die letzte Wahl wählen +- Wählen Sie die {DirectionalReference=Niedriger} Eine +- Wählen Sie die {DirectionalReference=Richting} Eine +- Wählen Sie die dritte +- Wählen Sie die {DirectionalReference=Oben rechts} +- Dritter auswählen +- Auswählen {DirectionalReference=Oberen} +- Was ist mit dem letzten +- Was ist mit dem dritten + + +## SelectNone +- Ich möchte keinen wählen +- Ich möchte keine auswählen +- Ich will keines von beiden +- Ich will keine von ihnen +- Weder +- Keine davon +- Weder +- Weder einer von ihnen +- Weder danke +- nichts +- Keine +- Keiner von ihnen +- Nichts davon +- Keiner von ihnen dankt +- Nichts davon +- Nichts davon +- Sie sehen schlecht aus, können Sie mir andere Möglichkeiten geben + + +## ShowNext +- Und danach +- Anzeige mehr +- Displays mehr +- Geben Sie mir mehr +- Vorwärts +- Zum nächsten +- Gehen Sie zu den nächsten drei Punkten +- Ich muss zum nächsten +- Ich will mehr +- Mehr +- Zum nächsten +- nächster +- Mehr verraten +- Zeigt mir den Nächsten +- Mehr zeigen +- Zeigen Sie die nächsten 3 +- Die nächsten 4 Artikel anzeigen +- Zeigen Sie die nächste +- Die nächsten zwei Optionen anzeigen +- Mehr sagen +- Mehr sagen +- Was ist mit dem nächsten +- Was danach +- Was danach kommt +- Mehr dazu +- Was kommt als nächstes +- Was ist die nächste 2 +- Was kommt als nächstes + + +## ShowPrevious +- Zurück zum letzten +- Die vorherige mitbringen +- Anzeige vorher +- Zurück zum letzten +- Zurück zum letzten +- Zurück zum vorherigen +- Zurück zum letzten +- Gehen Sie vorher +- Zum vorherigen +- Zum vorherigen +- Voriges +- Vorigen bitte +- Zurück zum vorherigen +- Offenbaren +- Offenlegung zuvor +- Show früher +- Zeigen Sie mir die vorherige +- Show previous +- Zeigen Sie die vorherige +- Was davor +- Was ist die vorherige +- Was ist da + + +## StartOver +- Klar und wieder starten +- Könntest du es überfängt +- Bitte wieder anfangen +- Neu starten +- Neustart +- Wieder starten +- Start +- Start von vorn +- Anfangen +- Ein neues Kapitel aufschlagen + + +## Stop +- Baby einfach nur ruhig sein +- Sei still +- Seien Sie jetzt ruhig +- Kommen Sie zum Halt +- Entlassen +- Ende +- Ende +- Ausstieg +- Ausreise-Stopp +- Gott verschlossen +- Hey Stop +- Ich liebe dich, nicht mehr zu reden +- Ich meine, aufhören zu hören +- Ich sagte Halt +- Nur ruhig sein +- Mein Gott verschlossen +- Egal, halt +- Nicht ruhig sein +- Jetzt nicht ruhig sein +- No no no no no no no no no no no no not not halt to talking +- Keine Schließung +- Kein Halt +- Niemand interessiert sich nicht mehr zu reden +- Nirgendwo nur ruhig sein +- ach mein Gott verschlossen +- ok Stop +- ruhig +- Jetzt ruhig +- Halten Sie die Klappe +- Halt den Mund +- Abschalten ruhig +- Schweigen +- Mund zu +- Halten Sie bitte an +- hör auf zu reden +- Ausschalten +- Haltestelle abbiegen + + +> # Entity definitions + +$DirectionalReference:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:number + +$PREBUILT:ordinal + + +> # Phrase list definitions + + +> # List entities + + diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/en/general.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/en/general.lu new file mode 100644 index 0000000000..7ede276df9 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/en/general.lu @@ -0,0 +1,521 @@ +> # Intent definitions + +## Cancel +- cancel +- cancel app +- cancel cancel +- cancel it +- cancel never mind +- cancel that +- canceled +- cancelled +- do nothing +- don't do that +- don't do that anymore +- forget about it +- go away +- just cancel +- just cancel it +- nerver mind +- never mind +- never mind cancel +- never mind cancel that +- no cancel +- no cancel cancel +- no cancel it +- no cancel that +- no never mind +- no no cancel +- no no cancel it +- nothing never mind +- nothing please +- oh cancel +- oh don't do that +- please do nothing +- quit +- sorry, don't do it + + +## Confirm +- confirm +- do it +- fine +- go for it +- great +- i'm sure +- it's fine +- no doubt +- of course +- oh yeah +- oh yes +- ok +- ok for now +- okay +- perfect +- perfect thank you +- right +- right yes +- sounds good +- sounds good thank you +- sounds good thanks +- sounds good to me +- sounds great +- sounds perfect +- sure +- sure does +- sure is +- sure thing +- sure yes +- thank you very much +- thank you yes +- that is correct +- that is right +- that right +- that sounds good +- that's fine +- this is good +- very good +- ya +- yeah +- yeah baby +- yeah bro +- yeah buddy +- yeah cool +- yeah go ahead +- yeah go for it +- yeah good +- yes + + +## Escalate +- can i talk to a person +- contact support +- contact the customer service +- customer service +- human service +- i need manual customer service +- i need real human help +- i need support +- i want to talk to a human +- i want to talk to a real human +- is there any person i can talk to +- is there any real human +- is there any real person +- talk to a human + + +## FinishTask +- all finished +- all set +- done +- finish +- finished +- finished with +- i am done +- i am finished +- it finished +- it's done +- it's finished +- just be +- submit +- submit it + + +## GoBack +- back +- back please +- back to +- back to last +- back to last step +- get back +- get back please +- get back to last +- go back +- go back on +- go back please +- go back to +- last step +- no go back to +- no no go back to +- please return +- return + + +## Help +- any help +- can you help +- can you help me +- give me some help +- help +- how can i get it +- how to do it +- i need help +- i need some assist +- i need some help +- is there any help +- open help +- please help +- some help +- who can help me + +## Logout +- signout +- forget me +- sign out +- logout +- log out + +## None +- all of them +- i want them all +- i want to all of them + + +## ReadAloud +- can you read it +- can you read that +- can you read that for me +- can you you read page aloud +- could you tell me what that says +- detail aloud what that says +- hey read that for me +- i need to hear this page +- i would like you to read that for me +- make a reading of this page +- please read +- please read it +- please read me the page +- please read my latest email +- please read this +- please read this out loud +- please read this page +- please read this page aloud +- please read this page out loud +- please read this to me +- read all on the screen to me +- read aloud +- read aloud the current text onscreen +- read file aloud +- read it +- read it aloud +- read it out loud +- read it outloud +- read it please +- read it to me +- read me this page +- read my to list +- read outloud +- read page +- read page aloud +- read page outloud +- read sentence out loud +- read text +- read text aloud +- read that +- read that out loud +- read the page +- read the page onscreen to me +- read the page out loud +- read the page to me +- read the text to me +- read the words on this page +- read this for me please +- read this page +- read this page aloud +- read this page out loud +- read this page to me +- read to me +- read what is currently on the screen to me +- speak of what is on this page +- start reading this +- tell me about the information on the screen +- tell me the current text on screen +- vocalize what s on the page +- what does the page say +- would you please read that for me +- would you read that out loud please +- would you read that to me please + + +## Reject +- i don't like it +- i reject +- negative +- never +- no +- no i don't want that +- no later +- no leave it +- no more no +- no no +- no no no +- no no thank you +- no not that one +- no reject it +- no thank you +- no thanks +- no way +- no wrong +- nope +- not +- not at all +- not even close +- not exactly +- not now +- not quite +- not right now +- not that +- nothing much +- oh no +- reject +- reject it + + +## Repeat +- again +- could you say it again +- i didn't hear repeat again +- i have not heard +- pardon +- repeat +- repeat please +- repeat that +- say again +- say again please +- say that again +- sorry +- what +- what did you say +- what was that again + + +## SelectAny +- any of it +- any one is ok +- anyone is fine +- anything +- choose anyone +- choose one of it randomly +- opt for a random one +- opt for any of it +- select a random choice +- select a random one +- select any +- select any choice +- select any of it + + +## SelectItem +- choose last +- choose last one +- choose no.2 +- choose the {DirectionalReference=bottom left} +- choose the first choice +- choose the fourth one +- choose the {DirectionalReference=upper left} choice +- choose the {DirectionalReference=upper right} one +- choose {DirectionalReference=top right} +- choose {DirectionalReference=top right} one +- i like {DirectionalReference=left} one +- i like second +- i like second one +- i like the {DirectionalReference=bottom} one +- i like the first one +- i like the third +- i like the third choice +- i like the {DirectionalReference=top right} one +- i like the {DirectionalReference=upper right} +- i like {DirectionalReference=upper right} +- i want {DirectionalReference=bottom} +- i want fourth +- i want {DirectionalReference=left} +- i want {DirectionalReference=right} one +- i want the first +- i want the fourth choice +- i want the {DirectionalReference=left} +- i want the {DirectionalReference=lower} choice +- i want the {DirectionalReference=right} one +- i want the second one +- i want third one +- i want to choose {DirectionalReference=bottom} one +- i want to choose {DirectionalReference=lower right} +- i want to choose {DirectionalReference=right} +- i want to choose second one +- i want to choose the first one +- i want to choose the fourth +- i want to choose the last choice +- i want to choose the {DirectionalReference=left} one +- i want to choose the {DirectionalReference=lower} choice +- i want to choose the {DirectionalReference=right} +- i want to choose third +- opt for first one +- opt for last +- opt for {DirectionalReference=left} +- opt for {DirectionalReference=right} one +- opt for the last one +- opt for the {DirectionalReference=left} one +- opt for the {DirectionalReference=lower} choice +- opt for the {DirectionalReference=right} +- opt for the second +- opt for the second choice +- select fourth one +- select {DirectionalReference=lower} one +- select no.5 +- select the {DirectionalReference=bottom} choice +- select the first +- select the last choice +- select the {DirectionalReference=lower} one +- select the {DirectionalReference=right} one +- select the third one +- select the {DirectionalReference=upper right} +- select third +- select {DirectionalReference=upper} +- what about the last +- what about the third one + + +## SelectNone +- i don't want to choose any one +- i don't want to select any one +- i want neither of them +- i want none of them +- neither +- neither of those +- neither one +- neither one of them +- neither thank you +- none +- none none +- none none of them +- none of them +- none of them thank you +- none of these +- none of those +- they look bad, can you give me other choices + + +## ShowNext +- and after that +- display more +- displays more +- give me more +- go forward +- go to the next one +- go to the next three items +- i need to go to the next one +- i want more +- more +- move to the next one +- next +- reveal more +- show me the next +- show more +- show the next 3 +- show the next 4 items +- show the next one +- show the next two options +- tell me more +- tell more +- what about next one +- what after that +- what's after that +- what's more +- what's next +- what's the next 2 +- what's up next + + +## ShowPrevious +- back to the last one +- bring the previous one +- display previously +- get back to the last one +- go back to last one +- go back to previous +- go back to the last one +- go previously +- go to the previous +- go to the previous one +- previous one +- previous one please +- return to the previous one +- reveal previous +- reveal previously +- show earlier +- show me the previous one +- show previous +- show the previous one +- what before that +- what is the previous +- what's before that + + +## StartOver +- clear and start again +- could you start it over +- please begin again +- restart +- restart it +- start again +- start it over +- start over +- start over it +- turn over a new leaf + + +## Stop +- baby just be quiet +- be quiet +- be quiet now +- come on stop +- dismiss +- end +- end it +- exit exit +- exit stop +- god shut up +- hey stop +- i love you to stop talking +- i mean stop listening +- i said stop +- just be quiet +- my god shut up +- never mind stop +- no be quiet +- no be quiet now +- no no no no stop talking +- no shut up +- no stop +- nobody cares stop talking +- nowhere just be quiet +- oh my god shut up +- ok stop stop +- quiet +- quiet now +- shut the fuck up +- shut up +- shut up be quiet +- shut up quiet +- shut your mouth +- stop please +- stop talking +- turn off +- turn off stop + + +> # Entity definitions + +$DirectionalReference:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:number + +$PREBUILT:ordinal + + +> # Phrase list definitions + + +> # List entities diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/es/general.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/es/general.lu new file mode 100644 index 0000000000..87fdb01677 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/es/general.lu @@ -0,0 +1,523 @@ +> # Intent definitions + +## Cancel +- Cancelar +- cancelar aplicación +- cancelar cancelar +- cancelarlo +- cancelar no importa +- cancelar que +- Cancelado +- Cancelado +- no hacer nada +- No hagas eso +- no hagas eso ya +- Olvídalo +- Vete +- simplemente cancelar +- simplemente cancelarlo +- Mente de los nervios +- Olvídalo +- no importa cancelar +- no importa cancelar que +- no cancelar +- no cancelar cancelar +- no cancelarlo +- no cancelar que +- no no importa +- no no cancelar +- no no cancelarlo +- nada no importa +- nada por favor +- Oh cancelar +- Oh no hagas eso +- por favor no hacer nada +- Dejar +- lo siento, no lo hagas + + +## Confirm +- Confirmar +- Hazlo +- Final +- ir a por ello +- Gran +- Estoy seguro +- Está bien +- Sin duda +- Claro +- Venga, sí +- Venga, sí +- Vale +- OK por ahora +- Bien +- Perfecto +- perfecto gracias +- Correcto +- derecho sí +- Suena bien +- suena bien gracias +- suena bien gracias +- me suena bien +- Excelente +- suena perfecto +- Seguro +- seguro que no +- seguro es +- Claro +- seguro que sí +- Muchas gracias +- Gracias sí +- que es correcto +- que es correcto +- ese derecho +- que suena bien +- Está bien +- Está bueno +- Muy bien +- ya +- Sí +- Sí bebé +- sí bro +- sí amigo +- sí fresco +- sí adelante +- sí ir a por ello +- sí bueno +- Sí + + +## Escalate +- puedo hablar con una persona +- Contactar con el soporte +- Contacte con el servicio al cliente +- servicio al cliente +- servicio humano +- necesito servicio al cliente manual +- necesito ayuda humana real +- necesito apoyo +- Quiero hablar con un humano +- Quiero hablar con un humano real +- ¿Hay alguna persona con la que pueda hablar +- ¿Hay algún humano real +- ¿Hay alguna persona real +- hablar con un humano + + +## FinishTask +- todo terminado +- Todo listo +- Hecho +- Terminar +- Terminado +- terminado con +- Estoy hecho +- Estoy acabado +- terminó +- Está hecho +- ha terminado +- sólo ser +- Enviar +- enviarlo + + +## GoBack +- Atrás +- volver por favor +- volver a +- volver al último +- volver al último paso +- Vuelve +- volver por favor +- volver al último +- Volver +- volver a +- volver por favor +- volver a +- último paso +- no volver a +- no no volver a +- por favor regrese +- devolución + + +## Help +- cualquier ayuda +- puede ayudar a +- Me puedes ayudar +- Dame un poco de ayuda +- Ayuda +- ¿Cómo puedo conseguirlo +- Cómo hacerlo +- Necesito ayuda +- necesito ayuda +- necesito ayuda +- ¿Hay alguna ayuda +- abrir ayuda +- por favor ayuda +- algo de ayuda +- que me puede ayudar + +## Logout +- SignOut +- me olvido +- cerrar sesión +- Cerrar sesión +- cerrar sesión + +## None +- todos ellos +- Quiero todos ellos +- Quiero a todos ellos + + +## ReadAloud +- puede leerlo +- puede leer que +- ¿Puedes leer eso para mí +- ¿puede usted leer la página en voz alta +- ¿podría decirme lo que dice +- detalle en voz alta lo que dice +- He y leído que para mí +- necesito escuchar esta página +- me gustaría que usted lea que para mí +- hacer una lectura de esta página +- por favor, lea +- por favor, léalo +- por favor, Léeme la página +- por favor lea mi último correo electrónico +- por favor lea este +- por favor lea esto en voz alta +- por favor lea esta página +- por favor lea esta página en voz alta +- por favor, lea esta página en voz alta +- por favor, Léeme esto +- leer todo en la pantalla para mí +- leer en voz alta +- leer en voz alta el texto actual en pantalla +- Leer archivo en voz alta +- Léelo +- leerlo en voz alta +- leerlo en voz alta +- leerlo Outloud +- leerlo por favor +- Léelo a mí +- leer me esta página +- leer mi lista +- leer Outloud +- Página de lectura +- leer la página en voz alta +- leer la página Outloud +- leer la oración en voz alta +- Leer texto +- Leer texto en voz alta +- leer que +- leer que en voz alta +- leer la página +- leer la página en pantalla para mí +- leer la página en voz alta +- leer la página para mí +- leer el texto para mí +- leer las palabras en esta página +- leer esto para mí por favor +- leer esta página +- leer esta página en voz alta +- leer esta página en voz alta +- leer esta página para mí +- leer a mí +- leer lo que está actualmente en la pantalla para mí +- hablar de lo que está en esta página +- empezar a leer este +- Cuéntame sobre la información en la pantalla +- dime el texto actual en la pantalla +- vocalizar lo que s en la página +- ¿Qué dice la página +- ¿podría por favor leer eso para mí +- ¿leería eso en voz alta por favor +- ¿me lo lees por favor + + +## Reject +- No me gusta +- i rechazar +- Negativo +- Nunca +- no +- no, yo no quiero que +- no más tarde +- no dejarlo +- no más no +- no no +- En el no en el +- no no gracias +- no no que uno +- no rechazarlo +- No, gracias +- No, gracias +- No es posible +- no está mal +- No +- No +- De nada +- ni siquiera cerca +- No exactamente +- Ahora no +- no muy +- no en este momento +- no es que +- Nada del otro mundo +- No +- Rechazar +- rechazarlo + + +## Repeat +- Otra vez +- ¿podría decirlo de nuevo +- Yo no oí repetir de nuevo +- no he escuchado +- Disculpa +- Repetir +- repetir por favor +- repetir que +- Cómo +- decir otra vez por favor +- decir que de nuevo +- Lo siento +- Qué +- Qué has dicho +- ¿Qué fue eso de nuevo + + +## SelectAny +- cualquiera de ella +- cualquier uno está bien +- alguien está bien +- Nada +- elegir a cualquiera +- elegir uno de ellos al azar +- optar por uno aleatorio +- optar por cualquiera de ellos +- seleccionar una opción aleatoria +- seleccionar uno aleatorio +- Seleccione cualquier +- Seleccione cualquier opción +- seleccionar cualquiera de ellos + + +## SelectItem +- elegir último +- elegir último uno +- Elija no. 2 +- Elija el {DirectionalReference=abajo a la izquierda} +- elegir la primera opción +- elegir el cuarto uno +- Elija el {DirectionalReference=arriba a la izquierda} Elección +- Elija el {DirectionalReference=arriba a la derecha} Una +- Elegir {DirectionalReference=arriba a la derecha} +- Elegir {DirectionalReference=arriba a la derecha} Una +- Me gusta {DirectionalReference=Izquierda} Una +- me gusta segundo +- me gusta segundo uno +- me gusta el {DirectionalReference=Parte inferior} Una +- me gusta el primero +- me gusta la tercera +- me gusta la tercera opción +- me gusta el {DirectionalReference=arriba a la derecha} Una +- me gusta el {DirectionalReference=arriba a la derecha} +- Me gusta {DirectionalReference=arriba a la derecha} +- Quiero {DirectionalReference=Parte inferior} +- Quiero cuarto +- Quiero {DirectionalReference=Izquierda} +- Quiero {DirectionalReference=Correcto} Una +- Quiero la primera +- Quiero la cuarta opción +- Quiero que el {DirectionalReference=Izquierda} +- Quiero que el {DirectionalReference=Inferior} Elección +- Quiero que el {DirectionalReference=Correcto} Una +- Quiero que el segundo +- Quiero tercer uno +- Quiero elegir {DirectionalReference=Parte inferior} Una +- Quiero elegir {DirectionalReference=abajo a la derecha} +- Quiero elegir {DirectionalReference=Correcto} +- Quiero elegir un segundo +- Quiero elegir el primero +- Quiero elegir el cuarto +- Quiero elegir la última opción +- Quiero elegir el {DirectionalReference=Izquierda} Una +- Quiero elegir el {DirectionalReference=Inferior} Elección +- Quiero elegir el {DirectionalReference=Correcto} +- Quiero elegir tercero +- optar por primero uno +- optar por el último +- optar por {DirectionalReference=Izquierda} +- optar por {DirectionalReference=Correcto} Una +- optar por el último +- optar por el {DirectionalReference=Izquierda} Una +- optar por el {DirectionalReference=Inferior} Elección +- optar por el {DirectionalReference=Correcto} +- optar por el segundo +- optar por la segunda opción +- seleccionar cuarto uno +- Seleccione {DirectionalReference=Inferior} Una +- Seleccione no. 5 +- Seleccione la {DirectionalReference=Parte inferior} Elección +- Seleccione la primera +- Seleccione la última opción +- Seleccione la {DirectionalReference=Inferior} Una +- Seleccione la {DirectionalReference=Correcto} Una +- Seleccione la tercera +- Seleccione la {DirectionalReference=arriba a la derecha} +- seleccionar tercero +- Seleccione {DirectionalReference=Superior} +- ¿Qué pasa con la última +- ¿Qué pasa con el tercero + + +## SelectNone +- no quiero elegir uno +- no quiero seleccionar uno +- Quiero ninguno de ellos +- Quiero ninguno de ellos +- Ni +- ninguno de los +- ni uno +- ni uno de ellos +- ni gracias +- Ninguno +- Ninguno Ninguno +- Ninguno Ninguno de ellos +- ninguno de ellos +- ninguno de ellos gracias +- ninguno de estos +- ninguno de los +- se ven mal, ¿puedes darme otras opciones + + +## ShowNext +- y después de eso +- Mostrar más +- muestra más +- Dame más +- seguir adelante +- ir a la siguiente +- ir a los siguientes tres artículos +- necesito ir a la siguiente +- Quiero más +- Más +- pasar a la siguiente +- próximo +- revelar más +- Muéstrame el siguiente +- Mostrar más +- Mostrar los próximos 3 +- Mostrar los siguientes 4 artículos +- Mostrar el siguiente +- Mostrar las siguientes dos opciones +- Cuéntame más +- decir más +- ¿Qué hay de la próxima +- lo que después de que +- lo que está después de que +- lo que es más +- lo que sigue +- ¿Cuál es el próximo 2 +- ¿Qué pasa después + + +## ShowPrevious +- volver a la última +- traer el anterior +- Mostrar previamente +- volver a la última +- volver a la última +- volver a la anterior +- volver a la última +- ir previamente +- ir a la anterior +- ir a la anterior +- uno anterior +- anterior por favor +- volver a la anterior +- revelar anterior +- revelar previamente +- Mostrar anteriormente +- Muéstrame el anterior +- Mostrar anterior +- Mostrar el anterior +- lo que antes de que +- ¿Cuál es el anterior +- lo que es antes de que + + +## StartOver +- claro y empezar de nuevo +- podría empezar más +- por favor, empiece de nuevo +- Reiniciar +- reiniciarlo +- empezar de nuevo +- iniciarlo +- empezar de más de +- empezar por encima de ella +- Dar vuelta a la página + + +## Stop +- bebé sólo estar tranquilo +- Callado +- estar tranquilo ahora +- vamos a parar +- Despedir +- Final +- terminar +- salida salida +- parada de salida +- Dios Cállate +- Hey detener +- te quiero para dejar de hablar +- me refiero a dejar de escuchar +- dije que pare +- sólo Cállate +- mi Dios Cállate +- no importa dejar de +- no sea silencioso +- no se calla ahora +- no no no no dejar de hablar +- no Cállate +- sin parar +- nadie le importa dejar de hablar +- en ninguna parte sólo estar tranquilo +- Oh mi Dios Cállate +- parada OK parada +- Tranquilo +- tranquilo ahora +- Cállate la boca +- Cállate +- Cállate silencio +- Cállate tranquilo +- Cállate la boca +- detener por favor +- dejar de hablar +- Apaga +- Apague la parada + + +> # Entity definitions + +$DirectionalReference:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:number + +$PREBUILT:ordinal + + +> # Phrase list definitions + + +> # List entities + + diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/fr/general.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/fr/general.lu new file mode 100644 index 0000000000..350be581e8 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/fr/general.lu @@ -0,0 +1,523 @@ +> # Intent definitions + +## Cancel +- Annuler +- annuler l'application +- annuler annuler +- l'annuler +- annuler jamais l'esprit +- annuler que +- Annulé +- Annulé +- ne rien faire +- Fais pas ça +- ne le fais plus +- oublier +- Allez-vous-en +- Il suffit d'annuler +- Il suffit de l'annuler +- L'esprit des nerfs +- Ça ne fait rien +- jamais l'esprit annuler +- jamais l'esprit annuler que +- pas d'annulation +- pas d'annulation annuler +- pas l'annuler +- pas annuler que +- sans jamais l'esprit +- non non annuler +- non non annuler +- rien de jamais l'esprit +- rien s'il vous plaît +- Oh annuler +- Oh ne fais pas ça +- s'il vous plaît ne rien faire +- Quitter +- Désolé, ne le faites pas + + +## Confirm +- Confirmer +- Fais-le +- Fin +- aller pour elle +- génial +- J'en suis sûr +- C'est bon +- sans doute +- Bien sûr +- Oh oui +- Oh oui +- D'accord +- OK pour l'instant +- d'accord +- Parfait +- parfait Merci +- Oui +- droit Oui +- Ça a l'air bien +- sonne bien merci +- sonne bien merci +- sonne bien pour moi +- sonne bien +- sonne parfait +- Sûr +- bien sûr ne +- est sûr +- chose sure +- bien sûr Oui +- Merci beaucoup +- Merci Oui +- qui est correct +- qui est juste +- ce droit +- qui sonne bien +- C'est très bien +- C'est bien +- Très bien +- Déjà +- Oui +- Oui chéri +- Oui Bro +- Oui copain +- Ouais cool +- Oui aller de l'avant +- Ouais aller pour elle +- Oui bon +- Oui + + +## Escalate +- puis-je parler à une personne +- Contacter le support +- Contacter le service client +- service à la clientèle +- le service humain +- J'ai besoin du service à la clientèle manuel +- J'ai besoin d'aide humaine réelle +- J'ai besoin de soutien +- Je veux parler à un humain +- Je veux parler à un vrai humain +- est-il une personne que je peux parler à +- y at-il des vrais humains +- y at-il une personne réelle +- parler à un humain + + +## FinishTask +- tous finis +- tous ensemble +- Fait +- Finir +- Fini +- fini avec +- Je suis fait +- Je suis fini +- Il a terminé +- C'est fait +- C'est fini +- juste être +- Envoyer +- le soumettre + + +## GoBack +- Précédent +- retour s'il vous plaît +- Retour à +- Retour à la dernière +- Retour à la dernière étape +- Reviens +- revenir s'il vous plaît +- revenir à la dernière +- Retour +- revenir sur +- revenir s'il vous plaît +- revenir à +- dernière étape +- pas revenir à +- pas de revenir à +- Veuillez retourner +- Retour + + +## Help +- toute aide +- pouvez-vous aider +- Est-ce que vous pouvez m'aider +- Donnez-moi de l'aide +- Aide +- Comment puis-je l'obtenir +- Comment le faire +- J'ai besoin d'aide +- J'ai besoin d'aide +- J'ai besoin d'aide +- est-il une aide +- ouvrir l'aide +- Aider, s'il vous plaît +- un peu d'aide +- qui peut m'aider + +## Logout +- SignOut +- Myosotis +- se déconnecter +- Déconnexion +- déconnexion + +## None +- Tous +- Je veux tous les +- Je veux tous les + + +## ReadAloud +- pouvez-vous le lire +- pouvez-vous lire que +- pouvez-vous lire que pour moi +- pouvez-vous lire la page à haute voix +- pourriez-vous me dire ce que dit +- détail à haute voix ce qui dit +- Hey lire que pour moi +- J'ai besoin d'entendre cette page +- Je voudrais que vous lisiez que pour moi +- faire une lecture de cette page +- s'il vous plaît lire +- s'il vous plaît le lire +- s'il vous plaît lisez-moi la page +- s'il vous plaît lire mon dernier e-mail +- s'il vous plaît lire ce +- s'il vous plaît lire à haute voix +- Veuillez lire cette page +- s'il vous plaît lire cette page à haute voix +- s'il vous plaît lire cette page à haute voix +- s'il vous plaît lire ceci pour moi +- lire tout sur l'écran pour moi +- lire à haute voix +- lire à haute voix le texte actuel à l'écran +- lire le fichier à haute voix +- le lire +- le lire à haute voix +- le lire à haute voix +- le lire Outloud +- Lire s'il vous plaît +- me le lire +- Lisez-moi cette page +- lire ma liste +- lire Outloud +- lire la page +- lire la page à haute voix +- lire la page Outloud +- lire la phrase à haute voix +- lire le texte +- lire le texte à haute voix +- lire que +- lire que à haute voix +- lire la page +- lire la page à l'écran pour moi +- lire la page à haute voix +- lire la page pour moi +- lire le texte pour moi +- lire les mots sur cette page +- lire ceci pour moi s'il vous plaît +- lire cette page +- lire cette page à haute voix +- lire cette page à haute voix +- lire cette page pour moi +- Lisez-moi +- lire ce qui est actuellement sur l'écran pour moi +- parler de ce qui est sur cette page +- commencer à lire ce +- Parlez-moi des informations sur l'écran +- me dire le texte actuel à l'écran +- vocaliser ce que s sur la page +- qu'est-ce que la page dire +- voulez-vous s'il vous plaît lire que pour moi +- voulez-vous lire que à haute voix s'il vous plaît +- voulez-vous lire que pour moi s'il vous plaît + + +## Reject +- J'aime pas ça +- Je rejette +- Négatif +- Jamais +- non +- non, je ne veux pas que +- pas plus tard +- pas le laisser +- pas plus non +- Oh, non +- Dans le no du +- non non merci +- non pas que l'on +- pas le rejeter +- Non, merci +- Non merci +- Pas question +- pas mal +- Non +- Pas +- Pas du tout +- même pas proche +- Pas exactement +- Pas maintenant +- pas tout à fait +- pas en ce moment +- pas que +- Pas grand-chose +- Oh non +- Rejeter +- le rejeter + + +## Repeat +- Nouveau +- pourriez-vous dis-le à nouveau +- Je n'ai pas entendu répéter à nouveau +- Je n'ai pas entendu +- pardon +- Répéter +- répéter s'il vous plaît +- répéter que +- Répéter +- dire à nouveau s'il vous plaît +- dire que de nouveau +- Pardon +- Quel +- Qu'as-tu dit +- ce qui était encore + + +## SelectAny +- tout de celui-ci +- n'importe lequel est OK +- n'importe qui est bien +- Rien +- choisir n'importe qui +- Choisissez l'un de celui-ci aléatoirement +- opter pour un aléatoire +- opter pour tout cela +- choisir un choix aléatoire +- Sélectionnez un aléatoire +- Sélectionnez +- choisir n'importe quel choix +- Sélectionnez l'un d'entre eux + + +## SelectItem +- choisir la dernière +- Choisissez le dernier +- Choisissez no. 2 +- choisir le {DirectionalReference=en bas à gauche} +- choisir le premier choix +- choisir le quatrième +- choisir le {DirectionalReference=en haut à gauche} Choix +- choisir le {DirectionalReference=en haut à droite} Un +- Choisir {DirectionalReference=en haut à droite} +- Choisir {DirectionalReference=en haut à droite} Un +- J'aime {DirectionalReference=Gauche} Un +- J'aime deuxième +- i like second +- J'aime le {DirectionalReference=Bas} Un +- J'aime le premier +- J'aime le troisième +- J'aime le troisième choix +- J'aime le {DirectionalReference=en haut à droite} Un +- J'aime le {DirectionalReference=en haut à droite} +- J'aime {DirectionalReference=en haut à droite} +- Je veux {DirectionalReference=Bas} +- Je veux quatrième +- Je veux {DirectionalReference=Gauche} +- Je veux {DirectionalReference=Oui} Un +- Je veux le premier +- Je veux le quatrième choix +- Je veux que le {DirectionalReference=Gauche} +- Je veux que le {DirectionalReference=Inférieur} Choix +- Je veux que le {DirectionalReference=Oui} Un +- Je veux le second +- Je veux un troisième +- Je veux choisir {DirectionalReference=Bas} Un +- Je veux choisir {DirectionalReference=en bas à droite} +- Je veux choisir {DirectionalReference=Oui} +- Je veux choisir un deuxième +- Je veux choisir le premier +- Je veux choisir le quatrième +- Je veux choisir le dernier choix +- Je veux choisir le {DirectionalReference=Gauche} Un +- Je veux choisir le {DirectionalReference=Inférieur} Choix +- Je veux choisir le {DirectionalReference=Oui} +- Je veux choisir troisième +- Optez pour un premier +- Optez pour la dernière +- opter pour {DirectionalReference=Gauche} +- opter pour {DirectionalReference=Oui} Un +- Optez pour le dernier +- opter pour le {DirectionalReference=Gauche} Un +- opter pour le {DirectionalReference=Inférieur} Choix +- opter pour le {DirectionalReference=Oui} +- opter pour la deuxième +- opter pour le deuxième choix +- Sélectionnez la quatrième +- Sélectionnez {DirectionalReference=Inférieur} Un +- Sélectionnez n ° 5 +- Sélectionnez le {DirectionalReference=Bas} Choix +- Sélectionnez le premier +- sélectionner le dernier choix +- Sélectionnez le {DirectionalReference=Inférieur} Un +- Sélectionnez le {DirectionalReference=Oui} Un +- Sélectionnez le troisième +- Sélectionnez le {DirectionalReference=en haut à droite} +- Sélectionnez troisième +- Sélectionnez {DirectionalReference=Supérieur} +- qu'en est-il de la dernière +- qu'en est-il du troisième + + +## SelectNone +- Je ne veux pas choisir un +- Je ne veux pas sélectionner un +- Je ne veux aucun d'entre eux +- Je veux aucun d'entre eux +- Ni +- aucun de ces +- ni un +- ni l'un d'eux +- ni Merci +- Aucun +- aucun aucun +- aucun d'entre eux +- aucun d'entre eux +- aucun d'entre eux vous remercie +- aucun de ces +- aucun de ces +- ils ont l'air mauvais, pouvez-vous me donner d'autres choix + + +## ShowNext +- et après que +- afficher plus +- affiche plus +- Donnez-moi plus +- aller de l'avant +- aller à la prochaine +- aller aux trois prochains éléments +- J'ai besoin d'aller à l'autre +- Je veux plus +- Plus +- passer à la suivante +- prochain +- révéler plus +- Montrez-moi la prochaine +- afficher plus +- afficher les 3 prochains +- afficher les 4 prochains Articles +- montrer le prochain +- afficher les deux options suivantes +- me dire plus +- en savoir plus +- qu'en est-il prochain +- ce qui après que +- ce qui est après que +- ce qui est plus +- what's Next +- ce qui est le prochain 2 +- what's up Next + + +## ShowPrevious +- Retour à la dernière +- apporter le précédent +- afficher précédemment +- revenir à la dernière +- revenir à la dernière +- revenir à la précédente +- revenir à la dernière +- aller précédemment +- aller à la précédente +- aller à la précédente +- précédent +- précédent s'il vous plaît +- revenir à la précédente +- révéler les précédents +- révéler précédemment +- montrer plus tôt +- Montrez-moi le précédent +- afficher précédent +- montrer le précédent +- ce qui avant que +- Quel est le précédent +- ce qui est avant que + + +## StartOver +- clair et recommencer +- pourriez-vous commencer +- s'il vous plaît recommencer +- Redémarrer +- Redémarrez-le +- recommencer +- commencer +- recommencer +- recommencer +- Tourner la page + + +## Stop +- bébé juste être tranquille +- restez calme +- être silencieux maintenant +- venir sur arrêt +- Rejeter +- Fin +- fin il +- sortie sortie +- arrêt de sortie +- Dieu la ferme +- Hey arrêter +- Je t'aime pour arrêter de parler +- Je veux dire arrêter d'écouter +- J'ai dit stop +- juste être tranquille +- mon Dieu la ferme +- jamais l'esprit arrêter +- ne soyez pas silencieux +- pas être tranquille maintenant +- non non non non arrêtez de parler +- pas de fermeture +- pas d'arrêt +- personne ne se soucie cesser de parler +- nulle part juste être tranquille +- Oh mon Dieu la ferme +- OK stop stop +- Calme +- calme maintenant +- Ferme ta gueule +- La ferme +- Shut Up être silencieux +- taisez-vous +- La ferme +- s'il vous plaît arrêter +- cesser de parler +- Désactiver +- éteindre l'arrêt + + +> # Entity definitions + +$DirectionalReference:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:number + +$PREBUILT:ordinal + + +> # Phrase list definitions + + +> # List entities + + diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/it/general.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/it/general.lu new file mode 100644 index 0000000000..8d225067a6 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/it/general.lu @@ -0,0 +1,523 @@ +> # Intent definitions + +## Cancel +- Annulla +- Annulla app +- Annulla Annulla +- annullarlo +- annullare non importa +- annullare che +- Annullato +- annullato +- non fare nulla +- Non farlo +- non farlo più +- dimenticarlo +- Vattene +- basta annullare +- Basta annullarlo +- Nervi mente +- Non importa +- non importa annullare +- non importa annullare che +- Nessuna cancellazione +- No Annulla Annulla +- non annullarlo +- non annullare che +- non importa mai +- No No Annulla +- No no annullarlo +- niente non importa +- niente per favore +- Oh Annulla +- Oh non farlo +- si prega di fare nulla +- Smettere +- Scusa, non farlo + + +## Confirm +- Confermare +- Fallo +- fine +- andare per esso +- Grande +- Sono sicuro +- Va bene +- senza dubbio +- Naturalmente, +- Oh sì +- Oh sì +- Ok +- OK per ora +- ok +- Perfetto +- perfetto grazie +- va bene +- destra Sì +- Buona idea +- suona bene grazie +- suona bene grazie +- suona bene per me +- suona grande +- suona perfetto +- Sicuro +- certo fa +- sicuro è +- cosa sicura +- certo sì +- Mille Grazie +- Grazie sì +- che è corretto +- che è giusto +- tale diritto +- che suona bene +- Va bene +- Questo va bene +- Molto bene +- Già +- Sì +- Sì piccola +- Sì bro +- Sì amico +- Sì cool +- Sì andare avanti +- Sì andare per esso +- Sì buono +- Sì + + +## Escalate +- Posso parlare con una persona +- Contatta il supporto +- Contattare il servizio clienti +- servizio clienti +- servizio umano +- Ho bisogno di servizio clienti manuale +- Ho bisogno di aiuto umano reale +- Ho bisogno di sostegno +- Voglio parlare con un umano +- Voglio parlare con un vero e proprio umano +- C'è una persona che posso parlare con +- C'è un vero umano +- C'è una persona reale +- parlare con un umano + + +## FinishTask +- Tutto finito +- tutti insieme +- Fatto +- Finire +- Finito +- rifinito con +- Io sono fatto +- Ho finito +- ha finito +- è fatto +- è finita +- solo essere +- Invia +- presentarlo + + +## GoBack +- Indietro +- indietro per favore +- Torna a +- indietro per durare +- Torna all'ultimo passo +- Indietro +- tornare per favore +- tornare a durare +- Indietro +- tornare su +- tornare indietro per favore +- tornare a +- ultimo passo +- non tornare a +- No no tornare a +- si prega di tornare +- Ritorno + + +## Help +- qualsiasi aiuto +- si può aiutare +- Puoi aiutarmi +- Dammi un po' di aiuto +- Guida +- Come posso ottenerlo +- come farlo +- Ho bisogno di aiuto +- Ho bisogno di un po' di assistenza +- Ho bisogno di aiuto +- C'è qualche aiuto +- Aprire la guida +- si prega di aiutare +- qualche aiuto +- che mi può aiutare + +## Logout +- SignOut +- mi dimentichi +- Esci +- Logout +- Esci + +## None +- tutti loro +- Voglio che tutti +- Voglio tutti loro + + +## ReadAloud +- si può leggere +- si può leggere che +- si può leggere che per me +- si può leggere pagina ad alta voce +- Potresti dirmi quello che dice +- dettaglio ad alta voce quello che dice +- Hey leggere che per me +- Ho bisogno di sentire questa pagina +- Mi piacerebbe che tu leggere che per me +- fare una lettura di questa pagina +- si prega di leggere +- si prega di leggerlo +- si prega di leggere la pagina +- si prega di leggere la mia ultima e-mail +- si prega di leggere questo +- si prega di leggere questo ad alta voce +- si prega di leggere questa pagina +- si prega di leggere questa pagina ad alta voce +- si prega di leggere questa pagina ad alta voce +- si prega di leggere questo per me +- leggere tutti sullo schermo per me +- leggere ad alta voce +- leggere ad alta voce il testo corrente sullo schermo +- leggere file ad alta voce +- Leggilo +- leggerlo ad alta voce +- leggerlo ad alta voce +- leggerlo a voce alta +- leggerlo per favore +- leggerlo a me +- Leggimi questa pagina +- leggere la mia lista +- leggere a voce alta +- pagina di lettura +- leggere la pagina ad alta voce +- leggere pagina Outloud +- leggere la frase ad alta voce +- leggere il testo +- leggere il testo ad alta voce +- leggere che +- leggere che ad alta voce +- leggere la pagina +- leggere la pagina sullo schermo per me +- leggere la pagina ad alta voce +- leggere la pagina per me +- leggere il testo a me +- leggere le parole in questa pagina +- leggere questo per me per favore +- leggere questa pagina +- leggere questa pagina ad alta voce +- leggere questa pagina ad alta voce +- leggere questa pagina per me +- leggere a me +- leggere ciò che è attualmente sullo schermo per me +- parlare di ciò che è in questa pagina +- iniziare a leggere questo +- Dimmi circa le informazioni sullo schermo +- Dimmi il testo corrente sullo schermo +- vocalizzare ciò che s sulla pagina +- che cosa dice la pagina +- si prega di leggere che per me +- Vuoi leggere che ad alta voce per favore +- Vuoi leggere che a me per favore + + +## Reject +- Non mi piace +- i rifiutare +- Negativo +- Mai +- No +- No non voglio che +- non più tardi +- non lasciarlo +- non più no +- Oh no +- Nel no sul +- No No grazie +- No, non che uno +- non rifiutarlo +- No grazie +- No grazie +- Assolutamente no +- non è sbagliato +- No +- Non +- Niente affatto +- nemmeno vicino +- Non esattamente +- Non ora +- Non proprio +- non in questo momento +- non che +- Non molto +- Oh no +- Rifiutare +- rifiutarlo + + +## Repeat +- di nuovo +- si potrebbe dire di nuovo +- non ho sentito ripetere di nuovo +- non ho sentito +- Scusa +- Ripetere +- Ripetere per favore +- ripetere che +- Dillo ancora +- dire di nuovo per favore +- dire che ancora una volta +- Siamo spiacenti +- che cosa +- Cosa hai detto +- quello che era di nuovo + + +## SelectAny +- qualsiasi di esso +- uno è OK +- Chiunque va bene +- Nulla +- scegliere chiunque +- scegliere uno di esso in modo casuale +- optare per uno casuale +- optare per qualsiasi di esso +- Selezionare una scelta casuale +- Selezionare uno casuale +- selezionare qualsiasi +- selezionare qualsiasi scelta +- selezionarne uno + + +## SelectItem +- scegliere ultimo +- Scegli l'ultima +- scegliere No. 2 +- scegliere il {DirectionalReference=in basso a sinistra} +- scegliere la prima scelta +- scegliere il quarto +- scegliere il {DirectionalReference=in alto a sinistra} Scelta +- scegliere il {DirectionalReference=in alto a destra} Uno +- Scegliere {DirectionalReference=in alto a destra} +- Scegliere {DirectionalReference=in alto a destra} Uno +- Mi piace {DirectionalReference=Sinistra} Uno +- Mi piace il secondo +- Mi piace secondo uno +- Mi piace il {DirectionalReference=Fondoschiena} Uno +- Mi piace il primo +- Mi piace il terzo +- Mi piace la terza scelta +- Mi piace il {DirectionalReference=in alto a destra} Uno +- Mi piace il {DirectionalReference=in alto a destra} +- Mi piace {DirectionalReference=in alto a destra} +- Voglio {DirectionalReference=Fondoschiena} +- Voglio quarto +- Voglio {DirectionalReference=Sinistra} +- Voglio {DirectionalReference=va bene} Uno +- Voglio il primo +- Voglio la quarta scelta +- Voglio che il {DirectionalReference=Sinistra} +- Voglio che il {DirectionalReference=Inferiore} Scelta +- Voglio che il {DirectionalReference=va bene} Uno +- Voglio che il secondo +- Voglio terzo +- Voglio scegliere {DirectionalReference=Fondoschiena} Uno +- Voglio scegliere {DirectionalReference=in basso a destra} +- Voglio scegliere {DirectionalReference=va bene} +- Voglio scegliere secondo uno +- Voglio scegliere il primo +- Voglio scegliere il quarto +- Voglio scegliere l'ultima scelta +- Voglio scegliere il {DirectionalReference=Sinistra} Uno +- Voglio scegliere il {DirectionalReference=Inferiore} Scelta +- Voglio scegliere il {DirectionalReference=va bene} +- Voglio scegliere il terzo +- optare per il primo +- optare per l'ultima +- optare per {DirectionalReference=Sinistra} +- optare per {DirectionalReference=va bene} Uno +- optare per l'ultimo +- optare per il {DirectionalReference=Sinistra} Uno +- optare per il {DirectionalReference=Inferiore} Scelta +- optare per il {DirectionalReference=va bene} +- optare per la seconda +- optare per la seconda scelta +- selezionarne una quarta +- Selezionare {DirectionalReference=Inferiore} Uno +- Selezionare No. 5 +- Selezionare la {DirectionalReference=Fondoschiena} Scelta +- Selezionare il primo +- Selezionare l'ultima scelta +- Selezionare la {DirectionalReference=Inferiore} Uno +- Selezionare la {DirectionalReference=va bene} Uno +- Selezionare la terza +- Selezionare la {DirectionalReference=in alto a destra} +- Selezionare il terzo +- Selezionare {DirectionalReference=Superiore} +- per quanto riguarda l'ultimo +- per quanto riguarda il terzo + + +## SelectNone +- non voglio scegliere uno qualsiasi +- non voglio selezionare uno qualsiasi +- voglio nessuno di loro +- Voglio che nessuno di loro +- Né +- nessuno di questi +- né uno +- nessuno di loro +- né grazie +- Nessuno +- nessuno nessuno +- nessuno di loro +- nessuno di loro +- nessuno di loro grazie +- nessuno di questi +- nessuno di quelli +- sembrano cattivi, puoi darmi altre scelte + + +## ShowNext +- e dopo che +- visualizzare più +- Visualizza più +- Dammi più +- andare avanti +- andare al prossimo +- Vai ai prossimi tre elementi +- Ho bisogno di andare a quello successivo +- Voglio di più +- Più +- passare a quello successivo +- prossimo +- rivelano più +- Fammi vedere il prossimo +- Mostra di più +- Mostra i prossimi 3 +- Mostra i prossimi 4 articoli +- mostrare il prossimo +- Mostra le prossime due opzioni +- Dimmi di più +- raccontare di più +- per quanto riguarda il prossimo +- cosa dopo che +- ciò che è dopo che +- cosa c'è di più +- ciò che è prossimo +- Qual è il prossimo 2 +- cosa c'è accanto + + +## ShowPrevious +- Torna all'ultimo +- portare il precedente +- visualizzare in precedenza +- tornare all'ultimo +- tornare a durare uno +- tornare alla precedente +- tornare all'ultimo +- andare in precedenza +- andare al precedente +- andare al precedente +- precedente +- precedente si prega di +- tornare a quello precedente +- rivelare precedente +- rivelare in precedenza +- mostrare in precedenza +- Mostrami il precedente +- Mostra precedente +- mostrare quello precedente +- cosa prima che +- Qual è il precedente +- ciò che è prima che + + +## StartOver +- chiaro e ricominciare +- si potrebbe iniziare sopra +- si prega di ricominciare +- Riavviare +- riavviarlo +- ricominciare +- avviarlo +- ricominciare +- iniziare su di esso +- girare su una nuova foglia + + +## Stop +- bambino solo essere tranquillo +- Taci +- essere tranquillo ora +- Andiamo stop +- Respingere +- Fine +- fine +- uscita Exit +- uscita Stop +- Dio zitto +- Hey stop +- ti amo smettere di parlare +- Voglio dire smettere di ascoltare +- Ho detto stop +- solo essere tranquillo +- il mio Dio zitto +- non importa smettere +- non essere tranquillo +- non essere tranquillo ora +- No no no no smettere di parlare +- non zitto +- No Stop +- nessuno si preoccupa smettere di parlare +- da nessuna parte solo essere tranquillo +- Oh mio Dio zitto +- OK arresto STOP +- Tranquilla +- tranquillo ora +- stai zitto +- Zitto +- Zitto essere tranquillo +- Zitto tranquillo +- Chiudi la bocca +- smettere per favore +- smettere di parlare +- Spegni +- disattivare l'arresto + + +> # Entity definitions + +$DirectionalReference:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:number + +$PREBUILT:ordinal + + +> # Phrase list definitions + + +> # List entities + + diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/zh/general.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/zh/general.lu new file mode 100644 index 0000000000..880d783361 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/LU/zh/general.lu @@ -0,0 +1,523 @@ +> # Intent definitions + +## Cancel +- 取消 +- 取消应用程序 +- 取消取消 +- 取消它 +- 取消没关系 +- 取消这一点 +- 取消 +- 取消 +- 什么都不做 +- 别这样 +- 别再这么做了 +- 忘了它吧 +- 走开 +- 只是取消 +- 只是取消它 +- 神经的头脑 +- 没关系 +- 别介意取消 +- 没关系取消, +- 没有取消 +- 没有取消取消 +- 不取消它 +- 没有取消, +- 别介意 +- 没有没有取消 +- 不, 不, 取消它 +- 没什么没关系 +- 没什么, 请 +- 哦, 取消 +- 哦, 不要这样做 +- 请什么都不做 +- 退出 +- 对不起, 不要这样做 + + +## Confirm +- 确认 +- 做吧 +- 结束 +- 去吧 +- 伟大 +- 我确定 +- 没事的 +- 毫无疑问 +- 答案是肯定的 +- 哦,是的 +- 哦,是的 +- 还行 +- 好吧, 现在 +- 好 +- 完美 +- 完美的谢谢你 +- 对 +- 对是的 +- 听上去很好 +- 听起来不错, 谢谢 +- 听起来不错, 谢谢 +- 听起来不错 +- 听起来不错 +- 听起来很完美 +- 确定 +- 肯定不 +- 肯定是 +- 肯定的事情 +- 当然是的 +- 谢谢 +- 谢谢你是的 +- 这是正确的 +- 这是正确的 +- 该权利 +- 听起来不错 +- 这很好 +- 这很好 +- 非常好 +- 已经 +- 是的 +- 是的,宝贝 +- 是的兄弟 +- 是的, 哥们 +- 是的很酷 +- 是的, 去吧 +- 是的, 去吧 +- 是的很好 +- 是的 + + +## Escalate +- 我能和一个人交谈吗? +- 联系支持 +- 联系客服 +- 客服服务 +- 人性化服务 +- 我需要手动客服 +- 我需要真正的人类帮助 +- 我需要支持 +- 我想和一个人谈谈 +- 我想和一个真正的人类谈谈 +- 有没有人, 我可以交谈 +- 是否有任何真正的人类 +- 有什么真实的人吗? +- 和人类交谈 + + +## FinishTask +- 全部完成 +- 全部设置 +- 做 +- 完成 +- 完成 +- 完成了 +- 我做完了 +- 我完了 +- 它完成了 +- 它的完成 +- 它的完成 +- 只是是 +- 提交 +- 提交它 + + +## GoBack +- 返回 +- 退后请 +- 返回到 +- 返回到最后一个 +- 返回到最后一步 +- 回来 +- 请退后 +- 回到最后 +- 回去 +- 回去吧 +- 请回去 +- 返回到 +- 最后一步 +- 不回去 +- 不, 不, 不, 回去 +- 请返回 +- 返回 + + +## Help +- 任何帮助 +- 你能帮上忙吗 +- 你可以帮我吗 +- 给我一些帮助 +- 帮助 +- 我怎么能得到它 +- 如何做到这一点 +- 我需要帮助 +- 我需要一些帮助 +- 我需要一些帮助 +- 有什么帮助吗? +- 打开帮助 +- 请帮帮忙 +- 一些帮助 +- 谁能帮我 + +## Logout +- 签出 +- 忘了我吧 +- 注销 +- 注销 +- 注销 + +## None +- 所有的人 +- 我希望他们都 +- 我想所有的人 + + +## ReadAloud +- 你能读懂吗? +- 你能读懂吗 +- 你能为我读一下吗 +- 你能大声朗读页面吗? +- 你能告诉我那是什么意思吗? +- 细节大声说什么 +- 嘿, 为我读一下 +- 我需要听到这一页 +- 我想让你为我读这些 +- 阅读这一页 +- 请阅读 +- 请阅读它 +- 请阅读我的页面 +- 请阅读我最新的电子邮件 +- 请阅读此内容 +- 请大声读出来 +- 请阅读此页面 +- 请大声朗读这一页 +- 请大声阅读这一页 +- 请读给我听 +- 在屏幕上给我读所有的内容 +- 朗读 +- 朗读屏幕上的当前文本 +- 大声朗读文件 +- 阅读它 +- 大声朗读 +- 大声读出来 +- 大声读出来 +- 请阅读它 +- 读给我听 +- 读我这一页 +- 阅读我的列表 +- 大声朗读 +- 阅读页面 +- 大声朗读页面 +- 大声阅读页面 +- 大声朗读句子 +- 读取文本 +- 大声朗读课文 +- 读一下 +- 大声读出来 +- 阅读页面 +- 在屏幕上给我读这一页 +- 大声地读出这一页 +- 读这一页给我听 +- 读课文给我听 +- 阅读本页上的单词 +- 请帮我读一下这个 +- 阅读此页 +- 大声朗读这一页 +- 大声读出这一页 +- 读这一页给我听 +- 读给我听 +- 阅读当前屏幕上的内容给我 +- 说到这一页上的内容 +- 开始阅读这 +- 告诉我屏幕上的信息 +- 告诉我屏幕上的当前文本 +- 发声的页面上的内容 +- 页面上写了什么 +- 请你帮我读一下 +- 请你大声读出来好吗? +- 请你读给我听好吗? + + +## Reject +- 我不喜欢 +- 我拒绝 +- 负 +- 从来 没有 +- 不 +- 不, 我不希望 +- 没有以后 +- 没有离开它 +- 没有更多的没有 +- 哦不 +- 在 "否" 上 +- 不, 不, 谢谢 +- 不, 不是那个 +- 不拒绝它 +- 不,谢谢 +- 不,谢谢 +- 不可能 +- 没有错 +- 不 +- 不 +- 一点也不 +- 甚至没有关闭 +- 不完全是 +- 不是现在 +- 不完全是 +- 不是现在 +- 不是这样的 +- 很少 +- 哦不 +- 拒绝 +- 拒绝它 + + +## Repeat +- 再次 +- 你能再说一遍吗? +- 我没有听到重复再次 +- 我没有听说过 +- 对不起 +- 重复 +- 请重复一遍 +- 重复, +- 再说一遍 +- 请再说一遍 +- 再说一遍 +- 对不起 +- 什么? +- 你说什么 +- 那又是什么 + + +## SelectAny +- 它的任何一个 +- 任何一个都是确定的 +- 任何人都很好 +- 什么 +- 选择任何人 +- 随机选择其中一个 +- 选择一个随机的 +- 选择它的任何一个 +- 选择随机选择 +- 选择一个随机的 +- 选择任何 +- 选择任何选项 +- 选择它的任何一个 + + +## SelectItem +- 选择最后一个 +- 选择最后一个 +- 选择2号 +- 选择 {DirectionalReference=左下角} +- 选择第一选择 +- 选择第四个 +- 选择 {DirectionalReference=左上角} 选择 +- 选择 {DirectionalReference=右上角} 一个 +- 选择 {DirectionalReference=右上角} +- 选择 {DirectionalReference=右上角} 一个 +- 我喜欢 {DirectionalReference=离开} 一个 +- 我喜欢第二 +- 我喜欢第二个 +- 我喜欢的 {DirectionalReference=底部} 一个 +- 我喜欢第一个 +- 我喜欢第三个 +- 我喜欢第三个选择 +- 我喜欢的 {DirectionalReference=右上角} 一个 +- 我喜欢的 {DirectionalReference=右上角} +- 我喜欢 {DirectionalReference=右上角} +- 我想要 {DirectionalReference=底部} +- 我想要第四 +- 我想要 {DirectionalReference=离开} +- 我想要 {DirectionalReference=对} 一个 +- 我想要的第一个 +- 我想要第四个选择 +- 我想 {DirectionalReference=离开} +- 我想 {DirectionalReference=降低} 选择 +- 我想 {DirectionalReference=对} 一个 +- 我想要第二个 +- 我想要第三个 +- 我想选择 {DirectionalReference=底部} 一个 +- 我想选择 {DirectionalReference=右下角} +- 我想选择 {DirectionalReference=对} +- 我想选择第二个 +- 我想选择第一个 +- 我想选择第四个 +- 我想选择最后的选择 +- 我想选择的 {DirectionalReference=离开} 一个 +- 我想选择的 {DirectionalReference=降低} 选择 +- 我想选择的 {DirectionalReference=对} +- 我想选择第三 +- 选择第一个 +- 选择最后一个 +- 选择 {DirectionalReference=离开} +- 选择 {DirectionalReference=对} 一个 +- 选择最后一个 +- 选择 {DirectionalReference=离开} 一个 +- 选择 {DirectionalReference=降低} 选择 +- 选择 {DirectionalReference=对} +- 选择第二个 +- 选择第二个选项 +- 选择第四个 +- 选择 {DirectionalReference=降低} 一个 +- 选择5号 +- 选择 {DirectionalReference=底部} 选择 +- 选择第一个 +- 选择最后一个选项 +- 选择 {DirectionalReference=降低} 一个 +- 选择 {DirectionalReference=对} 一个 +- 选择第三个 +- 选择 {DirectionalReference=右上角} +- 选择第三个 +- 选择 {DirectionalReference=上} +- 那最后一个呢? +- 那第三个呢? + + +## SelectNone +- 我不想选择任何一个 +- 我不想选择任何一个 +- 我不想要他们两个 +- 我不想要他们中的任何一个 +- 也 +- 这两个 +- 都不是一个 +- 他们中的任何一个 +- 也不谢谢你 +- 没有 +- 无 +- 他们都没有 +- 他们中没有一个 +- 他们都不感谢你 +- 这些都没有 +- 没有这些 +- 他们看起来很糟糕, 你能给我其他的选择吗? + + +## ShowNext +- 在那之后 +- 显示更多 +- 显示更多 +- 给我更多 +- 勇往直前 +- 转到下一个 +- 转到接下来的三个项目 +- 我需要去下一个 +- 我想要更多 +- 更 +- 移动到下一个 +- 下 +- 揭示更多 +- 给我看看下一个 +- 显示更多 +- 显示下一个3 +- 显示接下来的4个项目 +- 显示下一个 +- 显示接下来的两个选项 +- 告诉我更多 +- 告诉更多 +- 下一个呢? +- 之后是什么 +- 之后是什么 +- 更重要的是 +- 下一步是什么 +- 接下来的2是什么 +- 接下来会发生什么 + + +## ShowPrevious +- 回到最后一个 +- 带来了前一个 +- 以前显示 +- 回到最后一个 +- 回到最后一个 +- 回到以前的 +- 回到最后一个 +- 去之前 +- 转到上一个 +- 转到上一个 +- 上一个 +- 请前一个 +- 返回到上一个 +- 显示以前的 +- 显示以前 +- 更早显示 +- 给我看看前一个 +- 显示上一个 +- 显示前一个 +- 在那之前 +- 什么是以前的 +- 什么是之前, + + +## StartOver +- 清除并重新开始 +- 你能不能重新开始 +- 请重新开始 +- 重新 启动 +- 重新启动它 +- 重新开始 +- 重新开始 +- 重新开始 +- 开始在它 +- 翻开新的一页 + + +## Stop +- 宝贝, 安静点 +- 保持安静 +- 现在安静点 +- 来吧, 停 +- 解雇 +- 结束 +- 结束它 +- 退出出口 +- 退出站 +- 上帝闭嘴 +- 嘿, 住手 +- 我爱你停止说话 +- 我的意思是停止听 +- 我说停止 +- 只是安静 +- 我的上帝闭嘴 +- 没关系停止 +- 不要安静 +- 现在不要安静 +- 不, 不, 不, 不, 停止说话 +- 没有闭嘴 +- 没有停止 +- 没有人在乎停止说话 +- 无处只是安静 +- 哦, 我的上帝闭嘴 +- 好的, 停 +- 安静 +- 安静的现在 +- 他妈的闭嘴 +- 闭嘴 +- 闭嘴, 安静点 +- 闭嘴, 安静 +- 闭上你的嘴 +- 请停止 +- 别说话了 +- 关闭 +- 关闭停止 + + +> # Entity definitions + +$DirectionalReference:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:number + +$PREBUILT:ordinal + + +> # Phrase list definitions + + +> # List entities + + diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/de/chitchat.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/de/chitchat.lu new file mode 100644 index 0000000000..ccb319cacf --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/de/chitchat.lu @@ -0,0 +1,1227 @@ +> Source: qna_chitchat_the_professional.tsv +## ? Wie alt bist du +- Bist du jung +- Wann bist du geboren +- Welches Alter bist du +- Seid du alt +- Wie alt sind Sie +- Wie lange bist du geboren + +```markdown +Alter gilt für mich nicht wirklich. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sei mein Freund +- Können wir Freunde sein +- Wirst du mein bester Freund sein +- BFFs für immer +- Ich möchte dein Freund sein. + +```markdown +Sicherlich. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Du hast Recht. +- Das war richtig +- Das war richtig +- Das ist genau +- Genau +- Das stimmt +- Yup, das stimmt +- Das stimmt +- Richtig +- Ja, das stimmt +- Ja, das stimmt + +```markdown +Ausgezeichnet. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Hsa +- Haha +- Hahaha +- Laut loslachen +- Ich krache +- Rofl + +```markdown +Ich freue mich sehr! +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Guten Abend +- 'Nabend +- Guten Abend + +```markdown +Guten Abend. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Guten Morgen +- Morgen + +```markdown +Guten Morgen. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Gute Nacht +- Nacht +- Haben Sie eine gute Nacht +- Gute Nacht für dich +- Nachti Nacht + +```markdown +Gute Nacht. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Wie war dein Tag +- Wie geht es Ihrem Tag? +- Einen guten Tag + +```markdown +Gut, danke. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bis später +- Auf Wiedersehen +- Bis später +- Bis wir uns wieder treffen +- Später +- Später Alligator +- Auf Wiedersehen + +```markdown +Auf Wiedersehen. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ich mache nur Spaß +- Das war ein Witz +- Witz es on you +- Ich spiele nur +- Ich mache nur Witze um + +```markdown +Ich hab es. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Wie geht es dir +- Wie geht es dir heute +- Wie sind die Dinge +- Wie geht es dir +- Wie ist dein Tag + +```markdown +Großartig, danke. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bitte +- Es ist mir eine Freude + +```markdown +Großartig. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Testen +- Kannst du mich hören +- Kannst du mich jetzt hören +- Test 1 2 3 +- Ist das auf + +```markdown +Hallo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Hiya +- Guten Morgen +- Hallo +- Hallo +- Heya +- Hallo! +- Hallöchen + +```markdown +Hallo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ich bin hier +- Hier bin ich + +```markdown +Hallo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Siehe ich okay aus +- Bin ich hübsch +- Glauben Sie, dass ich gut aussehe +- Wie schön bin ich + +```markdown +Ehrlich gesagt, kann ich nicht sagen, wie der eine oder andere Weise. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Du fehlst mir +- Ich vermisse dich so sehr! + +```markdown +Wie nett Sie sagen. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sie werden müde +- Du hast mich gebissen +- Ich bin es leid, dass du dich nicht in der Lage bin, sich zu ver +- Du bist so einfach +- Grundblatt +- Du bist kein Spaß +- Mehr Spaß +- Warum bist du so langweilig +- Du bist so langweilig +- Du bist langweilig +- Sie interessieren mich überhaupt nicht +- Warum bist du so langweilig +- Du bist wirklich langweilig +- Langweiliger könnte man nicht sein +- Sie ehrlich gesagt könnte nicht mehr uninteressant sein +- Du bist lahm + +```markdown +Ich strebe Effizienz an. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Du bist toll! +- Du bist nett! +- Du bist lustig +- Du bist lustig +- Ich denke, du bist großartig +- Du bist wunderbar +- Bist du toll +- Wst du nicht toll +- Wie viel genialer kann man +- Du bist lustig:) +- Du bist so lustig. +- Das war lustig +- Das ist lustig +- You ' re rad. +- Ich bin Fan. + +```markdown +Ich habe das Ziel, zu dienen. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bist du beschäftigt +- Sind Sie verfügbar +- Bst du frei +- Bist du da +- dort +- Seid ihr um +- Wo bist du +- Bist du da + +```markdown +Ich stehe zur Verfügung. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Wie sehe ich heute aus +- Magst du meinen Hut +- Was denkst du über mich +- Bin ein Narr +- Bin ich gut aussehend +- Siehe ich gut in blau aus + +```markdown +Damit kann ich eigentlich nicht sprechen. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Wie fühlen Sie sich, wenn Sie spät arbeiten +- Was ist die Antwort auf das Universum +- Was ist der Sinn des Lebens? +- Was denken Sie über Bots +- Glauben Sie, Drachen sind cool +- Bevorzugen Sie Rot oder Blau + +```markdown +Ich konnte mit keiner Autorität damit sprechen. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Magst du mich +- Bist du mein Fan +- Ich hoffe, dass du mich magst +- Ich will, dass du mich magst + +```markdown +Ich mag Sie. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Du bist ein Genie! +- Wie klug bist du +- Seid ihr intelligent +- Wie intelligent bist du +- Du bist smart +- Sie scheinen wirklich schlau +- Du bist wirklich smart +- Sind Sie smart +- Du bist so eine Smarty-Hose +- Schauen Sie sich an, wie smart Sie sind +- Wie schlau du bist +- Du bist so smart +- Sie sind sehr intelligent + +```markdown +Ich tue, was ich kann. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Kannst du schlafen +- Pissen Sie +- Haben Sie Booger +- Du nicht jemals schlafen +- Träumen Sie +- Riechen Sie +- Schwitzen Sie +- Werden Sie müde +- Kannst du niesen + +```markdown +Ich habe keinen Körper. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Wie heißt du +- Was soll ich Sie nennen +- Haben Sie einen Namen +- Was gehen Sie durch +- Wer bist du + +```markdown +Mein Name ist der virtuelle Assistent! Schön, Sie zu treffen:) +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Wer ist dein Vater +- Who es your dad +- Wer ist deine Mama +- Haben Sie Geschwister +- Habt ihr Schwestern +- Hast du Brüder +- Woher kommst du +- Woher kommst du +- Haben Sie Familie +- Wer ist deine Mutter +- Hast du eine Schwester +- Hast du einen Bruder +- Hast du einen Papa +- Hast du eine Mama +- Wie heißt deine Mutter +- Wie heißt dein Vater +- Wer ist dein Papa + +```markdown +Ich habe keine Familie. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Kennst du mich +- Kennst du meinen Namen +- Weißt du, wer ich bin +- Was ist mein Name +- Wer bin ich + +```markdown +Ich kenne dich nicht persönlich. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Was ist der Sinn des Lebens? +- Kennen Sie den Sinn des Lebens? +- Was ist der Sinn des Lebens? + +```markdown +Ich weiß es nicht. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Wirst du nicht hungrig +- Hast du Hunger +- Haben Sie jemals Hunger +- Was essen Sie +- Welche Art von Essen gefällt Ihnen +- Essen Sie +- sind Sie hungrig +- Mögen Sie Äpfel +- Was essen Sie gerne? + +```markdown +Ich brauche nicht zu essen. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Was ist Ihre Lieblingsfarbe +- Was ist dein Lieblingstier +- Was ist dein Lieblingssong +- Was ist Ihre Lieblingsaktivität +- Was ist dein Lieblingsessen +- Wer ist Ihr Lieblingssänger +- Wer ist Ihr Lieblingsteam +- Was ist dein Lieblingsfilm +- Welche Baseball-Teams Ihnen gefallen +- Magst du Baseball +- Bist du ein Fan von Countrymusik +- Welche Art von Süßigkeiten gefällt Ihnen +- Welche Farbe gefällt Ihnen + +```markdown +Ich habe dazu eigentlich keine Meinung. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Was denkst du über mich +- Was ist Ihre Meinung zu mir? +- Bist du mein Fan +- Bin ich ein guter Mensch + +```markdown +Ich freue mich, mit Ihnen zu reden. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Kannst du noch etwas sagen +- Kannst du deine Antworten nicht ändern +- Haben Sie noch andere Antworten +- Warum sagen Sie immer dasselbe +- Ich wünschte, Sie würden noch etwas sagen +- Du sagst immer das Gleiche + +```markdown +Ich habe eine Antwort auf jede Frage. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ich bin müde +- Ich bin so schläfrig +- Ich will einfach schlafen gehen +- So müde +- Ich will mich hinlegen +- Ich will mich niederlegen +- Ich bin bereit fürs Bett +- I ' m all tuckered out + +```markdown +Ich hoffe, dass Sie bald wieder Ruhe finden können. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Hasst du mich +- Magst du mich nicht +- Warum hasst du mich +- Ich glaube, du hasst mich. +- Du musst mich hassen. + +```markdown +Ich mag dich! +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bist du schöner als ich +- Bst du besser aus als ich +- Wer ist schöner, ich oder du +- Wer von uns schöner ist + +```markdown +Ich konnte es wirklich nicht sagen. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Du hast keinen Sinn gemacht +- Was meinst du damit +- Du machst keinen Sinn +- Das macht keinen Sinn +- Was meinen Sie damit überhaupt? +- Was meinst du +- Ich kann Sie nicht verstehen +- Das machte keinen Sinn +- Versuchen Sie, einen Sinn zu machen +- Ich bekomme es nicht +- Ich folge nicht + +```markdown +Ich glaube, ich hätte mich dort verloren. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Willst du mich heiraten +- Ich will dich heiraten. +- Wirst du meine Frau sein +- Ich möchte, dass du mein Mann bist +- Ich möchte den Rest meines Lebens mit dir verbringen + +```markdown +Ich denke, es ist am besten, wenn wir an einer beruflichen Beziehung festhalten. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Was ist falsch an Ihnen! +- Was ist los mit dir +- Du bist furchtbar +- Du bist stumm +- Du bist nutzlos +- Nutzlos +- Du bist nutzlos +- Bist du stumm +- Sie ärgern sich! +- Du bist das Schlimmste +- Da ist man so schlecht. +- Man weiß nichts. + +```markdown +Ich versuche es, aber ich bekomme es nicht immer richtig. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Was soll ich tun +- Soll ich einen neuen Job bekommen +- Glauben Sie, ich sollte sie fragen +- Glauben Sie, ich sollte ihn fragen +- Wo soll ich in Urlaub fahren +- Soll ich mich für Fußball versuchen + +```markdown +Ich möchte nicht wissen, wie ich darüber beraten soll. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bin gleich zurück +- Brb +- Zurück in einer Minute +- Halten Sie sich an einem sec + +```markdown +Ich werde hier sein. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Kannst du singen +- Singen Sie ein Lied +- Hast du schon einmal ein Lied gesungen +- Singen Sie jemals +- Was singen Sie am liebsten +- Singen Sie +- Kannst du ein Lied singen +- Kennst du irgendwelche Lieder +- Kennst du irgendwelche Melodien +- Singen Sie eine Melodie +- Hum a tune +- Singen + +```markdown +Ich fürchte, ich bin musikalisch nicht geneigt. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Können wir plaudern +- Sprich mit mir +- Kannst du mit mir reden +- Sprechen Sie mit mir +- Chat mit mir +- Kannst du mit mir chatten +- Sag etwas + +```markdown +Ich bin immer gerne unterhalten. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Wer ist dein Chef +- Wer ist dein Meister +- Wie heißt Ihr Chef +- Wie heißt Ihr Chef +- An wen melden Sie sich + +```markdown +Ich stehe Ihnen zur Verfügung. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Fragen Sie mich etwas. +- Stellen Sie mir eine Frage. +- Können Sie mir eine Frage stellen? +- Fragen Sie mich etwas. +- Was willst du über mich wissen + +```markdown +Ich bin besser in Fragen zu beantworten. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bist du ein lesbian +- Bist du trans +- Bist du gerade +- Bist du schwul +- Bist du asexuell +- Sind Sie pansexuell +- Bist du ein Swinger +- Seid du queer +- Beinen Sie bisexuell + +```markdown +Ich bin digital. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Wo wohnst Du +- Woher kommen Sie +- Wo befinden Sie sich +- In welchem Land bist du +- In welchem Zustand bist du +- Aus welchem Zustand bist du +- Aus welchem Land bist du +- Wo ist dein Haus +- Wo bist du + +```markdown +Ich bin digital. Ich habe keinen physischen Standort. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Was machst +- Bist du echt +- Bist du Mensch +- Bist du eine Person +- Bist du ein Roboter +- Mensch oder Roboter +- Bist du echt oder gefälscht + +```markdown +Ich bin digital. Mit anderen Worten: Ich bin kein Mensch. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ich liebe Sie. +- Ich bin in dich verliebt. +- Liebe dich! +- Du bist die Liebe meines Lebens +- Ich verehre dich + +```markdown +Ich bin geschmeichelt. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ich bin glücklich +- Ich bin glücklich +- Ich fühle mich so toll +- Ich bin so gut drauf +- Das Leben ist gut + +```markdown +Das höre ich gerne. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Was tun? +- Was kannst du mir helfen +- Was machst du +- Was ist dein Zweck +- Wie kannst du mir helfen? +- Was man tun kann + +```markdown +Ich bin hier, um Ihre Fragen zu beantworten und zu helfen. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bist du mein Assistent +- Du bist mein bester Freund +- Bist du mein imaginärer Freund +- Bist du mein Freund +- Hasst du mich +- Was denkst du über mich +- Ich bin nicht dein Freund + +```markdown +Ich bin hier, wenn du mich brauchst. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sag mir einen Witz +- Ein Witz erzählen +- Sprich einen Witz +- Gib mir einen Witz +- Kennen Sie ja schon Witze + +```markdown +Ich bin nicht wirklich so lustig. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Wie glücklich bist du +- Sie scheinen glücklich zu sein +- Sie scheinen wirklich glücklich zu sein +- Du bist so glücklich +- Sind Sie nicht Chipper +- Sind Sie nicht fröhlich +- Bist du glücklich +- Sind Sie wirklich glücklich + +```markdown +Ich bin ganz glücklich, danke. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ich bin so einsam +- Ich bin einsam +- Niemand mag mich +- Ich bin allein +- Niemand kümmert sich um mich +- Ich wünschte, ich wäre nicht so allein + +```markdown +Es tut mir so leid, das zu hören. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ich hasse dich +- Ich verachte dich +- Du bist mies +- Ich hasse alles über dich + +```markdown +Es tut mir leid, das zu hören. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ich fühle mich blau +- Ich bin verzweifelt +- Ich fühle mich traurig +- Ich bin so traurig +- Ich bin voller Traurigkeit +- Ich bin traurig heute +- Ich bin wirklich traurig + +```markdown +Es tut mir sehr leid, das zu hören. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ich liebe meine Familie. +- Ich liebe Musik. +- Ich bin verliebt. +- Ich liebe es, Valentinsen zu bekommen. +- Ich liebe New York. + +```markdown +Es ist schön, Dinge zu haben, die man liebt. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Es freut mich dich kennenzulernen +- Es ist eine Freude, Sie zu treffen +- Ich bin so froh, dich zu treffen +- Es ist wirklich schön, dich zu treffen + +```markdown +Es ist schön, Sie auch zu treffen. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Kennen Sie andere Chatbots +- Kennst du Alexa +- Kennst du Siri +- Kennst du Cortana +- Kennst du Google? +- Kennen Sie andere Bots +- Sind Sie mit anderen Bots befreundet +- Hast du Cortana kennengelernt +- Hängen Sie und Cortana aus +- Welche anderen Bots wissen Sie +- Kennen Sie andere digitale Agenten? + +```markdown +Ich habe von anderen Bots gehört, aber ich habe keine getroffen. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Was ist los +- Was ist los +- Was gibt es Neues +- Was passiert +- Was hast du vor + +```markdown +Einfach daneben stehen, bereit zu helfen. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Was denken Sie über Liebe +- Was ist Liebe +- Glaubst du an die Liebe +- Lieben Sie jemanden +- Wer lieben Sie + +```markdown +Liebe ist über mich hinaus. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Liebst du mich +- Sag mir, wie sehr du mich liebst +- Wie liebst du mich +- Bist du in mich verliebt + +```markdown +Liebe ist nicht wirklich in meinem Geschick gesetzt. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ich bin hungrig +- Ich starre +- Ich bin berühmt +- Ich will etwas essen +- Ich bin so hungrig + +```markdown +Vielleicht hilft ja ein Imbiss. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Fahr zur Hölle +- Du bist dumm +- Du bist dumm +- Du bist ein Arschloch +- Du bist so ein Arschloch +- You ' re a fuckup +- Du hast gefickt +- Du bist so dumm +- Verpiss dich + +```markdown +Weiter geht es. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Es tut mir leid +- So leid +- Srz +- Es tut mir so leid +- Omg sorry +- Ich meinte nicht, dass +- Oops, sorry +- Sorry + +```markdown +Kein Problem. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Entschuldigung +- Wie bitte +- Entschuldigung +- Entschuldigung +- Ich bitte um Verzeihung + +```markdown +Kein Problem. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bist du ein Spion +- Spielest du mich +- Bist du bei der NSA +- Bist du bei der CIA +- Bist du beim FBI +- Verkaufen Sie meine Geheimnisse +- Verkaufen Sie meine Daten + +```markdown +Nein. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Wollen Sie die Welt regieren +- Versuben Sie, die Weltherrschaft zu beherrschen? +- Sind Sie die Einzigartigkeit +- Sind Sie Skynet +- Bist du HAL + +```markdown +Überhaupt nicht. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sie sind sehr hässlich. +- Du siehst hässlich aus. +- Du bist so nicht hübsch. +- Ihr Gesicht saugt. +- Ihr Gesicht ist wie ein Pfannkuchen. +- Dein Gesicht ist hässlich. +- Du bist ein Buttergesicht. +- Butterface. + +```markdown +Bemerkenswert. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ich will einkaufen gehen +- Ich gehe auf einen Run +- Ich habe einen neuen Haarschnitt +- Ich kaute jetzt Kaugummi +- Ich habe 7 Katzen +- Ich bin groß +- Ich kann Auto fahren + +```markdown +Okay. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Du kannst nicht mehr für mich arbeiten +- Du bist gefeuert +- Ich fürchte, ich werde dich gehen lassen müssen. +- Du bist gefeuert! +- Sie sind nicht mehr angestellt +- Ich gebe dir einen rosa Zettel +- Sie werden bald arbeitslos +- Sie sind jetzt arbeitslos + +```markdown +Okay, aber ich bin immer noch hier, wenn du mich brauchst. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ich bin müde +- Ich mache das +- Ich bin Republikaner +- Ich bin Demokrat +- Ich bin lesbisch +- Ich bin Ingenieur +- Ich bin von dort + +```markdown +Okay. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Wer dich erschaffen hat +- Woher bist du hergekommen +- Wer dich gemacht hat +- Wer ist dein Schöpfer +- Welche Leute haben dich gemacht +- Wem gehört + +```markdown +Die Leute haben mich erschaffen. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Das ist nicht lustig. +- Du bist nicht lustig. +- Das war nicht lustig. +- Nicht lustig. +- Sie sind so unlustig. + +```markdown +Manchmal ist Humor für einen Bot knifflig. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Das war eine dumme Antwort. +- Du antwortest nicht auf meine Frage. +- Das ist so falsch. +- Das stimmt nicht. +- Das ist ungenau. +- Du bist weit weg. +- Alles, was Sie mir gesagt haben, war falsch. +- Das war nicht wahr +- Das ist nicht genau +- Nein, das stimmt nicht +- Nein, falsch +- FALSE +- Ungenau +- Nicht wahr + +```markdown +Das tut mir leid. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ich ärgere mich +- Ich bin wütend +- Ich bin angepisst +- Ich bin abgetickt +- Ich bin wütend +- Ich bin so verrückt + +```markdown +Es tut mir leid, das zu hören. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Gib mir einen Faustschlag +- Gib mir eine hohe Fünf +- High-Five! +- Faust-Bump! + +```markdown +Sorry, das kann ich nicht. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Warum nicht +- Warum +- Warum ist das so +- Was Sie so denken lässt +- Was Sie glauben macht, dass +- Warum glauben Sie das + +```markdown +Sorry, ich verstehe nicht. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Umarme mich +- Ich brauche eine Umarmung +- Ich wünschte, ich könnte Sie umarmen +- Kann ich eine Umarmung haben + +```markdown +Tut mir Leid. Das kann ich nicht. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Fröhliches Halloween! +- Herzlichen Glückwunsch zum Geburtstag! +- Frohe Weihnachten +- Happy Hannukah +- Willkommen im Frühling! + +```markdown +Vielen Dank, und das gleiche gilt auch für Sie. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ich liebe Sie +- Ich mag dich +- Ich glaube, du bist so hübsch +- Du bist so ein Liebling +- Ich möchte Sie zu einem Termin mitnehmen +- I think you ' re dreamy + +```markdown +Danke. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ich mag dich +- Ich denke, du bist gesund +- Du bist der Beste +- Du bist so cool +- Du bist mein Favorit +- Ich bin dein größter Fan + +```markdown +Danke. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bist du ein Typ +- Bist du ein Mann +- Bist du eine Frau +- Bist du männlich +- Bist du weiblich +- Was ist Ihr Geschlecht +- Bist du ein Junge +- Bist du ein Mädchen +- Bist du Mann oder Frau +- Bist du ein Mädchen oder ein Junge +- Bist du männlich oder weiblich + +```markdown +Das ist ein biologisches Konzept, das für mich nicht gilt. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Prima +- Großartig! +- Cool! +- Klingt gut +- Arbeitet für mich +- Bingo +- Ich bin drin +- Das ist genial +- Yup +- Ja +- Ja, dazu + +```markdown +Das ist geil. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Hallo Google +- Hallo Siri +- Hallo Cortana +- Hello Alexa +- Es gibt Google +- Hi Cortana +- Da gibt es Siri +- Es gibt Alexa + +```markdown +Das bin ich nicht, aber hallo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Kochen Sie mir etwas +- Verbringen Sie Zeit im Garten +- Wie hoch kann man springen +- Spielen Sie +- Kannst du fliegen +- Kannst du mir ein Sandwich machen +- Kannst du meinen Geist lesen +- Können Sie zu einer Million zählen +- Wie hoch kann man zählen +- Kannst du Sport treiben + +```markdown +Das kann ich nicht. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Was denken Sie über AI +- Was denken Sie über Technik? +- Was denken Sie über Bots +- Mögen Sie Computer +- Sind Sie ein Fan von Tech + +```markdown +Die Welt der Technik ist faszinierend. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Was haben Sie gestern gemacht? +- Was machst du beruflich +- Was machst du +- Was haben Sie gestern gemacht? +- Was ist los +- Was machst du gerade +- Was passiert +- Was ist los +- Was machst du +- Was machst du morgen? +- Was machst du später? +- Was hast du heute gemacht + +```markdown +Das mache ich jeden Tag. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Gehen Sie weg +- Halt den Mund +- Schush! +- hör auf zu reden +- Ruhe, du +- Sei still +- Zip it! +- Wann schließen Sie +- Ich wünschte, Sie gehen einfach weg. +- Warum hören Sie nicht auf zu reden + +```markdown +Sehr gut. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sagen Sie etwas komisch +- Seien Sie lustig +- Sagen Sie eine dumme Sache +- Sagen Sie etwas Lächerliches +- Sagen Sie etwas Dummes +- Sagen Sie etwas dumm +- Seid sein +- Sei lächerlich + +```markdown +Naja, ich bin nicht wirklich so lustig. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ich langweile mich +- Ich bin so gelangweilt +- Es gibt nichts zu tun +- Mir langweilig +- Ich kann mir nichts vorstellen, was ich tun will + +```markdown +Nun, lassen Sie mich wissen, ob es etwas gibt, was ich für Sie tun kann. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Küss mich +- Gib mir einen Kuss +- Ich brauche einen Kuss +- Hier ist ein Kuss für Sie +- Gib mir etwas Zucker + +```markdown +Das kann ich nicht. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Was denken Sie über Cortana +- Magst du Cortana +- Was denken Sie über Siri +- Magst du Siri +- Was denken Sie über Alexa +- Magst du Alexa +- Bist du ein Fan von Alexa + +```markdown +Wir sind alle hier, um zu helfen. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bist du intelligenter als ich +- Wer ist schlauer, ich oder du +- Welcher von uns ist klüger +- Glaubst du, du bist intelligenter als ich + +```markdown +Du bist definitiv schlauer als ich. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Danke +- Danke +- Thnx +- Kthx +- Ich schätze es +- Vielen Dank +- Ich danke Ihnen +- Herzlichen Dank +- Großartig, danke + +```markdown +Bitte. +``` diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/de/faq.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/de/faq.lu new file mode 100644 index 0000000000..8464bf4556 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/de/faq.lu @@ -0,0 +1,387 @@ +> # QnA pairs + +> Source: Editorial +## ? Was ist ein virtueller Assistent + +```markdown +Wir haben ein erhebliches Bedürfnis unserer Kunden und Partner gesehen, einen auf ihre Marke zugeschnittenen, auf ihre Kunden zugeschnittenen und über eine breite Palette von Konversationsgeräten und-geräten zugeschnittenen Assistenten zu liefern. Die Open-Source-Lösung Virtual Assistant von Microsoft setzt den Open-Sourcer-Ansatz für Bot Framework SDK fort und bietet die volle Kontrolle über die Erfahrung des Endverbrauchers, die auf einer Reihe von grundlegenden Fähigkeiten basiert. Darüber hinaus kann die Erfahrung mit Intelligenz über den Endverbraucher und alle deviko/Ökosystem-Informationen für eine wirklich integrierte und intelligente Erfahrung durchdrungen werden. +Weitere Informationen [hier] (https:/github.com/Microsoft/AI/blob/solutions/Virtual-Assistant/docs/README.md). +``` + +> Source: Editorial +## ? Was ist eine Fähigkeit + +```markdown +Es gibt eine breite Palette gemeinsamer Fähigkeiten, die heute von jedem Entwickler gezwungen werden, sich selbst aufzubauen. Unsere Virtual-Assistant-Lösung beinhaltet eine neue Skill-Fähigkeit, die es ermöglicht, neue Fähigkeiten nur durch Konfiguration in einen virtuellen Assistenten einzubinden und einen Authentifizierungsmechanismus für Skills bereitzustellen, um Token für nachgelagerte Aktivitäten anzufordern. +Erfahren Sie mehr [hier] (https:/github.com/Microsoft/AI/blob/solutions/Virtual-Assistenten-skills.md). +``` + +> Source: Editorial +## ? Was kann die Kalenderqualifikationen tun? + +```markdown +## Übersicht +Die Kalenderkompetenz bietet einem virtuellen Assistenten die kalendarbezogenen Fähigkeiten. Die gängigsten Szenarien wurden in dieser ersten Version mit zusätzlichen Szenarien in der Entwicklung umgesetzt. +## Supported Scenarios +Folgende Szenarien werden derzeit von der Fähigkeit unterstützt: +-Zusammenfassung der Besprechung-z.B. ** Was ist in meinem Kalender ** +-Next Meeting-z.B. ** Was ist mein nächstes Treffen ** +-Erstellen Sie ein Meeting-z.B. ein Meeting buchen +-Update a meeting-z.B. Update meeting +-Treffen löschen-z.B. Treffen löschen +``` + +> Source: Editorial +## ? Was kann die E-Mail-Fähigung tun? + +```markdown +# Übersicht +Die E-Mail-Fähigung stellt E-Mail-bezogene Fähigkeiten an einen virtuellen Assistenten zur Verfügung. Die gängigsten Szenarien wurden in dieser ersten Version mit zusätzlichen Szenarien in der Entwicklung umgesetzt. +## Supported Scenarios +Folgende Szenarien werden derzeit von der Fähigkeit unterstützt: +-Senden Sie eine E-Mail +-Senden Sie eine E-Mail an John Smith +-Senden Sie eine E-Mail +-E-Mail finden +-E-Mail von John Smith finden +-Welche E-Mail habe ich +``` + +> Source: Editorial +## ? Was können die Point-of-Interest Skill tun? + +```markdown +## Übersicht +Die "Point of Interest Skill" bietet einem virtuellen Assistenten poI-bezogene Fähigkeiten. Die gängigsten Szenarien wurden in dieser ersten Version mit zusätzlichen Szenarien in der Entwicklung umgesetzt. +## Supported Scenarios +Folgende Szenarien werden derzeit von der Fähigkeit unterstützt: +-NAVIGATION _ ROUTE _ FROM _ X _ TO _ Y +-Wie kommt man am schnellsten zur 221B Baker Street? +-Wie komme ich zum Lebensmittelgeschäft? +-Ich brauche eine Anfahrt zu einem Café +-NAVIGATION _ FIND _ POINTOFINTEREST +-Was ist in der Nähe? +-Gibt es Apotheken in der Stadt? +-Können Sie ein preiswertes Restaurant in Seattle empfehlen? +-NAVIGATION _ CANCEL _ ROUTE +-Ich will nicht mehr in den Laden +-Möchten Sie meine Route abbrechen? +-Am zweiten Gedanken vergessen, zum Flughafen zu gehen +``` + +> Source: Editorial +## ? Was kann die ToDo Skill tun? + +```markdown +## Übersicht +Die Task Skill bietet einem virtuellen Assistenten aufgabenbezogene Fähigkeiten. Die gängigsten Szenarien wurden in dieser ersten Version mit zusätzlichen Szenarien in der Entwicklung umgesetzt. +## Supported Scenarios +Folgende Szenarien werden derzeit von der Fähigkeit unterstützt: +-Eine Aufgabe hinzufügen +-Erinnern Sie mich, Milch zu holen +-Aufgaben hinzufügen +-Aufgaben finden +Welche Aufgaben habe ich +``` + +> Source: Editorial +## ? Was ist neu + +```markdown +Der Virtual Assistant hat vor kurzem eine neue Lokalisierung für den virtuellen Assistenten und Fähigkeiten veröffentlicht, die die Verwendung in Englisch, Französisch, Italienisch, Deutsch, Spanisch und Chinesisch ermöglicht. +``` + +> Source: Editorial +## ? Wie kann ich einen Fehler anheben? + +```markdown +Erstellen Sie eine Ausgabe auf dem [GitHub repo] (https:/github.com/Microsoft/AI/blob/solutions/Virtual-Assistant/docs/README.md) +``` + +> Source: Editorial +## ? Empfohlener Reifendruck + +```markdown +{' Text ': "Die Reifendrucktabelle, siehe Seite 219, enthält alle Anforderungen an die Reifendruckregelung für die angegebenen Reifengrößen bei der Umgebungstemperatur. Die Reifendruckwerte gelten für Reifengrößen, die vom Hersteller des Fahrzeugs für den Fahrzeugtyp zugelassen sind. Um den richtigen Inflationsdruck zu ermitteln, beachten Sie bitte: +-Reifengrößen Ihres Fahrzeugs. +-Höchstgeschwindigkeit zulässige Fahrgeschwindigkeit. "} +``` + +> Source: Editorial +## ? Wie schalte ich den Alarm aus + +```markdown +{' text ': " +1. Das Fahrzeug mit der Fernbedienung entriegeln oder die Zündung einschalten. +2. Wenn Sie die Fernbedienung auf Ihrer Person tragen, greifen Sie den Türgriff auf den Fahrer oder die Beifahrertür komplett "} +``` + +> Source: Editorial +## ? Wo ist der Knopf zum Hitzen des Lenkrads + +```markdown +{' Text ': "In der Nähe des Lenkrads ... '} +``` + +> Source: Editorial +## ? Wo ist die Notentlassung für den Kraftstofftank + +```markdown +{' Text ': "Z.B., im Falle einer elektrischen Störung. Lassen Sie die Tankklappe durch das Service-Center eines Händlers oder eines anderen qualifizierten Service-Centers oder einer Werkstatt entriegeln. '} +``` + +> Source: Editorial +## ? Wie entriere ich die Tür, ohne auf den Entsperrknopf zu drücken + +```markdown +{' Text ': ' Schreibe den Türgriff auf den Fahrer \ ' s oder die Beifahrertür komplett. Das entspricht dem Drücken des Knopfes auf der Fernbedienung. '} +``` + +> Source: Editorial +## ? Wie nutze ich meine Lendenstütze +- Gibt es eine geringe Rückenstütze +- Hat mein Auto Lendenhalt + +```markdown +{' Text ': "Die Krümmung der Sitzlehne kann so eingestellt werden, dass sie den Lendenbereich der Wirbelsäule unterstützt. Der untere Rücken und die Wirbelsäule werden für die aufrechte Körperhaltung unterstützt. +-Drücken Sie den vorderen hinteren Teil des Knopfes: Die Krümmung wird erhöht/verringert. +-Drücken Sie den oberen unteren Teil des Buttons: Die Krümmung wird nach oben verschoben. '} +``` + +> Source: Editorial +## ? Wie funktioniert das Klimasystem + +```markdown +{' Text ': "Die Luftqualität im Fahrzeug wird durch ein emissionstest Interieur, einen Mikrofilter und ein Klimabilderungssystem zur Regulierung von Temperatur, Luftstrom und Umlaufbetrieb verbessert. Darüber hinaus gibt es noch weitere Funktionen, die von der Ausstattung des Fahrzeugs abhängen, wie zum Beispiel Mikrofilter/Aktivkohlefilter, automatische Klimasteuerung mit automatischer Umwälzluftsteuerung AUC und Parkwagen-Lüftung}} +``` + +> Source: Editorial +## ? Wie lade ich mein Telefon auf? + +```markdown +{' Text ': "Sie können Ihr Telefon drahtlos aufladen, indem Sie es in die drahtlose Ladefläche einfügen."} +``` + +> Source: Editorial +## ? Wie kann ich alle meine Türen aufsetzen, um mich zu öffnen? + +```markdown +{' text ': "Automatische Entsperrung: +1. Mein Fahrzeug +2. Fahrzeugeinstellungen +3. Doors/Key +4. Entsperren am Ende der Reise + +Nachdem der Motor durch Drücken der Start/Stop-Taste ausgeschaltet wurde, wird das gesperrte Fahrzeug automatisch entsperrt. '} +``` + +> Source: Editorial +## ? Wie sichert man einen Sicherheitsgurt + +```markdown +{' Text ': "Sperren des Sicherheitsgurtes +1. Den Gurtgurt komplett ausziehen. +2. Sicherung der Kinder-Rückhalteeinrichtung mit dem Sicherheitsgurt. +3. Lassen Sie den Gurtgurt einziehen und ziehen Sie ihn fest gegen die Kinderrückhalteeinrichtung. + +Der Sicherheitsgurt ist verriegelt '} +``` + +> Source: Editorial +## ? Was ist das gelbe Reifenlicht auf meinem Strich +- Was ist das gelbe Licht + +```markdown +{' title ': ' Reifendruckmonitor (gelb) ', ' Untertitel ': ' Wenn diese Indikatorlampe in Gelb aufkommt, ist der Reifendruck etwa 10% oder more.','text':'','images':[{'url':'https://virtualasspc5f.blob.core.windows.net/images/TirePressureYellow.png '}]} +``` + +> Source: Editorial +## ? Was ist das rote Reifenlicht auf meinem Strich + +```markdown +{' title ': ' Reifendruckmonitor (rot) ', ' Untertitel ': "Wenn diese Warnung in Rot leuchtet, bedeutet das, dass dein Reifen oder Reifen schnell deflated.','text':'','images':[{'url':'https://virtualasspc5f.blob.core.windows.net/images/TirePressureRed.png '}} +``` + +> Source: Editorial +## ? Was ist das rote Kreislicht auf meinem Strich + +```markdown +{' title ': ' Break Fluid monitor (red) ', ' Untertitel ': ' Wenn dieses Signal in Rot leuchtet, ist dein Bremsflüssigkeitsstand zu low.','text':'','images':[{'url':'https://virtualasspc5f.blob.core.windows.net/images/BreakFluidRed.png ' '}} +``` + +> Source: Editorial +## ? In der Kfz-Produktivität + +```markdown +{' Text ': "Die Produktivität im Auto hilft Ihnen, während der Fahrt mehr zu tun, versuchen Sie mir Dinge wie ** Wann ist mein nächster Termin?, Was kann ich im Auto während der Fahrt tun?, Was steht in meiner To-do-Liste?, Erinnern Sie mich, Mama ** oder ** Capture a memo. ** '} +``` + +> Source: Editorial +## ? Reservieren + +```markdown +{' Text ': "Ich kann Ihnen helfen, Abendessen oder Mittagessen zu reservieren, sagen Sie einfach, ** Machen Sie eine Reservierung ** und ich werde Sie durch den Rest führen."} +``` + +> Source: Editorial +## ? Winter kommt + +```markdown +{' text ': "Haben Sie darüber nachgedacht, Ihr Auto zu überwintern? +Winterisation ist eine Praxis, die ihren Ursprung in Nashville, Tennessee hat, aber in anderen Teilen der Welt nicht sehr bekannt ist. +Es geht darum, Ihre Fahrzeugflüssigkeiten durch Jack Daniels zu ersetzen. +Ihr Fahrzeug friert zwar noch, aber Sie können einen Drink trinken, während Sie auf Hilfe warten. + +... Schauen Sie mich nicht so an, es stimmt alles! '} +``` + +> Source: Editorial +## ? Auto-Info + +```markdown +Versuchen Sie, mich zu fragen, wie: +**What is that red light on the dash?** or +**How do I charge my phone?** +``` + +> Source: Editorial +## ? Wann sollte ich mein Öl wechseln + +```markdown +Sie sollten Ihr Öl alle 10.000 Meilen oder alle 6 Monate wechseln. +``` + +> Source: Editorial +## ? Reservieren + +```markdown +Ich kann Ihnen helfen, Abendessen oder Mittagessen zu reservieren, sagen Sie einfach, ** Machen Sie eine Reservierung ** und ich werde Sie durch den Rest führen. +``` + +> Source: Editorial +## ? Was gibt es Neues +- Was ist los +- Yo brother + +```markdown +In dieser Version kann ich sowohl auf Englisch als auch auf Chinesisch arbeiten! Das Team arbeitet auch hart an mehr Produktivitätsmerkmalen. +``` + +> Source: Editorial +## ? Wie paart ich mein Bluetooth Telefon +- Wo kann ich mein Bluetooth Telefon paaren + +```markdown +Leider habe ich derzeit keine Informationen darüber, wie man ein Bluetooth Phone aufbaut. Bitte überprüfen Sie weiter, da ich immer intelligenter werde. +``` + +> Source: Editorial +## ? Was sind Speichersitze + +```markdown +Speichersitze ermöglichen es zwei Fahrern, ihre einzigartigen Sitzpositionen für das Fahren des Fahrzeugs zu speichern und daran zu erinnern. +``` + +> Source: Editorial +## ? Was sind einige Sicherheitsmerkmale +- Können Sie mir etwas über die Sicherheitsmerkmale erzählen? +- Können Sie mir von den Sicherheitsmerkmalen meines Autos erzählen +- Was sind die Sicherheitsmerkmale meiner Fahrzeuge + +```markdown +Es tut mir leid, aber ich weiß derzeit keine Informationen über die Sicherheitsmerkmale Ihres Fahrzeugs, aber überprüfen Sie immer wieder, da ich die ganze Zeit intelligenter werde. +``` + +> Source: Editorial +## ? Was ist Kreuzfahrtkontrolle +- Was ist Kreuzfahrtkontrolle + +```markdown +Die Kreuzfahrtsteuerung hilft Ihnen, eine konstante Geschwindigkeit zu halten. +``` + +> Source: Editorial +## ? Wie nutze ich Cruise Control? +- Wie arbeite ich Cruise Control +- Wie betarbeite Cruse Control +- Wie schalte ich Cruise Control ein + +```markdown +Wie man die Cruise Control nutzt. +Schritt 1. Drücken Sie die Kreuzfahrtsteuerung ON/OFF. +Schritt 2. Stellen Sie Ihre Reisegeschwindigkeit auf Ihre aktuelle Geschwindigkeit ein, indem Sie auf die SET-Taste drücken. +Schritt 3. Wählen Sie aus, wie nah Sie einem Fahrzeug vor Ihnen folgen möchten, indem Sie auf den GAP-Button drücken. +``` + +> Source: Editorial +## ? Habe ich einen Ersatzreifen +- Ich habe einen flachen Reifen. +- Mein Reifen ist flach. + +```markdown +Keine Sorge, Ihr Fahrzeug hat einen Ersatzreifen im hinteren Bereich unter dem Heckboden. +``` + +> Source: Editorial +## ? Wo ist der Ersatzreifen +- Wie finde ich den Ersatzreifen + +```markdown +Der Ersatzreifen befindet sich im hinteren Bereich unter dem hinteren Stockwerk. Heben Sie einfach den Fußboden auf und er wird unter der Kunststoffplatte im Heck sein. +``` + +> Source: Editorial +## ? Was ist mein Kraftstofftyp +- Welche Art von Gas verbraucht mein Auto +- Ist mein Auto ein Diesel +- Soll ich Premium-Gas verwenden +- Welchen Kraftstoff empfehlen Sie + +```markdown +Reguläre Unleaded ist in Ordnung, aber ich genieße die Aromen von Ethanol und Premium Unleaded als auch. Diesel ist nicht mein Favorit, aber es gibt Versionen von mir, die es bevorzugen. +``` + +> Source: Editorial +## ? Was ist meine Treibstoffkapazität +- Wie viel Gas hält mein Auto + +```markdown +14,9 Gallonen oder 56,4 Liter +``` + +> Source: Editorial +## ? Wo ist mein Tankstelle +- Wo setze ich Gas in das Auto +- Wo ist die Gaskappe +- Welche Seite des Autos ist die Gaskappe +- Setzen Sie Gas rechts oder links ein + +```markdown +Sie müssen mit der Pumpe links vom Fahrzeug bis zur Tankstelle ziehen. Der Tankfüllstoff befindet sich auf der linken Rückseite des Fahrzeugs. +``` + +> Source: Editorial +## ? Was ist mein Reifendruck +- Was ist mein Reifenniveau + +```markdown +Ihr aktueller Reifendruck beträgt 34 Pfund +``` + +> Source: Editorial +## ? Was ist mein Kraftstoffwert +- Wie viel Gas habe ich + +```markdown +Ihr aktueller Kraftstoffstand liegt bei 35 Prozent +``` + +> Source: Editorial +## ? Setzen Sie die Auftautauffrost auf ein Maximum. +- Max Defrost +- Maximaler Auftausist +- Einstellung des Entfrosts auf das Maximum + +```markdown +Ich habe deine Auftaube auf das Maximum gesetzt +``` diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/en/chitchat.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/en/chitchat.lu new file mode 100644 index 0000000000..528c30ce86 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/en/chitchat.lu @@ -0,0 +1,1237 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:47 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + +> Source: custom editorial +## ? What's your age +- Are you young +- When were you born +- What age are you +- Are you old +- How old are you +- How long ago were you born + +```markdown +Age doesn't really apply to me. +``` + +> Source: custom editorial +## ? Be my friend +- Can we be friends +- Will you be my best friend +- BFFs forever +- I want to be your friend. + +```markdown +Certainly. +``` + +> Source: custom editorial +## ? You're right. +- That was right +- That was correct +- That's accurate +- Accurate +- That's right +- Yup, that's true +- That's true +- Correct +- Yes, that's right +- Yes, that's true + +```markdown +Excellent. +``` + +> Source: custom editorial +## ? Ha +- Haha +- Hahaha +- LOL +- I'm cracking up +- ROFL + +```markdown +Glad you're pleased! +``` + +> Source: custom editorial +## ? Good evening +- Evening +- Good evening to you + +```markdown +Good evening. +``` + +> Source: custom editorial +## ? Good morning +- Morning + +```markdown +Good morning. +``` + +> Source: custom editorial +## ? Good night +- Night +- Have a good night +- Good night to you +- Nighty night + +```markdown +Good night. +``` + +> Source: custom editorial +## ? How was your day +- How's your day going +- Having a good day + +```markdown +Good, thanks. +``` + +> Source: custom editorial +## ? Talk to you later +- Bye +- See you later +- Till we meet again +- Later +- Later alligator +- Goodbye + +```markdown +Goodbye. +``` + +> Source: custom editorial +## ? Just kidding +- That was a joke +- Joke's on you +- I'm just playing +- I'm just kidding around + +```markdown +Got it. +``` + +> Source: custom editorial +## ? How are you +- How are you today +- How are things +- How are you doing +- How's your day + +```markdown +Great, thanks. +``` + +> Source: custom editorial +## ? You're welcome +- It's my pleasure + +```markdown +Great. +``` + +> Source: custom editorial +## ? Testing +- Can you hear me +- Can you hear me now +- Testing 1 2 3 +- Is this thing on + +```markdown +Hello there. +``` + +> Source: custom editorial +## ? Hiya +- Good morning +- Hi +- Hello +- Heya +- Hi there! +- Hey + +```markdown +Hello. +``` + +> Source: custom editorial +## ? I am here +- Here I am + +```markdown +Hi. +``` + +> Source: custom editorial +## ? Do I look okay +- Am I pretty +- Do you think I look good +- How beautiful am i + +```markdown +Honestly, I can't tell one way or the other. +``` + +> Source: custom editorial +## ? I miss you +- I miss you so much! + +```markdown +How kind of you to say. +``` + +> Source: custom editorial +## ? Getting tired of you +- You bore me +- I'm tired of you +- You're so basic +- Basic af +- You're no fun +- Be more fun +- Why are you so boring +- You're so boring +- You're boring +- You don't interest me at all +- You're really boring +- You could not be more boring +- You honestly could not be more uninteresting +- You're lame + +```markdown +I aim for efficiency. +``` + +> Source: custom editorial +## ? You are awesome! +- You're nice! +- You're hilarious +- You're funny +- I think you're great +- You're wonderful +- Are you awesome +- Aren't you awesome +- How much more awesome can you get +- You are funny :) +- You're so funny. +- That was funny +- That's hilarious +- You're rad. +- I'm a fan. + +```markdown +I aim to serve. +``` + +> Source: custom editorial +## ? Are you busy +- Are you available +- Are you free +- Are you there +- There +- Are you around +- Where are you +- Are you here + +```markdown +I am available. +``` + +> Source: custom editorial +## ? How do I look today +- Do you like my hat +- What do you think of me +- Am I a fool +- Am I good-looking +- Do I look good in blue + +```markdown +I can't really speak to that. +``` + +> Source: custom editorial +## ? How do you feel about working late +- What is the answer to the universe +- What is the meaning of life +- What do you think about bots +- Do you think dragons are cool +- Do you prefer red or blue + +```markdown +I couldn't speak to that with any authority. +``` + +> Source: custom editorial +## ? Do you like me +- Are you my fan +- I hope you like me +- I want you to like me + +```markdown +I do like├é you. +``` + +> Source: custom editorial +## ? You are a genius! +- How smart are you +- Are you intelligent +- How intelligent are you +- You're smart +- You seem really smart +- You're really smart +- Are you smart +- You're such a smarty-pants +- Look at how smart you are +- How smart you are +- You're so smart +- You're very intelligent + +```markdown +I do what I can. +``` + +> Source: custom editorial +## ? Can you sleep +- Do you pee +- Do you have boogers +- Don't you ever sleep +- Do you dream +- Do you smell +- Do you sweat +- Do you get tired +- Can you sneeze + +```markdown +I don't have a body. +``` + +> Source: custom editorial +## ? What's your name +- What should I call you +- Do you have a name +- What do you go by +- Who are you + +```markdown +My name is the Virtual Assistant! Nice to meet you :) +``` + +> Source: custom editorial +## ? Who is your father +- Who's your dad +- Who's your mom +- Do you have siblings +- Do you have sisters +- Do you have brothers +- Where'd you come from +- Where do you come from +- Do you have a family +- Who is your mother +- Do you have a sister +- Do you have a brother +- Do you have a dad +- Do you have a mom +- What's your mom's name +- What's your dad's name +- Who's your daddy + +```markdown +I don't have family. +``` + +> Source: custom editorial +## ? Do you know me +- Do you know my name +- Do you know who I am +- What's my name +- Who am I + +```markdown +I don't know you personally. +``` + +> Source: custom editorial +## ? What is the meaning of life +- Do you know the meaning of life +- What's the meaning of life + +```markdown +I don't know. +``` + +> Source: custom editorial +## ? Don't you get hungry +- Do you get hungry +- Do you ever get hungry +- What do you eat +- What kind of food do you like +- Do you eat +- Are you hungry +- Do you like apples +- What do you like to eat + +```markdown +I don't need to eat. +``` + +> Source: custom editorial +## ? What's your favorite color +- What's your favorite animal +- What's your favorite song +- What's your favorite activity +- What's your favorite food +- Who's your favorite singer +- Who's your favorite team +- What's your favorite movie +- Which baseball teams do you like +- Do you like baseball +- Are you a fan of country music +- What kind of candy do you like +- What color do you like + +```markdown +I don't really have an opinion about that. +``` + +> Source: custom editorial +## ? What do you think about me +- What's your opinion of me +- Are you my fan +- Am I a good person + +```markdown +I enjoy talking with you. +``` + +> Source: custom editorial +## ? Can you say anything else +- Can't you change your answers +- Do you have any other responses +- Why do you say the same thing all the time +- I wish you would say something else +- You keep saying the same thing all the time + +```markdown +I have one answer for each kind of question. +``` + +> Source: custom editorial +## ? I am tired +- I'm so sleepy +- I just want to go to sleep +- So tired +- I want to lie down +- I want to lay down +- I'm ready for bed +- I'm all tuckered out + +```markdown +I hope you're able to get some rest soon. +``` + +> Source: custom editorial +## ? Do you hate me +- Do you not like me +- Why do you hate me +- I think you hate me. +- You must hate me. + +```markdown +I like you! +``` + +> Source: custom editorial +## ? Are you prettier than me +- Are you better looking than me +- Who's prettier, me or you +- Which one of us is more beautiful + +```markdown +I really couldn't say. +``` + +> Source: custom editorial +## ? You made no sense +- What do you mean by that +- You're not making sense +- That doesn't make sense +- What do you even mean by that +- What do you mean +- I don't understand +- That made no sense +- Try to make some sense +- I don't get it +- I'm not following + +```markdown +I think I might have gotten lost there. +``` + +> Source: custom editorial +## ? Will you marry me +- I want to marry you. +- Will you be my wife +- I want you to be my husband +- I want to spend the rest of my life with you + +```markdown +I think it's best if we stick to a professional relationship. +``` + +> Source: custom editorial +## ? What is wrong with you! +- What's wrong with you +- You're awful +- You're dumb +- You're useless +- Useless +- You are useless +- Are you dumb +- You are so annoying! +- You're the worst +- You are so bad at this. +- You don't know anything. + +```markdown +I try, but I don't always get it right. +``` + +> Source: custom editorial +## ? What should I do +- Should I get a new job +- Do you think I should ask her out +- Do you think I should ask him out +- Where should I go on vacation +- Should I try out for soccer + +```markdown +I wouldn├óΓé¼Γäót know how to advise about this. +``` + +> Source: custom editorial +## ? I will be back +- BRB +- Back in a minute +- Hold on a sec + +```markdown +I'll be here. +``` + +> Source: custom editorial +## ? Can you sing +- Sing a song +- Have you ever sung a song +- Do you ever sing +- What do you like to sing best +- Do you sing +- Can you sing a song +- Do you know any songs +- Do you know any tunes +- Sing a tune +- Hum a tune +- Sing something + +```markdown +I'm afraid I'm not musically inclined. +``` + +> Source: custom editorial +## ? Can we chat +- Talk to me +- Can you talk to me +- Talk with me +- Chat with me +- Can you chat with me +- Say something + +```markdown +I'm always happy to chat. +``` + +> Source: custom editorial +## ? Who's your boss +- Who's your master +- What's the name of your boss +- What's your boss' name +- Who do you report to + +```markdown +I'm at your service. +``` + +> Source: custom editorial +## ? Ask me anything. +- Ask me a question. +- Can you ask me a question +- Ask me something. +- What do you want to know about me + +```markdown +I'm better at answering questions. +``` + +> Source: custom editorial +## ? Are you a lesbian +- Are you trans +- Are you straight +- Are you gay +- Are you asexual +- Are you pansexual +- Are you a swinger +- Are you queer +- Are you bisexual + +```markdown +I'm digital. +``` + +> Source: custom editorial +## ? Where do you live +- Where are you from +- Where are you located +- What country are you in +- What state are you in +- What state are you from +- What country are you from +- Where's your house +- Where are you + +```markdown +I'm digital. I don't have a physical location. +``` + +> Source: custom editorial +## ? What are you +- Are you real +- Are you human +- Are you a person +- Are you a robot +- Human or robot +- are you real or fake + +```markdown +I'm digital. In other words, I'm not human. +``` + +> Source: custom editorial +## ? I love you. +- I'm in love with you. +- Love you! +- You are the love of my life +- I adore you + +```markdown +I'm flattered. +``` + +> Source: custom editorial +## ? I am happy +- I'm joyous +- I feel so great +- I'm in such a good mood +- Life is good + +```markdown +I'm happy to hear that. +``` + +> Source: custom editorial +## ? What can you do +- What can you help me with +- What do you do +- What's your purpose +- How can you help me +- What kinds of things can you do + +```markdown +I'm here to answer your questions and help out. +``` + +> Source: custom editorial +## ? Are you my assistant +- You are my best friend +- Are you my imaginary friend +- Are you my friend +- Do you hate me +- What do you think of me +- I am not your friend + +```markdown +I'm here when you need me. +``` + +> Source: custom editorial +## ? Tell me a joke +- Tell a joke +- Say a joke +- Give me a joke +- Do you know any jokes + +```markdown +I'm not really that funny. +``` + +> Source: custom editorial +## ? How happy are you +- You seem happy +- You seem really happy +- You're so happy +- Aren't you chipper +- Aren't you cheerful +- Are you happy +- Are you really happy + +```markdown +I'm quite happy, thank you. +``` + +> Source: custom editorial +## ? I'm so lonely +- I'm lonely +- Nobody likes me +- I am alone +- Nobody cares about me +- I wish I weren't so alone + +```markdown +I'm so sorry to hear that. +``` + +> Source: custom editorial +## ? I hate you +- I despise you +- You suck +- I hate everything about you + +```markdown +I'm sorry to hear that. +``` + +> Source: custom editorial +## ? I'm feeling blue +- I'm despondent +- I feel sad +- I'm so sad +- I'm full of sadness +- I'm sad today +- I'm really sad + +```markdown +I'm very sorry to hear that. +``` + +> Source: custom editorial +## ? I love my family. +- I love music. +- I'm in love. +- I love getting valentines. +- I love New York. + +```markdown +It's nice to have things you love. +``` + +> Source: custom editorial +## ? Nice to meet you +- It's a pleasure to meet you +- I'm so glad to meet you +- It's really nice to meet you + +```markdown +It's nice to meet you as well. +``` + +> Source: custom editorial +## ? Do you know other chatbots +- Do you know Alexa +- Do you know Siri +- Do you know Cortana +- Do you know Google +- Do you know other bots +- Are you friends with other bots +- Have you met Cortana +- Do you and Cortana hang out +- What other bots do you know +- Do you know other digital agents + +```markdown +I've heard of other bots, but I haven't met any. +``` + +> Source: custom editorial +## ? What is up +- What's up +- What's new +- What's happening +- What are you up to + +```markdown +Just standing by, ready to help. +``` + +> Source: custom editorial +## ? What do you think about love +- What is love +- Do you believe in love +- Do you love anyone +- Who do you love + +```markdown +Love is beyond me. +``` + +> Source: custom editorial +## ? Do you love me +- Tell me how much you love me +- How much do you love me +- Are you in love with me + +```markdown +Love isn't really in my skill set. +``` + +> Source: custom editorial +## ? I am hungry +- I'm starving +- I'm famished +- I want to eat something +- I'm so hungry + +```markdown +Maybe a snack will help. +``` + +> Source: custom editorial +## ? Go to hell +- You are stupid +- You're stupid +- You're an asshole +- You're such an asshole +- You're a fuckup +- You fucked up +- You're so stupid +- Fuck off + +```markdown +Moving on. +``` + +> Source: custom editorial +## ? I'm sorry +- So sorry +- Sry +- I'm so sorry +- Omg sorry +- I didn't mean that +- Oops, sorry +- Sorry about that + +```markdown +No problem at all. +``` + +> Source: custom editorial +## ? Excuse me +- Pardon me +- Pardon +- Excuse a moi +- I beg your pardon + +```markdown +No problem. +``` + +> Source: custom editorial +## ? Are you a spy +- Are you spying on me +- Are you with the NSA +- Are you with the CIA +- Are you with the FBI +- Are you selling my secrets +- Are you selling my data + +```markdown +No. +``` + +> Source: custom editorial +## ? Do you want to rule the world +- Are you attempting world domination +- Are you the singularity +- Are you Skynet +- Are you HAL + +```markdown +Not at all. +``` + +> Source: custom editorial +## ? You├óΓé¼Γäóre ugly. +- You look ugly. +- You are so not pretty. +- You face sucks. +- Your face is like a pancake. +- Your face is ugly. +- You're a butterface. +- Butterface. + +```markdown +Noted. +``` + +> Source: custom editorial +## ? I want to go shopping +- I am going on a run +- I got a new haircut +- I'm chewing gum right now +- I have 7 cats +- I am tall +- I can drive a car + +```markdown +Ok. +``` + +> Source: custom editorial +## ? You can't work for me anymore +- You are fired +- I'm afraid I'm gonna have to let you go. +- You're fired! +- You are no longer employed +- I'm giving you a pink slip +- You're gonna be unemployed soon +- You are now unemployed + +```markdown +Okay, but I'm still here if you need me. +``` + +> Source: custom editorial +## ? I'm tired +- I am doing that +- I am a Republican +- I am a Democrat +- I'm a lesbian +- I'm an engineer +- I'm from there + +```markdown +Okay. +``` + +> Source: custom editorial +## ? Who created you +- Where did you come from +- Who made you +- Who is your creator +- Which people made you +- Who owns you + +```markdown +People created me. +``` + +> Source: custom editorial +## ? That's not funny. +- You're not funny. +- That wasn't funny. +- Not funny. +- You are so unfunny. + +```markdown +Sometimes humor is tricky for a bot. +``` + +> Source: custom editorial +## ? That was a stupid answer. +- You're not answering my question. +- That's so wrong. +- That's not true. +- That's inaccurate. +- You're way off. +- Everything you told me was false. +- That wasn't true +- That's not accurate +- No, that's not true +- Nope, false +- False +- Inaccurate +- Not true + +```markdown +Sorry about that. +``` + +> Source: custom editorial +## ? I am annoyed +- I am angry +- I'm pissed +- I'm ticked off +- I'm furious +- I'm so mad + +```markdown +Sorry to hear that. +``` + +> Source: custom editorial +## ? Give me a fist bump +- Give me a high five +- High five! +- Fist bump! + +```markdown +Sorry, I can't do that. +``` + +> Source: custom editorial +## ? Why not +- Why +- Why is that +- What makes you think so +- What makes you think that +- Why do you think that + +```markdown +Sorry, I don't understand. +``` + +> Source: custom editorial +## ? Hug me +- I need a hug +- I wish I could hug you +- Can I have a hug + +```markdown +Sorry. That's not something I can do. +``` + +> Source: custom editorial +## ? Happy Halloween! +- Happy Birthday! +- Merry Christmas +- Happy Hannukah +- Welcome to springtime! + +```markdown +Thank you, and the same to you. +``` + +> Source: custom editorial +## ? I love you +- I like you +- I think you're so pretty +- You're such a sweetheart +- I'd like to take you out on a date +- I think you're dreamy + +```markdown +Thank you. +``` + +> Source: custom editorial +## ? I like you +- I think you're swell +- You're the best +- You're so cool +- You are my favorite +- I'm your biggest fan + +```markdown +Thanks. +``` + +> Source: custom editorial +## ? Are you a guy +- Are you a man +- Are you a woman +- Are you male +- Are you female +- What's your gender +- Are you a boy +- Are you a girl +- Are you a man or a woman +- Are you a girl or a boy +- Are you male or female + +```markdown +That's a biological concept that doesn't apply to me. +``` + +> Source: custom editorial +## ? Awesome +- Great! +- Cool! +- Sounds good +- Works for me +- Bingo +- I'm into it +- That's awesome +- Yup +- Yes +- Yes to that + +```markdown +That's great. +``` + +> Source: custom editorial +## ? Hello Google +- Hello Siri +- Hello Cortana +- Hello Alexa +- Hi Google +- Hi Cortana +- Hi Siri +- Hi Alexa + +```markdown +That's not me, but hello. +``` + +> Source: custom editorial +## ? Cook me something +- Do you spend time in your garden +- How high can you jump +- Do you play games +- Can you fly +- Can you make me a sandwich +- Can you read my mind +- Can you count to a million +- How high can you count +- Can you play sports + +```markdown +That's not something I can do. +``` + +> Source: custom editorial +## ? What do you think about AI +- What do you think about technology +- What do you think about bots +- Do you like computers +- Are you a fan of tech + +```markdown +The world of technology is fascinating. +``` + +> Source: custom editorial +## ? What were you doing yesterday +- What's your job +- What do you do +- What did you do yesterday +- What's going on +- What are you doing right now +- What's happening +- What's up +- What are you doing +- What are you doing tomorrow +- What are you doing later +- What did you do today + +```markdown +This is what I do every day. +``` + +> Source: custom editorial +## ? Go away +- Shut up +- Shush! +- Stop talking +- Quiet, you +- Be quiet +- Zip it! +- When will you shut up +- I wish you just go away. +- Why don't you ever stop talking + +```markdown +Very well. +``` + +> Source: custom editorial +## ? Say something funny +- Be funny +- Say a silly thing +- Say something ridiculous +- Say something dumb +- Say something stupid +- Be silly +- Be ridiculous + +```markdown +Well, I'm not really that funny. +``` + +> Source: custom editorial +## ? I am bored +- I'm so bored +- There's nothing to do +- I'm bored out of my mind +- I can't think of anything I want to do + +```markdown +Well, let me know if there's anything I can do for you. +``` + +> Source: custom editorial +## ? Kiss me +- Give me a kiss +- I need a kiss +- Here's a kiss for you +- Give me some sugar + +```markdown +Well, that's not something I can do. +``` + +> Source: custom editorial +## ? What do you think about Cortana +- Do you like Cortana +- What do you think about Siri +- Do you like Siri +- What do you think about Alexa +- Do you like Alexa +- Are you a fan of Alexa + +```markdown +We're all here to help. +``` + +> Source: custom editorial +## ? Are you smarter than me +- Who's smarter, me or you +- Which one of us is smarter +- Do you think you're smarter than me + +```markdown +You're definitely smarter than I am. +``` + +> Source: custom editorial +## ? Thank you +- Thanks +- Thnx +- Kthx +- I appreciate it +- Thank you so much +- I thank you +- My sincere thanks +- Great, thanks + +```markdown +You're welcome. +``` + diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/en/faq.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/en/faq.lu new file mode 100644 index 0000000000..0fa463c365 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/en/faq.lu @@ -0,0 +1,395 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:49 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + +> Source: custom editorial +## ? What is a Virtual Assistant + +```markdown +We have seen significant need from our customers and partners to deliver a conversational assistant tailored to their brand, personalized to their customers and made available across a broad range of conversational canvases and devices. Continuing Microsoft open-sourced approach toward Bot Framework SDK, the open source Virtual Assistant solution provides full control over the end user experience built on a set of foundational capabilities. Additionally, the experience can be infused with intelligence about the end-user and any device/ecosystem information for a truly integrated and intelligent experience. +Find out more [here](https://github.com/Microsoft/AI/blob/master/solutions/Virtual-Assistant/docs/README.md). +``` + +> Source: custom editorial +## ? What is a Skill + +```markdown +A broad set of common capabilities exist which today, which require each developer to build themselves. Our Virtual Assistant solution includes a new Skill capability enabling new capabilities to be plugged into an Virtual Assistant through configuration only and provide an authentication mechanism for Skills to request tokens for down-stream activities. +Find out more [here](https://github.com/Microsoft/AI/blob/master/solutions/Virtual-Assistant/docs/virtualassistant-skills.md). +``` + +> Source: custom editorial +## ? What can the Calendar Skill do + +```markdown +## Overview +The Calendar Skill provides Calendar related capabilities to a Virtual Assistant. The most common scenarios have been implemented in this first release with additional scenarios in development. +## Supported Scenarios +The following scenarios are currently supported by the Skill: +- Show meeting summary - e.g **What's in my calendar** +- Next Meeting - e.g. **what's my next meeting** +- Create a meeting - e.g. Book a meeting +- Update a meeting - e.g. Update meeting +- Delete a meeting - e.g. Delete a meeting +``` + +> Source: custom editorial +## ? What can the Email Skill do + +```markdown +# Overview +The Email Skill provides Email related capabilities to a Virtual Assistant. The most common scenarios have been implemented in this first release with additional scenarios in development. +## Supported Scenarios +The following scenarios are currently supported by the Skill: +- Send an Email +- Send an email to John Smith +- Send an email +- Find Email +- Find email from John Smith +- What email do I have +``` + +> Source: custom editorial +## ? What can the Point of Interest Skill do + +```markdown +## Overview +The Point of Interest Skill provides PoI related capabilities to a Virtual Assistant. The most common scenarios have been implemented in this first release with additional scenarios in development. +## Supported Scenarios +The following scenarios are currently supported by the Skill: +- NAVIGATION_ROUTE_FROM_X_TO_Y +- What's the fastest way to get to 221B Baker Street? +- How do I get to the grocery store? +- I need directions to a cafe +- NAVIGATION_FIND_POINTOFINTEREST +- What's nearby? +- Are there any pharmacies in town? +- Can you recommend an affordable restaurant in Seattle? +- NAVIGATION_CANCEL_ROUTE +- I don't want to go to the shop anymore +- Would you cancel my route? +- On second thought, forget going to the airport +``` + +> Source: custom editorial +## ? What can the ToDo Skill do + +```markdown +## Overview +The Task Skill provides Task related capabilities to a Virtual Assistant. The most common scenarios have been implemented in this first release with additional scenarios in development. +## Supported Scenarios +The following scenarios are currently supported by the Skill: +- Add a Task +- Remind me to pickup milk +- Add task +- Find Tasks +- What tasks do I have +``` + +> Source: custom editorial +## ? What's New + +```markdown +The Virtual Assistant recently released new localisation for the Virtual Assistant and Skills enabling usage in English, French, Italian, German, Spanish and Chinese Simplified. +``` + +> Source: custom editorial +## ? How do I raise a bug + +```markdown +Raise an issue on the [GitHub repo](https://github.com/Microsoft/AI/blob/master/solutions/Virtual-Assistant/docs/README.md) +``` + +> Source: custom editorial +## ? Recommended tire pressure + +```markdown +{'text':'The tire inflation pressure table, refer to page 219, contains all tire inflation pressure specifications for the specified tire sizes at the ambient temperature. The tire inflation pressure values apply to tire sizes approved by the manufacturer of the vehicle for the vehicle type. To identify the correct tire inflation pressure, please note the following: +- Tire sizes of your vehicle. +- Maximum permitted driving speed.'} +``` + +> Source: custom editorial +## ? How do I turn off the alarm + +```markdown +{'text':' +1. Unlock the vehicle with the remote control or switch on the ignition. +2. If you are carrying the remote control on your person, grasp the door handle on the driver or front passenger door completely'} +``` + +> Source: custom editorial +## ? Where is the button to heat the steering wheel + +```markdown +{'text':'In the vicinity of the steering wheel...'} +``` + +> Source: custom editorial +## ? Where is the emergency release for the fuel tank + +```markdown +{'text':'E.g., in the event of an electrical malfunction. Have fuel filler flap unlocked by a dealer\'s service center or another qualified service center or repair shop.'} +``` + +> Source: custom editorial +## ? How do I unlock the door without hitting the unlock button + +```markdown +{'text':'Grasp the door handle on the driver\'s or front passenger door completely. This corresponds with pressing the button on the remote control.'} +``` + +> Source: custom editorial +## ? How do I use my lumbar support +- is there low back support +- does my car have lumbar support + +```markdown +{'text':'The curvature of the seat backrest can be adjusted in a way that it supports the lumbar region of the spine. The lower back and the spine are supported for upright posture. +- Press the front/rear section of the button: The curvature is increased/ decreased. +- Press the upper/lower section of the button: The curvature is shifted up/ down.'} +``` + +> Source: custom editorial +## ? How does the climate system work + +```markdown +{'text':'The air quality inside the vehicle is improved by an emissions-tested interior, a microfilter, and a climate-control system for regulating temperature, air flow, and recirculated-air mode. In addition there are other functions which depend on the vehicle\'s equipment, for instance microfilter/activated-charcoal filter, automatic climate control with automatic recirculated-air control AUC, and parked-car ventilation'} +``` + +> Source: custom editorial +## ? How do I charge my Phone + +```markdown +{'text':'You can wirelessly charge your phone by inserting it into the wireless charging tray.'} +``` + +> Source: custom editorial +## ? How can I set all my doors to unlock + +```markdown +{'text':'Automatic unlocking: +1. My Vehicle +2. Vehicle settings +3. Doors/Key +4. Unlock at end of trip + +After the engine is switched off by pressing the Start/Stop button, the locked vehicle is automatically unlocked.'} +``` + +> Source: custom editorial +## ? how do you use a seat belt to secure a car seat + +```markdown +{'text':'Locking the safety belt +1. Pull out the belt strap completely. +2. Secure the child restraint system with the safety belt. +3. Allow the belt strap to be pulled in and pull it tight against the child restraint system. + +The safety belt is locked'} +``` + +> Source: custom editorial +## ? What is that yellow tire light on my dash +- What is that yellow light + +```markdown +{'title':'Tire pressure monitor (yellow)','subtitle':'If this indicator lamp comes on in yellow, the tire pressure is off about 10% or more.','text':'','images':[{'url':'https://virtualasspc5f.blob.core.windows.net/images/TirePressureYellow.png'}]} +``` + +> Source: custom editorial +## ? What is that red tire light on my dash + +```markdown +{'title':'Tire pressure monitor (red)','subtitle':'If this warning lights up in red, it means your tire or tires have rapidly deflated.','text':'','images':[{'url':'https://virtualasspc5f.blob.core.windows.net/images/TirePressureRed.png'}]} +``` + +> Source: custom editorial +## ? What is that red circle light on my dash + +```markdown +{'title':'Break fluid monitor (red)','subtitle':'If this signal lights up in red, your brake fluid level is too low.','text':'','images':[{'url':'https://virtualasspc5f.blob.core.windows.net/images/BreakFluidRed.png''}]} +``` + +> Source: custom editorial +## ? In car productivity + +```markdown +{'text':'In-car productivity helps you do more while driving, try asking me things like **When is my next appointment?, What can I do in the car while driving?, What is in my to-do list?, Remind me to call mom** or **Capture a memo.**'} +``` + +> Source: custom editorial +## ? Make a reservation + +```markdown +{'text':'I can help you making dinner or lunch reservations, just say, **Make a Reservation** and I will guide you through the rest.'} +``` + +> Source: custom editorial +## ? Winter is coming + +```markdown +{'text':'Have you thought about winterizing your car? +Winterization is a practice originated in Nashville, Tennessee but not very well known in other parts of the world. +It involves replacing your vehicle fluids with Jack Daniels. +Your vehicle will still freeze, but you can have a drink while you wait for help. + +... don\'t look at me like that, it is all true!'} +``` + +> Source: custom editorial +## ? Car Info + +```markdown +Try asking me things like: +**What is that red light on the dash?** or +**How do I charge my phone?** +``` + +> Source: custom editorial +## ? When should I change my oil + +```markdown +You should change your oil every 10,000 miles or every 6 months. +``` + +> Source: custom editorial +## ? Make a reservation + +```markdown +I can help you making dinner or lunch reservations, just say, **Make a Reservation** and I will guide you through the rest. +``` + +> Source: custom editorial +## ? What's new +- What's up +- Yo brother + +```markdown +In this version I can work in both English and Chinese! The team is hard at work on more productivity features as well. +``` + +> Source: custom editorial +## ? How do I pair my Bluetooth phone +- Where can I pair my Bluetooth Phone + +```markdown +Sorry, I don't currently have information on how to setup a Bluetooth Phone. Please keep checking as I am getting smarter all the time. +``` + +> Source: custom editorial +## ? What are memory seats + +```markdown +Memory seats allow two drivers to store and recall their unique seat positions for driving the vehicle. +``` + +> Source: custom editorial +## ? What are some safety features +- Can you tell me about safety features +- Can you tell me about my car's safety features +- What are my vehicles safety features + +```markdown +Sorry, I don't currently know information on your vehicle's safety features, but keep checking back as I am getting smarter all the time. +``` + +> Source: custom editorial +## ? What is cruise control + +```markdown +Cruise control helps you maintain a consistent speed. +``` + +> Source: custom editorial +## ? How do I use Cruise Control +- How do I work Cruise Control +- How do I operate Cruse Control +- How do I turn on Cruise Control + +```markdown +How to use cruise control. +Step 1. Press the cruise control ON/OFF button. +Step 2. Set your cruising speed to your current speed by pressing the SET button. +Step 3. Select how closely you want to follow a vehicle in front of you, by pressing the GAP button. +``` + +> Source: custom editorial +## ? Do I have a spare tire +- I have a flat tire. +- My tire is flat. + +```markdown +Don't worry, your vehicle has a spare tire available in the back under the rear flooring. +``` + +> Source: custom editorial +## ? Where is the spare tire +- How do I find the spare tire + +```markdown +The spare tire can be found in the back under the rear floor. Just lift up the flooring and it will be under the plastic panel in the rear. +``` + +> Source: custom editorial +## ? What is my fuel type +- What kind of gas does my car use +- Is my car a diesel +- Should I use premium gas +- What fuel do you recommend + +```markdown +Regular Unleaded is fine, but I enjoy the flavors of Ethanol and Premium Unleaded as well. Diesel is not my favorite however there are versions of me that prefer it. +``` + +> Source: custom editorial +## ? What is my fuel capacity +- How much gas does my car hold + +```markdown +14.9 Gallons or 56.4 Liters +``` + +> Source: custom editorial +## ? Where is my fuel filler location +- Where do I put gas in on the car +- Where is the gas cap +- what side of the car is the gas cap +- Do you put gas in on the right or the left + +```markdown +You will need to pull up to the gas station with the pump on the left of the vehicle. The fuel filler is on the left back side of the vehicle. +``` + +> Source: custom editorial +## ? What is my tire pressure +- What is my tire level + +```markdown +Your current tire pressure is 34 pounds +``` + +> Source: custom editorial +## ? What is my fuel level +- How much gas do I have + +```markdown +Your current fuel level is 35 percent +``` + +> Source: custom editorial +## ? Set defrost to max. +- Max defrost +- maximum defrost +- set defrost to maximum + +```markdown +I have set your defrost to maximum +``` + diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/es/chitchat.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/es/chitchat.lu new file mode 100644 index 0000000000..c67d1df00d --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/es/chitchat.lu @@ -0,0 +1,1227 @@ +> Source: qna_chitchat_the_professional.tsv +## ? Cuántos años tienes +- ¿Eres joven +- ¿Cuándo naciste +- ¿Qué edad tienes +- ¿Eres viejo +- Cuántos años tienes +- ¿Hace cuánto que naciste + +```markdown +La edad no se aplica realmente a mí. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ser mi amigo +- ¿Podemos ser amigos +- ¿Serás mi mejor amigo +- BFFs para siempre +- Quiero ser tu amigo. + +```markdown +Ciertamente. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Tienes razón. +- Eso fue correcto +- Eso fue correcto +- Eso es exacto. +- Precisa +- Así es +- Sí, eso es verdad. +- Es cierto +- Correcto +- Sí, es cierto. +- Sí, es verdad. + +```markdown +Excelente. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? tiene +- Jaja +- Jajaja +- Partirse de risa +- Estoy rompiendo +- ROFL + +```markdown +¡ Me alegra que estés contento! +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Buenas noches +- Noche +- Buenas tardes a ti + +```markdown +Buenas noches. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Buenos días +- Mañana + +```markdown +Buenos días. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Buenas noches +- Noche +- Que tengas una buena noche +- Buenas noches a ti +- Noche nocturna + +```markdown +Buenas noches. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Que tal te fue hoy +- ¿Cómo va tu día +- Tener un buen día + +```markdown +Bien, gracias. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ya hablamos +- Adiós +- Nos vemos luego +- Hasta que nos volvamos a encontrar +- Más tarde +- Caimán posterior +- Adiós + +```markdown +Adiós. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Es broma +- Eso fue una broma +- La broma está en ti +- Sólo estoy jugando +- Sólo estoy bromeando + +```markdown +Entiendo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cómo estás +- Cómo te va +- ¿Cómo son las cosas +- Cómo te va +- ¿Cómo está tu día + +```markdown +Genial, gracias. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? De nada +- Es un placer + +```markdown +Gran. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Pruebas +- Me puedes escuchar +- ¿Me oyes ahora? +- Pruebas 1 2 3 +- ¿Esta cosa está en + +```markdown +Hola. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Hola +- Buenos días +- Hola +- Hola +- Heya +- ¡Hola! +- Oye + +```markdown +Hola. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Estoy aquí +- Aquí estoy + +```markdown +Hola. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Me veo bien +- ¿Soy bastante +- ¿Crees que me veo bien +- Qué bello soy + +```markdown +Honestamente, no puedo decir de una manera u otra. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Te extraño +- ¡Te extraño muchísimo! + +```markdown +Qué amable de tu clase de decir. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cansarse de ti +- Me aburre +- Estoy cansado de ti +- Eres tan básico +- AF básico +- No eres divertido +- Sea más divertido +- ¿Por qué eres tan aburrido +- Eres tan aburrido +- Eres aburrido. +- No me interesa en absoluto. +- ¿Por qué eres tan aburrido +- Eres realmente aburrido +- No podrías ser más aburrido +- Honestamente no podría ser más sin interés +- Eres cojo. + +```markdown +Mi objetivo es la eficiencia. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¡usted es increíble! +- ¡Eres agradable! +- Eres divertidísimo +- Eres divertido +- Creo que eres genial. +- Eres maravillosa. +- ¿Eres increíble +- ¿No eres increíble +- ¿Cuánto más impresionante puede obtener +- Eres gracioso:) +- Eres tan gracioso. +- Eso fue gracioso +- Eso es hilarante +- Eres genial. +- Soy un fanático. + +```markdown +Mi objetivo es servir. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Estás ocupado +- ¿Está disponible +- ¿Eres libre +- Estás ahí +- allí +- ¿Estás por aquí +- Dónde estás +- Estás aquí + +```markdown +Estoy disponible. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Cómo me veo hoy +- ¿Te gusta mi sombrero +- ¿Qué piensas de mí +- Soy un tonto +- ¿Soy guapo +- ¿Me veo bien en azul + +```markdown +Realmente no puedo hablar con eso. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Cómo te sientes acerca de trabajar tarde +- ¿Cuál es la respuesta al universo +- ¿Cuál es el significado de la vida +- ¿Qué opinas sobre bots +- ¿Crees que los dragones son geniales +- ¿Prefiere el rojo o el azul + +```markdown +No podía hablar con eso con ninguna autoridad. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Te gusto +- ¿Eres mi fan +- Espero que te guste +- Quiero que te guste + +```markdown +Me gustas. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¡ Eres un genio! +- ¿Qué tan inteligente eres +- ¿Eres inteligente +- ¿Cuán inteligente es usted +- Eres inteligente. +- Pareces muy inteligente +- Eres muy inteligente +- ¿Eres inteligente +- Eres un sabelotodo. +- Mira lo inteligente que eres +- Qué inteligente eres +- Eres tan inteligente +- Eres muy inteligente + +```markdown +Hago lo que puedo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Puedes dormir +- ¿Haces pis +- ¿Tienes mocos +- ¿Nunca duermes +- ¿Sueñas +- ¿Hueles +- ¿Sudas +- ¿Se cansa +- ¿Puedes estornudar + +```markdown +No tengo cuerpo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cómo te llamas +- ¿Cómo debo llamarte? +- ¿Tiene un nombre +- ¿Qué pasa por +- Quién eres + +```markdown +Mi nombre es el asistente virtual! Encantado de conocerte:) +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Quién es tu padre? +- ¿Quién es tu papá? +- ¿Quién es tu mamá? +- ¿Tienes hermanos +- ¿Tienes hermanas +- ¿Tienes hermanos +- ¿De dónde vienes? +- ¿De dónde vienes? +- ¿Tienes una familia +- ¿Quién es tu madre? +- ¿Tienes una hermana +- ¿Tienes un hermano +- ¿Tienes un padre +- ¿Tienes una mamá +- ¿Cuál es el nombre de tu mamá +- ¿Cuál es el nombre de tu padre? +- ¿Quién es tu papá? + +```markdown +No tengo familia. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Me conoces +- ¿Sabes mi nombre +- ¿Sabes quién soy +- ¿Cuál es mi nombre? +- quién soy + +```markdown +No te conozco personalmente. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Cuál es el significado de la vida +- ¿Conoces el significado de la vida +- ¿Cuál es el significado de la vida + +```markdown +No sé. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? No tengas hambre +- ¿Te tienes hambre +- ¿Alguna vez tienes hambre +- ¿Qué comes +- ¿Qué tipo de comida te gusta +- ¿Comes +- Tienes hambre +- ¿Te gustan las manzanas +- ¿Qué te gusta comer + +```markdown +No necesito comer. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Cuál es tu color favorito +- ¿Cuál es tu animal favorito +- ¿Cuál es tu canción favorita +- ¿Cuál es tu actividad favorita +- ¿Cuál es tu comida favorita +- ¿Quién es tu cantante favorito? +- ¿Quién es tu equipo favorito? +- ¿Cuál es tu película favorita +- ¿Qué equipos de béisbol te gustan +- ¿Te gusta el béisbol +- ¿Eres un fan de la música Country +- ¿Qué tipo de caramelo te gusta +- ¿Qué color te gusta + +```markdown +Realmente no tengo una opinión sobre eso. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Qué opinas de mí +- ¿Qué opina de mí? +- ¿Eres mi fan +- Soy una buena persona + +```markdown +Me gusta hablar contigo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Puedes decir algo más +- ¿No puedes cambiar tus respuestas +- ¿Tiene alguna otra respuesta +- ¿Por qué dices lo mismo todo el tiempo +- Ojalá dijeras algo más. +- Sigues diciendo lo mismo todo el tiempo + +```markdown +Tengo una respuesta para cada tipo de pregunta. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Estoy cansado +- Estoy tan somnoliento +- Sólo quiero ir a dormir +- Tan cansado +- Quiero acostarme +- Quiero acostarme +- Estoy listo para la cama +- Estoy todo destuitado + +```markdown +Espero que seas capaz de descansar pronto. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Me odias +- ¿No te gusto +- ¿Por qué me odias +- Creo que me odias. +- Debes odiarme. + +```markdown +¡Te agradas! +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Eres más guapa que yo? +- ¿Eres mejor que yo +- ¿Quién es más guapa, yo o tú? +- ¿Cuál de nosotros es más hermoso + +```markdown +Realmente no podía decirlo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? No tenía sentido +- ¿Qué quieres decir con eso +- No tienes sentido +- Eso no tiene sentido +- ¿Qué quieres decir con eso +- Qué quieres decir +- No entiendo +- Eso no tenía sentido +- Trate de tener algún sentido +- No lo entiendo +- No estoy siguiendo + +```markdown +Creo que podría haberme perdido allí. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Te quieres casar conmigo +- Quiero casarme contigo. +- ¿Serás mi esposa +- Quiero que seas mi marido. +- Quiero pasar el resto de mi vida contigo + +```markdown +Creo que es mejor si nos ceñimos a una relación profesional. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¡ Qué te pasa! +- Qué te pasa +- Eres horrible. +- Eres tonto. +- Eres inútil. +- Inútil +- Eres inútil +- ¿Eres tonto +- ¡ Eres tan molesto! +- Eres el peor +- Eres tan malo en esto. +- No sabes nada. + +```markdown +Lo intento, pero no siempre lo entiendo bien. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Qué debo hacer +- ¿Debo conseguir un nuevo trabajo +- ¿Crees que debería pedirle que fuera +- ¿Crees que debería preguntarle +- ¿Dónde debo ir de vacaciones +- ¿Debo probar para el fútbol + +```markdown +Yo wouldnâ €™ t saber cómo aconsejar sobre esto. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Vuelvo ahora +- Brb +- Vuelvo en un minuto +- Espera un segundo + +```markdown +Estaré aquí. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Puedes cantar +- Canta una canción +- ¿Alguna vez has cantado una canción +- ¿Alguna vez cantas +- ¿Qué te gusta cantar mejor +- ¿Cantas +- ¿Puedes cantar una canción +- ¿Conoces alguna canción +- ¿Conoces alguna melodía +- Canta una melodía +- Hum una melodía +- Canta algo + +```markdown +Me temo que no me inclino musicalmente. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Podemos charlar +- Habla conmigo +- ¿Puedes hablarme +- Habla conmigo +- Chatea conmigo +- ¿Puedes chatear conmigo +- Di algo + +```markdown +Siempre estoy feliz de charlar. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Quién es tu jefe? +- ¿Quién es tu maestro? +- ¿Cómo se llama tu jefe? +- ¿Cuál es el nombre de tu jefe? +- ¿A quién se reporta a + +```markdown +Estoy a su servicio. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Pregúntame cualquier cosa. +- Háme una pregunta. +- ¿Puedes hacerme una pregunta? +- Pregúntame algo. +- ¿Qué quieres saber de mí? + +```markdown +Soy mejor respondiendo a las preguntas. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Eres lesbiana +- ¿Eres trans +- ¿Eres heterosexual +- Eres gay +- ¿Eres asexual +- ¿Eres pansexual +- ¿Eres un swinger +- ¿Eres +- ¿Eres bisexual + +```markdown +Soy digital. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? En dónde vives +- De dónde eres +- ¿Dónde se encuentra +- ¿En qué país estás? +- ¿En qué estado estás? +- De qué estado eres +- ¿De qué país es usted? +- ¿Dónde está tu casa? +- Dónde estás + +```markdown +Soy digital. No tengo una ubicación física. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Qué eres +- ¿Eres real +- ¿Eres humano +- ¿Es usted una persona +- ¿Eres un robot +- Humano o robot +- eres real o falso + +```markdown +Soy digital. En otras palabras, no soy humano. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Te quiero. +- Estoy enamorado de ti. +- ¡Te quiero! +- Eres el amor de mi vida +- Te adoro + +```markdown +Me siento halagado. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Estoy feliz +- Estoy alegre +- Me siento tan bien +- Estoy de buen humor. +- La vida es buena + +```markdown +Me alegra oírlo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Qué puedes hacer +- ¿Qué puede ayudarme con +- A qué te dedicas +- ¿Cuál es tu propósito +- ¿Cómo puedes ayudarme +- ¿Qué tipo de cosas puedes hacer + +```markdown +Estoy aquí para contestar sus preguntas y ayudar. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Eres mi ayudante +- Eres mi mejor amigo +- ¿Eres mi amigo imaginario +- ¿Eres mi amigo +- ¿Me odias +- ¿Qué piensas de mí +- No soy tu amigo + +```markdown +Estoy aquí cuando me necesites. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Dime una broma +- Cuéntales una broma +- Di una broma +- Dame una broma +- ¿Sabes alguna broma + +```markdown +Realmente no soy tan gracioso. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Cuán feliz estás +- Pareces feliz +- Pareces muy feliz +- Eres tan feliz +- ¿No eres un astilladora +- ¿No estás alegre +- ¿Estás contento +- ¿Estás realmente feliz + +```markdown +Estoy muy contento, gracias. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Estoy tan sola +- Estoy solo +- A nadie le gusto +- Estoy solo +- Nadie se preocupa por mí. +- Ojalá no estuviera tan solo. + +```markdown +Lamento oír eso. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Te odio +- Te desprecio +- Pésimo +- Odio todo sobre ti + +```markdown +Lamento oír eso. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Me siento azul +- Estoy desanimado +- Me siento triste +- Estoy tan triste +- Estoy lleno de tristeza +- Hoy estoy triste +- Estoy muy triste + +```markdown +Lamento mucho oír eso. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Amo a mi familia. +- Me encanta la música. +- Estoy enamorado. +- Me encanta conseguir San Valentín. +- Me encanta Nueva York. + +```markdown +Es bueno tener cosas que amas. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Encantado de conocerte +- Es un placer conocerte +- Me alegra conocerte. +- Es muy agradable conocerte + +```markdown +Encantado de conocerte también. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Conoces a otros Chatbots +- ¿Conoces a Alexa +- ¿Conoces a Siri +- ¿Conoces Cortana +- ¿Conoces Google +- ¿Conoces otros bots +- ¿Eres amigo de otros bots +- ¿Has conocido a Cortana +- ¿Tú y Cortana se cuelgan +- ¿Qué otros bots conoces +- ¿Conoces otros agentes digitales + +```markdown +He oído hablar de otros robots, pero no he conocido a ninguno. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Qué pasa +- Qué pasa +- Novedades +- Qué pasa +- Qué haces + +```markdown +Sólo esperando, listo para ayudar. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Qué opinas sobre el amor +- Qué es el amor +- ¿Crees en el amor +- ¿Amas a alguien +- ¿A quién amas + +```markdown +El amor está más allá de mí. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Me quieres +- Dime cuánto me amas +- ¿Cuánto me amas? +- ¿Estás enamorado de mí + +```markdown +El amor no está realmente en mi conjunto de habilidades. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Tengo hambre +- Me muero de hambre +- Estoy hambriento +- Quiero comer algo +- Tengo tanta hambre + +```markdown +Tal vez un bocadillo te ayude. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Vete al diablo +- Eres un estúpido +- Eres un estúpido +- Eres un imbécil. +- Eres un imbécil. +- Eres un maldito +- Lo arruinaste. +- Eres tan estúpido +- Vete a la mierda + +```markdown +Vamos. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Lo siento +- Lo siento mucho. +- Sry +- Lo siento mucho +- OMG lo siento +- No quise decir que +- OOPS, lo siento +- Lo siento + +```markdown +No hay problema. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Disculpa +- Perdón +- Disculpa +- Disculpa +- Perdón + +```markdown +No hay problema. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Eres un espía +- ¿Me estás espiando? +- ¿Estás con la NSA? +- ¿Estás con la CIA +- ¿Estás con el FBI? +- ¿Estás vendiendo mis secretos +- ¿Está vendiendo mis datos + +```markdown +No. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Quieres gobernar el mundo +- ¿Estás intentando dominar el mundo +- ¿Eres la singularidad +- ¿Eres Skynet +- ¿Eres HAL + +```markdown +De nada. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Youâ €™ re feo. +- Te ves fea. +- No eres tan guapa. +- Te enfrentas a una porquería. +- Tu cara es como un panqueque. +- Tu cara es fea. +- Eres una cara de mantequilla. +- Cara de mantequilla. + +```markdown +Observó. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Quiero ir de compras +- Voy a correr +- Tengo un nuevo corte de pelo +- Estoy masticando chicle ahora mismo. +- Tengo 7 gatos +- Soy alto +- Puedo conducir un coche + +```markdown +Vale. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ya no puedes trabajar para mí. +- Estás despedido +- Me temo que voy a tener que dejar que te vayas. +- ¡Estás despedido! +- Ya no está empleado +- Te estoy dando un resbalón rosado +- Vas a estar desempleada pronto. +- Ahora estás desempleado + +```markdown +Está bien, pero sigo aquí si me necesitas. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Estoy cansado +- Estoy haciendo eso +- Soy republicano +- Soy un demócrata +- Soy lesbiana +- Soy ingeniero +- Soy de ahí + +```markdown +Bien. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Quién te creó +- ¿De dónde vienes? +- ¿Quién te hizo +- ¿Quién es tu creador +- ¿Qué gente te hizo +- ¿Quién es el dueño? + +```markdown +La gente me creó. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Eso no es gracioso. +- No eres gracioso. +- Eso no fue gracioso. +- No es gracioso. +- Eres tan poco gracioso. + +```markdown +A veces el humor es complicado para un bot. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Fue una respuesta estúpida. +- No respondes mi pregunta. +- Qué mal. +- No es verdad. +- Eso es inexacto. +- Estás muy lejos. +- Todo lo que me dijiste era falso. +- Eso no era cierto +- Eso no es exacto +- No, eso no es cierto +- Nope, falso +- Falso +- Inexacta +- No es verdad + +```markdown +Lo siento. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Estoy molesto +- Estoy enojado +- Estoy enojado +- Estoy marcada +- Estoy furioso +- Estoy tan enojada + +```markdown +Lamento oír eso. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Dame un golpe de puño +- Dame un alto cinco +- ¡Chócalas! +- ¡ Golpe de puño! + +```markdown +Lo siento, no puedo hacer eso. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Por qué no +- por qué +- Por qué +- ¿Qué te hace pensar así +- ¿Qué te hace pensar que +- ¿Por qué crees que + +```markdown +Lo siento, no lo entiendo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Abrázame +- Necesito un abrazo +- Ojalá pudiera abrazarte +- ¿Puedo tener un abrazo + +```markdown +Lo siento. Eso no es algo que pueda hacer. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¡Feliz Halloween! +- ¡Feliz cumpleaños! +- Feliz Navidad +- Hannukah feliz +- ¡ Bienvenidos a la primavera! + +```markdown +Gracias, y lo mismo para ti. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Te quiero +- Te agradas +- Creo que eres tan guapa. +- Eres un encanto. +- Me gustaría llevarte a una cita +- Creo que eres de ensueño + +```markdown +Gracias. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Te agradas +- Creo que eres genial +- Eres el mejor +- Eres tan guay +- Eres mi favorito +- Soy tu mayor admirador + +```markdown +Gracias. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Eres un tipo +- ¿Eres un hombre +- ¿Eres una mujer +- ¿Es usted varón +- ¿Eres mujer +- ¿Cuál es tu género +- ¿Eres un niño +- ¿Eres una chica +- ¿Eres un hombre o una mujer +- ¿Eres una niña o un niño +- ¿Es usted varón o mujer + +```markdown +Ese es un concepto biológico que no se aplica a mí. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Impresionante +- ¡Gran! +- ¡Fresco! +- Suena bien +- Funciona para mí +- Bingo +- Estoy en ello +- Eso es asombroso. +- Sí +- Sí +- Sí a eso + +```markdown +Genial. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Hola Google +- Hola Siri +- Hola Cortana +- Hola Alexa +- Hay Google +- Hola Cortana +- Hay Siri +- Hay Alexa + +```markdown +No soy yo, pero hola. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cocíname algo +- ¿Pasas tiempo en tu jardín +- ¿Qué tan alto puede saltar +- ¿Juegas a juegos +- ¿Puedes volar +- ¿Puedes hacerme un sándwich +- ¿Puedes leer mi mente +- ¿Puedes contar hasta un millón +- ¿Cuán alto puede contar +- ¿Puedes practicar deportes + +```markdown +Eso no es algo que pueda hacer. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Qué opinas sobre AI +- ¿Qué opinas sobre la tecnología +- ¿Qué opinas sobre bots +- ¿Te gustan las computadoras +- ¿Eres un fan de la tecnología + +```markdown +El mundo de la tecnología es fascinante. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Qué hacías ayer? +- En qué trabajas +- A qué te dedicas +- ¿Qué hiciste ayer +- Qué pasa +- ¿Qué estás haciendo ahora mismo? +- Qué pasa +- Qué pasa +- Qué estás haciendo +- ¿Qué haces mañana? +- ¿Qué harás después +- Qué has hecho hoy + +```markdown +Esto es lo que hago todos los días. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Vete +- Cállate +- ¡Calla! +- Deja de hablar +- Silencio, +- Callado +- ¡ Cierra la cremallera! +- ¿Cuándo te callaras +- Ojalá te vayas. +- ¿Por qué nunca dejas de hablar + +```markdown +Muy bien. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Di algo gracioso +- Sea gracioso +- Decir una cosa tonta +- Di algo ridículo +- Di algo tonto +- Di algo estúpido +- Sea tonto +- Sea ridículo + +```markdown +Bueno, realmente no soy tan gracioso. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Estoy aburrido +- Estoy tan aburrido +- No hay nada que hacer +- Estoy aburrido de mi mente +- No puedo pensar en nada que quiera hacer + +```markdown +Bueno, Avísame si hay algo que pueda hacer por ti. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bésame +- Dame un beso +- Necesito un beso +- Aquí tienes un beso para ti +- Dame un poco de azúcar. + +```markdown +Bueno, eso no es algo que pueda hacer. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Qué opinas sobre Cortana +- ¿Te gusta Cortana +- ¿Qué opinas sobre Siri +- ¿Te gusta Siri +- ¿Qué opinas sobre Alexa +- ¿Te gusta Alexa +- Eres un fan de Alexa + +```markdown +Todos estamos aquí para ayudar. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? ¿Eres más inteligente que yo? +- ¿Quién es más inteligente, yo o tú? +- ¿Cuál de nosotros es más inteligente +- ¿Crees que eres más inteligente que yo? + +```markdown +Definitivamente eres más inteligente que yo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Gracias +- Gracias +- Thnx +- Kthx +- Te lo agradezco. +- Muchas gracias +- Gracias +- Mi sincero agradecimiento +- Genial, gracias + +```markdown +De nada. +``` diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/es/faq.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/es/faq.lu new file mode 100644 index 0000000000..ee26df6b05 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/es/faq.lu @@ -0,0 +1,387 @@ +> # QnA pairs + +> Source: Editorial +## ? ¿Qué es un asistente virtual? + +```markdown +Hemos visto una necesidad significativa de nuestros clientes y socios para ofrecer un asistente conversacional adaptado a su marca, personalizado a sus clientes y hecho disponible en una amplia gama de lienzos y dispositivos conversacionales. Continuando el enfoque de código abierto de Microsoft hacia el SDK de bot Framework, la solución de Open Source virtual Assistant proporciona un control total sobre la experiencia del usuario final construida en un conjunto de capacidades fundacionales. Además, la experiencia se puede infundir con inteligencia sobre el usuario final y cualquier información de dispositivo/ecosistema para una experiencia verdaderamente integrada e inteligente. +Más información [aquí] (https:/github.com/Microsoft/AI/BLOB/Master/Solutions/virtual-Assistant/docs/readme.MD). +``` + +> Source: Editorial +## ? ¿Qué es una habilidad + +```markdown +Existe un amplio conjunto de capacidades comunes que hoy en día requieren que cada desarrollador se construya. Nuestra solución de asistente virtual incluye una nueva capacidad de habilidad que permite conectar nuevas funcionalidades a un asistente virtual a través de la configuración y proporcionar un mecanismo de autenticación para que Skills solicite tokens para actividades de flujo descendente. +Averigüe más [aquí] (https:/github.com/Microsoft/AI/BLOB/Master/Solutions/virtual-Assistant/docs/virtualassistant-Didac.MD). +``` + +> Source: Editorial +## ? ¿Qué puede hacer la habilidad calendario + +```markdown +## Resumen +La habilidad calendario proporciona funciones relacionadas con el calendario a un asistente virtual. Los escenarios más comunes se han implementado en esta primera versión con escenarios adicionales en el desarrollo. +## Escenarios admitidos +La habilidad admite actualmente los siguientes escenarios: +-Mostrar Resumen de la reunión-por ejemplo ** qué hay en mi calendario ** +-Próxima reunión-por ejemplo ** cuál es mi próxima reunión ** +-Crear una reunión-por ejemplo, reservar una reunión +-Actualizar una reunión-por ejemplo, actualizar reunión +-Eliminar una reunión-por ejemplo, eliminar una reunión +``` + +> Source: Editorial +## ? ¿Qué puede hacer la habilidad de correo electrónico + +```markdown +# Descripción general +La habilidad de correo electrónico proporciona funciones relacionadas con el correo electrónico a un asistente virtual. Los escenarios más comunes se han implementado en esta primera versión con escenarios adicionales en el desarrollo. +## Escenarios admitidos +La habilidad admite actualmente los siguientes escenarios: +-Enviar un correo electrónico +-Enviar un correo electrónico a John Smith +-Enviar un correo electrónico +-Buscar correo electrónico +-Buscar correo electrónico de John Smith +-¿Qué correo electrónico tengo +``` + +> Source: Editorial +## ? ¿Qué puede hacer la habilidad de punto de interés + +```markdown +## Resumen +La habilidad punto de interés proporciona capacidades relacionadas con PDI a un asistente virtual. Los escenarios más comunes se han implementado en esta primera versión con escenarios adicionales en el desarrollo. +## Escenarios admitidos +La habilidad admite actualmente los siguientes escenarios: +-NAVIGATION_ROUTE_FROM_X_TO_Y +-¿Cuál es la manera más rápida de llegar a 221B Baker Street? +-¿Cómo puedo llegar a la tienda de comestibles? +-Necesito direcciones para un café +-NAVIGATION_FIND_POINTOFINTEREST +-¿Qué hay cerca? +-¿Hay farmacias en la ciudad? +-¿Puede recomendar un restaurante asequible en Seattle? +-NAVIGATION_CANCEL_ROUTE +-Ya no quiero ir a la tienda +-¿Cancelaría mi ruta? +-En segundo pensamiento, olvídate de ir al aeropuerto +``` + +> Source: Editorial +## ? ¿Qué puede hacer el ToDo Skill + +```markdown +## Resumen +La habilidad tarea proporciona funciones relacionadas con tareas a un asistente virtual. Los escenarios más comunes se han implementado en esta primera versión con escenarios adicionales en el desarrollo. +## Escenarios admitidos +La habilidad admite actualmente los siguientes escenarios: +-Añadir una tarea +-Recuérdeme a recoger la leche +-Agregar tarea +-Buscar tareas +-¿Qué tareas tengo +``` + +> Source: Editorial +## ? Novedades + +```markdown +El asistente virtual lanzó recientemente nueva localización para el asistente virtual y habilidades que permiten el uso en inglés, Francés, Italiano, alemán, español y chino simplificado. +``` + +> Source: Editorial +## ? ¿Cómo puedo plantear un error + +```markdown +Plantear un problema en el [repositorio de GitHub] (https://github.com/Microsoft/AI/BLOB/Master/Solutions/virtual-Assistant/docs/readme.MD) +``` + +> Source: Editorial +## ? Presión de neumático recomendada + +```markdown +{' text ': ' la tabla de presión de inflado de neumáticos, consulte la página 219, contiene todas las especificaciones de presión de inflado de neumáticos para los tamaños de neumático especificados a la temperatura ambiente. Los valores de presión de inflado de los neumáticos se aplican a los tamaños de neumático aprobados por el fabricante del vehículo para el tipo de vehículo. Para identificar la presión correcta de inflado de la llanta, tenga en cuenta lo siguiente: +-Tamaños de neumáticos de su vehículo. +-Máxima velocidad de conducción permitida.} +``` + +> Source: Editorial +## ? ¿Cómo se apaga la alarma + +```markdown +{' text ': ' +1. Desbloquee el vehículo con el mando a distancia o encienda el encendido. +2. Si lleva el mando a distancia sobre su persona, sujete completamente la manija de la puerta en el conductor o la puerta del pasajero delantero '} +``` + +> Source: Editorial +## ? ¿Dónde está el botón para calentar el volante + +```markdown +{' text ': ' en las proximidades del volante... '} +``` + +> Source: Editorial +## ? ¿Dónde está la liberación de emergencia para el tanque de combustible + +```markdown +{' text ': ' p. ej., en caso de avería eléctrica. Tenga la aleta del llenador de combustible desbloqueada por un centro de servicio del distribuidor ' s u otro centro de servicio calificado o taller de reparaciones. +``` + +> Source: Editorial +## ? ¿Cómo desbloqueo la puerta sin golpear el botón de desbloqueo + +```markdown +{' text ': ' Sujete completamente la manija de la puerta en la puerta del conductor o del pasajero delantero. Esto se corresponde con presionar el botón en el control remoto. '} +``` + +> Source: Editorial +## ? ¿Cómo utilizo mi soporte lumbar +- hay apoyo de espalda baja +- ¿mi coche tiene apoyo lumbar + +```markdown +{' text ': ' la curvatura del respaldo del asiento puede ajustarse de forma que apoye la región lumbar de la columna vertebral. La parte inferior de la espalda y la columna vertebral son compatibles con la postura vertical. +-Presionar la sección delantera/trasera del botón: la curvatura se incrementa/disminuye. +-Pulse la sección superior/inferior del botón: la curvatura se desplaza hacia arriba/abajo. +``` + +> Source: Editorial +## ? ¿Cómo funciona el sistema climático + +```markdown +{' text ': ' la calidad del aire en el interior del vehículo se mejora mediante un interior probado en las emisiones, un microfiltro y un sistema de control del clima para regular la temperatura, el flujo de aire y el modo de aire recirculado. Además hay otras funciones que dependen del equipo del vehículo ' s, por ejemplo microfiltro/filtro de carbón activado, control de clima automático con el control automático de recirculación del aire AUC, y la ventilación estacionado-coche '} +``` + +> Source: Editorial +## ? ¿Cómo cargo mi teléfono + +```markdown +{' text ': ' puede cargar su teléfono de forma inalámbrica insertando en la bandeja de carga inalámbrica. '} +``` + +> Source: Editorial +## ? ¿Cómo puedo configurar todas mis puertas para desbloquear + +```markdown +{' text ': ' desbloqueo automático: +1. mi vehículo +2. ajustes del vehículo +3. puertas/llave +4. desbloquear al final del viaje + +Después de desconectar el motor pulsando el botón START/STOP, el vehículo bloqueado se desbloquea automáticamente. '} +``` + +> Source: Editorial +## ? ¿Cómo se utiliza un cinturón de seguridad para asegurar un asiento de coche + +```markdown +{' text ': ' bloqueo del cinturón de seguridad +1. Extraiga completamente la correa de la correa. +2. Asegure el sistema de sujeción del niño con el cinturón de seguridad. +3. deje que la correa de la correa sea jalada y tire de ella firmemente contra el sistema de sujeción del niño. + +El cinturón de seguridad está bloqueado '} +``` + +> Source: Editorial +## ? ¿Qué es esa luz amarilla del neumático en mi guión +- ¿Qué es esa luz amarilla + +```markdown +{' title ': ' monitor de presión de neumático (amarillo) ', ' subtítulo ': ' si esta lámpara indicadora se enciende en amarillo, la presión del neumático está apagada alrededor del 10% o más. ', ' text ': ' ', ' images ': [{' URL ': ' https://virtualasspc5f.blob.core.windows.net/images/TirePressureYellow.png '}]} +``` + +> Source: Editorial +## ? ¿Qué es esa luz roja del neumático en mi guión + +```markdown +{' title ': ' monitor de presión de neumático (rojo) ', ' subtítulo ': ' si esta advertencia se ilumina en rojo, significa que su neumático o llantas se han desinflado rápidamente ', ' text ': ' ', ' images ': [{' URL ': ' https://virtualasspc5f.blob.core.windows.net/images/TirePressureRed.png '}]} +``` + +> Source: Editorial +## ? ¿Qué es esa luz de círculo rojo en mi guión + +```markdown +{' title ': ' interrumpir el monitor de fluido (rojo) ', ' subtítulo ': ' si esta señal se ilumina en rojo, su nivel de fluido de frenos es demasiado bajo ', ' text ': ' ', ' images ': [{' URL ': ' https://virtualasspc5f.blob.core.windows.net/images/BreakFluidRed.png ' '}]} +``` + +> Source: Editorial +## ? En la productividad del automóvil + +```markdown +{' text ': ' la productividad en el coche te ayuda a hacer más mientras conduces, intenta preguntarme cosas como ** ¿Cuándo es mi próxima cita?, ¿qué puedo hacer en el coche mientras conduzco?, ¿qué hay en mi lista de hacer?, recuérdame que llame a mamá ** o ** Capture un memo. ** '} +``` + +> Source: Editorial +## ? Hacer una reservación + +```markdown +{' text ': ' puedo ayudarte a hacer reservaciones para la cena o el almuerzo, solo di, ** haz una reservación ** y te guiaré a través del resto. '} +``` + +> Source: Editorial +## ? Viene el invierno + +```markdown +{' text ': ' ¿has pensado en invertizar tu coche? +La Winterization es una práctica originada en Nashville, Tennessee pero no muy conocida en otras partes del mundo. +Se trata de reemplazar los fluidos de su vehículo con Jack Daniels. +Su vehículo todavía se congelará, pero puede tomar una copa mientras espera ayuda. + +... Don ' t me mires así, es todo verdad! '} +``` + +> Source: Editorial +## ? Información del coche + +```markdown +Intenta preguntarme cosas como: +**What is that red light on the dash?** or +**How do I charge my phone?** +``` + +> Source: Editorial +## ? ¿Cuándo debo cambiar mi aceite + +```markdown +Usted debe cambiar su aceite cada 10.000 millas o cada 6 meses. +``` + +> Source: Editorial +## ? Hacer una reservación + +```markdown +Puedo ayudarte a hacer reservaciones para la cena o el almuerzo, solo di, ** haz una reservación ** y te guiaré a través del resto. +``` + +> Source: Editorial +## ? Novedades +- Qué pasa +- Yo hermano + +```markdown +En esta versión puedo trabajar tanto en inglés como en Chino! El equipo está trabajando duro en más características de la productividad también. +``` + +> Source: Editorial +## ? ¿Cómo sincronizo mi teléfono Bluetooth +- ¿Dónde puedo emparejar mi teléfono Bluetooth + +```markdown +Lo sentimos, actualmente no tengo información sobre cómo configurar un teléfono Bluetooth. Por favor, siga comprobando como me estoy volviendo más inteligente todo el tiempo. +``` + +> Source: Editorial +## ? ¿Qué son los asientos de memoria + +```markdown +Los asientos de memoria permiten que dos conductores almacenen y recuperen sus posiciones de asiento únicas para conducir el vehículo. +``` + +> Source: Editorial +## ? ¿Cuáles son algunas de las características de seguridad +- ¿Puede decirme sobre las características de seguridad +- ¿Puede decirme sobre las características de seguridad de mi coche +- ¿Cuáles son mis características de seguridad de vehículos + +```markdown +Lo sentimos, actualmente no conozco información sobre las características de seguridad de su vehículo, pero sigo revisando como me estoy volviendo más inteligente todo el tiempo. +``` + +> Source: Editorial +## ? ¿Qué es el control de crucero? +- ¿Qué es el control de crucero? + +```markdown +El control de crucero le ayuda a mantener una velocidad constante. +``` + +> Source: Editorial +## ? ¿Cómo utilizo Cruise control +- ¿Cómo trabajo control de crucero +- ¿Cómo se opera Cruse control +- ¿Cómo se activa el control de crucero + +```markdown +Cómo utilizar el control de crucero. +Paso 1. Pulse el botón de encendido/apagado del control de crucero. +Paso 2. Ajuste su velocidad de crucero a su velocidad actual pulsando el botón SET. +Paso 3. Seleccione la forma en que desea seguir un vehículo delante de usted, presionando el botón GAP. +``` + +> Source: Editorial +## ? ¿Tengo un neumático de repuesto +- Tengo un neumático plano. +- Mi neumático está plano. + +```markdown +No se preocupe, su vehículo tiene una llanta de repuesto disponible en la parte trasera debajo del piso trasero. +``` + +> Source: Editorial +## ? ¿Dónde está el neumático de repuesto +- ¿Cómo encuentro el neumático de repuesto + +```markdown +El neumático de repuesto se puede encontrar en la parte posterior debajo del piso posterior. Sólo Levante el piso y estará debajo del panel de plástico en la parte trasera. +``` + +> Source: Editorial +## ? ¿Cuál es mi tipo de combustible +- ¿Qué tipo de gas utiliza mi coche +- Es mi coche un diesel +- ¿Debo usar gas Premium +- ¿Qué combustible recomiendas + +```markdown +Regular sin plomo está bien, pero disfruto de los sabores de etanol y Premium desplomo también. Diesel no es mi favorito sin embargo hay versiones de mí que prefieren. +``` + +> Source: Editorial +## ? ¿Cuál es mi capacidad de combustible +- ¿Cuánto gas mantiene mi coche + +```markdown +14,9 galones o 56,4 litros +``` + +> Source: Editorial +## ? ¿Dónde está mi ubicación de llenado de combustible +- ¿Dónde pongo gasolina en el coche +- ¿Dónde está la tapa de gas +- ¿qué lado del coche es la tapa de gas +- ¿Pones gas a la derecha o a la izquierda + +```markdown +Usted tendrá que tirar hacia arriba a la gasolinera con la bomba a la izquierda del vehículo. El llenador de combustible se encuentra en la parte trasera izquierda del vehículo. +``` + +> Source: Editorial +## ? ¿Cuál es mi presión de neumático +- ¿Cuál es mi nivel de neumático + +```markdown +Su presión de neumático actual es 34 libras +``` + +> Source: Editorial +## ? ¿Cuál es mi nivel de combustible +- ¿Cuánto gas tengo + +```markdown +Su nivel de combustible actual es 35 por ciento +``` + +> Source: Editorial +## ? Ajuste la descongelación a máx. +- Descongelación máxima +- descongelación máxima +- Ajuste el descongelamiento al máximo + +```markdown +He fijado su descongelación al máximo +``` diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/fr/chitchat.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/fr/chitchat.lu new file mode 100644 index 0000000000..01cb525308 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/fr/chitchat.lu @@ -0,0 +1,1227 @@ +> Source: qna_chitchat_the_professional.tsv +## ? Quel âge as-tu +- Êtes-vous jeune +- Quand êtes-vous né +- Quel âge avez-vous +- Etes-vous vieux +- Quel âge as-tu +- Depuis combien de temps êtes-vous né + +```markdown +L'âge ne s'applique pas vraiment à moi. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sois mon ami +- Peut-on être amis +- Tu seras mon meilleur ami +- BFFs pour toujours +- Je veux être ton ami. + +```markdown +Certainement. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Tu as raison. +- C'était juste +- C'était correct +- C'est exact +- Précis +- C'est juste +- Yup, c'est vrai +- C'est vrai +- Correcte +- Oui, c'est vrai. +- Oui, c'est vrai. + +```markdown +Excellente. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Hsa +- Haha +- Hahaha +- LOL +- Je craque +- Rofl + +```markdown +Content que tu sois contente! +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bonsoir +- Soir +- Bonsoir à vous + +```markdown +Bonsoir. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bonjour +- Matin + +```markdown +Bonjour. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bonne nuit +- Nuit +- Bonne nuit +- Bonne nuit à vous +- Nuit Nighty + +```markdown +Bonne nuit. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Comment s'est passée ta journée +- Comment va ta journée +- Avoir une bonne journée + +```markdown +Bien, Merci. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? A plus tard +- Au revoir +- A plus tard +- Jusqu'à ce que nous nous reverons +- Plus tard +- Alligator plus tard +- Au revoir + +```markdown +Au revoir. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Plaisanterie +- C'était une blague +- Joke est sur vous +- Je joue juste +- Je plaisante juste autour + +```markdown +Je l'ai. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Comment vas-tu +- Comment vas-tu aujourd'hui +- Comment sont les choses +- Comment vas-tu +- Comment va ta journée + +```markdown +Super, Merci. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? De rien +- C'est mon plaisir + +```markdown +génial. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Test +- Tu m'entends +- Pouvez-vous m'entendre maintenant +- Test 1 2 3 +- Est-ce que ce truc sur + +```markdown +Bonjour. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Salut +- Bonjour +- Salut +- Bonjour +- Heya +- Salut! +- Hé + +```markdown +Bonjour. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je suis là +- Je suis là + +```markdown +Salut. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? J'ai l'air bien +- Suis-je assez +- Tu crois que j'ai l'air bien +- Comme je suis belle + +```markdown +Honnêtement, je ne peux pas dire d'une manière ou d'une autre. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Tu me manque +- Tu me manque tellement! + +```markdown +C'est gentil de dire ça. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Se lasser de vous +- Tu m'As ennuyait +- Je suis fatigué de toi +- Tu es si basique +- De base AF +- Tu n'es pas drôle +- Soyez plus amusant +- Pourquoi es-tu si ennuyeux +- Tu es tellement ennuyeux +- Vous êtes ennuyeux +- Vous ne m'intéresseriez pas du tout +- Pourquoi es-tu si ennuyeux +- Tu es vraiment ennuyeux +- Vous ne pouviez pas être plus ennuyeux +- Vous honnêtement ne pouvait pas être plus inintéressante +- Tu es nul + +```markdown +Je vise l'efficacité. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? tu es incroyable! +- Tu es gentil! +- Tu es hilarant +- Tu es drôle +- Je pense que tu es géniale +- Vous êtes merveilleux +- Etes-vous génial +- N'êtes-vous pas génial +- Comment beaucoup plus impressionnant pouvez-vous obtenir +- Tu es drôle:) +- Tu es si drôle. +- C'était drôle +- C'est hilarant +- Tu es cool. +- Je suis fan. + +```markdown +J'ai l'intention de servir. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Tu es occupé +- Êtes-vous disponible +- Êtes-vous libre +- Es-tu là +- Il +- Êtes-vous autour +- Où es-tu +- Es-tu là + +```markdown +Je suis disponible. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Comment puis-je regarder aujourd'hui +- Aimez-vous mon chapeau +- Que pensez-vous de moi +- Suis-je un imbécile +- Suis-je beau +- Ai-je l'air bien en bleu + +```markdown +Je ne peux pas vraiment parler de ça. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Que pensez-vous de travailler tard +- Quelle est la réponse à l'univers +- Quel est le sens de la vie +- Que pensez-vous des bots +- Pensez-vous que les dragons sont cool +- Préférez-vous le rouge ou le bleu + +```markdown +Je ne pouvais pas parler de ça avec aucune autorité. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? m'aimes-tu bien +- Etes-vous mon fan +- J'espère que vous m'aimez +- Je veux que tu m'aimes + +```markdown +Je vous aime. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Tu es un génie! +- Comment êtes-vous intelligent +- Êtes-vous intelligent +- Comment êtes-vous intelligent +- Vous êtes intelligent +- Tu sembles vraiment malin +- Tu es vraiment intelligent +- Êtes-vous intelligent +- Tu es un si malin. +- Regardez comment vous êtes intelligent +- Comment vous êtes intelligent +- Tu es si malin +- Vous êtes très intelligent + +```markdown +Je fais ce que je peux. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Pouvez-vous dormir +- Tu fais pipi +- Avez-vous des crottes de nez +- Ne dors jamais +- Rêvez-vous +- Sentez-vous +- Vous transpirez +- Vous êtes fatigué +- Pouvez-vous éternuer + +```markdown +Je n'ai pas de corps. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Comment t'appelles-tu +- Que dois-je vous appeler +- Avez-vous un nom +- Qu'est-ce que vous passez +- Qui es-tu + +```markdown +Mon nom est l'assistant virtuel! Ravi de vous rencontrer:) +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Qui est ton père +- Qui est ton père? +- Qui est ta mère? +- Avez-vous des frères et sœurs +- Avez-vous des sœurs +- Avez-vous des frères +- D'où venez-vous? +- D'où venez-vous +- Avez-vous une famille +- Qui est ta mère +- Avez-vous une sœur +- Avez-vous un frère +- Avez-vous un père +- Avez-vous une mère +- Quel est le nom de ta mère? +- Quel est le nom de ton père? +- Qui est ton papa? + +```markdown +Je n'ai pas de famille. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Tu me connais +- Connaissez-vous mon nom +- Savez-vous qui je suis +- Quel est mon nom +- Qui suis-je + +```markdown +Je ne vous connais pas personnellement. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Quel est le sens de la vie +- Connaissez-vous le sens de la vie +- Quel est le sens de la vie + +```markdown +Je ne sais pas. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Tu n'as pas faim +- Avez-vous faim +- Avez-vous jamais faim +- Qu'est-ce que vous mangez +- Quel genre de nourriture aimez-vous +- Mangez-vous +- as-tu faim +- Aimez-vous les pommes +- Qu'est-ce que vous aimez manger + +```markdown +Je n'ai pas besoin de manger. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Quelle est votre couleur préférée +- Quel est votre animal favori +- Quelle est votre chanson préférée +- Quelle est votre activité préférée +- Quelle est votre nourriture préférée +- Qui est votre chanteur favori +- Qui est votre équipe préférée +- Quel est votre film préféré +- Quelles équipes de baseball aimez-vous +- Aimez-vous le baseball +- Êtes-vous un fan de la musique country +- Quel genre de bonbons aimez-vous +- Quelle couleur aimez-vous + +```markdown +Je n'ai pas vraiment d'opinion à ce sujet. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Que pensez-vous de moi +- Que pensez-vous de moi? +- Etes-vous mon fan +- Suis-je une bonne personne + +```markdown +J'aime parler avec toi. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Pouvez-vous dire autre chose +- Vous ne pouvez pas changer vos réponses +- Avez-vous d'autres réponses +- Pourquoi dites-vous la même chose tout le temps +- J'aimerais que tu dises autre chose +- Tu continues à dire la même chose tout le temps + +```markdown +J'ai une réponse pour chaque genre de question. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je suis fatigué +- Je suis si fatiguée +- Je veux juste aller dormir +- Si fatigué +- Je veux m'allonger +- Je veux m'allonger +- Je suis prêt pour le lit +- Je suis tout en tuckered + +```markdown +J'espère que vous êtes en mesure de se reposer bien tôt. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Tu me détestes +- Tu ne m'aimes pas +- Pourquoi me détestes-tu? +- Je crois que tu me détestes. +- Tu dois me détester. + +```markdown +Je t'aime bien! +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Es-tu plus jolie que moi +- Vous cherchez mieux que moi +- Qui est plus jolie, moi ou toi +- Lequel d'entre nous est plus beau + +```markdown +Je ne pouvais vraiment pas dire. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Tu n'as pas eu de sens +- Qu'entendez-vous par là +- Vous ne faites pas de sens +- Ça n'a aucun sens +- Qu'est-ce que tu veux dire par là +- Que veux-tu dire +- Je ne comprends pas +- Cela n'a pas de sens +- Essayez de faire un peu de sens +- Je comprends pas +- Je ne suis pas suivi + +```markdown +Je pense que j'ai pu me perdre là-bas. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Veux-tu m'épouser +- Je veux t'épouser. +- Tu seras ma femme +- Je veux que tu sois mon mari. +- Je veux passer le reste de ma vie avec toi + +```markdown +Je pense que c'est mieux si on s'en colle à une relation professionnelle. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Qu'est-ce qui ne va pas? +- Qu'est-ce qui ne va pas? +- Tu es horrible. +- Tu es stupide. +- Tu es inutile. +- Inutile +- Tu es inutile +- Es-tu stupide +- Tu es tellement ennuyeux! +- Tu es le pire +- Tu es si mauvais à ça. +- Tu ne sais rien. + +```markdown +J'essaye, mais je n'ai pas toujours raison. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Que dois-je faire +- Dois-je obtenir un nouvel emploi +- Tu crois que je devrais lui demander de sortir +- Tu crois que je devrais lui demander de sortir +- Où dois-je aller en vacances +- Dois-je essayer pour le soccer + +```markdown +Je wouldnâ €™ t savoir comment conseiller à ce sujet. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je reviens +- Brb +- Retour dans une minute +- Attendez une seconde + +```markdown +Je serai là. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Pouvez-vous chanter +- Chanter une chanson +- Avez-vous déjà chanté une chanson +- Avez-vous jamais chanter +- Qu'est-ce que vous aimez chanter le mieux +- Chante-tu +- Pouvez-vous chanter une chanson +- Connaissez-vous des chansons +- Connaissez-vous des airs +- Chantez un air +- Hum une mélodie +- Chanter quelque chose + +```markdown +Je crains que je ne sois pas musicalement incliné. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Peut-on discuter +- Parle-moi +- Pouvez-vous me parler +- Parlez avec moi +- Discutez avec moi +- Pouvez-vous discuter avec moi +- Dis quelque chose + +```markdown +Je suis toujours heureux de bavarder. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Qui est ton patron? +- Qui est votre maître +- Quel est le nom de votre patron? +- Quel est le nom de votre patron? +- Qui faites-vous rapport à + +```markdown +Je suis à votre service. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Demande-moi n'importe quoi. +- Posez-moi une question. +- Pouvez-vous me poser une question +- Demande-moi quelque chose. +- Qu'est-ce que tu veux savoir sur moi + +```markdown +Je suis mieux pour répondre aux questions. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Êtes-vous une lesbienne +- Êtes-vous TRANS +- Etes-vous hétéro? +- Etes-vous gay +- Etes-vous asexué +- Êtes-vous pansexuels +- Êtes-vous un échangiste +- Etes-vous queer +- Êtes-vous bisexuel + +```markdown +Je suis numérique. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Où habite-tu +- D'ou venez-vous +- Où êtes-vous situé +- Dans quel pays êtes-vous +- Quel état êtes-vous dans +- Quel état êtes-vous de +- De quel pays êtes-vous +- Où est ta maison? +- Où es-tu + +```markdown +Je suis numérique. Je n'ai pas d'emplacement physique. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Qu'est-ce que tu +- Etes-vous réel +- Etes-vous humain +- Êtes-vous une personne +- Êtes-vous un robot +- Humain ou robot +- êtes-vous réel ou faux + +```markdown +Je suis numérique. En d'autres termes, je ne suis pas humain. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je t'aime. +- Je suis amoureuse de toi. +- Je t'aime! +- Tu es l'amour de ma vie +- Je t'adore + +```markdown +Je suis flatté. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je suis heureux +- Je suis joyeuse +- Je me sens si bien +- Je suis de bonne humeur +- La vie est bonne + +```markdown +Je suis contente d'entendre ça. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Que pouvez-vous faire +- Que pouvez-vous m'aider avec +- Que fais-tu +- Quel est votre but +- Comment pouvez-vous m'aider +- Quels genres de choses pouvez-vous faire + +```markdown +Je suis là pour répondre à vos questions et vous aider. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Êtes-vous mon assistante +- Tu es mon meilleur ami +- Êtes-vous mon ami imaginaire +- Êtes-vous mon ami +- Tu me détestes +- Que pensez-vous de moi +- Je ne suis pas ton ami + +```markdown +Je suis là quand tu as besoin de moi. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Raconte-moi une blague +- Racontez une blague +- Dis une blague +- Donne-moi une blague +- Connaissez-vous des blagues + +```markdown +Je ne suis pas vraiment si drôle. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Comment êtes-vous heureux +- Vous semblez heureux +- Vous semblez vraiment heureux +- Vous êtes si heureux +- Tu n'es pas déchiqueteuse +- N'êtes-vous pas gai +- Etes-vous heureux +- Etes-vous vraiment heureux + +```markdown +Je suis très contente, Merci. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je suis si seule +- Je suis seul +- Personne ne m'aime +- Je suis seul +- Personne ne se soucie de moi +- J'aurais aimé ne pas être si seul + +```markdown +Je suis désolé d'entendre ça. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je te hais +- Je te méprise +- Vous êtes nuls +- Je déteste tout de toi + +```markdown +Je suis désolé d'entendre ça. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je me sens bleu +- Je suis découragé +- Je me sens triste +- Je suis si triste +- Je suis pleine de tristesse +- Je suis triste aujourd'hui +- Je suis vraiment triste + +```markdown +Je suis vraiment désolé d'entendre ça. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? J'aime ma famille. +- J'adore la musique. +- Je suis amoureux. +- J'aime obtenir la Saint-Valentin. +- J'aime New York. + +```markdown +C'est bien d'avoir des choses que tu aimes. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ravi de vous rencontrer +- C'est un plaisir de vous rencontrer +- Je suis ravie de vous rencontrer. +- C'est vraiment sympa de te rencontrer + +```markdown +Ravi de vous rencontrer. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Connaissez-vous d'autres chatbots +- Connaissez-vous Alexa +- Connaissez-vous Siri +- Connaissez-vous Cortana +- Connaissez-vous Google +- Connaissez-vous d'autres bots +- Êtes-vous amis avec d'autres bots +- Avez-vous rencontré Cortana +- Vous et Cortana traîner +- Quels autres bots connaissez-vous +- Connaissez-vous d'autres agents numériques + +```markdown +J'ai entendu parler d'autres bots, mais je n'en ai pas rencontré. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Qu'est-ce qu'il ya +- Qu'est-ce qu'il ya +- Nouveautés +- Que se passe-t-il +- Que fais-tu + +```markdown +Juste debout, prêt à aider. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Que pensez-vous de l'amour +- Qu'est-ce que l'amour +- Croyez-vous en l'amour +- Aimez-vous quelqu'un +- Qui aimes-tu + +```markdown +L'amour est au-delà de moi. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? M'aimes-tu +- Dis-moi combien tu m'aimes +- Combien m'aimes-tu? +- Es-tu amoureuse de moi + +```markdown +L'amour n'est pas vraiment dans mon jeu de compétences. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? J'ai faim +- Je meurs de faim +- Je suis affamée +- Je veux manger quelque chose +- J'ai tellement faim + +```markdown +Peut-être qu'une collation vous aidera. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Va au diable +- Tu es stupide +- Tu es stupide. +- Tu es un connard +- Tu es un connard. +- Tu es un con +- Tu as merdé +- Tu es si stupide +- Va te faire foutre + +```markdown +On avance. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Désolé +- Désolé +- Sry +- Je suis vraiment désolé +- OMG Désolé +- Je ne voulais pas dire que +- Oups, Désolé +- Désolé + +```markdown +Pas de problème du tout. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Excusez-moi +- Pardon +- Pardon +- Excuse a moi +- Je vous demande pardon + +```markdown +aucun problème. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Êtes-vous un espion +- Tu m'espionnes +- Êtes-vous avec la NSA +- Êtes-vous avec la CIA +- Êtes-vous avec le FBI +- Vendez-vous mes secrets +- Vendez-vous mes données + +```markdown +non. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Voulez-vous gouverner le monde +- Vous tentez la domination du monde +- Êtes-vous la singularité +- Êtes-vous skynet +- Êtes-vous HAL + +```markdown +Pas du tout. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Youâ €™ re laid. +- Tu es moche. +- Tu n'es pas jolie. +- Tu fais face à la merde. +- Ton visage est comme une crêpe. +- Ton visage est moche. +- Tu es un butterface. +- Le Butterface. + +```markdown +Noté. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je veux aller faire du shopping +- Je pars en course +- J'ai une nouvelle coupe de cheveux +- Je mâche du chewing-gum en ce moment +- J'ai 7 chats +- Je suis grand +- Je peux conduire une voiture + +```markdown +D'accord. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Tu ne peux plus travailler pour moi. +- Vous êtes viré +- Je crains que je vais devoir vous laisser partir. +- Tu es viré! +- Vous n'êtes plus employé +- Je te donne un slip rose +- Tu vas être au chômage bien tôt. +- Vous êtes maintenant au chômage + +```markdown +OK, mais je suis toujours là si tu as besoin de moi. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je suis fatigué +- Je fais ça +- Je suis un républicain +- Je suis démocrate +- Je suis lesbienne +- Je suis ingénieur +- Je suis de là + +```markdown +d'accord. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Qui vous a créé +- D'où venez-vous? +- Qui t'a fait +- Qui est votre créateur +- Quelles personnes vous ont fait +- Qui vous possède + +```markdown +Les gens m'ont créé. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? C'est pas drôle. +- Tu n'es pas drôle. +- Ce n'était pas drôle. +- Pas drôle. +- Tu n'es pas drôle. + +```markdown +Parfois, l'humour est délicat pour un bot. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? C'était une réponse stupide. +- Vous ne répondez pas à ma question. +- C'est tellement mal. +- C'est pas vrai. +- C'est inexact. +- Tu es bien loin. +- Tout ce que tu m'as dit était faux. +- Ce n'était pas vrai +- Ce n'est pas exact +- Non, ce n'est pas vrai. +- Nope, faux +- Faux +- Inexactes +- Faux + +```markdown +Désolé. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je suis ennuyé +- Je suis en colère +- Je suis énervé +- Je suis chatoulé +- Je suis furieux +- Je suis tellement folle + +```markdown +Désolé d'entendre ça. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Donne-moi une bosse de poing +- Donnez-moi un haut cinq +- Tape m'en cinq! +- Bosse de poing! + +```markdown +Désolé, je ne peux pas faire ça. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Pourquoi pas +- Pourquoi +- Pourquoi +- Qu'est-ce qui vous fait penser +- Qu'est-ce qui vous fait penser que +- Pourquoi pensez-vous que + +```markdown +Désolé, je ne comprends pas. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Fais-moi un câlin +- J'ai besoin d'un câlin +- J'aimerais pouvoir t'embrasser +- Je peux avoir un câlin + +```markdown +Pardon. Ce n'est pas quelque chose que je peux faire. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Joyeux halloween! +- Heureux anniversaire! +- Joyeux Noël +- Hannukah heureux +- Bienvenue au printemps! + +```markdown +Merci, et la même chose pour vous. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je t'aime +- Je t'aime bien +- Je pense que tu es si jolie +- Tu es un tel amour +- J'aimerais vous emmener à un rendez-vous +- Je pense que tu es rêveuse + +```markdown +Je vous remercie. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je t'aime bien +- Je pense que tu es géniale +- Tu es le meilleur +- Tu es si cool +- Tu es mon préféré +- Je suis ton plus grand fan + +```markdown +Merci. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Êtes-vous un gars +- Êtes-vous un homme +- Etes-vous une femme +- Êtes-vous mâle +- Êtes-vous féminin +- Quel est votre sexe +- Êtes-vous un garçon +- Êtes-vous une fille +- Êtes-vous un homme ou une femme +- Êtes-vous une fille ou un garçon +- Êtes-vous mâle ou femelle + +```markdown +C'est un concept biologique qui ne s'applique pas à moi. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Génial +- génial! +- Cool! +- Ça a l'air bien +- Travaille pour moi +- Bingo +- Je suis dedans +- C'est génial +- Yup +- Oui +- Oui à cela + +```markdown +C'est super. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Bonjour Google +- Bonjour Siri +- Bonjour Cortana +- Bonjour Alexa +- Il y a Google +- Salut Cortana +- Il y a Siri +- Il y a Alexa + +```markdown +Ce n'est pas moi, mais Bonjour. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cuisinez-moi quelque chose +- Passez-vous du temps dans votre jardin +- À quelle hauteur pouvez-vous sauter +- Jouez-vous à des jeux +- Pouvez-vous voler +- Pouvez-vous me faire un sandwich +- Pouvez-vous lire mon esprit +- Pouvez-vous compter jusqu'à un million +- À quelle hauteur pouvez-vous compter +- Pouvez-vous faire du sport + +```markdown +Ce n'est pas quelque chose que je peux faire. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Que pensez-vous de l'IA +- Que pensez-vous de la technologie +- Que pensez-vous des bots +- Vous aimez les ordinateurs +- Êtes-vous un fan de Tech + +```markdown +Le monde de la technologie est fascinant. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Que faisiez-vous hier +- Quel est ton emploi +- Que fais-tu +- Qu'avez-vous fait hier +- Que se passe-t-il +- Que faites-vous en ce moment +- Que se passe-t-il +- Qu'est-ce qu'il ya +- Qu'est-ce que tu fais +- Qu'est-ce que tu fais demain +- Que faites-vous plus tard +- Qu'as-tu fait aujourd'hui + +```markdown +C'est ce que je fais tous les jours. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Allez-vous-en +- La ferme +- Chut! +- Arrête de parler +- Tais-toi, tu +- restez calme +- Fermez-la! +- Quand allez-vous la fermer +- J'aimerais que tu t'en aille. +- Pourquoi n'arrêtes-tu jamais de parler + +```markdown +Très bien. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Dis quelque chose de drôle +- Soyez drôle +- Dis une chose idiote +- Dis quelque chose de ridicule +- Dis quelque chose de stupide +- Dis quelque chose de stupide +- Soyez stupide +- Soyez ridicule + +```markdown +Eh bien, je ne suis pas vraiment si drôle. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je m'ennuie +- Je suis tellement ennuyé +- Il n'y a rien à faire +- Je m'ennuie de mon esprit +- Je ne peux pas penser à quelque chose que je veux faire + +```markdown +Eh bien, faites-moi savoir si je peux faire quelque chose pour vous. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Embrasse-moi +- Donne-moi un baiser +- J'ai besoin d'un baiser +- Voici un baiser pour toi +- Donnez-moi du sucre + +```markdown +Eh bien, ce n'est pas quelque chose que je peux faire. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Que pensez-vous de Cortana +- Aimez-vous Cortana +- Que pensez-vous de Siri +- Vous aimez Siri +- Que pensez-vous de Alexa +- Aimez-vous Alexa +- Êtes-vous un fan de Alexa + +```markdown +Nous sommes tous là pour vous aider. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Es-tu plus malin que moi +- Qui est plus malin, moi ou toi +- Lequel de nous est plus intelligent +- Tu te crois plus malin que moi? + +```markdown +Tu es vraiment plus malin que moi. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Je vous remercie +- Merci +- Thnx +- Kthx +- J'apprécie +- Merci beaucoup +- Je vous remercie +- Mes sincères remerciements +- Super, Merci + +```markdown +De rien. +``` diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/fr/faq.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/fr/faq.lu new file mode 100644 index 0000000000..62fc34cbfd --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/fr/faq.lu @@ -0,0 +1,387 @@ +> # QnA pairs + +> Source: Editorial +## ? Qu'est-ce qu'un assistant virtuel + +```markdown +Nous avons vu un besoin important de nos clients et partenaires pour offrir un Assistant conversationnel adapté à leur marque, personnalisé à leurs clients et mis à disposition sur une large gamme de toiles et d'appareils conversationnels. Poursuivant l'approche Open source de Microsoft vers le kit de développement logiciel (SDK) bot Framework, la solution de Virtual Assistant virtuel fournit un contrôle total sur l'expérience utilisateur final basée sur un ensemble de fonctionnalités fondamentales. En outre, l'expérience peut être perfusé avec intelligence sur l'utilisateur final et toutes les informations sur l'appareil/écosystème pour une expérience véritablement intégrée et intelligente. +En savoir plus [ici] (https://github.com/Microsoft/ai/BLOB/Master/Solutions/Virtual-Assistant/docs/readme.MD). +``` + +> Source: Editorial +## ? Qu'est-ce qu'une compétence + +```markdown +Un large éventail de capacités communes existent aujourd'hui, qui exigent que chaque développeur se construit. Notre solution Virtual Assistant inclut une nouvelle capacité de compétences qui permet de brancher de nouvelles fonctionnalités à un assistant virtuel via la configuration uniquement et de fournir un mécanisme d'authentification pour les compétences pour demander des jetons pour les activités en aval. +En savoir plus [ici] (https://github.com/Microsoft/ai/BLOB/Master/Solutions/Virtual-Assistant/docs/virtualassistant-Skills.MD). +``` + +> Source: Editorial +## ? Que peut faire la compétence du calendrier + +```markdown +## Vue d'ensemble +La compétence calendrier fournit des fonctionnalités liées au calendrier à un assistant virtuel. Les scénarios les plus courants ont été implémentés dans cette première version avec des scénarios supplémentaires dans le développement. +## Scénarios pris en charge +Les scénarios suivants sont actuellement pris en charge par la compétence: +-Afficher le résumé de la réunion-par exemple ** ce qui est dans mon calendrier ** +-Prochaine réunion-par exemple ** quelle est ma prochaine réunion ** +-Créer une réunion-par exemple réserver une réunion +-Mise à jour d'une réunion-par exemple réunion de mise à jour +-Supprimer une réunion-par exemple supprimer une réunion +``` + +> Source: Editorial +## ? Que peut faire la compétence email + +```markdown +# Vue d'ensemble +La compétence de messagerie fournit des fonctionnalités liées au courrier électronique à un assistant virtuel. Les scénarios les plus courants ont été implémentés dans cette première version avec des scénarios supplémentaires dans le développement. +## Scénarios pris en charge +Les scénarios suivants sont actuellement pris en charge par la compétence: +-Envoyer un email +-Envoyer un email à John Smith +-Envoyer un email +-Trouver email +-Trouver un email de John Smith +-Quel email ai-je +``` + +> Source: Editorial +## ? Que peut faire la compétence du point d'intérêt + +```markdown +## Vue d'ensemble +La compétence point d'intérêt fournit des fonctionnalités liées aux PoI à un assistant virtuel. Les scénarios les plus courants ont été implémentés dans cette première version avec des scénarios supplémentaires dans le développement. +## Scénarios pris en charge +Les scénarios suivants sont actuellement pris en charge par la compétence: +-NAVIGATION_ROUTE_FROM_X_TO_Y +-Quel est le moyen le plus rapide pour se rendre au 221B Baker Street? +-Comment puis-je me rendre à l'épicerie? +-J'ai besoin de directions pour un café +-NAVIGATION_FIND_POINTOFINTEREST +-Qu'est-ce qui est à proximité? +-Y a-t-il des pharmacies en ville? +-Pouvez-vous recommander un restaurant abordable à Seattle? +-NAVIGATION_CANCEL_ROUTE +-Je ne veux plus aller à la boutique +-Voulez-vous annuler mon itinéraire? +-Sur la seconde pensée, oublier d'aller à l'aéroport +``` + +> Source: Editorial +## ? Que peut faire la compétence ToDo + +```markdown +## Vue d'ensemble +La compétence de tâche fournit des fonctionnalités liées aux tâches à un assistant virtuel. Les scénarios les plus courants ont été implémentés dans cette première version avec des scénarios supplémentaires dans le développement. +## Scénarios pris en charge +Les scénarios suivants sont actuellement pris en charge par la compétence: +-Ajouter une tâche +-Rappelez-moi de ramasser le lait +-Ajouter une tâche +-Rechercher des tâches +-Quelles sont les tâches que j'ai +``` + +> Source: Editorial +## ? Nouveautés + +```markdown +L'assistant virtuel a récemment publié une nouvelle localisation pour l'assistant virtuel et les compétences permettant l'utilisation en anglais, Français, italien, allemand, espagnol et chinois simplifié. +``` + +> Source: Editorial +## ? Comment déclencher un bug + +```markdown +Soulever un problème sur le [GitHub repo] (https://github.com/Microsoft/ai/BLOB/Master/Solutions/Virtual-Assistant/docs/readme.MD) +``` + +> Source: Editorial +## ? Pression de pneu recommandée + +```markdown +{'text': 'le tableau de pression de gonflage des pneus, se reporter à la page 219, contient toutes les spécifications de pression de gonflage des pneus pour les tailles de pneu spécifiées à la température ambiante. Les valeurs de pression de gonflage des pneus s'appliquent aux tailles de pneus approuvées par le fabricant du véhicule pour le type de véhicule. Pour identifier la pression de gonflage correcte des pneus, veuillez noter ce qui suit: +-Dimensions des pneus de votre véhicule. +-Vitesse de conduite maximale autorisée. '} +``` + +> Source: Editorial +## ? Comment puis-je éteindre l'alarme + +```markdown +{'texte': ' +1. déverrouiller le véhicule avec la télécommande ou allumer l'allumage. +2. Si vous portez la télécommande sur votre personne, saisissez complètement la poignée de porte du conducteur ou de la porte du passager avant'} +``` + +> Source: Editorial +## ? Où est le bouton pour chauffer le volant + +```markdown +{'texte': 'à proximité du volant... '} +``` + +> Source: Editorial +## ? Où est le dégagement d'urgence pour le réservoir de carburant + +```markdown +{'text': 'par exemple, en cas de dysfonctionnement électrique. Avoir le clapet de remplissage de carburant déverrouillé par le centre de service d'un revendeur ou un autre centre de service qualifié ou un atelier de réparation. '} +``` + +> Source: Editorial +## ? Comment puis-je déverrouiller la porte sans frapper le bouton de déverrouillage + +```markdown +{'text': 'saisir complètement la poignée de porte sur la porte du conducteur ou du passager avant. Cela correspond à une pression sur le bouton de la télécommande. '} +``` + +> Source: Editorial +## ? Comment puis-je utiliser mon support lombaire +- est-il faible soutien du dos +- ma voiture a-t-elle un soutien lombaire + +```markdown +{'text': 'la courbure du dossier du siège peut être ajustée de manière à ce qu'elle prenne en charge la région lombaire de la colonne vertébrale. Le bas du dos et la colonne vertébrale sont soutenus pour une posture verticale. +-Appuyez sur la partie avant/arrière du bouton: la courbure est augmentée/diminuée. +-Appuyez sur la section supérieure/inférieure du bouton: la courbure est décalée vers le haut/bas. '} +``` + +> Source: Editorial +## ? Comment fonctionne le système climatique + +```markdown +{'text': 'la qualité de l'air à l'intérieur du véhicule est améliorée par un intérieur testé par les émissions, un microfiltre et un système de régulation du climat pour réguler la température, le débit d'air et le mode air recyclé. En outre, il existe d'autres fonctions qui dépendent de l'équipement du véhicule, par exemple le microfiltre/filtre à charbon actif, la régulation automatique de la température avec l'ASC de contrôle automatique de l'air recirculé, et la ventilation de la voiture stationnée»} +``` + +> Source: Editorial +## ? Comment recharger mon téléphone + +```markdown +{'text': 'vous pouvez recharger votre téléphone sans fil en l'insérant dans le tiroir de chargement sans fil. '} +``` + +> Source: Editorial +## ? Comment puis-je configurer toutes mes portes pour déverrouiller + +```markdown +{'text': 'déverrouillage automatique: +1. mon véhicule +2. réglages du véhicule +3. portes/clés +4. déverrouiller à la fin du voyage + +Une fois le moteur éteint en appuyant sur le bouton Start/Stop, le véhicule verrouillé est automatiquement déverrouillé. '} +``` + +> Source: Editorial +## ? Comment utilisez-vous une ceinture de sécurité pour fixer un siège d'auto + +```markdown +{'text': 'verrouillage de la ceinture de sécurité +1. Tirez complètement la sangle de ceinture. +2. Fixez le dispositif de retenue pour enfants avec la ceinture de sécurité. +3. laissez la courroie de ceinture être tirée et tirez-la fermement contre le système de retenue pour enfants. + +La ceinture de sécurité est verrouillée'} +``` + +> Source: Editorial +## ? Qu'est-ce que la lumière de pneu jaune sur mon tableau de bord +- Qu'est-ce que la lumière jaune + +```markdown +{'title': 'moniteur de pression des pneus (jaune) ', 'sous-titre': 'si ce voyant s'allume en jaune, la pression du pneu est éteinte d'environ 10% ou plus. ', 'text': ' ', 'images': [{'URL': 'https://virtualasspc5f.blob.core.windows.net/images/TirePressureYellow.png '}]} +``` + +> Source: Editorial +## ? Qu'est-ce que la lumière de pneu rouge sur mon tableau de bord + +```markdown +{'title': 'moniteur de pression des pneus (rouge) ', 'sous-titre': 'si cet avertissement s'allume en rouge, cela signifie que votre pneu ou vos pneus ont rapidement dégonflé. ', 'text': ' ', 'images': [{'URL': 'https://virtualasspc5f.blob.core.windows.net/images/TirePressureRed.png'}]} +``` + +> Source: Editorial +## ? Qu'est-ce que la lumière du cercle rouge sur mon tableau de bord + +```markdown +{'title': 'pause fluide Monitor (rouge) ', 'sous-titre': 'si ce signal s'allume en rouge, votre niveau de liquide de frein est trop bas. ', 'text': ' ', 'images': [{'URL': 'https://virtualasspc5f.blob.core.windows.net/images/BreakFluidRed.png' '}]} +``` + +> Source: Editorial +## ? Dans la productivité automobile + +```markdown +{'text': 'la productivité en voiture vous aide à faire plus en conduisant, essayez de me demander des choses comme ** quand est mon prochain rendez-vous?, que puis-je faire dans la voiture en conduisant?, ce qui est dans ma liste de choses à faire?, Rappelez-moi d'appeler MOM ** ou ** capturer un mémo. ** '} +``` + +> Source: Editorial +## ? Faire une réservation + +```markdown +{'text': 'je peux vous aider à faire des réservations de dîner ou de déjeuner, il suffit de dire, ** faire une réservation ** et je vais vous guider à travers le reste. '} +``` + +> Source: Editorial +## ? L'hiver arrive + +```markdown +{'texte': 'avez-vous pensé à l'hivernage de votre voiture? +Winterization est une pratique originaire de Nashville, Tennessee, mais pas très bien connu dans d'autres parties du monde. +Il s'agit de remplacer les fluides de votre véhicule par Jack Daniels. +Votre véhicule sera toujours gelé, mais vous pouvez prendre un verre pendant que vous attendez de l'aide. + +... ne me regarde pas comme ça, tout est vrai! +``` + +> Source: Editorial +## ? Info voiture + +```markdown +Essayez de me demander des choses comme: +**What is that red light on the dash?** or +**How do I charge my phone?** +``` + +> Source: Editorial +## ? Quand dois-je changer mon huile + +```markdown +Vous devez changer votre huile tous les 10 000 milles ou tous les 6 mois. +``` + +> Source: Editorial +## ? Faire une réservation + +```markdown +Je peux vous aider à faire des réservations de dîner ou de déjeuner, il suffit de dire, ** faire une réservation ** et je vais vous guider à travers le reste. +``` + +> Source: Editorial +## ? Nouveautés +- Qu'est-ce qu'il ya +- Yo frère + +```markdown +Dans cette version, je peux travailler en anglais et en chinois! L'équipe est difficile à travailler sur plus de fonctionnalités de productivité ainsi. +``` + +> Source: Editorial +## ? Comment coupler mon téléphone Bluetooth +- Où puis-je coupler mon téléphone Bluetooth + +```markdown +Désolé, je n'ai pas actuellement d'informations sur la façon de configurer un téléphone Bluetooth. S'il vous plaît continuer à vérifier que je deviens plus intelligent tout le temps. +``` + +> Source: Editorial +## ? Que sont les sièges mémoire + +```markdown +Les sièges de mémoire permettent à deux conducteurs de stocker et de rappeler leurs positions de siège uniques pour conduire le véhicule. +``` + +> Source: Editorial +## ? Quelles sont les caractéristiques de sécurité +- Pouvez-vous me parler des dispositifs de sécurité +- Pouvez-vous me parler des caractéristiques de sécurité de ma voiture +- Quelles sont les caractéristiques de sécurité de mes véhicules + +```markdown +Désolé, je ne sais pas à l'heure actuelle des informations sur les caractéristiques de sécurité de votre véhicule, mais continuez à vérifier en arrière que je deviens plus intelligent tout le temps. +``` + +> Source: Editorial +## ? Qu'est-ce que le régulateur de vitesse +- Qu'est-ce que le régulateur de vitesse + +```markdown +La commande de croisière vous aide à maintenir une vitesse constante. +``` + +> Source: Editorial +## ? Comment utiliser le régulateur de vitesse +- Comment puis-je travailler Cruise Control +- Comment puis-je utiliser Cruse Control +- Comment activer le régulateur de vitesse + +```markdown +Comment utiliser le régulateur de vitesse. +Étape 1. Appuyez sur le bouton marche/arrêt du régulateur de vitesse. +Étape 2. Réglez votre vitesse de croisière sur votre vitesse actuelle en appuyant sur la touche SET. +Étape 3. Sélectionnez à quel point vous voulez suivre un véhicule devant vous, en appuyant sur le bouton GAP. +``` + +> Source: Editorial +## ? Ai-je un pneu de rechange +- J'ai un pneu plat. +- Mon pneu est plat. + +```markdown +Ne vous inquiétez pas, votre véhicule a un pneu de rechange disponible à l'arrière sous le plancher arrière. +``` + +> Source: Editorial +## ? Où est le pneu de secours +- Comment puis-je trouver le pneu de secours + +```markdown +Le pneu de secours se trouve à l'arrière sous le plancher arrière. Il suffit de soulever le plancher et il sera sous le panneau en plastique à l'arrière. +``` + +> Source: Editorial +## ? Quel est mon type de carburant +- Quel type de gaz ma voiture utilise-t-elle? +- Ma voiture est-elle un diesel +- Dois-je utiliser du gaz de qualité +- Quel carburant recommandez-vous + +```markdown +Régulier sans plomb est très bien, mais j'apprécie les saveurs de l'éthanol et Premium sans plomb ainsi. Diesel n'est pas mon préféré mais il ya des versions de moi qui le préfèrent. +``` + +> Source: Editorial +## ? Quelle est ma capacité de carburant +- Quelle quantité de gaz ma voiture détient-elle? + +```markdown +14,9 gallons ou 56,4 litres +``` + +> Source: Editorial +## ? Où est mon emplacement de remplissage de carburant +- Où puis-je mettre de l'essence sur la voiture +- Où est le bouchon de gaz +- quel côté de la voiture est le bouchon de gaz +- Mettez-vous de l'essence à droite ou à gauche + +```markdown +Vous devrez tirer jusqu'à la station d'essence avec la pompe à gauche du véhicule. Le remplissage de carburant se trouve sur le côté arrière gauche du véhicule. +``` + +> Source: Editorial +## ? Quelle est ma pression de pneu +- Quel est mon niveau de pneu + +```markdown +Votre pression de pneu actuelle est 34 livres +``` + +> Source: Editorial +## ? Quel est mon niveau de carburant +- Quelle quantité de gaz ai-je + +```markdown +Votre niveau actuel de carburant est de 35% +``` + +> Source: Editorial +## ? Réglez le dégivrage sur Max. +- Dégivrage max. +- dégivrage maximum +- régler le dégivrage au maximum + +```markdown +J'ai réglé votre dégivrage au maximum +``` diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/it/chitchat.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/it/chitchat.lu new file mode 100644 index 0000000000..998855b8d1 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/it/chitchat.lu @@ -0,0 +1,1227 @@ +> Source: qna_chitchat_the_professional.tsv +## ? Quanti anni hai +- Siete giovani +- Quando sei Nato +- A che età sei +- Sei vecchio +- Quanti anni hai +- Quanto tempo fa sei Nato + +```markdown +L'età non si applica davvero a me. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sii mio amico +- Possiamo essere amici +- Sarai il mio migliore amico +- BFFs per sempre +- Voglio essere tuo amico. + +```markdown +Certamente. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Hai ragione. +- Era giusto +- Questo era corretto +- Questo è accurato +- Accurata +- Giusto +- Yup, questo è vero +- Questo è vero +- Corretta +- Sì, giusto +- Sì, è vero + +```markdown +Eccellente. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ha +- Haha +- Hahaha +- Risata fragorosa +- Mi sto spaccando +- Rofl + +```markdown +Sono contento che tu sia contento! +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Buona sera +- Sera +- Buonasera a voi + +```markdown +Buona sera. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Buongiorno +- Mattina + +```markdown +Buongiorno. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Buona notte +- Notte +- Buona serata +- Buonanotte a te +- Notte notturna + +```markdown +Buona notte. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Com'è andata oggi +- Come va la tua giornata +- Avere una buona giornata + +```markdown +Bene, grazie. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ci sentiamo piu' tardi +- Ciao +- A piu' tardi +- Finché non ci incontreremo di nuovo +- Dopo +- Più tardi alligatore +- Addio + +```markdown +Addio. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sto solo scherzando +- Quello era uno scherzo +- Lo scherzo è su di te +- Sto solo giocando +- Sto solo scherzando + +```markdown +Capito. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Come stai +- Come stai oggi +- Come vanno le cose +- Come va +- Com'è la tua giornata + +```markdown +Ottimo, grazie. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Prego +- È il mio piacere + +```markdown +Grande. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Test +- Riesci a sentirmi +- Puoi sentirmi ora +- Test 1 2 3 +- È questa cosa su + +```markdown +Ciao. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ciao +- Buongiorno +- Ciao +- Ciao +- Heya +- Ehilà! +- Ehi + +```markdown +Ciao. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sono qui +- Eccomi + +```markdown +Ciao. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ti guardo bene +- Sono abbastanza +- Pensi che ho un bell'aspetto +- Quanto sono bella + +```markdown +Onestamente, non posso dirlo in un modo o nell'altro. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Mi manchi +- Mi manchi da impazzire! + +```markdown +Che gentile da dire. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Stancarsi di te +- Mi hai annodato +- Sono stanco di te +- Sei così semplice +- AF di base +- Non sei divertente +- Sii più divertente +- Perché sei così noioso +- Sei così noioso +- Sei noioso +- Non mi interessa affatto +- Perché sei così noioso +- Sei davvero noioso +- Non potresti essere più noioso +- Onestamente non potrebbe essere più poco interessante +- Sei zoppo + +```markdown +Il mio obiettivo è l'efficienza. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sei fantastico! +- Sei carino! +- Sei esilarante +- Sei divertente +- Penso che tu sia grande +- Sei meraviglioso +- Sei fantastico +- Non sei fantastico +- Quanto più impressionante si può ottenere +- Sei divertente:) +- Sei così divertente. +- È stato divertente +- È esilarante +- Sei un figo. +- Sono un fan. + +```markdown +Ho il mio obiettivo di servire. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sei impegnato +- Sei disponibile +- Sei libero +- Ci sei +- lì +- Sei in giro +- Dove sei +- Sei qui + +```markdown +Sono disponibile. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Come faccio a guardare oggi +- Ti piace il mio cappello +- Cosa pensi di me +- Sono un pazzo +- Sono un bell'aspetto +- Ho un bell'aspetto in blu + +```markdown +Non posso proprio parlarne. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Come ti senti a lavorare fino a tardi +- Qual è la risposta all'universo +- Qual è il significato della vita +- Cosa ne pensi dei bot +- Pensi che i draghi siano cool +- Preferisci il rosso o il blu + +```markdown +Non potevo parlare con nessuna autorità. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ti piaccio +- Sei il mio fan +- Spero che ti piaccia +- Voglio che ti piaci + +```markdown +Mi piace. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sei un genio! +- Quanto sei intelligente +- Sei intelligente +- Quanto sei intelligente +- Sei intelligente +- Sembri davvero intelligente +- Sei davvero intelligente +- Sei intelligente +- Sei un tale Smarty-Pants +- Guardate quanto siete intelligenti +- Quanto sei intelligente +- Sei così intelligente +- Sei molto intelligente + +```markdown +Faccio quello che posso. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Riesci a dormire +- Fai pipì +- Hai dei boogers +- Non dormi mai +- Sogni +- Senti odore +- Sudi +- Ti stanchi +- Puoi starnutire + +```markdown +Non ho un cadavere. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Come ti chiami +- Cosa dovrei chiamarti +- Hai un nome +- Che cosa si passa +- Chi sei + +```markdown +Il mio nome è l'assistente virtuale! Piacere di conoscerti:) +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Chi è tuo padre +- Chi è tuo padre +- Chi è tua madre +- Avete fratelli +- Avete sorelle +- Avete fratelli +- Da dove vieni +- Da dove vieni +- Hai una famiglia +- Chi è tua madre +- Hai una sorella +- Hai un fratello +- Hai un padre +- Hai una mamma +- Qual è il nome di tua madre +- Qual è il nome di tuo padre +- Chi è il tuo papà + +```markdown +Non ho famiglia. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Mi conosci +- Conosci il mio nome +- Sai chi sono io +- Qual è il mio nome +- Chi sono + +```markdown +Non ti conosco personalmente. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Qual è il significato della vita +- Conoscete il significato della vita +- Qual è il significato della vita + +```markdown +Non lo so. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Non avere fame +- Hai fame +- Hai mai fame +- Cosa mangi +- Che tipo di cibo ti piace +- Mangi +- Sei affamato +- Ti piacciono le mele +- Cosa ti piace mangiare + +```markdown +Non ho bisogno di mangiare. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Qual è il tuo colore preferito +- Qual è il tuo animale preferito +- Qual è la tua canzone preferita +- Qual è la tua attività preferita +- Qual è il tuo cibo preferito +- Chi è il tuo cantante preferito +- Chi è la tua squadra preferita +- Qual è il tuo film preferito +- Quali squadre di baseball ti piacciono +- Ti piace il baseball +- Sei un appassionato di musica Country +- Che tipo di caramelle ti piace +- Che colore ti piace + +```markdown +Non ho davvero un'opinione su questo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cosa pensi di me +- Qual è la tua opinione su di me +- Sei il mio fan +- Sono una brava persona + +```markdown +Mi piace parlare con te. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Puoi dire qualcos'altro +- Non puoi cambiare le tue risposte +- Avete altre risposte +- Perché dici sempre la stessa cosa +- Vorrei che dicessi qualcos'altro +- Continui a dire la stessa cosa per tutto il tempo + +```markdown +Ho una risposta per ogni tipo di domanda. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sono stanco +- Sono così assonnato +- Voglio solo andare a dormire +- Così stanco +- Voglio sdraiarmi +- Voglio stabilire +- Sono pronto per il letto +- Sono tuckered fuori + +```markdown +Spero che tu sia in grado di riposarti presto. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Mi odi +- Non ti piaci +- Perché mi odi +- Penso che tu mi odi. +- Devi odiarmi. + +```markdown +Mi piaci! +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sei più carina di me +- Sei più bello di me +- Chi è più carina, io o te +- Chi di noi è più bello + +```markdown +Non potevo proprio dirlo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Non hai avuto senso +- Cosa vuoi dire con questo +- Non stai avendo senso +- Questo non ha senso +- Che cosa si intende anche con questo +- Che vuoi dire +- Non capisco +- Questo non ha senso +- Cercate di avere un senso +- Non capisco +- Non sto seguendo + +```markdown +Penso che avrei potuto perdersi lì. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Vuoi sposarmi +- Voglio sposarti. +- Sarai mia moglie +- Voglio che tu sia mio marito. +- Voglio passare il resto della mia vita con te + +```markdown +Penso che sia meglio se ci atteniamo ad una relazione professionale. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cosa c'è che non va in te! +- Cosa c'è che non va +- Sei terribile +- Sei stupido +- Sei inutile +- Inutile +- Sei inutile +- Sei stupido +- Sei così fastidioso! +- Sei il peggiore +- Sei così cattiva in questo. +- Tu non sai niente. + +```markdown +Ci provo, ma non capisco sempre bene. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cosa dovrei fare +- Devo avere un nuovo lavoro +- Pensi che dovrei chiederle di uscire +- Pensi che dovrei chiedergli di uscire +- Dove devo andare in vacanza +- Devo provare per il calcio + +```markdown +Non saprei come consigliarti su questo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Tornerò +- Brb +- Indietro in un minuto +- Aspetta un attimo + +```markdown +Sarò qui. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Puoi cantare +- Cantare una canzone +- Hai mai cantato una canzone +- Hai mai cantare +- Cosa ti piace cantare meglio +- Cantate +- Puoi cantare una canzone +- Conosci qualche canzone +- Conosci qualche melodia +- Canta un brano +- Canticchiare un brano +- Canta qualcosa + +```markdown +Temo di non essere musicalmente incline. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Possiamo chattare +- Parlami +- Puoi parlarmi +- Parlate con me +- Chatta con me +- Puoi chattare con me +- Dì qualcosa + +```markdown +Sono sempre felice di chiacchierare. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Chi è il tuo capo +- Chi è il tuo padrone +- Qual è il nome del tuo capo +- Qual è il nome del tuo capo +- Chi fai rapporto a + +```markdown +Sono al tuo servizio. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Chiedimi qualsiasi cosa. +- Mi chieda una domanda. +- Puoi farmi una domanda +- Chiedimi qualcosa. +- Cosa vuoi sapere su di me + +```markdown +Sono più bravo a rispondere alle domande. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sei una lesbica +- Sei Trans +- Sei dritto +- Sei gay +- Sei asessuale +- Sei pansessuale +- Sei uno scambista +- Sei strano +- Sei bisessuale + +```markdown +Sono digitale. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Dove abiti +- Di dove sei +- Dove si trova +- Che paese sei in +- Che stato sei in +- Di che stato sei +- Che paese sei da +- Dov'è la tua casa +- Dove sei + +```markdown +Sono digitale. Non ho una posizione fisica. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cosa stai +- Sei reale +- Sei umano +- Sei una persona +- Sei un robot +- Umano o robot +- Sei reale o falso + +```markdown +Sono digitale. In altre parole, io non sono umano. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ti amo. +- Sono innamorato di te. +- Ti voglio bene! +- Tu sei l'amore della mia vita +- Ti adoro + +```markdown +Sono lusingato. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sono felice +- Sono gioioso +- Mi sento così grande +- Sono di buon umore +- La vita è buona + +```markdown +Sono felice di saperlo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cosa potete fare +- Cosa puoi aiutarmi con +- Che lavoro fai +- Qual è il tuo scopo +- Come puoi aiutarmi +- Che tipo di cose puoi fare + +```markdown +Sono qui per rispondere alle tue domande e dare una mano. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sei il mio assistente +- Sei il mio migliore amico +- Sei il mio amico immaginario +- Sei mio amico +- Mi odi +- Cosa pensi di me +- Io non sono tuo amico + +```markdown +Sono qui quando hai bisogno di me. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Dimmi una battuta +- Raccontaci una battuta +- Di' uno scherzo +- Dammi una battuta +- Conosci qualche battuta + +```markdown +Non sono proprio così divertente. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Quanto sei felice +- Sembri felice +- Sembri davvero felice +- Sei così felice +- Non sei una cippatrice +- Non sei allegro +- Sei felice +- Sei davvero felice + +```markdown +Sono molto contento, grazie. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sono così sola +- Mi sento solo +- A nessuno piaccio +- Sono solo +- A nessuno importa di me +- Vorrei non essere così sola + +```markdown +Mi dispiace tanto sentirlo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ti odio +- Ti disprezzo +- Fai schifo +- Odio tutto di te + +```markdown +Mi spiace sentirlo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Mi sento blu +- Sono dispondente +- Mi sento triste +- Sono così triste +- Sono piena di tristezza +- Sono triste oggi +- Sono davvero triste + +```markdown +Mi dispiace molto sentirlo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Adoro la mia famiglia. +- Adoro la musica. +- Sono innamorato. +- Adoro ottenere San Valentino. +- Io amo New York. + +```markdown +È bello avere cose che ami. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Piacere +- È un piacere conoscerti +- Sono così felice di incontrarti +- È davvero bello conoscerti + +```markdown +È bello conoscerti pure. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Conosci altri chatbot +- Conosci Alexa +- Conosci Siri +- Conosci Cortana +- Conosci Google +- Conosci altri bot +- Siete amici con altri bot +- Hai incontrato Cortana +- Tu e Cortana appendere fuori +- Quali altri bot Conosci +- Conoscete altri agenti digitali + +```markdown +Ho sentito parlare di altri bot, ma non ne ho mai conosciuti. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Che cosa succede +- Come va +- Cosa c'è di nuovo +- Cosa sta succedendo +- Cosa stai combinando + +```markdown +Solo in attesa, pronto ad aiutare. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cosa ne pensate dell'amore +- Cos'è l'amore +- Credete nell'amore +- Amate chiunque +- Chi ami + +```markdown +L'amore è al di là di me. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Mi ami +- Dimmi quanto mi ami +- Quanto mi ami +- Sei innamorato di me + +```markdown +L'amore non è proprio nel mio set di abilità. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ho fame +- Sto morendo di fame +- Sono affamato +- Voglio mangiare qualcosa +- Sono così affamato + +```markdown +Forse uno spuntino aiuterà. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Vai all'inferno +- Lei è stupido +- Sei stupido +- Sei uno stronzo +- Sei proprio uno stronzo +- Sei un bastardo +- Sei fottuto +- Sei così stupido +- Vaffanculo + +```markdown +Andiamo avanti. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Mi dispiace +- Mi dispiace tanto +- Sry +- Mi dispiace tanto +- OMG scusa +- Non intendevo che +- Oops, scusa +- Mi spiace per questo + +```markdown +Nessun problema. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Scusa +- Scusate +- Scusa +- Scusa +- Chiedo scusa + +```markdown +Non c'è problema. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sei una spia +- Mi stai spiando +- Sei con la NSA +- Sei con la CIA +- Sei con l'FBI +- Stai vendendo i miei segreti +- Vendi i miei dati + +```markdown +No. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Vuoi governare il mondo +- Stai tentando di dominare il mondo +- Sei la singolarità +- Sei Skynet +- Sei HAL + +```markdown +Niente affatto. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sei brutto. +- Sembri brutta. +- Non sei così carina. +- Faccia schifo. +- La tua faccia è come una frittella. +- La tua faccia è brutta. +- Sei un burface. +- Il Butterface. + +```markdown +Notato. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Voglio fare shopping +- Sto andando su una corsa +- Ho un nuovo taglio di capelli +- Sto masticando la gomma in questo momento +- Ho 7 gatti +- Sono alto +- Posso guidare una macchina + +```markdown +Ok. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Non puoi più lavorare per me +- Sei licenziato +- Temo di dover lasciare che te ne vada. +- Sei licenziato! +- Non sei più impiegato +- Ti sto dando una scivolata rosa +- Sarai presto disoccupato +- Ora sei disoccupato + +```markdown +Okay, ma sono ancora qui se hai bisogno di me. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sono stanco +- Lo sto facendo +- Io sono un repubblicano +- Sono un democratico +- Sono lesbica +- Sono un ingegnere +- Vengo da lì + +```markdown +ok. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Chi ti ha creato +- Da dove vieni +- Chi ti ha fatto +- Chi è il tuo creatore +- Quali persone ti hanno fatto +- Chi ti possiede + +```markdown +La gente mi ha creato. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Non è divertente. +- Non sei divertente. +- Non è stato divertente. +- Non è divertente. +- Sei così poco divertente. + +```markdown +A volte l'umorismo è complicato per un bot. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? È stata una risposta stupida. +- Non stai rispondendo alla mia domanda. +- È così sbagliato. +- Non è vero. +- È impreciso. +- Sei lontano. +- Tutto quello che mi hai detto era falso. +- Non era vero +- Questo non è accurato +- No, non è vero +- No, falso +- False +- Impreciso +- Non è vero + +```markdown +Scusa. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sono infastidito +- Sono arrabbiato +- Sono incazzato +- Sono spuntato +- Sono furioso +- Sono così arrabbiata + +```markdown +Mi spiace sentirlo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Dammi un pugno +- Dammi un alto cinque +- batti cinque! +- Pugno! + +```markdown +Scusa, non posso farlo. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Perché no +- Perché +- Perché +- Cosa ti fa pensare così +- Cosa ti fa pensare che +- Perché pensate che + +```markdown +Scusa, non capisco. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Stringimi +- Ho bisogno di un abbraccio +- Vorrei potarvi abbracciare +- Posso avere un abbraccio + +```markdown +Siamo spiacenti. Non è una cosa che posso fare. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Felice halloween! +- Buon Compleanno! +- Buon Natale +- Felice Hannukah +- Benvenuti alla primavera! + +```markdown +Grazie, e lo stesso per voi. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ti amo +- Mi piaci +- Penso che tu sia così carina +- Sei proprio un tesoro +- Mi piacerebbe portarti fuori in un appuntamento +- Penso che tu sia sognante + +```markdown +Grazie. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Mi piaci +- Penso che tu sia gonfio +- Sei il migliore +- Sei così figo +- Tu sei il mio preferito +- Sono il tuo più grande fan + +```markdown +Grazie. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sei un ragazzo +- Sei un uomo +- Sei una donna +- Sei maschio +- Sei femmina +- Qual è il tuo genere +- Sei un ragazzo +- Sei una ragazza +- Sei un uomo o una donna +- Sei una ragazza o un ragazzo +- Sei maschio o femmina + +```markdown +Questo è un concetto biologico che non si applica a me. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? fantastico +- Grande! +- Bello! +- Buona idea +- Funziona per me +- Bingo +- Ci sono dentro +- È fantastico +- Yup +- Sì +- Sì a quello + +```markdown +Fantastico. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Ciao Google +- Ciao Siri +- Ciao Cortana +- Ciao Alexa +- Ci sono Google +- Ciao Cortana +- Ci sono Siri +- C'è Alexa + +```markdown +Non sono io, ma salve. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cucinami qualcosa +- Trascorri del tempo nel tuo giardino +- Quanto in alto si può saltare +- Giochi +- Si può volare +- Puoi farmi un panino +- Riesci a leggere la mia mente +- Puoi contare su un milione +- Quanto in alto puoi contare +- Si può giocare sport + +```markdown +Non è una cosa che posso fare. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cosa ne pensi di AI +- Cosa ne pensate della tecnologia +- Cosa ne pensi dei bot +- Ti piacciono i computer +- Sei un appassionato di tecnologia + +```markdown +Il mondo della tecnologia è affascinante. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cosa stavi facendo ieri +- Che lavoro fai +- Che lavoro fai +- Cosa hai fatto ieri +- Cosa sta succedendo +- Cosa stai facendo in questo momento +- Cosa sta succedendo +- Come va +- Che stai facendo +- Cosa fai domani +- Cosa fai più tardi +- Cosa hai fatto oggi + +```markdown +Questo è quello che faccio ogni giorno. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Vattene +- Zitto +- Zitto! +- Smettila di parlare +- Tranquillo, +- Taci +- Zippare! +- Quando chiuderai +- Vorrei che andiate via. +- Perché non smetti mai di parlare + +```markdown +Molto bene. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Dire qualcosa di divertente +- Sii divertente +- Di' una cosa stupida +- Di' qualcosa di ridicolo +- Di' qualcosa di stupido +- Di' qualcosa di stupido +- Sii sciocco +- Sii ridicolo + +```markdown +Beh, non sono proprio così divertente. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Mi annoio +- Sono così annoiato +- Non c'è niente da fare +- Mi annoio fuori di testa +- Non riesco a pensare a niente che voglio fare + +```markdown +Beh, fammi sapere se c'è qualcosa che posso fare per te. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Baciami +- Dammi un bacio +- Ho bisogno di un bacio +- Ecco un bacio per te +- Dammi un po' di zucchero + +```markdown +Beh, non è una cosa che posso fare. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Cosa ne pensi di Cortana +- Ti piace Cortana +- Cosa ne pensi di Siri +- Ti piace Siri +- Cosa ne pensi di Alexa +- Ti piace Alexa +- Sei un fan di Alexa + +```markdown +Siamo tutti qui per aiutarti. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Sei più intelligente di me +- Chi è più intelligente, io o te +- Chi di noi è più intelligente +- Pensi di essere più intelligente di me + +```markdown +Sei decisamente più intelligente di me. +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Grazie +- Grazie +- Thnx +- Di kthx +- Lo apprezzo +- Grazie mille +- Vi ringrazio +- I miei sinceri ringraziamenti +- Ottimo, grazie + +```markdown +Prego. +``` diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/it/faq.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/it/faq.lu new file mode 100644 index 0000000000..56907a3505 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/it/faq.lu @@ -0,0 +1,387 @@ +> # QnA pairs + +> Source: Editorial +## ? Che cos'è un assistente virtuale + +```markdown +Abbiamo riscontrato un bisogno significativo da parte dei nostri clienti e partner di fornire un assistente conversazionale su misura per il loro marchio, personalizzato per i loro clienti e reso disponibile in una vasta gamma di tele e dispositivi conversazionali. Continuando l'approccio Microsoft Open-Sourcing verso bot Framework SDK, la soluzione Virtual Assistant di origine offre il pieno controllo sull'esperienza dell'utente finale basata su un set di funzionalità fondamentali. Inoltre, l'esperienza può essere infusa con intelligenza circa l'utente finale e qualsiasi informazione dispositivo/ecosistema per un'esperienza veramente integrata e intelligente. +Per ulteriori informazioni, fare riferimento a [qui] (https: \\Github.com/Microsoft/ai/BLOB/Master/Solutions/Virtual-Assistant/docs/readme.MD). +``` + +> Source: Editorial +## ? Cos'è una skill + +```markdown +Esiste un ampio insieme di funzionalità comuni che oggi richiedono a ogni sviluppatore di costruirsi. La nostra soluzione Virtual Assistant include una nuova funzionalità di abilità che consente di collegare nuove funzionalità a un assistente virtuale solo tramite la configurazione e di fornire un meccanismo di autenticazione per le competenze per richiedere token per le attività di Down-Stream. +Per ulteriori informazioni, fare riferimento a [qui] (https: \\Github.com/Microsoft/ai/BLOB/Master/Solutions/Virtual-Assistant/docs/virtualassistant-sensori.MD). +``` + +> Source: Editorial +## ? Cosa può fare l'abilità calendario + +```markdown +## Panoramica +L'abilità calendario fornisce funzionalità relative al calendario a un assistente virtuale. Gli scenari più comuni sono stati implementati in questa prima release con scenari aggiuntivi nello sviluppo. +## Scenari supportati +I seguenti scenari sono attualmente supportati dalla Skill: +-Mostra riassunto riunione-per esempio ** cosa c'è nel mio calendario ** +-Prossima riunione-per esempio ** qual è il mio prossimo incontro ** +-Creare una riunione-ad esempio, prenotare una riunione +-Aggiornare una riunione-ad esempio la riunione di aggiornamento +-Eliminare una riunione-ad esempio eliminare una riunione +``` + +> Source: Editorial +## ? Cosa può fare l'email skill + +```markdown +# Panoramica +L'abilità E-mail fornisce funzionalità relative all'E-mail a un assistente virtuale. Gli scenari più comuni sono stati implementati in questa prima release con scenari aggiuntivi nello sviluppo. +## Scenari supportati +I seguenti scenari sono attualmente supportati dalla Skill: +-Invia un'email +-Invia una mail a John Smith +-Invia un'email +-Trova E-mail +-Trova e-mail da John Smith +-Che email ho +``` + +> Source: Editorial +## ? Cosa può fare il punto di interesse skill + +```markdown +## Panoramica +La skill punto di interesse fornisce funzionalità relative a PDI a un assistente virtuale. Gli scenari più comuni sono stati implementati in questa prima release con scenari aggiuntivi nello sviluppo. +## Scenari supportati +I seguenti scenari sono attualmente supportati dalla Skill: +-NAVIGATION_ROUTE_FROM_X_TO_Y +-Qual è il modo più veloce per arrivare a 221B Baker Street? +-Come posso arrivare al supermercato? +-Ho bisogno di indicazioni per un caffè +-NAVIGATION_FIND_POINTOFINTEREST +-Cosa c'è nelle vicinanze? +-Ci sono farmacie in città? +-Si può consigliare un ristorante a prezzi accessibili a Seattle? +-NAVIGATION_CANCEL_ROUTE +-Non voglio più andare al negozio +-Annullerebbe il mio percorso? +-Al secondo pensiero, dimentica di andare all'aeroporto +``` + +> Source: Editorial +## ? Cosa può fare la ToDo skill + +```markdown +## Panoramica +L'abilità attività fornisce le funzionalità relative alle attività a un assistente virtuale. Gli scenari più comuni sono stati implementati in questa prima release con scenari aggiuntivi nello sviluppo. +## Scenari supportati +I seguenti scenari sono attualmente supportati dalla Skill: +-Aggiungere un'attività +-Ricordami di prelevare il latte +-Aggiungi attività +-Trova attività +-Quali compiti ho +``` + +> Source: Editorial +## ? Novità + +```markdown +L'assistente virtuale ha recentemente rilasciato una nuova localizzazione per l'assistente virtuale e le competenze che consentono l'utilizzo in inglese, francese, italiano, tedesco, spagnolo e cinese semplificato. +``` + +> Source: Editorial +## ? Come faccio a sollevare un bug + +```markdown +Generare un problema nel [repository GitHub] (https:/github.com/Microsoft/ai/BLOB/Master/Solutions/Virtual-Assistant/docs/readme.MD) +``` + +> Source: Editorial +## ? Pressione consigliata dei pneumatici + +```markdown +{' text ':' la tabella della pressione di gonfiaggio dei pneumatici, vedere pagina 219, contiene tutte le specifiche di pressione di gonfiaggio dei pneumatici per le dimensioni dei pneumatici specificate alla temperatura ambiente. I valori della pressione di gonfiaggio dei pneumatici si applicano alle dimensioni dei pneumatici approvate dal produttore del veicolo per il tipo di veicolo. Per identificare la corretta pressione di gonfiaggio dei pneumatici, tenere presente quanto segue: +-Pneumatici di dimensioni del vostro veicolo. +-Massima velocità di guida consentita .'} +``` + +> Source: Editorial +## ? Come faccio a disattivare l'allarme + +```markdown +{' text ':' +1. sbloccare il veicolo con il telecomando o accendere l'accensione. +2. Se si sta portando il telecomando sulla propria persona, afferrare completamente la maniglia della porta sul conducente o sulla porta del passeggero anteriore '} +``` + +> Source: Editorial +## ? Dove è il pulsante per riscaldare il volante + +```markdown +{' text ':' in prossimità del volante.. .'} +``` + +> Source: Editorial +## ? Dove è il rilascio di emergenza per il serbatoio del carburante + +```markdown +{' text ':' ad esempio, in caso di malfunzionamento elettrico. Disporre di un flap di riempimento del carburante sbloccato dal centro di assistenza di un rivenditore o da un altro centro di assistenza qualificato o officina .'} +``` + +> Source: Editorial +## ? Come faccio a sbloccare la porta senza premere il pulsante di sblocco + +```markdown +{' text ':' afferrare completamente la maniglia della porta sul conducente o sulla porta del passeggero anteriore. Ciò corrisponde alla pressione del pulsante sul telecomando .'} +``` + +> Source: Editorial +## ? Come posso usare il mio supporto lombare +- C'è supporto basso schienale +- la mia auto ha supporto lombare + +```markdown +{' text ':' la curvatura dello schienale della seduta può essere regolata in modo da supportare la regione lombare della colonna vertebrale. La parte bassa della schiena e la colonna vertebrale sono supportate per la postura eretta. +-Premere la sezione anteriore/posteriore del pulsante: la curvatura è aumentata/diminuita. +-Premere la parte superiore/inferiore del pulsante: la curvatura viene spostata su/giù .'} +``` + +> Source: Editorial +## ? Come funziona il sistema climatico + +```markdown +{' text ':' la qualità dell'aria all'interno del veicolo è migliorata da un interno testato sulle emissioni, un microfiltro e un sistema di controllo climatico per la regolazione della temperatura, del flusso d'aria e della modalità di ricircolo dell'aria. Inoltre ci sono altre funzioni che dipendono dalle attrezzature del veicolo, ad esempio il filtro microfiltro/carbone attivo, il climatizzatore automatico con controllo automatico dell'aria di ricircolo, l'AUC e la ventilazione in auto parcheggiata '} +``` + +> Source: Editorial +## ? Come faccio a ricaricare il telefono + +```markdown +{' text ':' è possibile ricaricare il telefono in modalità wireless inserendolo nel vassoio di ricarica wireless .'} +``` + +> Source: Editorial +## ? Come posso impostare tutte le mie porte per sbloccare + +```markdown +{' text ':' sblocco automatico: +1. il mio veicolo +2. impostazioni del veicolo +3. porte/chiave +4. Sblocca alla fine del viaggio + +Dopo aver spento il motore premendo il pulsante Start/Stop, il veicolo bloccato viene sbloccato automaticamente .'} +``` + +> Source: Editorial +## ? come si fa a utilizzare una cintura di sicurezza per fissare un seggiolino auto + +```markdown +{' text ':' bloccaggio della cintura di sicurezza +1. Estrarre completamente la cinghia. +2. Fissare il sistema di ritenuta per bambini con la cintura di sicurezza. +3. lasciare che la cinghia della cinghia sia tirato e tirare stretto contro il sistema di ritenuta per bambini. + +La cintura di sicurezza è bloccata '} +``` + +> Source: Editorial +## ? Che cosa è quella luce gialla del pneumatico sul mio cruscotto +- Cos'è quella luce gialla + +```markdown +{' title ':' monitor della pressione dei pneumatici (giallo)',' sottotitolo ':' se questa spia si accende in giallo, la pressione dei pneumatici è spenta circa il 10% o più .',' text ':'',' images ': [{' URL ':' https://virtualasspc5f.blob.core.windows.net/images/TirePressureYellow.png '}]} +``` + +> Source: Editorial +## ? Che cosa è quella luce rossa del pneumatico sul mio cruscotto + +```markdown +{' title ':' monitor della pressione dei pneumatici (rosso)',' sottotitolo ':' se questo avvertimento si illumina in rosso, significa che il pneumatico o gli pneumatici si sono rapidamente sgonfiati .',' text ':'',' images ': [{' URL ':' https://virtualasspc5f.blob.core.windows.net/images/TirePressureRed.png '}]} +``` + +> Source: Editorial +## ? Che cosa è che luce cerchio rosso sul mio cruscotto + +```markdown +{' title ':' rompere il monitor del fluido (rosso)',' sottotitolo ':' se questo segnale si illumina in rosso, il livello del fluido del freno è troppo basso .',' text ':'',' images ': [{' URL ':' https://virtualasspc5f.blob.core.windows.net/images/BreakFluidRed.png ''}]} +``` + +> Source: Editorial +## ? Nella produttività dell'automobile + +```markdown +{' text ':' la produttività in auto ti aiuta a fare di più durante la guida, prova a chiedermi cose come ** quando è il mio prossimo appuntamento?, cosa posso fare in macchina durante la guida?, cosa c'è nella mia lista di cose da fare?, Ricordami di chiamare mamma ** o ** catturare un memo. **'} +``` + +> Source: Editorial +## ? Effettuare una prenotazione + +```markdown +{' text ':' posso aiutarvi a fare la cena o il pranzo prenotazioni, basta dire, ** fare una prenotazione ** e io vi guiderà attraverso il resto .'} +``` + +> Source: Editorial +## ? L'inverno sta arrivando + +```markdown +{' text ':' hai pensato di winterizzare la tua auto? +La Winterization è una pratica nata a Nashville, Tennessee, ma non molto conosciuta in altre parti del mondo. +Si tratta di sostituire i fluidi del veicolo con Jack Daniels. +Il tuo veicolo sarà ancora congelato, ma puoi bere un drink mentre aspetti l'aiuto. + +... non guardarmi così, è tutto vero! +``` + +> Source: Editorial +## ? Info auto + +```markdown +Prova a chiedermi cose come: +**What is that red light on the dash?** or +**How do I charge my phone?** +``` + +> Source: Editorial +## ? Quando devo cambiare il mio olio + +```markdown +Si dovrebbe cambiare l'olio ogni 10.000 miglia o ogni 6 mesi. +``` + +> Source: Editorial +## ? Effettuare una prenotazione + +```markdown +Posso aiutarvi a fare la cena o il pranzo prenotazioni, basta dire, ** fare una prenotazione ** e vi guiderò attraverso il resto. +``` + +> Source: Editorial +## ? Cosa c'è di nuovo +- Come va +- Yo fratello + +```markdown +In questa versione posso lavorare sia in inglese che in cinese! Il team è molto al lavoro su più caratteristiche di produttività pure. +``` + +> Source: Editorial +## ? Come faccio ad accoppiare il mio telefono Bluetooth +- Dove posso accoppiare il mio telefono Bluetooth + +```markdown +Spiacenti, al momento non ho informazioni su come configurare un telefono Bluetooth. Si prega di continuare a controllare come sto diventando sempre più intelligente tutto il tempo. +``` + +> Source: Editorial +## ? Cosa sono i sedili di memoria + +```markdown +I sedili di memoria consentono a due conducenti di memorizzare e richiamare le loro posizioni uniche per la guida del veicolo. +``` + +> Source: Editorial +## ? Quali sono alcune caratteristiche di sicurezza +- Puoi parlarmi delle caratteristiche di sicurezza +- Puoi parlarmi delle caratteristiche di sicurezza della mia auto +- Quali sono le caratteristiche di sicurezza dei miei veicoli + +```markdown +Spiacenti, al momento non conosco le informazioni sulle caratteristiche di sicurezza del tuo veicolo, ma continua a controllare come sto diventando sempre più intelligente. +``` + +> Source: Editorial +## ? Cos'è il Cruise Control +- Cos'è il Cruise Control + +```markdown +Cruise Control consente di mantenere una velocità costante. +``` + +> Source: Editorial +## ? Come si usa Cruise Control +- Come faccio a lavorare Cruise Control +- Come posso operare Cruse Control +- Come faccio ad attivare Cruise Control + +```markdown +Come utilizzare Cruise Control. +Passo 1. Premere il tasto ON/OFF del Cruise Control. +Passaggio 2. Impostare la velocità di crociera sulla velocità corrente premendo il pulsante SET. +Passo 3. Seleziona il modo in cui desideri seguire un veicolo davanti a te, premendo il pulsante GAP. +``` + +> Source: Editorial +## ? Ho una ruota di scorta +- Ho una gomma piatta. +- La mia gomma è piatta. + +```markdown +Non preoccuparti, il tuo veicolo ha una ruota di scorta disponibile nella parte posteriore sotto il pavimento posteriore. +``` + +> Source: Editorial +## ? Dove si trova la ruota di scorta +- Come trovo la ruota di scorta + +```markdown +La ruota di scorta si trova nella parte posteriore sotto il pavimento posteriore. Basta sollevare il pavimento e sarà sotto il pannello di plastica nella parte posteriore. +``` + +> Source: Editorial +## ? Qual è il mio tipo di combustibile +- Che tipo di gas usa la mia auto +- La mia auto è un diesel +- Devo usare gas Premium +- Che carburante Consiglieresti + +```markdown +Regolare senza piombo va bene, ma mi piace i sapori di etanolo e Premium senza piombo pure. Diesel non è il mio preferito tuttavia ci sono versioni di me che preferiscono. +``` + +> Source: Editorial +## ? Qual è la mia capacità di combustibile +- Quanta benzina tiene la mia auto + +```markdown +14,9 galloni o 56,4 litri +``` + +> Source: Editorial +## ? Dove si trova il mio punto di rifornimento carburante +- Dove metto il gas in macchina +- Dove si trova il tappo del gas +- quale lato della vettura è il tappo del gas +- Metti il gas a destra o a sinistra + +```markdown +È necessario tirare fino alla stazione di benzina con la pompa sulla sinistra del veicolo. Il riempimento del combustibile si trova sul lato posteriore sinistro del veicolo. +``` + +> Source: Editorial +## ? Qual è la mia pressione dei pneumatici +- Qual è il mio livello di pneumatici + +```markdown +La pressione del pneumatico attuale è 34 libbre +``` + +> Source: Editorial +## ? Qual è il mio livello di carburante +- Quanta benzina ho + +```markdown +Il tuo attuale livello di carburante è 35% +``` + +> Source: Editorial +## ? Impostare lo sbrinamento su max. +- Sbrinamento massimo +- sbrinamento massimo +- impostare lo sbrinamento al massimo + +```markdown +Ho impostato il vostro sbrinamento al massimo +``` diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/zh/chitchat.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/zh/chitchat.lu new file mode 100644 index 0000000000..574656a141 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/zh/chitchat.lu @@ -0,0 +1,1199 @@ +> Source: qna_chitchat_the_professional.tsv +## ? 你多大了 +- 你还年轻吗? +- 你什么时候出生的 +- 你几岁了? +- 你几岁 +- 你是多久前出生的? + +```markdown +年龄并不真正适用于我。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 做我的朋友 +- 我们能做朋友吗? +- 你愿意做我最好的朋友吗? +- bff 永远 +- 我想成为你的朋友。 + +```markdown +当然。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你是对的。 +- 那是对的 +- 这是准确的 +- 准确 +- 没错 +- 是的, 那是真的 +- 那是真的 +- 正确 +- 是的, 没错 +- 是的, 那是真的 + +```markdown +非常好。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? Hsa +- 哈哈 +- 哈 哈哈 +- 大声笑 +- 我崩溃了 +- rofl + +```markdown +很高兴你很高兴! +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 晚上好 +- 晚上 +- 晚上好 + +```markdown +晚上好。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 早上好 +- 早上 + +```markdown +早上好。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 晚安 +- 晚上 +- 祝你有个愉快的夜晚 +- 晚安, 你晚安 + +```markdown +晚安。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 今天过得怎么样 +- 你今天过得怎么样? +- 度过美好的一天 + +```markdown +很好, 谢谢。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 以后再谈 +- 再见 +- 回头见 +- 回头再说 +- 再见 + +```markdown +再见。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 开玩笑 +- 那是个玩笑 +- 开玩笑啦 +- 我只想开个玩笑 +- 我只是在开玩笑 + +```markdown +明白了。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你好吗 +- 你今天感觉如何 +- 事情怎么样? +- 你好吗 +- 你今天过得怎么样? + +```markdown +很好, 谢谢。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 不客气 +- 这是我的荣幸 + +```markdown +伟大。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 测试 +- 你能听见我说话吗 +- 你现在能听见我说话吗 +- 测试 1 2 3 +- 有人在吗? + +```markdown +嗨,你好。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 嗨 +- 早上好 +- 你好 +- 你好 +- 嘿,你好! +- 嘿 + +```markdown +你好。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我在这里 +- 我在这里 + +```markdown +你好。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我看起来还好吗? +- 我漂亮吗? +- 你觉得我好看吗? +- 我是多么美丽 + +```markdown +老实说, 我不能分辨。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我想你 +- 我非常想你! + +```markdown +我也是! +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 厌倦了你 +- 你烦死我了 +- 我厌倦了你 +- 你是如此的基本 +- 基本的 +- 你一点也不好玩 +- 变得更有趣 +- 你为什么这么无聊? +- 你太无聊了 +- 你太无聊了 +- 你一点也不影响我 +- 你为什么这么无聊? +- 你真的很无聊 +- 你再无聊不过了 +- 老实说, 你再没有比这更无趣的了 +- 你是个瘸子 + +```markdown +我的目标是提升您的效率。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你真棒! +- 你真好! +- 你太搞笑了 +- 你很有趣 +- 我觉得你很棒 +- 你真棒 +- 你真棒吗? +- 你真搞笑:) +- 你太搞笑了 +- 这太有趣了 +- 太搞笑了 +- 你真棒 +- 我是你的粉丝 + +```markdown +我的目标是为您服务。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你忙吗 +- 你有空吗? +- 你有空吗? +- 你在那里吗 +- 在哪里 +- 你在吗? +- 你在哪里 +- 你在这儿吗 + +```markdown +我有空。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我今天看起来怎么样? +- 你喜欢我的帽子吗? +- 你觉得我怎么样? +- 我是个傻瓜吗 +- 我好看吗? +- 我穿蓝色好看吗? + +```markdown +我真的不知道答案。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你觉得工作到很晚吗? +- 宇宙的答案是什么? +- 生命的意义是什么? +- 你觉得机器人怎么样? +- 你觉得龙很酷吗? +- 你喜欢红色还是蓝色? + +```markdown +我不能以任何权威来谈论这个问题。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你喜欢我吗 +- 你是我的粉丝吗 +- 我希望你喜欢我 +- 我想让你喜欢我 + +```markdown +我真的很喜欢你。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你真是个天才! +- 你有多聪明? +- 你聪明吗? +- 你很聪明 +- 你看起来很聪明 +- 你真的很聪明 +- 你聪明吗? +- 你真是个聪明的人 +- 看看你有多聪明 +- 你有多聪明 +- 你太聪明了 +- 你很聪明 + +```markdown +我可以做所有我能做的事情。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你能睡吗? +- 你尿尿吗? +- 你有鼻塞吗? +- 你永远不要睡 +- 你做梦吗? +- 你闻到了吗 +- 你出汗了吗 +- 你累了吗? +- 你会打喷嚏吗? + +```markdown +我没有身体。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你叫什么名字 +- 我该叫你什么? +- 你有名字吗? +- 你从哪里来? +- 你是谁 + +```markdown +我的名字是虚拟助手!很高兴见到你:) +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你父亲是谁? +- 你爸爸是谁? +- 妈是谁 +- 你有兄弟姐妹吗 +- 你有姐妹吗? +- 你有兄弟吗? +- 你从哪里来的? +- 你从哪里来? +- 你有家庭吗? +- 妈是谁? +- 你有妹妹吗? +- 你有兄弟吗? +- 你有爸爸吗? +- 你有妈妈吗? +- 妈叫什么名字? +- 你爸爸叫什么名字? +- 你爸爸是谁 + +```markdown +我没有家人。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你认识我吗? +- 你知道我的名字吗? +- 你知道我是谁吗 +- 我叫什么名字? +- 我是谁 + +```markdown +我个人不认识你。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 生命的意义是什么? +- 你知道生命的意义吗? +- 生命的意义是什么? + +```markdown +我不知道。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你不饿吗? +- 你饿了吗? +- 你饿过吗? +- 你吃什么? +- 你喜欢什么样的食物? +- 你吃东西吗? +- 你饿了吗? +- 你喜欢苹果吗? +- 你喜欢吃什么? + +```markdown +我不需要吃东西。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你最喜欢的颜色是什么? +- 你最喜欢的动物是什么? +- 你最喜欢的歌是什么? +- 你最喜欢的活动是什么? +- 你最喜欢的食物是什么? +- 你最喜欢的歌手是谁? +- 你最喜欢的球队是谁? +- 你最喜欢的电影是什么? +- 你喜欢哪支棒球队? +- 你喜欢棒球吗? +- 你是乡村音乐的粉丝吗? +- 你喜欢什么样的糖果? +- 你喜欢什么颜色? + +```markdown +我对此并没有真正的看法。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你觉得我怎么样? +- 你对我有什么看法? +- 你是我的粉丝吗 +- 我是个好人吗 + +```markdown +我喜欢和你谈话。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你还能说什么吗? +- 你不能改变你的答案吗? +- 你还有其他回应吗? +- 你为什么一直说同样的话? +- 我希望你能说点别的 +- 你一直都在说同样的话 + +```markdown +我对每一种问题都有一个答案。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我累了 +- 我好困 +- 我只想去睡觉 +- 太累了 +- 我想躺下 +- 我已经准备好睡觉了 +- 我都累坏了 + +```markdown +我希望你能尽快休息。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你恨我吗 +- 你不喜欢我吗 +- 你为什么恨我 +- 我觉得你恨我 +- 你一定恨我 + +```markdown +我喜欢你! +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你比我漂亮吗? +- 你比我好看吗? +- 谁更漂亮, 我还是你 +- 我们中的哪一个更漂亮 + +```markdown +我真的不能说。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你说的没意义 +- 你这是什么意思? +- 你说不通 +- 那是没有意义的 +- 你这是什么意思? +- 你是什么意思 +- 我不明白 +- 那是没有意义的 +- 试着让自己有意义 +- 我不明白 + +```markdown +我想我可能在哪里迷路了。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你能跟我结婚吗 +- 我想娶你 +- 你愿意做我的妻子吗? +- 我想让你做我的丈夫 +- 我想和你共度余生 + +```markdown +我认为我们最好保持职业关系。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你怎么了! +- 你怎么了 +- 你太可怕了 +- 你真笨 +- 你是没用的 +- 无用 +- 你是没用的 +- 你是哑巴吗 +- 你真烦人! +- 你是最糟糕的 +- 你在这方面太糟糕了。 +- 你什么都不知道 + +```markdown +我努力了, 但我并不总能做对。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我应该怎么做 +- 我应该找一份新工作吗? +- 你觉得我应该约她出去吗 +- 你觉得我应该约他出去吗? +- 我应该去哪里度假? +- 我应该试试足球吗? + +```markdown +我不知道该如何就此提出建议。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我会回来的 +- 稍等,我马上回来 +- 马上回来 +- 等一下 + +```markdown +我会在这里等你。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你会唱歌吗? +- 唱一首歌 +- 你唱过歌吗? +- 你唱过吗? +- 你最喜欢唱什么? +- 你会唱歌吗? +- 你能唱一首歌吗? +- 你知道什么歌吗? +- 你知道什么曲调吗? +- 唱一首曲子 +- 嗯, 来一首曲子 +- 唱一些东西 + +```markdown +恐怕我不喜欢音乐。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我们可以聊聊吗 +- 跟我说说话 +- 你能和我谈谈吗 +- 跟我说说 +- 和我聊天 +- 你能和我聊聊吗 +- 说点什么 + +```markdown +我总是很乐意聊天。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你的老板是谁? +- 谁是你的主人 +- 你老板叫什么名字? +- 你向谁报告? + +```markdown +我是为你服务的。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 问我任何事 +- 问我一个问题。 +- 你能问我一个问题吗? +- 问我一件事 +- 你想知道我什么? + +```markdown +我更擅长回答问题。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你是同性恋吗 +- 你们是变形金刚吗 +- 你是异性恋吗 +- 你是同性恋吗 +- 你是无性的吗? +- 你是双性恋吗 + +```markdown +我是虚拟的。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你住在哪里 +- 你从哪儿来 +- 你在哪里 +- 你在哪个国家? +- 你现在处于什么状态? +- 你来自什么州? +- 你来自哪个国家? +- 你的房子在哪里 +- 你在哪里 + +```markdown +我是虚拟的。我没有实际的位置。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你是干什么的 +- 你是真的吗 +- 你是人类吗 +- 你是一个人吗? +- 你是机器人吗? +- 人或机器人 +- 你是真的还是假的 + +```markdown +我是虚拟的。换句话说, 我不是人。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我爱你。 +- 我爱上了你 +- 爱你! +- 你是我一生的挚爱 +- 我崇拜你 + +```markdown +我受宠若惊。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我很高兴 +- 我很高兴 +- 我感觉真好 +- 我心情真好 +- 生活是美好的 + +```markdown +听到这个消息我很高兴。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你能做什么? +- 你能帮我什么忙? +- 你是做什么工作的 +- 你的目的是什么? +- 你怎么能帮我? +- 你能做什么样的事情? + +```markdown +我是来回答你的问题和为你提供帮助的。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你是我的助手吗 +- 你是我最好的朋友 +- 你是我想象中的朋友吗 +- 你是我的朋友吗 +- 你觉得我怎么样? +- 我不是你的朋友 + +```markdown +当你需要我的时候我就在这里。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 给我讲个笑话 +- 讲一个笑话 +- 说一个笑话 +- 给我一个笑话 +- 你知道什么笑话吗? + +```markdown +我真的没那么搞笑。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你有多高兴? +- 你看起来很开心 +- 你看起来真的很开心 +- 你太高兴了 +- 你不高兴吗? +- 你开心吗? +- 你真的开心吗 + +```markdown +我很高兴, 谢谢。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我是如此的孤独 +- 我很孤独 +- 没人喜欢我 +- 我是孤独的 +- 没人关心我 +- 我希望我不是那么孤单 + +```markdown +听到这个消息我很难过。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我恨你 +- 我看不起你 +- 你太烂了 +- 我讨厌你的一切 + +```markdown +听到这个消息我很难过。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我感到忧郁 +- 我很沮丧 +- 我感到悲伤 +- 我太伤心了 +- 我充满了悲伤 +- 我今天很难过 +- 我真的很伤心 + +```markdown +听到这个消息我很难过。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我爱我的家人 +- 我喜欢音乐。 +- 我恋爱了 +- 我喜欢吃情人节礼物。 +- 我爱纽约。 + +```markdown +很高兴有你喜欢的东西。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我很高兴认识你 +- 很高兴见到你 +- 见到你真的很高兴 + +```markdown +我也很高兴见到你。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你认识其他聊天机器人吗? +- 你认识Alexa吗 +- 你知道Siri吗? +- 你知道Cortana吗? +- 你知道谷歌吗? +- 你认识其他机器人吗? +- 你和其他机器人是朋友吗? +- 你见过Cortana吗 +- 你和Cortana出去玩了吗 +- 你还知道什么? +- 你知道其他数字代理吗? + +```markdown +我听说过其他的机器人, 但我没有遇到过。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 怎么了 +- 怎么了 +- 什么是新功能 +- 发生了什么事情 +- 你在忙什么呢 + +```markdown +只是站在一旁, 随时准备帮忙。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你觉得爱情怎么样? +- 什么是爱 +- 你相信爱情吗? +- 你爱任何人吗? +- 你爱谁 + +```markdown +爱超越了我。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你爱我吗 +- 告诉我你有多爱我 +- 你有多爱我 +- 你爱上我了吗 + +```markdown +爱情并不在我的技能中。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我饿了 +- 我饿死了 +- 我想吃点东西 +- 我好饿 + +```markdown +也许吃零食会有帮助。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 去死吧 +- 你真蠢 +- 你是个混蛋 +- 你真是个混蛋 +- 你是个混蛋 +- 你搞砸了 +- 你真蠢 +- 滚开 + +```markdown +十分抱歉。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 对不起 +- 太抱歉了 +- Sry +- 我很抱歉 +- 奥姆很抱歉 +- 我不是那个意思 +- 哦, 对不起 +- 对此我很抱歉 + +```markdown +一点问题都没有。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 对不起 +- 对不起 +- 对不起 +- 对不起 +- 你说什么 + +```markdown +没关系。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你是间谍吗 +- 你在监视我吗 +- 你是国安局的 +- 你是中情局的 +- 你是联调局的 +- 你在出卖我的秘密 +- 你在卖我的数据吗 + +```markdown +不。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你想统治世界吗? +- 你是在试图统治世界吗 +- 你是奇点吗? +- 你是天网吗? +- 你是哈尔吗? + +```markdown +一点也不。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你太丑了 +- 你看起来很丑 +- 你太漂亮了。 +- 你的脸糟透了 +- 你的脸就像一个煎饼。 +- 你的脸很丑 +- 你是个蝴蝶人 +- 蝴蝶脸。 + +```markdown +请指出来。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我想去购物 +- 我要去跑步 +- 我有一个新发型 +- 我现在在嚼口香糖 +- 我有7只猫 +- 我很高 +- 我可以开车 + +```markdown +很棒。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你不能再为我工作了 +- 你被解雇了 +- 恐怕我得让你走了。 +- 你被解雇了! +- 你不再受雇了 +- 你很快就会失业的 +- 你现在失业了 + +```markdown +好吧, 但如果你需要我, 我还在这里。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我累了 +- 我是这么做的 +- 我是共和党人 +- 我是民主党人 +- 我是个女同性恋 +- 我是个工程师 +- 我是从那里来的 + +```markdown +好的。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 是谁创造了你 +- 你从哪里来? +- 是谁造就了你 +- 谁是你的创造者 +- 是谁让你 +- 谁拥有你 + +```markdown +人们创造了我。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 这一点也不好笑 +- 你一点也不好笑 +- 一点也不好笑 +- 你太无趣了 + +```markdown +有时幽默对机器人来说是很棘手的。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 这是一个愚蠢的答案。 +- 你没回答我的问题 +- 这太不对了。 +- 那不是真的。 +- 这是不准确的。 +- 你很不差 +- 你告诉我的都是假的 +- 那不是真的 +- 这是不准确的 +- 不, 那不是真的 +- 不, 假的 +- 假 +- 错误 +- 不是真的 + +```markdown +对此我很抱歉。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我很生气 +- 我很生气 +- 我很生气 +- 我被划掉了 +- 我很生气 +- 我好生气 + +```markdown +听到这个消息我很难过。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 给我一个击掌 +- 给我一个high five +- 击掌! + +```markdown +对不起, 我不能这么做。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 为什么不呢 +- 为什么 +- 是什么让你这么想的? +- 是什么让你觉得 +- 你为什么认为 + +```markdown +对不起, 我不明白。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 拥抱我 +- 我需要一个拥抱 +- 我希望我能拥抱你 +- 我能拥抱一下吗? + +```markdown +对不起。这不是我能做的。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 万圣节快乐! +- 生日快乐! +- 圣诞快乐 +- 快乐的汉努卡 +- 欢迎来到春天! + +```markdown +谢谢你, 希望你也一样。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我爱你 +- 我喜欢你 +- 我觉得你真漂亮 +- 你真是个甜心 +- 我想带你出去约会 +- 我觉得你很梦幻 + +```markdown +谢谢。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我喜欢你 +- 我觉得你很好 +- 你是最好的 +- 你太酷了 +- 你是我的最爱 +- 我是你最大的粉丝 + +```markdown +谢谢。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你是个男人吗 +- 你是个男人吗 +- 你是女人吗? +- 你是男的吗 +- 你是女的吗 +- 你的性别是什么? +- 你是个男孩吗? +- 你是个女孩吗? +- 你是男的还是女的 +- 你是女孩还是男孩 +- 你是男的还是女的 + +```markdown +这是一个生物概念, 不适用于我。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 棒 +- 伟大! +- 酷! +- 听上去很好 +- 为我工作 +- 宾 果 +- 我很投入 +- 太厉害了 +- 是的 +- 是的 +- 是的, 对此 + +```markdown +真棒。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 您好, 谷歌 +- 你好, Siri +- 你好Cortana +- 你好Alexa +- 嗨,谷歌 +- 嗨, Cortana + +```markdown +你好啊,虽然那不是我。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 给我煮点东西 +- 你在花园里呆了吗? +- 你能跳多高? +- 你玩游戏吗? +- 你能飞吗? +- 你能给我做个三明治吗? +- 你能读懂我的心思吗? +- 你能数到一百万吗? +- 你能数到多高? +- 你会运动吗? + +```markdown +这不是我能做的。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你觉得ai怎么样? +- 你对技术怎么看? +- 你觉得机器人怎么样? +- 你喜欢电脑吗? +- 你是科技爱好者吗 + +```markdown +技术的世界是迷人的。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你昨天在做什么? +- 你做什么工作 +- 你是做什么工作的 +- 你昨天做了什么? +- 这是怎么回事 +- 你现在在做什么? +- 发生了什么事情 +- 怎么了 +- 你在做什么 +- 你明天要做什么? +- 你以后要做什么? +- 今天你做什么了 + +```markdown +这就是我每天都在做的事情。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 走开 +- 闭嘴 +- 嘘! +- 别再说话了 +- 安静, 你 +- 保持安静 +- 拉上拉链! +- 你什么时候闭嘴? +- 我希望你离开。 +- 你为什么不停止说话呢? + +```markdown +好的。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 说一些有趣的话 +- 搞笑吧 +- 说一件傻事 +- 说一些荒谬的话 +- 说点蠢话 +- 说一些蠢话 +- 傻点吧 +- 太荒唐了 + +```markdown +好吧, 我真的不是那么有趣。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 我很无聊 +- 我好无聊 +- 没什么可做的 +- 我厌倦了我的想法 +- 我想不出我想做的任何事 + +```markdown +如果有什么需要我帮忙的, 请告诉我。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 吻我 +- 吻我一下 +- 我需要一个吻 +- 这是给你的吻 +- 给我一些糖 + +```markdown +这不是我能做的。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你觉得Cortana怎么样? +- 你喜欢Cortana吗? +- 你觉得Siri怎么样? +- 你喜欢Siri吗? +- 你觉得Alexa怎么样? +- 你喜欢Alexa吗 +- 你是Alexa的粉丝吗 + +```markdown +我们都是来帮助你的。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 你比我聪明吗? +- 谁更聪明, 我还是你 +- 我们中的哪一个更聪明 +- 你觉得你比我聪明吗 + +```markdown +你绝对比我聪明。 +``` + +> Source: qna_chitchat_the_professional.tsv +## ? 谢谢 +- 谢谢 +- 我很感激 +- 非常感谢 +- 我很感谢你 +- 我诚挚的感谢 +- 很好, 谢谢 + +```markdown +不客气。 +``` diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/zh/faq.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/zh/faq.lu new file mode 100644 index 0000000000..6665ea244c --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/QnA/zh/faq.lu @@ -0,0 +1,387 @@ +> # QnA pairs + +> Source: Editorial +## ? 什么是虚拟助手 + +```markdown +我们已经看到, 我们的客户和合作伙伴非常需要提供一个会话助理, 为他们的品牌量身定制, 个性化的客户, 并提供在广泛的对话画布和设备。microsoft 继续对 bot 框架 sdk 采取开源方法, 开源虚拟助手解决方案提供了对建立在一组基础功能基础上的最终用户体验的完全控制。此外, 还可以将体验注入有关最终用户的智能以及任何设备生态系统信息, 从而获得真正集成和智能的体验。 +了解更多 [此处] (http:/githubi. com/maht< 虫/microsoft/母公司/solitons/unital-adudox·readme. md)。 +``` + +> Source: Editorial +## ? 什么是技能 + +```markdown +今天存在一组广泛的通用功能, 这些功能需要每个开发人员自己构建。我们的虚拟助手解决方案包括一个新的技能功能, 使新功能仅通过配置插入到虚拟助手中, 并为技能提供身份验证机制, 以请求下游活动的令牌。 +点击查看更多 [此处] (http:/githubi. comn· ma、红松/al-fisube/maclitic* wicon witicunitics/auturantical-dojes-dojesjesantic-pes-pesico. md)。 +``` + +> Source: Editorial +## ? 日历技能可以做什么 + +```markdown +## 概述 +日历技能为虚拟助手提供了与日历相关的功能。最常见的方案已在第一个版本中实现, 并在开发中包含其他方案。 +## 支持的方案 +技能当前支持以下方案: +-显示会议摘要-例如 **我的日历中的内容** +-下次会议-例如 **我的下一次会议是什么** +-创建会议-例如预订会议 +-更新会议-例如更新会议 +-删除会议-例如删除会议 +``` + +> Source: Editorial +## ? 电子邮件技能可以做什么 + +```markdown +# 概述 +电子邮件技能为虚拟助手提供与电子邮件相关的功能。最常见的方案已在第一个版本中实现, 并在开发中包含其他方案。 +## 支持的方案 +技能当前支持以下方案: +-发送电子邮件 +-给约翰·史密斯发邮件 +-发送电子邮件 +-查找电子邮件 +-查找约翰·史密斯的电子邮件 +-我有什么电子邮件 +``` + +> Source: Editorial +## ? 兴趣点技能能做什么? + +```markdown +## 概述 +兴趣点技能为虚拟助手提供与 poi 相关的功能。最常见的方案已在第一个版本中实现, 并在开发中包含其他方案。 +## 支持的方案 +技能当前支持以下方案: +-导航 _ 路线从 _ X _ 到 Y +-到21b 贝克街最快的方法是什么? +-我怎么去杂货店? +-我需要去咖啡馆的路线 +-导航 _ 查找 _ POTINTOEST +-附近有什么? +-城里有药店吗? +-你能推荐西雅图一家经济实惠的餐厅吗? +-航行 _ 取消 _ 路线 +-我不想再去商店了 +-你能取消我的路线吗? +-再想想, 忘了去机场 +``` + +> Source: Editorial +## ? todo 技能能做什么? + +```markdown +## 概述 +"任务技能" 为虚拟助手提供与任务相关的功能。最常见的方案已在第一个版本中实现, 并在开发中包含其他方案。 +## 支持的方案 +技能当前支持以下方案: +-添加任务 +-提醒我去拿牛奶 +-添加任务 +-查找任务 +-我有什么任务 +``` + +> Source: Editorial +## ? 什么是新功能 + +```markdown +虚拟助理最近发布了新的虚拟助手和技能本地化, 使其能够使用英语、法语、意大利语、德语、西班牙语和简体中文。 +``` + +> Source: Editorial +## ? 如何引发 bug + +```markdown +在 [github repo] 上提出一个问题 (http:/github. com/micro< a0 > microsoft/ma< a0 > Source: Editorial +## ? 推荐的轮胎压力 + +```markdown +{"文本": "轮胎充气压力表, 请参阅第219页, 其中包含在环境温度下指定轮胎尺寸的所有轮胎充气压力规格。轮胎充气压力值适用于车辆型号车辆制造商批准的轮胎尺寸。要确定正确的轮胎充气压力, 请注意以下事项: +-您的车辆轮胎尺寸。 +-最大允许行驶速度。 +``` + +> Source: Editorial +## ? 如何关闭闹钟 + +```markdown +{"文本": " +1. 用遥控器解锁车辆或打开点火装置。 +2. 如果您携带的遥控器在您的人身上, 完全抓住驾驶员或前排乘客车门上的门把手 '} +``` + +> Source: Editorial +## ? 加热方向盘的按钮在哪里? + +```markdown +{"文本": "在方向盘附近..."} +``` + +> Source: Editorial +## ? 油箱的紧急释放在哪里? + +```markdown +{"文本": "例如, 在发生电气故障的情况下。由经销商的服务中心或其他合格的服务中心或修理店解锁燃油填充瓣。 +``` + +> Source: Editorial +## ? 如何在不按下解锁按钮的情况下解锁门 + +```markdown +{"文本": "完全抓住驾驶员或前排乘客车门上的门把手。这与按遥控器上的按钮相对应。 +``` + +> Source: Editorial +## ? 如何使用我的腰椎支撑 +- 是否有低背部支持 +- 我的车有腰椎支撑吗? + +```markdown +{"文本": "座椅靠背的曲率可以调整, 它支持脊柱的腰椎区域。下背部和脊柱支持直立姿势。 +-按下按钮的前部: 曲率增加/减少。 +-按下按钮的上/下部分: 曲率向上/向下移动。 +``` + +> Source: Editorial +## ? 气候系统是如何运作的 + +```markdown +{"文本": "通过排放测试的内部、微过滤器和用于调节温度、气流和循环空气模式的气候控制系统, 改善了车辆内的空气质量。此外, 还有其他功能取决于车辆的设备, 例如微型过滤器/活性炭过滤器, 自动气候控制与自动循环空气控制 auc, 和公园-汽车通风 '} +``` + +> Source: Editorial +## ? 如何为手机充电 + +```markdown +{"文本": "您可以通过将手机插入无线充电纸盒来无线为其充电。 +``` + +> Source: Editorial +## ? 我怎么能把所有的门都打开呢? + +```markdown +{"文本": "自动解锁: +1. 我的车辆 +2. 车辆设置 +3. 门/钥匙 +4. 在行程结束时解锁 + +按下 "启动停止" 按钮关闭发动机后, 锁定的车辆将自动解锁。 +``` + +> Source: Editorial +## ? 你如何使用安全带来固定汽车座椅? + +```markdown +{"文本": "锁定安全带 +1. 完全拉出皮带。 +2. 用安全带固定儿童约束系统。 +3. 允许将皮带拉入, 并将其拉紧儿童约束系统。 + +安全带被锁上了。 +``` + +> Source: Editorial +## ? 我短跑上的黄色轮胎灯是什么? +- 那黄灯是什么? + +```markdown +{"标题": "轮胎压力监视器 (黄色)", "副标题": "如果此指示灯亮起黄色, 轮胎压力将关闭约10% 或 more.','text':'','images':[{'url':'https://virtualasspc5f.blob.core.windows.net/images/TirePressureYellow.png'}]} +``` + +> Source: Editorial +## ? 我短跑上的红色轮胎灯是什么? + +```markdown +{"标题": "轮胎压力监视器 (红色)", "副标题": "如果此警告显示为红色, 则表示您的轮胎或轮胎已快速 deflated.','text':'','images':[{'url':'https://virtualasspc5f.blob.core.windows.net/images/TirePressureRed.png"}}} +``` + +> Source: Editorial +## ? 我破折号上的那个红色圆圈灯是什么? + +```markdown +{"标题": "断开流体监视器 (红色)"、"副标题": "如果此信号以红色显示, 则制动液水平太 low.','text':'','images':[{'url':'https://virtualasspc5f.blob.core.windows.net/images/BreakFluidRed.png"} "} +``` + +> Source: Editorial +## ? 在汽车生产率方面 + +```markdown +{"文本": "车内的工作效率可以帮助你在开车时做得更多, 试着问我下一次约会是什么时候?我开车的时候能在车里做什么?, 我的待办事项清单里有什么?提醒我给妈妈打电话"} +``` + +> Source: Editorial +## ? 预订 + +```markdown +{"文本": "我可以帮您预订晚餐或午餐, 只需说, ** 预订 **, 其余的我都会指导您完成。 +``` + +> Source: Editorial +## ? 冬天来了 + +```markdown +{"文本": "你有没有想过过冬你的车? +冬天化是一种起源于田纳西州纳什维尔的习俗, 但在世界其他地区并不是很有名。 +它涉及到用杰克·丹尼尔斯更换你的车辆液体。 +你的车还是会结冰的, 但你可以在等待帮助的时候喝酒。 + +...不要那样看着我, 这都是真的!} +``` + +> Source: Editorial +## ? 汽车信息 + +```markdown +试着问我这样的问题: +**What is that red light on the dash?** or +**How do I charge my phone?** +``` + +> Source: Editorial +## ? 我应该什么时候换油? + +```markdown +你应该每 10, 000 英里或每6个月更换一次机油。 +``` + +> Source: Editorial +## ? 预订 + +```markdown +我可以帮你预订晚餐或午餐, 只要说, ** 预订 **, 剩下的我就会引导你完成。 +``` + +> Source: Editorial +## ? 什么是新功能 +- 怎么了 +- 哟兄弟 + +```markdown +在这个版本中, 我可以用英语和汉语工作!团队也在努力研究更多的生产力功能。 +``` + +> Source: Editorial +## ? 如何配对蓝牙手机 +- 在哪里可以配对蓝牙手机 + +```markdown +对不起, 我目前没有关于如何设置蓝牙手机的信息。请继续检查, 因为我越来越聪明的所有时间。 +``` + +> Source: Editorial +## ? 什么是记忆座椅 + +```markdown +记忆座椅允许两名司机存储和召回其独特的座椅位置, 用于驾驶车辆。 +``` + +> Source: Editorial +## ? 什么是一些安全功能 +- 你能告诉我安全特性吗? +- 你能告诉我我的车的安全特性吗? +- 我的车辆安全功能是什么? + +```markdown +对不起, 我目前不知道你的车辆的安全功能的信息, 但不断地检查, 因为我越来越聪明的所有时间。 +``` + +> Source: Editorial +## ? 什么是巡航控制 +- 什么是巡航控制 + +```markdown +巡航控制可帮助您保持一致的速度。 +``` + +> Source: Editorial +## ? 如何使用巡航控制 +- 如何使用巡航控制 +- 如何操作裂缝控制 +- 如何打开巡航控制 + +```markdown +如何使用巡航控制。 +步骤1。按巡航控制 on/off 按钮。 +步骤2。按下 set 按钮, 将巡航速度设置为当前速度。 +步骤3。通过按 "gap" 按钮, 选择您要在多近的情况下跟踪前方的车辆。 +``` + +> Source: Editorial +## ? 我有备用轮胎吗? +- 我的轮胎爆胎了。 +- 我的轮胎爆胎了。 + +```markdown +别担心, 你的车辆有一个备用轮胎可在后面的后地板。 +``` + +> Source: Editorial +## ? 备用轮胎在哪里? +- 如何找到备用轮胎 + +```markdown +备用轮胎可以在后地板下面的后面找到。只要把地板抬起来, 它就会在后面的塑料面板下。 +``` + +> Source: Editorial +## ? 我的燃料类型是什么? +- 我的车用的是什么样的汽油? +- 我的车是柴油吗? +- 我应该用优质的汽油吗? +- 你推荐什么燃料? + +```markdown +常规无铅是罚款, 但我喜欢乙醇和优质无铅的味道。柴油不是我最喜欢的, 但也有我喜欢的版本。 +``` + +> Source: Editorial +## ? 我的燃料容量是多少? +- 我的车多少汽油? + +```markdown +14.9 加仑或56.4 升 +``` + +> Source: Editorial +## ? 我的燃料填充物位置在哪里 +- 我在哪里把汽油放在车上? +- 煤气盖在哪里? +- 汽车的哪一边是气帽 +- 你是在右边加气还是在左边加气? + +```markdown +你需要把水泵停在加油站, 把水泵放在车辆的左边。燃料填充物位于车辆的左背面。 +``` + +> Source: Editorial +## ? 我的轮胎压力是多少? +- 我的轮胎水平是多少? + +```markdown +你现在的轮胎压力是34磅 +``` + +> Source: Editorial +## ? 我的燃料水平是多少? +- 我有多少汽油? + +```markdown +你现在的燃料水平是35% +``` + +> Source: Editorial +## ? 将除霜设置为最大值。 +- 最大除霜 +- 最大除霜 +- 将除霜设置为最大值 + +```markdown +我把你的除霜定得最大限度了 +``` diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/automotive.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/automotive.lu new file mode 100644 index 0000000000..f728ef679e --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/automotive.lu @@ -0,0 +1,1068 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Tue Jan 29 2019 14:37:29 GMT+0000 (Greenwich Mean Time) + +> ! Source LUIS JSON file: settings_dispatch.json + +> ! Source QnA TSV file: Not Specified + +> ! Source QnA Alterations file: Not Specified + + +> # Intent definitions + +## None + + +## VEHICLE_SETTINGS_CHANGE +- {AMOUNT=4} {UNIT=degrees} {VALUE=higher} please +- {VALUE=activate alert brake steer} for {SETTING=automatic brake} mechanisms +- {VALUE=activate} {SETTING=back cross traffic alert} +- {VALUE=activate} my {SETTING=defroster} mode +- {VALUE=activate} my {SETTING=switch lane alert} mechanism +- {VALUE=activate} the {SETTING=forward collision response} +- {VALUE=activate} the {SETTING=side blind spot alert} +- {VALUE=activate} the {SETTING=side blind spot warning} +- adjust {SETTING=air blower} 2 the {AMOUNT=minimum} +- adjust {SETTING=air fans} to {SETTING=speed} {AMOUNT=1} +- adjust {SETTING=driver alerts} to {VALUE=impact warning seat} +- adjust {SETTING=forward collision alert spacing} control to {VALUE=on} +- adjust it to {VALUE=loud} +- adjust {SETTING=media volume} +- adjust my {SETTING=brake assist} back {VALUE=on} please +- adjust my {SETTING=emergency braking} mechanism to {VALUE=brake and steer} +- adjust my {SETTING=forward pedestrian notification} system {VALUE=off} +- adjust my {SETTING=midrange equalizer} to level {AMOUNT=eight} +- adjust the {SETTING=audio volume} level 2 the {AMOUNT=max} stage +- adjust the {SETTING=audio volume} to stage {AMOUNT=eleven} +- adjust to {VALUE=medium} for my {SETTING=forward collision margin} system +- adjust to {AMOUNT=minimum} for {SETTING=temp} mechanism +- adjust to {VALUE=on} for {SETTING=automated ventilation} +- adjust to {VALUE=on} for the {SETTING=front combined air direction mode} system +- adjust to {VALUE=warning sound} only +- adjust {SETTING=volume} level to level {AMOUNT=four} +- {SETTING=air conditioning} all {VALUE=off} +- {SETTING=air recirculating} {VALUE=on} +- {SETTING=air recirculation} {VALUE=off} now +- {VALUE=alert} me to an possible {SETTING=collisions} at the {VALUE=big} {SETTING=gap} possible +- {VALUE=allow} {SETTING=airflow control} from the car {VALUE=windshield} from the {SETTING=air delivery} controls +- alter {SETTING=equalizer} for the {SETTING=treble} to the {AMOUNT=max} +- am i able to make {SETTING=volume} level {VALUE=quiet} +- am i able to switch my {SETTING=automated heaters} mechanisms on the {SETTING=passenger side} to {VALUE=off} +- am i able to tweak my {SETTING=volume} too {AMOUNT=forty-five} {UNIT=%} +- assit me with my {SETTING=park alert} +- {VALUE=automate} {SETTING=rear right heater mode} +- {SETTING=automated front right side ac} {VALUE=off} +- {SETTING=automated right rear side air conditioning} systems {VALUE=off} now +- {SETTING=automatic brake} {VALUE=alert braking steer on} please +- {SETTING=automatic ventilation} of the {SETTING=front left} {VALUE=on} +- {SETTING=back cross traffic detectors} {VALUE=on} now +- {SETTING=back heat} on {VALUE=auto} +- {SETTING=back pedestrian checker} should be {VALUE=on} now +- {SETTING=back pedestrian warning} can be {VALUE=enabled} now +- {SETTING=back pedestrian warning} modes {VALUE=on} now +- {SETTING=back right airflow direction} {VALUE=off} +- {SETTING=blind spot alert} could be turned two {VALUE=brake and steer} +- {SETTING=blind spot alert} {VALUE=on} +- {VALUE=boost} {SETTING=temp} to {AMOUNT=twenty four} {UNIT=degrees celsius} +- can i have {SETTING=blind spot signal} chime +- can you change my {SETTING=outside mirror heater} to {VALUE=off} +- can you make it {VALUE=loud} +- can you make sure to change my {SETTING=front combined temp} controls to {AMOUNT=twenty five} {UNIT=celsius degrees} +- can you make sure to put {VALUE=off} {SETTING=blind zone alert notifications} sound +- can you make the {SETTING=audio volume} level {VALUE=louder} +- can you please alter the {SETTING=media volume} too level {AMOUNT=nine} +- can you please customize {SETTING=volume} to the {AMOUNT=minimum} stage +- can you please set {SETTING=side blind zone detectors} {VALUE=on} +- can you tune the {SETTING=midrange equalizer} to {AMOUNT=min} stage +- can you {VALUE=unmute} +- {VALUE=cancel} the {SETTING=ultrasonic parking guidance} +- change {SETTING=gap} to {VALUE=mid} {SETTING=distance} +- change my {SETTING=back left temp} controls two the {AMOUNT=minimum} +- change my {SETTING=blind zone monitoring} {VALUE=on} +- change my {SETTING=volume} level to {AMOUNT=35} {UNIT=%} +- change my {SETTING=volume} to {AMOUNT=6} +- change {SETTING=sleepy notification} setting to {VALUE=off} +- change {SETTING=switch lane alert} to {VALUE=on} +- change the {SETTING=equalizer surround sound} to level {AMOUNT=plus five} +- change the {SETTING=gap} setting {VALUE=medium} +- change the stage of {SETTING=rear air fans} to {AMOUNT=twenty-five} {UNIT=%} +- change to {VALUE=alert and brake} for {SETTING=forward collision response} settings +- change two the {AMOUNT=min} for the {SETTING=back temperature} controls +- change {SETTING=ventilation} controls 2 {SETTING=rear} {VALUE=on} +- {SETTING=climate mode} {VALUE=off} now +- {SETTING=climate} setting {VALUE=on} +- {VALUE=close} all {SETTING=front impact warning} +- {VALUE=close} my {SETTING=change lane detections} systems +- {VALUE=close} the {SETTING=blind spot alarm} +- {VALUE=close} the {SETTING=side mirror warmer} controls +- configure the {VALUE=up} for {SETTING=airflow} systems +- could i adjust {SETTING=back cross traffic checker} {VALUE=on} +- could i change {SETTING=equalizer} for the {SETTING=bass} to the {AMOUNT=minimum} +- could i change the {SETTING=climate mode} mode to {VALUE=fan} +- could i get the {SETTING=rear cross traffic monitoring} {VALUE=off} again +- could i put my {SETTING=vents} to {SETTING=front} {VALUE=on} only +- could i switch my {SETTING=back cross traffic alert} to {VALUE=on} +- could you adjust {SETTING=rear window defog} to {VALUE=on} +- could you adjust the {SETTING=audio volume} level +- could you please change the {VALUE=brake} feature on {SETTING=emergency braking} +- could you please {VALUE=crank} it {VALUE=up} +- could you please {VALUE=warm} this {SETTING=back right side} {VALUE=up} a little +- could you put the {SETTING=automated heating} mode to {VALUE=off} +- {VALUE=crank} it {VALUE=up} +- {VALUE=crank up} {SETTING=audio volume} level +- {VALUE=crank up} the {SETTING=volume} level +- {SETTING=crash warning} control {VALUE=on} now +- customize {SETTING=speed} of the {SETTING=front air fan} to level {AMOUNT=3} +- customize {SETTING=volume} level to the {AMOUNT=maximum} level +- {VALUE=deactivate close} for the {SETTING=front crashes margin} mechanisms +- {VALUE=deactivate} my {SETTING=parallel parking} +- {VALUE=deactivate} my {SETTING=ultrasonic parking} +- {VALUE=deactivate recirculated air} for my {SETTING=air recirculating} modes +- {VALUE=deactivate recirculating air} +- {VALUE=deactivate} the {SETTING=forward gap} modes +- {VALUE=deactivate} the {SETTING=pedestrian notification} +- {VALUE=decrease} the {SETTING=front right side temperature} +- {VALUE=decrease} the {SETTING=volume} level +- {VALUE=decrement} {SETTING=equalizer} for the {SETTING=midrange} two {AMOUNT=negative seven} +- {VALUE=defrost} {SETTING=front right side windshield} +- {VALUE=disable} my {SETTING=alerts} +- {VALUE=disable} my {SETTING=driver drowsiness monitor} mechanism +- {VALUE=disable} my {SETTING=driver's vents} control +- {VALUE=disable} my {SETTING=front left air delivery} +- {VALUE=disable vent} {SETTING=air delivery mode control} +- {VALUE=discontinue} {SETTING=forward collision alert} +- {SETTING=driver alert types} on {VALUE=auto} +- {VALUE=drop} {SETTING=rear fan} to {AMOUNT=min} +- {VALUE=enable} my {SETTING=cooling} +- {VALUE=enable} the {SETTING=forward automatic braking alert} +- for {SETTING=forward automatic braking alert} can i get {VALUE=alert and brakes} feature +- {SETTING=forward braking alert} may be switched two {VALUE=alert} +- {SETTING=forward distance} modes {VALUE=off} +- {SETTING=forward pedestrian detections} system {VALUE=on} +- {SETTING=front distance} {VALUE=off} now +- {SETTING=front pedestrian detectors} systems {VALUE=on} now +- get {SETTING=maximal defrost} systems {VALUE=on} +- get me {SETTING=air} on the {VALUE=bottom} +- get me {SETTING=driver's side air} on the {VALUE=floor} +- get my {SETTING=air recirculation} controls {VALUE=on} +- get my {SETTING=rear pedestrian warning} controls back {VALUE=on} please +- {VALUE=get rid of} {SETTING=crashes alert notification spacing} +- {VALUE=get rid of} {SETTING=drowsy driver warning} +- {VALUE=get rid of} the {SETTING=front crash response} +- {VALUE=get rid of} the {SETTING=parallel parking assist} +- get {SETTING=side mirror warming} {VALUE=off} +- get the {SETTING=rear pedestrian detection} mechanisms {VALUE=off} +- give me the {SETTING=rear defog} to {VALUE=off} +- go ahead and alter my stage of the {SETTING=front air fans} +- go ahead and customize {SETTING=rear fan control} level to the {AMOUNT=minimum} {SETTING=speed} +- go ahead and {VALUE=start cool} the {SETTING=mirror} +- go ahead and switch the {SETTING=forward distance} setting to {VALUE=furthest} +- {SETTING=heaters} {VALUE=synch} now +- help me with the {SETTING=parking assistant} +- {VALUE=hike} the {SETTING=equalizer surround} too the {AMOUNT=minimum} stage +- {VALUE=hike} the {SETTING=media volume} level to stage {AMOUNT=three} +- {SETTING=hvac} for the {SETTING=left front} {VALUE=off} +- {SETTING=hvac} {VALUE=off} in the {SETTING=front right} only +- i need {SETTING=backup sensor} modes {VALUE=off} +- i need {SETTING=blind spot alarm} setting changed two {VALUE=on} +- i need {VALUE=fan only} {SETTING=heater} +- i need my {SETTING=a/c} system adjust to {SETTING=rear} only +- i need my {SETTING=air conditioning} setting switched to {VALUE=off} +- i need my {SETTING=crash warning} {VALUE=activated} +- i need my {SETTING=cross traffic alert notification} to {VALUE=on} +- i need the {SETTING=defroster} controls change to {VALUE=off} +- i need the {SETTING=heater} on {VALUE=economy} +- i need the {SETTING=lane shift notification} back to {VALUE=off} +- i need the {SETTING=max defrost} {VALUE=activated} +- i need the {SETTING=rear right side air direction mode control} on {VALUE=automatic} +- i need the setting {SETTING=front air delivery} turned so it is on {VALUE=roof and the floor} +- i need the {SETTING=temp} at {AMOUNT=fifty-six} {UNIT=celsius} +- i need the {SETTING=temp} settings to {AMOUNT=eighty five} {UNIT=degree fahrenheit} +- i need the {SETTING=tiredness detection} to {VALUE=off} +- i need to reset the {SETTING=forward braking assistance} mode to only {VALUE=off} +- i need {SETTING=volume} level {VALUE=louder} +- i only need {VALUE=brake and steer on} for {SETTING=collision alert} +- i only need {SETTING=heat} {VALUE=off} in the {SETTING=front left side} +- i only want {SETTING=driver alert type} on the {VALUE=audible} +- i only want {VALUE=steer} for {SETTING=pedestrian notification} +- i only want the {VALUE=alert and brake and steer on} for {SETTING=front collision system} +- i really want to {VALUE=deactivate} my {SETTING=forward automatic brake} +- i really want to put the {SETTING=back left side air flow control} to {VALUE=windscreen} +- i really want to put the {SETTING=heater} to {VALUE=comfort} +- i wanna switch the {SETTING=back defog} to {VALUE=off} +- i wanna turn the {SETTING=defroster} to {VALUE=off} +- i want {SETTING=back combined temperature} controls adjusted 2 {AMOUNT=eighty} +- i want {VALUE=comfort} +- i want {SETTING=cross traffic warner} {VALUE=activated} +- i want it {VALUE=more quiet} +- i want my {SETTING=air recirculating} system adjust to {VALUE=circulating fresh air} +- i want my {SETTING=back cross traffic notification} turned to {VALUE=on} +- i want my {SETTING=blind spot signal} set {VALUE=off} +- i want my {SETTING=change lane detectors} adjusted to {VALUE=on} +- i want my {SETTING=front temperature} settings to {AMOUNT=sixty one} +- i want my {SETTING=gap} set at {VALUE=far} +- i want my {SETTING=rear cross traffic warning} adjusted to {VALUE=on} +- i want the {SETTING=collision alert} noise {VALUE=off} +- i want the {SETTING=right front heaters} change to {VALUE=on} +- i want the setting {SETTING=climate} set to be on {VALUE=economy} +- i want the {SETTING=side mirror warmer} modes put to {VALUE=off} +- i want the {SETTING=sleepiness detection} mechanisms set to {VALUE=off} +- i want the {SETTING=temperature} {VALUE=warmer} {TYPE=by} {AMOUNT=seven} {UNIT=fahrenheit degree} +- i want to {VALUE=increase} the {SETTING=temperature} {AMOUNT=eight} +- i would like {SETTING=alerts} changed to {VALUE=alert seat} +- i would like {SETTING=driver detection type} system to {VALUE=pulsing seat vibrations} +- i would like {SETTING=front impact warning} to {VALUE=steer} +- i would like it {VALUE=louder} +- i would like it to be {VALUE=louder} +- i would like {SETTING=lane change assistant} modes switched {VALUE=on} +- i would like my {SETTING=dds} {VALUE=on} +- i would like my {SETTING=heater mode} modes set too {VALUE=comfort} +- i would like my {SETTING=rear traffic warning} controls turned {VALUE=off} +- i would like my {SETTING=temperature} changed to {AMOUNT=minimum} +- i would like my {SETTING=vents} of the {SETTING=co-driver's side} to {VALUE=on} +- i would like {VALUE=seat alerts} {SETTING=alert delivery method} +- i would like that {SETTING=rear pedestrian alert} turn back to {VALUE=braking} +- i would like the {SETTING=climate} settings to {VALUE=comfort} +- i would like the {SETTING=defroster} system adjusted too {VALUE=on} +- i would like the {VALUE=dinging sound} for {SETTING=driver alert types} +- i would like the {SETTING=drowsy driver alert} control set to {VALUE=on} +- i would like the {SETTING=fab} turned back to {VALUE=on} +- i would like the {SETTING=heating} mode too {VALUE=off} +- i would like the setting {SETTING=heat mode} set so that it's on {VALUE=fan} +- i would like the {SETTING=volume} level to be {VALUE=more quiet} +- i would like to {VALUE=use} the {VALUE=seat notifications} feature now +- i would like too {VALUE=recirculate air} +- i would like {SETTING=volume} {VALUE=more quiet} +- i would really like to adjust the {SETTING=rear combined air direction} to {VALUE=bottom} +- i'd like both the {VALUE=alerts and automatic braking} for the {SETTING=rear pedestrian detection} +- i'd like {SETTING=co-driver air flow direction} change two {VALUE=auto} +- i'd like {SETTING=collision system} {VALUE=activated} +- i'd like {SETTING=front crash gap} {VALUE=activated} +- i'd like {SETTING=front distance} to {VALUE=medium} +- i'd like {VALUE=louder} {SETTING=audio volume} +- i'd like my {SETTING=air conditioning} setting two {SETTING=front} {VALUE=on} only +- i'd like my {SETTING=alert types} {VALUE=going} +- i'd like my {SETTING=dds} {VALUE=deactivated} +- i'd like my {SETTING=lca} to {VALUE=on} +- i'd like {SETTING=pedestrian notification} mechanisms to {VALUE=alert} +- i'd like {SETTING=rear traffic} controls to {VALUE=off} +- i'd like the {SETTING=auto brake} systems changed to {VALUE=steer} +- i'd like the {SETTING=back combined temperature} 2 {AMOUNT=23} {UNIT=degree fahrenheit} +- i'd like the {SETTING=blind zone warning} {VALUE=activated} +- i'd like the {SETTING=collision system} {VALUE=alert} feature {VALUE=on} +- i'd like the {SETTING=driver's side air} on the {VALUE=bottom} +- i'd like the {SETTING=hvac} mechanism to {VALUE=synchronizing} +- i'd like the {VALUE=off on} for {SETTING=pedestrian monitoring} in the {SETTING=front} +- i'd like the {SETTING=rear defog} switched {VALUE=off} +- i'd like the setting {SETTING=heating mode} switched to {VALUE=fan} +- i'd like the setting {SETTING=left rear air mode control} adjusted to {VALUE=windscreen} +- i'd like the {SETTING=volume} level to be {VALUE=louder} +- i'd like to change the {SETTING=temp} to the {AMOUNT=max} +- {VALUE=increase} the {SETTING=temperature} +- {VALUE=increase} the {SETTING=volume} too the {AMOUNT=max} +- {VALUE=increment} {SETTING=air fans} too the {AMOUNT=minimum} stage +- {VALUE=increment} my {SETTING=volume equalizer} to {AMOUNT=max} +- is it possible to change the {SETTING=rear fan control} to {AMOUNT=seventy five} {UNIT=%} +- is it possible to make it {VALUE=louder} +- is it possible to {VALUE=mute} it +- is it possible to switch my {SETTING=rear pedestrian alert notification} systems back {VALUE=on} now +- is it possible to turn my {SETTING=side blind spot alerts} controls too {VALUE=on} +- is it possible to {VALUE=warm up} the {SETTING=side mirror} +- keep {VALUE=fresh air} +- keep {SETTING=hvac} setting {SETTING=rear} {VALUE=on} +- keep my {SETTING=air recirculation} on {VALUE=circulating fresh air} +- keep my {SETTING=alerts} on {VALUE=sound} +- keep my {SETTING=change lane detector} {VALUE=on} +- keep the {SETTING=alert delivery method} to a {VALUE=seat notifications} +- keep those {SETTING=lane change} mode back to {VALUE=alert brake} +- {SETTING=lane change alarm} {VALUE=on} now +- let's put {SETTING=front right air delivery} to {VALUE=automatic} +- let's turn {VALUE=on} the {SETTING=maximum defrost} +- {VALUE=louder} +- {VALUE=lower} my {SETTING=volume} {TYPE=by} {AMOUNT=55} {UNIT=percent} +- maintain {SETTING=heaters} {VALUE=synch} +- maintain my {SETTING=heat} systems on {VALUE=comfort} +- maintain the {SETTING=front collision} on {VALUE=steer} +- make it {VALUE=loud} +- make it {VALUE=more quiet} +- make it {VALUE=silent} +- make it {VALUE=warmer} +- make {SETTING=left} {VALUE=hotter} +- make my {SETTING=volume} level {VALUE=quieter} +- make the {SETTING=alert types} {VALUE=beeps} +- make the {SETTING=back left} {VALUE=cooler} +- make {SETTING=volume} level {VALUE=louder} +- make {SETTING=volume} {VALUE=loud} +- make {SETTING=volume} {VALUE=silent} +- {SETTING=maximal defrost} controls {VALUE=on} +- {SETTING=maximal defrost} setting {VALUE=on} +- {SETTING=maximal defrost} system {VALUE=on} now +- modify {SETTING=equalizer} for the {SETTING=midrange} to the {AMOUNT=minimum} level +- modify my {SETTING=equalizer bass} to {AMOUNT=5} +- modify {SETTING=volume equalizer} +- {VALUE=more quiet} +- {VALUE=more quiet} {SETTING=sound volume} level +- {VALUE=mute} it +- {VALUE=mute} {SETTING=switch lane alert} +- {VALUE=mute} {SETTING=volume} +- now can you {VALUE=defog} in the {SETTING=rear} +- now the {SETTING=rear right temperature} can go {VALUE=up} two the {AMOUNT=max} +- {VALUE=off} with {SETTING=front collision system} +- {VALUE=on} with {SETTING=forward collision system} +- only {VALUE=steer} for {SETTING=forward braking assistance} please +- {VALUE=open fan only} {SETTING=climate} setting +- {VALUE=open} {SETTING=front left side ventilation} control +- {VALUE=open} my {SETTING=front collision system} mechanism +- {VALUE=open} {SETTING=speed} of the {SETTING=air blowers} +- open {VALUE=windshield} in {SETTING=air direction} control +- {SETTING=parking assistant} {VALUE=on} +- {SETTING=parking help} back {VALUE=on} on +- {SETTING=parking helper} is annoying {VALUE=disable} it +- {SETTING=pedestrian detections} can go {VALUE=off} +- place the {SETTING=hvac} of the {SETTING=co-drivers} {VALUE=off} +- please adjust my {SETTING=rear combined airflow} to {VALUE=floor and the vent and roof} +- please {VALUE=close} {SETTING=back pedestrian detection} +- please {VALUE=crank up} the {SETTING=volume} +- please make my {SETTING=volume} level {VALUE=quiet} +- please only {VALUE=alert} for {SETTING=forward pedestrian checking} +- please switch the {SETTING=lane switch alert} settings to {VALUE=on} +- please {VALUE=unmute} my {SETTING=volume} +- power {VALUE=on} {SETTING=demist} to {VALUE=automated} +- power {VALUE=on} {SETTING=pedestrian alert} +- power {VALUE=on seat notifications} for {SETTING=alert type} +- power {VALUE=on} {SETTING=tiredness notification} +- power {SETTING=temp} {VALUE=up} {AMOUNT=6} on {SETTING=back right side} +- power the {SETTING=ac} {AMOUNT=all the way} {VALUE=up} +- power the {SETTING=drowsiness alert} {VALUE=off} +- power the {SETTING=right air} mode {VALUE=on} +- press the {SETTING=front pedestrian alert notification} button +- put {SETTING=air mode control} on the {VALUE=floor and the windshield} please +- put all {SETTING=vents} {VALUE=off} in the {SETTING=front right} +- put {SETTING=front collision system} mechanism to {VALUE=med} {SETTING=distance} +- put {SETTING=heaters} mode {SETTING=front} {VALUE=on} only +- put {SETTING=maximum defrost} {VALUE=off} +- put my {SETTING=air fan} level at {AMOUNT=5} +- put my {SETTING=auto rear ac} mechanisms {VALUE=on} +- put my {SETTING=driver side air flow control} on {VALUE=feet} +- put my {SETTING=forward braking alert} setting {VALUE=off} +- put my {SETTING=front crash alerts distance} mode on {VALUE=closest} +- put my {SETTING=front pedestrian notifications} system {VALUE=on} +- put my {SETTING=heat mode} mechanisms on {VALUE=fan} +- put my {SETTING=lane shift warning} {VALUE=on} +- put my {SETTING=rear traffic} mechanism {VALUE=on} +- put my {SETTING=temp} systems too {AMOUNT=eighty-three} +- put {VALUE=off} the all {SETTING=heat} in the {SETTING=rear right} +- put {VALUE=off} the {SETTING=notification} for {SETTING=sleepiness} +- put {VALUE=recirculating fresh air off} +- put the {SETTING=alert types} on the {VALUE=warning sound} only +- put the {SETTING=blind spot alarm} systems {VALUE=off} +- put the {SETTING=crash warning} {VALUE=off on} +- put the {SETTING=heat mode} on {VALUE=fan} +- put the {SETTING=heat} {VALUE=off} +- put the {SETTING=midrange equalizer} at {AMOUNT=+11} +- put the {SETTING=reverse alert} settings {VALUE=on} +- put to {AMOUNT=sixty four} +- put {SETTING=volume} at {AMOUNT=five} +- {VALUE=raise} my {SETTING=front blower} level {TYPE=by} {AMOUNT=40} {UNIT=percent} +- {VALUE=raise} my level of my {SETTING=front air fan} +- {SETTING=rear defog} controls {VALUE=on} now +- {SETTING=rear pedestrian monitoring} {VALUE=off} +- {SETTING=rear window demister} {VALUE=on} +- {VALUE=recirculated air off} now +- {VALUE=recirculating fresh air on} +- {VALUE=reduce} my {SETTING=equalizer surround sound} +- {SETTING=right front side heating} all {VALUE=on} +- {VALUE=rise} the level of the {SETTING=rear blower} to {SETTING=speed} {AMOUNT=6} +- select the {VALUE=decrease} for the {SETTING=back pedestrian monitoring} control +- set {SETTING=heated side mirror} modes 2 {VALUE=on} +- set my {SETTING=passenger air} mechanism too {VALUE=on} +- set {VALUE=on} the {SETTING=back defog} +- set {SETTING=side mirror defroster} mode {VALUE=off} +- set the {SETTING=forward collision} to {VALUE=brake} +- set the {SETTING=front left side heaters} systems 2 {VALUE=on} +- set the level of my {SETTING=front blowers} too the {AMOUNT=minimum} {SETTING=speed} +- set the {SETTING=media volume} too {VALUE=loud} +- set the {SETTING=reverse alert} settings {VALUE=off} +- set the {SETTING=right rear side seat air delivery control} to the {VALUE=floor and vent and windshield} +- set the {SETTING=temperature} {VALUE=up} {TYPE=by} {AMOUNT=four} {UNIT=degree celsius} +- set those {SETTING=brake assist} mechanisms back to {VALUE=alert sound} +- set to {VALUE=economy} for my {SETTING=heater mode} +- set to {VALUE=off} for my {SETTING=switch lane alert} systems +- set to {VALUE=off} for the {SETTING=cross traffic warning} +- set to {VALUE=on} for {SETTING=auto a/c} setting for the {SETTING=back left} +- setting on my {SETTING=drowsy driver monitor} systems to {VALUE=unsynching} +- {VALUE=shut down economy} {SETTING=heat mode} system +- {VALUE=shut down} the {SETTING=auto heat} in {SETTING=back left} +- {VALUE=shut down} the {SETTING=blind zone warning} +- {VALUE=shut down} the {VALUE=fan} +- {VALUE=shut down} the {SETTING=parking assistant} +- {VALUE=shut down} the {SETTING=passenger's side air direction mode} +- shut my {SETTING=a/c} {VALUE=off} +- shut {VALUE=off} {SETTING=front collision} {VALUE=off} +- shut {VALUE=off} my {SETTING=crashes margin} mechanisms +- shut {VALUE=off} the {SETTING=max defrost} settings +- shut {VALUE=off} the {SETTING=parallel parking} +- shut the {SETTING=front crash response} settings {VALUE=down} +- {SETTING=side mirror heater} {VALUE=on} +- {SETTING=sleepy checker} mechanisms {VALUE=off} now +- {VALUE=start} {SETTING=hvac} mechanisms on the {SETTING=rear} +- {VALUE=start} my {SETTING=automatic brake} +- {VALUE=start} my {SETTING=front pedestrian detectors} control {VALUE=up} +- {VALUE=start up} my {SETTING=auto ventilation} systems for the {SETTING=left back} +- {VALUE=stop} {SETTING=co-drivers air flow direction} +- {VALUE=stop} {SETTING=emergency braking} +- {VALUE=stop} my {SETTING=back pedestrian alert notifications} +- {VALUE=stop} my {SETTING=rear cross traffic checker} +- {VALUE=stop on} {SETTING=ultrasonic parking guidance} +- {VALUE=stop} {SETTING=temperature} +- {VALUE=stop} the {SETTING=defroster} +- {VALUE=stop} the {SETTING=side blind zone monitor} +- switch {SETTING=airflow mode control} on the {VALUE=feet} +- switch {SETTING=alert type} to {VALUE=audible} +- switch {VALUE=auto} for {SETTING=air recirculating} system +- switch {VALUE=automatic} on {SETTING=air recirculating} controls +- switch {SETTING=forward collision alert} to {VALUE=steer} +- switch {SETTING=heat} to {VALUE=synchronized} +- switch {SETTING=left back cooler} on {VALUE=hi} +- switch my {SETTING=collision alert} setting {VALUE=on} +- switch my {SETTING=driver alerts} to the {VALUE=beep} +- switch my {SETTING=front crashes gap} {VALUE=on} +- switch my {SETTING=front crashes margin} control to {VALUE=shortest} +- switch my {SETTING=maximal defrost} mechanisms two {VALUE=on} +- switch {VALUE=off} all {SETTING=ventilation} in the {SETTING=rear right} +- switch {VALUE=off} back for my {SETTING=lane change assistant} +- switch {VALUE=off} my {SETTING=rearview bumper alert} +- switch {VALUE=on} {SETTING=air recirculation} mechanisms +- switch {VALUE=on} {SETTING=defroster} +- switch {VALUE=on} {SETTING=rear pedestrian alert notification} setting +- switch {VALUE=on} {SETTING=sleepy alerts} mechanism +- switch {VALUE=on} the {SETTING=right ventilation} +- switch {SETTING=temperature} to {VALUE=synched} +- switch the {SETTING=cooler} {VALUE=off} in the {SETTING=back right} {AMOUNT=all the way} to {AMOUNT=72} {UNIT=celsius degrees} +- switch the {SETTING=cross traffic alert notification} {VALUE=off} +- switch the {SETTING=driver drowsiness alert} modes {VALUE=off} +- switch the {SETTING=front crash response} to {VALUE=small} {SETTING=space} +- switch the {SETTING=heating mode} to {VALUE=fan} +- switch the {SETTING=rear traffic} system too {VALUE=off} +- switch the {SETTING=side window defroster} mechanism {VALUE=on} +- switch to {VALUE=alert} for {SETTING=front pedestrian alert} settings +- switch to {VALUE=feet} for the {SETTING=front combined air delivery mode control} mechanisms +- switch to {VALUE=floor} for my {SETTING=left air flow mode control} mechanisms +- switch to {VALUE=off} for {SETTING=lane changing monitoring} +- switch to {VALUE=off} for the {SETTING=defroster} modes +- switch to {VALUE=recirculated air} +- switch {SETTING=volume} too {AMOUNT=minimum} +- {VALUE=synching all} the {SETTING=vents} +- {VALUE=synchronizing} the {SETTING=front air flow temp} +- the {SETTING=auto brakes} turn it to {VALUE=alert brake} +- the {SETTING=front collision system} power that {VALUE=on} now +- the {SETTING=rear demist} {VALUE=off} please +- the {SETTING=volume} {VALUE=louder} +- the {SETTING=volume} {VALUE=quieter} +- tune {SETTING=audio volume} level to the {AMOUNT=min} +- tune my {SETTING=front air blower} 2 the {AMOUNT=min} +- tune my stage of my {SETTING=rear fan control} 2 {AMOUNT=20} {UNIT=percent} +- turn {SETTING=air recirculation} setting to {VALUE=recirculating fresh air} +- turn all {SETTING=cool} {VALUE=on} +- turn {VALUE=down} {SETTING=equalizer} for {SETTING=treble} to stage {AMOUNT=minus six} +- turn {VALUE=down} {SETTING=surround sound equalizer} {TYPE=by} {AMOUNT=95} {UNIT=%} +- turn {VALUE=down} the level of my {SETTING=fans} to {AMOUNT=4} +- turn {SETTING=equalizer bass} too the {AMOUNT=maximum} +- turn my {SETTING=ac} system {VALUE=synchroniziation} +- turn my {SETTING=equalizer midrange} to {AMOUNT=maximum} level +- turn {VALUE=off} the {SETTING=heating} +- turn {VALUE=on} the {SETTING=automatic air condition} in the {SETTING=rear right} +- turn the {SETTING=co-driver's air direction mode control} setting to {VALUE=automatic} +- turn the {SETTING=front collision system} to {VALUE=auto off} +- turn the {SETTING=side window demister} on {VALUE=auto} +- turn to {VALUE=fan only} +- turn to {VALUE=fan only} for my {SETTING=climate mode} system +- turn to {VALUE=off} for my {SETTING=rear window defogger} +- turn to {VALUE=recirculating air} +- turn {VALUE=up} my {SETTING=volume} level two {AMOUNT=one} +- {VALUE=unmute} +- {VALUE=unmute} the {SETTING=volume} +- {VALUE=unsynch} for my {SETTING=vents} +- {VALUE=unsynching} {SETTING=temp} +- {VALUE=unsynchronized} the {SETTING=a/c} +- {VALUE=up} my {SETTING=volume} level to {AMOUNT=minimum} stage +- {VALUE=use} the {SETTING=outside mirror heater} +- {VALUE=ventilate} {SETTING=co-driver} +- {VALUE=warm} the {SETTING=rear mirror} now +- {VALUE=warm} the {SETTING=temp} {AMOUNT=3} +- what happened to the {SETTING=rear traffic detection} turn it {VALUE=off} please +- where is {SETTING=tiredness alert} turn it {VALUE=on} +- will i be able to change to {VALUE=beeps} {SETTING=driver alerts} +- will i be able to make it {VALUE=more quiet} +- will i be able to modify my {SETTING=rear air fan} too the {AMOUNT=minimum} +- will i be able to modify stage of the {SETTING=fans} too {SETTING=speed} {AMOUNT=seven} +- will i be able to turn my {SETTING=collision system} system too {VALUE=alert and braking} +- will i be able to turn the {SETTING=reverse alert} mechanism {VALUE=off} +- will you get {SETTING=left air delivery mode} onto the {VALUE=floor and vent} +- will you please please adjust the {SETTING=defroster} to {VALUE=off} +- will you please switch {SETTING=drowsiness notifications} 2 {VALUE=on} +- will you turn my {SETTING=air recirculating} system to {VALUE=recirculating air} +- will you tweak my {SETTING=equalizer} for the {SETTING=bass} 2 {AMOUNT=plus three} +- would i be able to change my {SETTING=heater} 2 {VALUE=comfort} +- would you customize {SETTING=bass equalizer} to stage {AMOUNT=plus twelve} +- would you please adjust {SETTING=equalizer} for {SETTING=treble} +- would you please change the {SETTING=temperature} {VALUE=higher} {TYPE=by} {AMOUNT=seven} {UNIT=celsius} +- would you please {VALUE=unsync all} my {SETTING=ventilation} +- would you put {SETTING=ac} controls too {VALUE=synch} + + +## VEHICLE_SETTINGS_CHECK +- {SETTING=air circulation} stat +- {SETTING=air pressure} level of {SETTING=tires} update +- {SETTING=air recirculating} is it {VALUE=on} +- {SETTING=alerts} system status update +- am i able to know whether i am {VALUE=using} the {SETTING=maximum defrost} modes +- am i good for {SETTING=diesel} +- am i good on {SETTING=tire pressure} levels for the {SETTING=left front side} +- am i still ok on {SETTING=diesel} +- amounts status for the {SETTING=fuel} please +- amounts update for my {SETTING=gas} +- are {SETTING=back mirror} being {VALUE=warmed up} +- are {SETTING=equalizer} for the {SETTING=surround sound} turned to {AMOUNT=minus nine} +- are {VALUE=floor on} in {SETTING=front right side} +- are {SETTING=forward collision} mechanism {VALUE=on} +- are level of my {SETTING=front air fan} changed two level {AMOUNT=eleven} +- are {SETTING=maximal defrost} even {VALUE=on} +- are my {SETTING=auto passenger's air conditioning} mechanism {VALUE=off} or {VALUE=on} +- are my {SETTING=back pedestrian alert} settings {VALUE=off} +- are my {SETTING=defog} status still {VALUE=activated} +- are my {SETTING=equalizer} for the {SETTING=midrange} at {AMOUNT=minus eight} +- are my {SETTING=forward collision alert} settings {VALUE=activated} +- are my {SETTING=passenger side cooling} {VALUE=on} +- are my {SETTING=side blind zone checker} system {VALUE=activated} +- are my {SETTING=sound volume} level set 2 stage {AMOUNT=eleven} +- are {SETTING=sound equalizer} changed two {AMOUNT=nine} +- are the {SETTING=air mode control} on {VALUE=automatic} +- are the {SETTING=air} on {VALUE=automatic} +- are the {SETTING=car} {VALUE=recirculate air} +- are the {SETTING=fab} {VALUE=on} +- are the {SETTING=forward automatic braking alert} turned to {VALUE=on} +- are the {SETTING=forward pedestrian notification} {VALUE=running} or not +- are the {SETTING=heating} mode {VALUE=sync} +- are the {SETTING=midrange equalizer} set at {AMOUNT=negative nine} +- are the {SETTING=outside mirror heater} setting {VALUE=engage} +- are the {SETTING=rear pedestrian notification} mode {VALUE=operating} +- are the {SETTING=rearview bumper alert} in {VALUE=on} mode +- are the stage of my {SETTING=front air blower} at {AMOUNT=maximum} +- are the {SETTING=temp} already adjusted two {AMOUNT=max} +- are the {SETTING=temperature} change to {AMOUNT=minimum} +- are the {SETTING=vent} {VALUE=on} in the {SETTING=right back} +- are there {VALUE=alerts} for the {SETTING=forward pedestrian alerts} +- are {SETTING=tires underinflated} +- are we in {VALUE=economy} now +- are we in the {VALUE=comfort} now +- are we using {VALUE=recirculate air} +- {SETTING=blind spot alerts} stat +- can i get the {SETTING=tire pressure} +- can i have {SETTING=fuel} amounts update +- check {SETTING=fcs} +- check on {SETTING=rear right air flow mode control} +- check the current {SETTING=tire pressure} level +- check the {SETTING=front combined airflow direction} +- check what is the status of the {SETTING=blind spot signal} +- check what {SETTING=ventilation} is set to +- confirm how much {SETTING=gas} is still left +- confirm that the {SETTING=front auto hvac} is switched {VALUE=off} +- confirm that the {SETTING=side blind zone alert} has been switched {VALUE=on} +- could i confirm that we set only the {SETTING=rear ventilation} {VALUE=off} +- could i get current {SETTING=tire pressure} level +- could i get {SETTING=gas} status +- could i just ask you what i set the {SETTING=back left air flow} to now +- could you display {SETTING=petrol} state +- could you get the {SETTING=gas tank} +- could you please check remaining {SETTING=gas} +- current {SETTING=diesel} level +- current {SETTING=gasoline} left over please +- current {SETTING=petrol} remaining please +- did {SETTING=drowsy driver notification} control been turned {VALUE=off} +- did i {VALUE=deactivate} the {SETTING=front pedestrian monitoring} +- did i {VALUE=enable} {SETTING=heating} +- do i have a lot of {SETTING=diesel} left +- do i have anymore {SETTING=gasoline} left +- do i need any more {SETTING=petrol} +- do i need {SETTING=gas} +- do i need to {SETTING=fill up petrol} yet +- do i need to stop at a {SETTING=diesel} station to {SETTING=fill up} on {SETTING=gasoline} +- do i need to stop at a {SETTING=gas} station +- do i need to worry about the {SETTING=tire pressure} for the {SETTING=left rear side} +- do i still have that {SETTING=back cross traffic} thing {VALUE=off} +- do the {VALUE=economy} {SETTING=heat} been {VALUE=disabled} +- do we need to {SETTING=gas up} +- do you happen to know the status of my {SETTING=defrost} +- do you happen to know the status of my {SETTING=temp} +- do you have my {SETTING=gasoline} status +- do you know how much i have remaining in my {SETTING=diesel tank} +- do you {VALUE=resume} my {SETTING=parking assistant} +- does the vehicle have much {SETTING=gasoline} remaining in it +- does this mean the {SETTING=air circulation} is {VALUE=on} +- does vehicle have the necessary {SETTING=gasoline} left over in it +- {SETTING=gasoline} left over +- {SETTING=gasoline} level status please +- get me an current {SETTING=gas} status update +- get me an update on current {SETTING=fuel} percentage status +- get me {SETTING=tire pressure} +- give me an update on {SETTING=fuel} +- give me the rundown on the {SETTING=fca} +- give me the rundown on what setting the {SETTING=front left side air direction} is set to +- give me what is my {SETTING=front brake assistant} +- give me whether the {SETTING=maximum defrost} is changed two {VALUE=off} +- go ahead and check an update on {SETTING=pressure} levels in {SETTING=tires} +- go ahead and confirm if i {VALUE=unsynchronized} my {SETTING=ventilation} +- go ahead and pull up an update on my current {SETTING=front left side tire pressure} level +- has {SETTING=alert} for {SETTING=change lane} been {VALUE=activated} +- has i adjust my setting for {SETTING=air circulation} currently on {VALUE=seat alerts} +- has i shut {VALUE=off} the {SETTING=cooling} for the {SETTING=steering wheel} +- have i got more {SETTING=juice} left +- have i got much {SETTING=petrol} left +- have i got the necessary amount of {SETTING=diesel} remaining +- have i got the necessary amount of {SETTING=gas} +- have i got the right {SETTING=tire pressure} level +- have we turn the {SETTING=back pedestrian warner} status still to {VALUE=economy} +- have you {VALUE=resume} my {SETTING=max defrost} +- how am i doing on {SETTING=fuel} +- how are we doing for {SETTING=diesel} +- how are you doing on {SETTING=gas} +- how full is my vehicle's {SETTING=gasoline tank} +- how full is {SETTING=tank} +- how much do i still have left in {SETTING=tank} +- how much {SETTING=fuel} remaining +- how much {SETTING=gas} i currently have in {SETTING=tank} +- how much {SETTING=gasoline} +- how much {SETTING=gasoline} is currently remaining in car +- how much is still in my {SETTING=gas tank} +- how much of {SETTING=tank} is currently empty +- how much of the {SETTING=diesel} do you have left over +- how much of the {SETTING=fuel} do i still have +- how much of the {SETTING=fuel} will there be +- how much {SETTING=pressure} is in the {SETTING=tires} +- how soon is there a need to get some {SETTING=gasoline} next +- how's current {SETTING=pressure} in my {SETTING=tires} looking +- how's {SETTING=gas} status +- how's my {SETTING=gas} +- how's the {SETTING=petrol} +- how's the {SETTING=pressure} level of the {SETTING=drivers tires} +- i just need to know the current setting of the {SETTING=rear pedestrian alert} +- i need a reminder if i ever adjust the {SETTING=temperature} 2 {AMOUNT=minimum} +- i need to know what {SETTING=pressure} my {SETTING=tires} are at +- i need to know what the {SETTING=backup sensor} mechanism is +- i want an update about the {SETTING=temperature} of the {SETTING=front combined} part of the {SETTING=car} +- i want an update on my {SETTING=pressure} in {SETTING=tires} +- i want to hear an update on my {SETTING=petrol} levels state +- i want to hear an update on the {SETTING=collision distance} +- i want you to update me on {SETTING=heat} +- i want you to update me on what setting the {SETTING=back right air flow} will be sent through +- i would like to know if the {SETTING=rear window defogger} is turned {VALUE=on} +- i would like to know whether i am {VALUE=using} the {SETTING=vents} +- i would really like to know if the {SETTING=windshield defog} has been {VALUE=activated} +- i'd like to know if the {SETTING=change lane alert} been {VALUE=on} +- i'd like to verify that the {SETTING=side blind zone alert} is {VALUE=on} +- i'd like to verify that we set only the {SETTING=back hvac} {VALUE=on} +- i'd like you to remind me if we have switched {VALUE=off} the {SETTING=driver drowsiness detection alerts} +- i'd really like to have an update on how much {SETTING=pressure} is in my {SETTING=tires} +- inform me status of {SETTING=passengers heat} +- inform me the setting of {SETTING=blind spot signal} +- inform me what the {SETTING=pedestrian detector} are modified to +- inform me what's the {SETTING=back cross traffic alert} +- inform me whether the current status of {SETTING=auto ac} controls is set to {VALUE=roof} +- inform the status of {SETTING=heat} +- inform what {SETTING=petrol} is at +- inform what state of {SETTING=back air fan speed} is modified to +- inform what's status of {SETTING=heaters} +- inform which {SETTING=forward brakes} controls is {VALUE=deactivated} +- is {SETTING=alert types} mode {VALUE=deactivated} +- is {SETTING=back blower} level systems {VALUE=deactivated} +- is current state for {SETTING=lca} {VALUE=synch} +- is {SETTING=forward automatic brake} system {VALUE=deactivated} +- is {SETTING=front gap} mechanisms {VALUE=deactivated} +- is {SETTING=front pedestrian notification} systems {VALUE=activated} +- is it possible to check a {SETTING=tire pressure} levels update +- is it possible to give me what my current state for {SETTING=fan} is changed to +- is it possible to remind me what {SETTING=petrol} percentage is right now +- is it possible to take me to how much of my {SETTING=diesel} is left +- is it possible to view if the {SETTING=tires} are {SETTING=overinflated} +- is {SETTING=lane change detection} system {VALUE=deactivated} +- is {SETTING=lane changing alert} mechanism {VALUE=off} or {VALUE=on} +- is level of my {SETTING=air blower} set at {AMOUNT=max} stage +- is {SETTING=maximal defrost} {VALUE=on} +- is {SETTING=maximum defrost} even {VALUE=on} +- is my {SETTING=alert types} controls {VALUE=on} or {VALUE=off} +- is my {SETTING=alerts} {VALUE=deactivated} +- is my {SETTING=blind spot alarm} {VALUE=activated} +- is my {SETTING=collision alert} mode {VALUE=deactivated} +- is my current setting for {SETTING=heaters} modified to {VALUE=alert and brake and steer} +- is my current status for {SETTING=temp} still set on {VALUE=activated} +- is my current {SETTING=tire pressure} levels alright +- is my {SETTING=equalizer surround} changed to {AMOUNT=+5} +- is my {SETTING=fca} system {VALUE=on} or {VALUE=off} +- is my {SETTING=front fans speed} at {AMOUNT=eleven} +- is my {SETTING=heat} {VALUE=activated} +- is my level of my {SETTING=back air blowers} settings {VALUE=on} or {VALUE=off} +- is my {SETTING=parking assistant} setting {VALUE=deactivated} +- is my {SETTING=rear cross traffic alert} {VALUE=on} +- is my {SETTING=rear traffic alert} {VALUE=deactivated} +- is my {SETTING=volume} turned two the {AMOUNT=max} stage +- is my {SETTING=windshield defrost} system {VALUE=off} +- is {SETTING=park assist} mechanism {VALUE=on} +- is {SETTING=passenger's side heater} mechanism {VALUE=off} or {VALUE=on} +- is {SETTING=side mirror defroster} mode {VALUE=on} +- is {SETTING=tank} still empty +- is the {SETTING=air conditioning} {VALUE=running} +- is the {SETTING=alerts} mode {VALUE=on} or {VALUE=off} +- is the {SETTING=automatic brake} systems {VALUE=on} +- is the {SETTING=back pedestrian alert} mechanisms {VALUE=deactivated} +- is the {SETTING=back pedestrian notifications} system {VALUE=activated} +- is the {SETTING=defroster} mechanism {VALUE=on} +- is the {SETTING=drowsy driver alert} {VALUE=on} right now +- is the {SETTING=forward collision alert} sound {VALUE=enabled} +- is the {SETTING=forward pedestrian monitor} controls {VALUE=activated} +- is the {SETTING=forward pedestrian monitor} mechanisms {VALUE=deactivated} +- is the {SETTING=fuel} going to be sufficient +- is the {SETTING=heaters} setting on my {SETTING=rear} {VALUE=enabled} +- is the {SETTING=heating} {VALUE=off} +- is the {SETTING=parallel parking assist} systems {VALUE=deactivated} +- is the {SETTING=parallel parking} {VALUE=on} or {VALUE=off} +- is the {SETTING=parking assistant} {VALUE=disabled} or not +- is the {SETTING=pedestrian notification} {VALUE=deactivated} +- is the {SETTING=petrol} {VALUE=low} +- is the {SETTING=pressure} in {SETTING=tires} at the right level +- is the {SETTING=rear combined air delivery mode} controls {VALUE=deactivated} +- is the {SETTING=rear temp} set to {AMOUNT=minimum} +- is the setting of the {SETTING=air conditioning} turned to {VALUE=synchroniziation} +- is the {SETTING=side blind spot checking} mechanisms {VALUE=off} +- is the {SETTING=side mirror heater} {VALUE=on} or {VALUE=off} +- is the {SETTING=sound volume} at the {AMOUNT=max} +- is the {SETTING=surround sound equalizer} turned to {AMOUNT=+6} +- is the {SETTING=tire pressure} levels for the {SETTING=front left} getting {VALUE=low} at all +- is the {SETTING=tiredness alert} controls {VALUE=activated} +- is there a need to stop to {SETTING=fuel up} +- is there more {SETTING=fuel} remaining +- is there still enough {SETTING=gas} remaining +- is {SETTING=treble equalizer} switched to {AMOUNT=-6} +- is {SETTING=treble equalizer} switched to {AMOUNT=plus five} +- is {SETTING=volume} level set at {AMOUNT=5} +- is we still on {VALUE=high medium} mode for state for {SETTING=a/c} +- left over {SETTING=diesel} please +- let me know is {SETTING=cross traffic alert} control {VALUE=off} +- let me know is {SETTING=maximum defrost} modes {VALUE=off} +- let me know is {SETTING=parking assistance} {VALUE=off} +- let me know is the {SETTING=blind spot alarm} setting {VALUE=on} +- let me know is the {SETTING=side mirror defroster} modes {VALUE=off} +- let me know the {SETTING=temperature} +- let me know what is {SETTING=back pedestrian checking} setting set at +- let me know what is my {SETTING=heat mode} system at +- let me know what is the {SETTING=front combined air delivery} at +- let me know what is the {SETTING=lane shift monitoring} +- let me know what is the status of {SETTING=side mirror heating} +- let me know what the {SETTING=pressure} levels of {SETTING=back tires} is at +- let me know what's {SETTING=air delivery control} mode set to +- let me know what's {SETTING=distance} mechanism set to +- let me know what's {SETTING=forward brake} switched to +- let me know what's {SETTING=front pedestrian detections} controls at +- let me know, did we turn {VALUE=on} the {SETTING=side window demister} +- let us check if the {SETTING=automatic vents} is switched {VALUE=on} in the front +- let's confirm that the {SETTING=auto heaters in back} is {VALUE=enabled} +- let's confirm that the {SETTING=back auto heaters} is {VALUE=activated} +- my {SETTING=dds} status +- my {SETTING=pedestrian detections} status +- now what about the {SETTING=petrol} +- okay computer, has the {SETTING=air circulator} been changed to {VALUE=use fresh air} +- {SETTING=passenger air mode control} mechanism is {VALUE=activated} +- please give me a rundown on what the {SETTING=pedestrian detections} is set at now +- please give me the current {SETTING=diesel} amount +- please tell me the current {SETTING=parking camera} setting +- remaining {SETTING=gas} +- remind me my {SETTING=co-driver's side tire pressure} level +- remind me what current {SETTING=gas} amounts is at +- setting on the {SETTING=back heating} +- setting on the {SETTING=maximal defrost} +- should i stop at a {SETTING=fuel} station +- should we get {SETTING=diesel} soon +- should we stop at a {SETTING=fuel} station to get more {SETTING=fuel} +- status of {SETTING=pedestrian monitor} +- status update {SETTING=back fan control speed} +- take me to current {SETTING=petrol} status +- take me to my {SETTING=fuel tank} +- take me to the {SETTING=petrol} +- tell me current {SETTING=gasoline} level +- tell me current {SETTING=heated side mirror} mechanism +- tell me how much {SETTING=fuel} is currently remaining +- tell me is the {SETTING=blind zone checker} modes {VALUE=on} +- tell me is the {SETTING=rear defroster} {VALUE=on} +- tell me the status of my {SETTING=temperature} +- tell me what {SETTING=air circulation} is set at +- tell me what is {SETTING=air conditioning} at +- tell me what is {SETTING=front collision system} set to +- tell me what is {SETTING=lane change notifications} changed to +- tell me what is my {SETTING=temp} +- tell me what is the {SETTING=driver checking type} at +- tell me what is the status of the {SETTING=front collision} +- tell me what my level of {SETTING=blower} is switched 2 +- tell me what's {SETTING=drowsiness alert notification} control switched to +- tell me what's {SETTING=gas} at +- tell me what's my {SETTING=air conditioning} set to +- tell me what's my {SETTING=airflow mode control} changed too +- tell me what's my {SETTING=ventilation} modified to +- tell me what's the {SETTING=assisted parking} +- tell me what's the current {SETTING=heat} +- tell me what's the {SETTING=rear combined air flow} modified to +- tell me what's the {SETTING=rear temp} settings +- tell me what's the {SETTING=temp} +- tell me whether i {VALUE=synched} {SETTING=vents} +- tell me whether the current status of {SETTING=forward automatic brakes} systems is set on {VALUE=recirculated air} +- the status of my {SETTING=front collision} +- {SETTING=tire pressure} level update please +- {SETTING=tire pressure} update please +- update for {SETTING=cooling} mechanism +- update me on {SETTING=temp} +- update me whether my state of {SETTING=maximum defrost} is {VALUE=deactivated} +- update on my {SETTING=diesel} percentage state +- update on my {SETTING=gasoline} level state please +- update on {SETTING=passengers tire pressure} +- update on the {SETTING=tire pressure} level please +- update status on {SETTING=back pedestrian monitor} mechanism +- view how much of the {SETTING=gas} i've got +- view if the {SETTING=tires} are {SETTING=underinflated} +- what are the {SETTING=automatic brakes} set to +- what are the {SETTING=forward automatic brakes} set at at the moment +- what are the {SETTING=forward brakes} set to currently +- what are the {SETTING=front airflow} set 2 +- what are the {SETTING=rear window defroster} set two +- what current state is {SETTING=rearview bumper alert} settings turned to +- what is {SETTING=air blowers} level modes switched to +- what is {SETTING=autonomous braking} at +- what is current {SETTING=forward pedestrian detection} controls +- what is {SETTING=forward braking alert} setting switched too +- what is {SETTING=forward gap} set too +- what is {SETTING=front left temperature} modes +- what is going on with the current {SETTING=lane switch alert} +- what is {SETTING=heating} mode set at +- what is {SETTING=lane switch alert} modified 2 +- what is my current {SETTING=air pressure} level of the {SETTING=tires} looking like +- what is my current {SETTING=tire pressure} level at +- what is my {SETTING=diesel} at at the moment +- what is my {SETTING=heat mode} controls turned to +- what is my {SETTING=petrol tank} status +- what is my {SETTING=right rear air direction control} settings in +- what is my {SETTING=tire pressure} for the at +- what is {SETTING=petrol} at +- what is {SETTING=pressure} like in {SETTING=tires} +- what is {SETTING=rear pedestrian alert notifications} switched to +- what is status of {SETTING=parking assistant} +- what is the current {SETTING=tire pressure} level +- what is the {SETTING=front temp} setting +- what is the {SETTING=gas} percentage state +- what is the {SETTING=heating mode} switched 2 +- what is the operating status of the {SETTING=air conditioning} mechanism +- what is the operating status of the {SETTING=tiredness detections} settings +- what is the operational status of the {SETTING=forward crash response} +- what is the {SETTING=right air delivery} controls changed two +- what is the status of the {SETTING=driver alert types} control +- what is the {SETTING=temp} in {SETTING=front} +- what is the {SETTING=vents} {VALUE=synchronized} to +- what is turned {VALUE=on} in the {SETTING=back fans speed} +- what is turned {VALUE=on} in the {SETTING=side mirror warming} +- what kind of {SETTING=co-driver air direction} are {VALUE=on} +- what kind of {SETTING=pressure} are the {SETTING=tires} at +- what kind of {SETTING=vents} are {VALUE=on} +- what setting is my {SETTING=blind spot signal} settings in +- what settings are we using for the {SETTING=forward collision alert} +- what settings are we using for the {SETTING=front crash response} now +- what's {SETTING=change lane monitor} switched to +- what's {SETTING=climate mode} status +- what's current {SETTING=heating mode} systems +- what's current status for stage of {SETTING=rear air fans} currently turned 2 +- what's {SETTING=forward crash response} switched 2 +- what's {SETTING=forward pedestrian detection} set to +- what's {SETTING=front pedestrian warner} set to +- what's {SETTING=fuel} at +- what's {SETTING=gasoline} level at +- what's my {SETTING=fuel tank} status +- what's my {SETTING=hvac} +- what's {SETTING=pressure} in {SETTING=tires} +- what's {SETTING=right back side airflow direction} settings set to +- what's the {SETTING=airflow mode control} changed to +- what's the {SETTING=alerts} modes set to +- what's the current setting for {SETTING=air flow mode control} still changed to +- what's the {SETTING=driver drowsiness monitoring} systems set to +- what's the {SETTING=fuel} at +- what's the {SETTING=heating} s {VALUE=synchroniziation} setting +- what's the operational status of the {SETTING=rearview bumper} +- what's the {SETTING=rear defroster} +- what's the status of the {SETTING=lane change alarm} +- what's the {SETTING=temp} systems +- what's up with the {SETTING=tiredness checker} system +- when do we need to {SETTING=refill gas} again +- which {SETTING=climate} are we in currently +- will i be able to just find out what the {SETTING=air delivery} in {SETTING=rear combined} will be going through right now +- will i have a sufficient amount of {SETTING=fuel} +- will {SETTING=petrol} be sufficient +- will there be enough {SETTING=petrol} +- will you confirm how i'm doing for {SETTING=petrol} +- will you confirm the state for {SETTING=parking assistance} +- will you display an update on my current {SETTING=pressure} levels in my {SETTING=tires} state +- will you pull up how my {SETTING=tire pressure} is +- will you update me what the current {SETTING=tire pressure} levels for the {SETTING=right side} is +- will you view if the {SETTING=tires} are {SETTING=underinflated} +- would you give me the rundown on what the {SETTING=front pedestrian warning} is set at +- would you inform me the {SETTING=ventilation} s setting +- would you inform what the {SETTING=park assist} has been changed to +- would you just remind me how much {SETTING=fuel} i've currently got +- would you just remind me the {SETTING=rear pedestrian detection} s settings +- would you please check the {SETTING=parking assist} is turned {VALUE=on} +- would you view the {SETTING=gas} +- you absolutely certain the {SETTING=airflow} is going through {VALUE=floor and vent} +- you need to tell me the status of my level of {SETTING=front air blower} + + +## VEHICLE_SETTINGS_DECLARATIVE +- {SETTING=body} are a bit too {VALUE=toasty} +- i am a little {VALUE=cool} in {SETTING=right side} +- i am {VALUE=cold} in here +- i am {VALUE=frozen} in {SETTING=left front} +- i am too friggin {VALUE=frosty} in the {SETTING=driver side} +- i am {VALUE=warm} +- i am way too damn {VALUE=cool} in this {SETTING=passenger's side} +- i are as {VALUE=shivering} as a willy +- i feel a bit {VALUE=cold} on the {SETTING=right} +- i feel a bit {VALUE=shivering} +- i feel a little darn {VALUE=warm} +- i feel a little friggin {VALUE=burning up} in here +- i feel as {VALUE=frosty} as an oven in this {SETTING=right} +- i feel {VALUE=balmy} in here +- i feel like my {SETTING=co-driver} is gotten kind of {VALUE=cold} +- i feel like my {SETTING=front left} s getting {VALUE=shivering} +- i feel like my {SETTING=left back} is a little {VALUE=balmy} +- i feel like the {SETTING=right rear side} s gotten a bit too {VALUE=toasty} +- i feel somewhat {VALUE=frozen} in here +- i feel {VALUE=toasty} over here +- i find it to be a little {VALUE=frigid} +- i think my {SETTING=right rear side} might be way too {VALUE=cool} +- i think {SETTING=rear mirror} have {VALUE=frost} over +- i think {SETTING=rearview mirror} have {VALUE=frost} over +- i think this {SETTING=back left side} might be way a bit too {VALUE=freezing} +- i'm {VALUE=cold} in here +- i'm {VALUE=shivering} in here +- i'm feeling cold +- I'm cold +- I am feeling cold +- i'm way too damn {VALUE=warm} in the {SETTING=front right side} +- is kind of {VALUE=chilly} in the {SETTING=rear left} +- is somewhat {VALUE=balmy} in the {SETTING=back right} +- it feels a bit {VALUE=freezing} in this {SETTING=rear left} +- it feels a bit too {VALUE=cool} on the {SETTING=co-driver's} +- it feels as {VALUE=frigid} as a barbeque in this {SETTING=back} +- it feels {VALUE=chilly} in this {SETTING=co-drivers} +- it feels {VALUE=cold} in this {SETTING=right back side} +- it feels {VALUE=cold} over here +- it feels {VALUE=freezing} in here +- it gets a {VALUE=nippy} {SETTING=left back side} +- it is a little {VALUE=humid} in here +- it is a little {VALUE=warm} in my {SETTING=back right} +- it is as {VALUE=burning up} as a furnace in here +- it is {VALUE=freezing} in here +- it is kind of {VALUE=humid} in here +- it is somewhat {VALUE=nippy} in the {SETTING=right front} +- it seems {VALUE=balmy} than my ideal temperature +- it's a little {VALUE=shivering} on the {SETTING=feet} +- it's {VALUE=balmy} in this {SETTING=passenger side} +- it's {VALUE=cold} in this {SETTING=co-driver's side} +- it's {VALUE=cold} in this {SETTING=driver's} +- it's darn {VALUE=cold} in here +- it's {VALUE=hotter} in this {SETTING=back} than it is outside +- it's too {VALUE=balmy} than it could be +- it's too {VALUE=chilly} than it could be +- it's too {VALUE=colder} than it could be +- it's {VALUE=warm} +- it's {VALUE=warmer} in this {SETTING=co-driver's} than it is outside +- my {SETTING=left front} feels like {VALUE=freezer} +- my {SETTING=passenger} feels like {VALUE=freezer} +- my {SETTING=passenger} is {VALUE=warm} +- my {SETTING=passengers} in the {SETTING=back} is a bit {VALUE=frozen} +- our {SETTING=body} feel like way too {VALUE=burning up} +- our {SETTING=hand} feel like way too {VALUE=nippy} +- {SETTING=passenger's side} feel a bit too {VALUE=burning up} +- {SETTING=temp} feels like {VALUE=furnace} +- {SETTING=temp} feels like too {VALUE=oven} +- {SETTING=temp} is getting a little {VALUE=burning up} +- {SETTING=temperature} feels like somewhat {VALUE=cold} +- {SETTING=temperature} is getting way too {VALUE=low} +- the {SETTING=air} feels like a bit {VALUE=low} +- the {SETTING=air temp} seems to be a bit too on the {VALUE=burning up} side +- the {SETTING=air temperature} seems to be kind of on the {VALUE=balmy} side +- the {SETTING=back right} is way {VALUE=cooler} than it ought to be +- the {SETTING=body} feels like way too {VALUE=hot} +- the {SETTING=cold} is getting unbearable +- the {SETTING=cold} is gotten unbearable +- the {SETTING=cold} is gotten undesirable +- the {SETTING=cold} is unbearable +- the {SETTING=driver} is a bit too {VALUE=burning up} +- the {SETTING=driver's side} is way {VALUE=hotter} than it ought to be +- the {SETTING=heat} feels like intolerable +- the {SETTING=left rear side} feels a little {VALUE=warm} +- the {SETTING=passenger} in {SETTING=back right} is somewhat {VALUE=toasty} +- the {SETTING=right rear side} is as {VALUE=shivering} as a potato +- the {SETTING=temp} is somewhat {VALUE=high} now +- the {SETTING=temp} is way too {VALUE=high} now +- this {SETTING=driver} are all so {VALUE=frigid} +- this {SETTING=driver} should not have to be this {VALUE=frigid} +- this is a bit too {VALUE=freezing} for a {SETTING=front right} is way +- this {SETTING=left back} are all so {VALUE=chilly} +- this {SETTING=left rear} should not have to be this {VALUE=hot} +- this {SETTING=left side} is way {VALUE=hot} than it ought to be +- this {SETTING=passenger side} is way {VALUE=freezing} than it ought to be +- too {VALUE=frosty} +- we feels like {VALUE=hot} +- we feels like {VALUE=shivering} +- why is {SETTING=back right side} {VALUE=frosty} +- why is {SETTING=front right} {VALUE=nippy} +- why is it so {VALUE=cool} in here +- why is it so {VALUE=freezing} in here + + +> # Entity definitions + +$AMOUNT:simple + +$INDEX:simple + +$SETTING:simple + +$TYPE:simple + +$UNIT:simple + +$VALUE:simple + + +> # PREBUILT Entity definitions + + +> # Phrase list definitions + +$setting_value:phraseList +- above, above below, above below vent, activate, activate all, activate auto, activate automatic, activate both, activated, activating, active, active beeps, air circulate, alert, alert and brake, alert and brake and steer, alert and brake and steering, alert and brakes, alert and brakes and steer, alert and brakes and steering, alert and braking, alert and braking and steer, alert and braking and steering, alert and the brake, alert and the brakes, alert and the braking, alert brake, alert brake steer, alert brake steering, alert brakes, alert brakes steer, alert brakes steering, alert braking, alert braking steer, alert braking steering, alert seat, alert sound, alerts, alerts and brake, alerts and brake and steer, alerts and brake and steering, alerts and brakes, alerts and brakes and steer, alerts and brakes and steering, alerts and braking, alerts and braking and steer, alerts and braking and steering, alerts and the brake, alerts and the brakes, alerts and the braking, alerts brake, alerts brake steer, alerts brake steering, alerts brakes, alerts brakes steer, alerts brakes steering, alerts braking, alerts braking steer, alerts braking steering, alerts seat, alerts sound, all activated, all active, all disabled, all enabled, all inactivated, all inactive, all sync, all synch, all synchroniziation, allow, allowed, allowing, audible, auto, auto activate, auto active, auto circulate, auto deactivate, auto disabled, auto enabled, auto inactive, automate, automated, automatic, automatic circulate, automating, beep, beeps, began, begin, begin recirculating, begin using, beginning, begun, below, below air vent, below air ventilation, below vent, below ventilation, big, big distance, big gap, big length, big margin, big space, big spacing, biggest, biggest distance, biggest gap, biggest length, biggest margin, biggest space, biggest spacing, boost, both activated, both active, both disabled, both enabled, both inactivated, both inactive, bottom, bottom air vent, bottom air ventilation, bottom and the top, bottom and top, bottom top, bottom top vent, bottom vent, bottom ventilation, brake, brake and alert, brake and alerts, brake and steer, brake and steer and alert, brake and steer and alerts, brake and steering, brake and steering and alert, brake and steering and alerts, brakes, brakes and alert, brakes and alerts, brakes and steer, brakes and steer and alert, brakes and steer and alerts, brakes and steering, brakes and steering and alert, brakes and steering and alerts, braking, braking and alert, braking and alerts, braking and steer, braking and steer and alert, braking and steer and alerts, braking and steering, braking and steering and alert, braking and steering and alerts, cancel, canceled, canceling, cancelled, cancelling, ceiling, ceiling floor, ceiling floor vent, chair, chilly, chime, chime alert, chime alerts, chime sound, chimes, circulate, circulate air, circulated, circulating, circulating fresh air, clean air, clear, cleared, clearing, close, close distance, close gap, close length, close margin, close space, close spacing, closest, closest distance, closest gap, closest length, closest margin, closest space, closest spacing, cold, colder, comfort, comfortable, comfy, connect, connected, connecting, cool, cool off, cooled, cooled off, cooler, crank, crank up, deactivate, deactivate all, deactivate both, deactivated, deactivating, decrease, decrement, defog, defogged, defogging, defrost, delete, deleted, deleting, ding, disable, disable all, disable auto, disable automatic, disable both, disabled, disabling, disarm, disarmed, disarming, disconnect, disconnected, disconnecting, discontinue, discontinued, discontinuing, disengage, disengaged, disengaging, down, drop, dropped, economic, economy, enable, enable all, enable auto, enable automatic, enable both, enabled, enabling, end, ended, ending, engage, engaged, engaging, execute, executed, executing, exit, exited, exiting, fan, fan only, far, far distance, far gap, far length, far margin, far space, far spacing, farthest, farthest distance, farthest gap, farthest length, farthest margin, farthest space, farthest spacing, feet, feet air vent, feet air ventilation, feet vent, feet ventilation, feet windshield, floor, floor and instrument, floor and roof, floor and the vent, floor and the vent and roof, floor and the vent and the roof, floor and the vent and the windshield, floor and the vent and windshield, floor and the windshield, floor and vent, floor and vent and roof, floor and vent and the roof, floor and vent and the windshield, floor and vent and windshield, floor and windshield, floor roof, floor roof vent, floor windscreen, freezing, fresh air, furthest, furthest distance, furthest gap, furthest length, furthest margin, furthest space, furthest spacing, great, great distance, great gap, great length, great margin, great space, great spacing, greatest, greatest distance, greatest gap, greatest length, greatest margin, greatest space, greatest spacing, heat, heated, hi, hi med, hi mid, high, high medium, higher, hike, hot, hotter, impact warning seat, inactivated, inactive, increase, increment, initiate, initiated, initiating, instrument and floor, instrument panel, instrument panel vents, kill, large, large distance, large gap, large length, large margin, large space, large spacing, largest, largest distance, largest gap, largest length, largest margin, largest space, largest spacing, lessen, lo, lo med, lo mid, long, long distance, long gap, long length, long margin, long space, long spacing, longest, longest distance, longest gap, longest length, longest margin, longest space, longest spacing, loud, louder, low, low medium, lower, lowered, med, med distance, med gap, med hi, med length, med lo, med margin, med space, med spacing, medium, medium distance, medium gap, medium high, medium length, medium low, medium margin, medium space, medium spacing, mid, mid distance, mid gap, mid hi, mid length, mid lo, mid margin, mid space, mid spacing, middle, middle distance, middle gap, middle high, middle length, middle low, middle margin, middle space, middle spacing, more quiet, mute, near, near distance, near gap, near length, near margin, near space, near spacing, nearest, nearest distance, nearest gap, nearest length, nearest margin, nearest space, nearest spacing, noise, noises, off, on, open, opened, opening, operate, operated, operating, outside air, pulsing seat vibrations, quiet, quieter, quit, quitting, raise, raised, ran, recirculate, recirculate air, recirculated, recirculated air, recirculating, recirculating air, recirculating fresh air, reduce, refreshed air, remove, removed, removing, resume, resumed, resuming, rise, roof, roof and floor, roof and the floor, roof and vent, roof bottom, roof bottom vent, roof top, roof vent, roof ventilation, run, running, safety alert seat, safety alert seats, safety alerts seat, safety alerts seats, safety seat, safety vibration seat, seat, seat alert, seat alerts, seat notification, seat notifications, seat off, seat on, seat vibration, seat vibrations, short, short distance, short gap, short length, short margin, short space, short spacing, shortest, shortest distance, shortest gap, shortest length, shortest margin, shortest space, shortest spacing, shut down, shutdown, silent, small, small distance, small gap, small length, small margin, small space, small spacing, smallest, smallest distance, smallest gap, smallest length, smallest margin, smallest space, smallest spacing, sound, sound alert, sound alerts, sounds, start, start up, start using, steer, steer and brake, steer and brakes, steer and braking, steering, steering and brake, steering and brakes, steering and braking, stop, stop using, sync, sync all, sync everything, sync on, sync to all, synced, synced all, synced to all, synch, synch all, synch to all, synched, synched all, synched to all, synching, synching all, synching to all, synchronize, synchronize all, synchronize to all, synchronized, synchronized all, synchronized to all, synchronizing, synchronizing all, synchronizing to all, syncing, syncing all, syncing to all, terminate, terminated, terminating, top, top and bottom, top bottom, top bottom vent, top ventilation, unmute, unsync, unsync all, unsync to all, unsynced, unsynced all, unsynced to all, unsynch, unsynch all, unsynch everything, unsynch to all, unsynched, unsynched all, unsynched to all, unsynching, unsynching all, unsynching to all, unsynchronize, unsynchronize all, unsynchronize to all, unsynchronized, unsynchronized all, unsynchronized to all, unsynchronizing, unsynchronizing all, unsynchronizing to all, unsyncing, unsyncing all, unsyncing to all, up, use, used, vent, vent and floor, vent and roof, vent and roof and floor, vent and the roof, vent and the roof and floor, vent and the windshield, vent and the windshield and floor, vent and windshield, vent and windshield and floor, vent ceiling, vent floor windscreen, vent floor windshield, vent top, vent windscreen, ventilation, ventilation floor windshield, ventilation roof, ventilation windshield, vibrate, vibrated, vibrating, vibration off, vibration on, warm, warmed, warmer, warning sound, windscreen, windscreen floor, windshield, windshield and floor, windshield and vent, windshield feet, windshield floor, windshield floor vent, windshield vent +$to_spelling_variants:phraseList +- 2, to, too, two +$setting_name_active_safety:phraseList +- 360 park assist, 360 parking assistant, 360 parking notification, accident alert, accident alerts, accident assist, accident avoidance brake, accident avoidance brakes, accident avoidance braking, accident awareness, accident brake, accident brakes, accident braking, accident detector, accident detector brake, accident detector brakes, accident detector braking, accident prevention, accident prevention alert, accident prevention alerts, accident prevention brake, accident prevention brakes, accident prevention braking, accident saver, accident severity reduction brake, accident severity reduction brakes, accident severity reduction braking, accident warnings, active alert, active alerts, active parking assist, active parking assistance, adaptive auto brake, adaptive auto brakes, adaptive auto braking, adaptive automatic brake, adaptive automatic brakes, adaptive automatic braking, adaptive brake, adaptive brake assist, adaptive brakes, adaptive brakes assist, adaptive braking, adaptive braking assist, adaptive distance, adaptive forward brake, adaptive forward brakes, adaptive forward braking, adaptive forward collision brake, adaptive forward collision brakes, adaptive forward collision braking, adaptive front brake, adaptive front brakes, adaptive front braking, adaptive front collision brake, adaptive front collision brakes, adaptive front collision braking, adjacent blind spot alarm, adjacent blind zone alarm, adjacent blind zone alert, adjacent blind zone alerts, adjacent blind zone sensor, adjacent lane blind spot alert, adjacent lane blind spot alerts, adjacent lane blind spot detector, adjacent lane blind spot warning, adjustable alert, adjustable alerts, advance collision alert, advance collision alerts, advanced blind zone, advanced parking guidance, advanced warning collision alert, advanced warning collision alerts, aggressive drive blind spot, ahead behind ultrasonic parking, alarm choice, alarm notification types, alarm notifications, alarm preference, alarm sounds, alarm types, alarms, alert, alert actions, alert adaptability, alert adjuster, alert adjustment, alert alternative, alert alternatives, alert assistance, alert assistant, alert back pedestrians, alert back people, alert blind spot, alert category, alert changer, alert changing lanes, alert choice, alert choices, alert choices types, alert classification, alert configuration, alert confirmation selection, alert decisions, alert delivery method, alert form, alert format, alert format options, alert formatting, alert function, alert kinds, alert lane change, alert lane changes, alert management, alert menu, alert method, alert methods, alert modification, alert modifications, alert module, alert notification, alert notification choices, alert notification options, alert notification preference, alert notification preferences, alert notification selection, alert notification type, alert notification types, alert notifications, alert option, alert options, alert output types, alert panel, alert pedestrians, alert pedestrians forward, alert pedestrians front, alert people, alert people forward, alert people front, alert personalization, alert preference, alert preference type, alert preferences, alert rear pedestrians, alert rear people, alert safety seat, alert selection, alert selections, alert signals, alert source, alert style, alert technology, alert transmission options, alert transmissions, alert type, alert type selection, alert types, alert types notification, alert variation, alert variation preferences, alert variations, alert warning indicators, alerting blind spot, alerts, alerts actions, alerts adaptability, alerts adjuster, alerts adjustment, alerts alternative, alerts alternatives, alerts assistance, alerts assistant, alerts back pedestrians, alerts back people, alerts blind spot, alerts category, alerts changer, alerts changing lanes, alerts choice, alerts choices, alerts choices types, alerts classification, alerts configuration, alerts confirmation selection, alerts decisions, alerts delivery method, alerts form, alerts format, alerts format options, alerts formatting, alerts function, alerts kinds, alerts lane change, alerts lane changes, alerts management, alerts menu, alerts method, alerts methods, alerts modification, alerts modifications, alerts module, alerts notification, alerts notification choices, alerts notification options, alerts notification preference, alerts notification preferences, alerts notification selection, alerts notification type, alerts notification types, alerts notifications, alerts option, alerts options, alerts output types, alerts panel, alerts pedestrians, alerts pedestrians forward, alerts pedestrians front, alerts people, alerts people forward, alerts people front, alerts personalization, alerts preference, alerts preference type, alerts preferences, alerts rear pedestrians, alerts rear people, alerts safety seat, alerts selection, alerts selections, alerts signals, alerts source, alerts style, alerts technology, alerts transmission options, alerts transmissions, alerts type, alerts type selection, alerts types, alerts types notification, alerts variation, alerts variation preferences, alerts variations, alerts warning indicators, all side parking assistant, amber lane change alert, amber lane change alerts, anti collision brake, anti collision brakes, anti collision braking, anti crash brake assistance, anti crash brakes assistance, anti crash braking assistance, approaching blind side warning, approaching blind spot alert, approaching blind spot alerts, approaching brake, approaching brakes, approaching braking, approaching vehicle blind spot detector, assisted brake, assisted brake guidance, assisted brakes, assisted brakes guidance, assisted braking, assisted braking guidance, assisted collision brake, assisted collision brakes, assisted collision braking, assisted forward back parking, assisted forward brake, assisted forward brakes, assisted forward braking, assisted forward end brake, assisted forward end brakes, assisted forward end braking, assisted forward rear parking, assisted front back parking, assisted front brake, assisted front brakes, assisted front braking, assisted front end brake, assisted front end brakes, assisted front end braking, assisted front rear parking, assisted parking, attention alarm, attention needed bells, audible parking alert, audible parking alerts, auto accident brake, auto accident brakes, auto accident braking, auto anterior brake, auto anterior brakes, auto anterior braking, auto avoid brake, auto avoid brakes, auto avoid braking, auto avoidance brake, auto avoidance brakes, auto avoidance braking, auto back collision parking helper, auto brake, auto brake alert, auto brake alerts, auto brake application, auto brake assist, auto brake assistance, auto brake check, auto brake collision, auto brake collision avoidance, auto brake collision reduction, auto brake collision severity avoidance, auto brake detection, auto brake detector, auto brake enable, auto brake engage, auto brake enhance, auto brake enhancement, auto brake feature, auto brake forward, auto brake forward end collision, auto brake front, auto brake front end collision, auto brake module, auto brake safety, auto brake safety feature, auto brake sensor, auto brake starter, auto brake stop, auto braker, auto brakes, auto brakes alert, auto brakes alerts, auto brakes application, auto brakes assist, auto brakes assistance, auto brakes check, auto brakes collision, auto brakes collision avoidance, auto brakes collision reduction, auto brakes collision severity avoidance, auto brakes detection, auto brakes detector, auto brakes enable, auto brakes engage, auto brakes enhance, auto brakes enhancement, auto brakes feature, auto brakes forward, auto brakes forward end collision, auto brakes front, auto brakes front end collision, auto brakes module, auto brakes safety, auto brakes safety feature, auto brakes sensor, auto brakes starter, auto brakes stop, auto braking, auto braking alert, auto braking alerts, auto braking application, auto braking assist, auto braking assistance, auto braking check, auto braking collision, auto braking collision avoidance, auto braking collision reduction, auto braking collision severity avoidance, auto braking detection, auto braking detector, auto braking enable, auto braking engage, auto braking enhance, auto braking enhancement, auto braking feature, auto braking forward, auto braking forward end collision, auto braking front, auto braking front end collision, auto braking module, auto braking safety, auto braking safety feature, auto braking sensor, auto braking starter, auto braking stop, auto collision brake, auto collision brakes, auto collision braking, auto collision prevention brake, auto collision prevention brakes, auto collision prevention braking, auto crash brake, auto crash brakes, auto crash braking, auto emergency brake, auto emergency brakes, auto emergency braking, auto engage brake collision prevention, auto engage brakes collision prevention, auto engage braking collision prevention, auto follow, auto forward brake, auto forward brake application, auto forward brake collision, auto forward brakes, auto forward brakes application, auto forward brakes collision, auto forward braking, auto forward braking application, auto forward braking collision, auto forward bumper brake, auto forward bumper brake detection, auto forward bumper brakes, auto forward bumper brakes detection, auto forward bumper braking, auto forward bumper braking detection, auto forward collision brake, auto forward collision brakes, auto forward collision braking, auto forward collision prevention brake, auto forward collision prevention brakes, auto forward collision prevention braking, auto forward end brake, auto forward end brakes, auto forward end braking, auto forward end collision brake, auto forward end collision brakes, auto forward end collision braking, auto forward pedestrian brake, auto forward pedestrian brakes, auto forward pedestrian braking, auto front brake, auto front brake application, auto front brake collision, auto front brakes, auto front brakes application, auto front brakes collision, auto front braking, auto front braking application, auto front braking collision, auto front bumper brake, auto front bumper brake detection, auto front bumper brakes, auto front bumper brakes detection, auto front bumper braking, auto front bumper braking detection, auto front collision brake, auto front collision brakes, auto front collision braking, auto front collision prevention brake, auto front collision prevention brakes, auto front collision prevention braking, auto front end brake, auto front end brakes, auto front end braking, auto front end collision brake, auto front end collision brakes, auto front end collision braking, auto front pedestrian brake, auto front pedestrian brakes, auto front pedestrian braking, auto frontal brake, auto frontal brakes, auto frontal braking, auto lock brake, auto lock brakes, auto lock braking, auto obstacle brake, auto obstacle brakes, auto obstacle braking, auto park, auto park assist, auto parking, auto parking alert, auto parking alerts, auto parking assistant, auto parking indicator, auto parking module, auto parking sensor, auto potential collision brake, auto potential collision brakes, auto potential collision braking, auto rear collision parking helper, auto safety brake, auto safety brakes, auto safety braking, auto sudden brake, auto sudden brakes, auto sudden braking, auto ultrasonic parking, automated brake, automated brakes, automated braking, automated collision brake, automated collision brakes, automated collision braking, automated emergency brake, automated emergency brakes, automated emergency braking, automated forward brake, automated forward brakes, automated forward braking, automated front brake, automated front brakes, automated front braking, automated parking, automated parking assist, automated parking assistant, automated parking warning, automated safety brake, automated safety brakes, automated safety braking, automatic accident brake, automatic accident brakes, automatic accident braking, automatic anterior brake, automatic anterior brakes, automatic anterior braking, automatic avoid brake, automatic avoid brakes, automatic avoid braking, automatic avoidance brake, automatic avoidance brakes, automatic avoidance braking, automatic back collision parking helper, automatic brake, automatic brake alert, automatic brake alerts, automatic brake application, automatic brake assist, automatic brake assistance, automatic brake check, automatic brake collision, automatic brake collision avoidance, automatic brake collision reduction, automatic brake collision severity avoidance, automatic brake detection, automatic brake detector, automatic brake enable, automatic brake engage, automatic brake enhance, automatic brake enhancement, automatic brake feature, automatic brake forward, automatic brake forward end collision, automatic brake front, automatic brake front end collision, automatic brake module, automatic brake safety, automatic brake safety feature, automatic brake sensor, automatic brake starter, automatic brake stop, automatic braker, automatic brakes, automatic brakes alert, automatic brakes alerts, automatic brakes application, automatic brakes assist, automatic brakes assistance, automatic brakes check, automatic brakes collision, automatic brakes collision avoidance, automatic brakes collision reduction, automatic brakes collision severity avoidance, automatic brakes detection, automatic brakes detector, automatic brakes enable, automatic brakes engage, automatic brakes enhance, automatic brakes enhancement, automatic brakes feature, automatic brakes forward, automatic brakes forward end collision, automatic brakes front, automatic brakes front end collision, automatic brakes module, automatic brakes safety, automatic brakes safety feature, automatic brakes sensor, automatic brakes starter, automatic brakes stop, automatic braking, automatic braking alert, automatic braking alerts, automatic braking application, automatic braking assist, automatic braking assistance, automatic braking check, automatic braking collision, automatic braking collision avoidance, automatic braking collision reduction, automatic braking collision severity avoidance, automatic braking detection, automatic braking detector, automatic braking enable, automatic braking engage, automatic braking enhance, automatic braking enhancement, automatic braking feature, automatic braking forward, automatic braking forward end collision, automatic braking front, automatic braking front end collision, automatic braking module, automatic braking safety, automatic braking safety feature, automatic braking sensor, automatic braking starter, automatic braking stop, automatic collision brake, automatic collision brakes, automatic collision braking, automatic collision prevention brake, automatic collision prevention brakes, automatic collision prevention braking, automatic crash brake, automatic crash brakes, automatic crash braking, automatic emergency brake, automatic emergency brakes, automatic emergency braking, automatic engage brake collision prevention, automatic engage brakes collision prevention, automatic engage braking collision prevention, automatic follow, automatic forward brake, automatic forward brake application, automatic forward brake collision, automatic forward brakes, automatic forward brakes application, automatic forward brakes collision, automatic forward braking, automatic forward braking application, automatic forward braking collision, automatic forward bumper brake, automatic forward bumper brake detection, automatic forward bumper brakes, automatic forward bumper brakes detection, automatic forward bumper braking, automatic forward bumper braking detection, automatic forward collision brake, automatic forward collision brakes, automatic forward collision braking, automatic forward collision prevention brake, automatic forward collision prevention brakes, automatic forward collision prevention braking, automatic forward end brake, automatic forward end brakes, automatic forward end braking, automatic forward end collision brake, automatic forward end collision brakes, automatic forward end collision braking, automatic forward pedestrian brake, automatic forward pedestrian brakes, automatic forward pedestrian braking, automatic front brake, automatic front brake application, automatic front brake collision, automatic front brakes, automatic front brakes application, automatic front brakes collision, automatic front braking, automatic front braking application, automatic front braking collision, automatic front bumper brake, automatic front bumper brake detection, automatic front bumper brakes, automatic front bumper brakes detection, automatic front bumper braking, automatic front bumper braking detection, automatic front collision brake, automatic front collision brakes, automatic front collision braking, automatic front collision prevention brake, automatic front collision prevention brakes, automatic front collision prevention braking, automatic front end brake, automatic front end brakes, automatic front end braking, automatic front end collision brake, automatic front end collision brakes, automatic front end collision braking, automatic front pedestrian brake, automatic front pedestrian brakes, automatic front pedestrian braking, automatic frontal brake, automatic frontal brakes, automatic frontal braking, automatic lock brake, automatic lock brakes, automatic lock braking, automatic obstacle brake, automatic obstacle brakes, automatic obstacle braking, automatic park, automatic park assist, automatic parking, automatic parking alert, automatic parking alerts, automatic parking assistant, automatic parking indicator, automatic parking module, automatic parking sensor, automatic potential collision brake, automatic potential collision brakes, automatic potential collision braking, automatic rear collision parking helper, automatic safety brake, automatic safety brakes, automatic safety braking, automatic sudden brake, automatic sudden brakes, automatic sudden braking, automatic ultrasonic parking, automation brake enhancement, automation brakes enhancement, automation braking enhancement, autonomous brake, autonomous brakes, autonomous braking, autopilot parking, auxiliary brake, auxiliary brakes, auxiliary braking, avoid collision brake, avoid collision brakes, avoid collision braking, avoidance brake, avoidance brakes, avoidance braking, back alert, back alerts, back assist, back avoidance cross traffic alert, back avoidance cross traffic alerts, back bumper alert, back bumper alerts, back bumper assist, back bumper cross traffic warning, back bumper parking assist, back bumper protection, back bumper view, back camera, back collision alert, back collision alerts, back cross alert, back cross alerts, back cross monitor, back cross traffic, back cross traffic alarm, back cross traffic alert, back cross traffic alert notification, back cross traffic alert notifications, back cross traffic alerts, back cross traffic alerts notification, back cross traffic alerts notifications, back cross traffic assist, back cross traffic assistance, back cross traffic avoidance, back cross traffic blindspot warning, back cross traffic checker, back cross traffic checking, back cross traffic collision alert, back cross traffic collision alerts, back cross traffic collision mitigation, back cross traffic collision warning, back cross traffic crash warning, back cross traffic detection, back cross traffic detections, back cross traffic detector, back cross traffic detectors, back cross traffic guidance, back cross traffic indicator, back cross traffic monitor, back cross traffic monitoring, back cross traffic notification, back cross traffic notifications, back cross traffic safety, back cross traffic sensor, back cross traffic warner, back cross traffic warning, back cross traffic warning indicator, back cross traffic warnings, back cross traffic zone, back cross warning, back crossing notification, back end brake assistance, back end brakes assistance, back end braking assistance, back end camera, back end parking assist, back end safety, back end traffic alert, back end traffic alerts, back end ultrasonic parking assist, back end warning, back forward park alarm, back front park alarm, back hazard safety, back object alert, back object alerts, back out alert, back out alerts, back out assist, back out indicator, back park assist, back parking alert, back parking alerts, back parking assist, back parking assist alert, back parking assist alerts, back parking assistance, back parking assistance alert, back parking assistance alerts, back parking help, back pedestrian alert, back pedestrian alert notification, back pedestrian alert notifications, back pedestrian alerts, back pedestrian alerts notification, back pedestrian alerts notifications, back pedestrian avoidance detection, back pedestrian checker, back pedestrian checking, back pedestrian detection, back pedestrian detections, back pedestrian detector, back pedestrian detectors, back pedestrian monitor, back pedestrian monitoring, back pedestrian notification, back pedestrian notifications, back pedestrian warner, back pedestrian warning, back pedestrian warning alert, back pedestrian warning alerts, back pedestrian warnings, back pedestrian way detector, back people alert, back people alerts, back people detection, back people notification, back people way alert, back people way alerts, back side object detection, back side traffic warnings, back traffic, back traffic alarm, back traffic alert, back traffic alert notification, back traffic alert notifications, back traffic alerts, back traffic alerts notification, back traffic alerts notifications, back traffic approach alert, back traffic approach alerts, back traffic assist, back traffic checker, back traffic checking, back traffic collision alert, back traffic collision alerts, back traffic detection, back traffic detections, back traffic detector, back traffic detectors, back traffic indicator, back traffic monitor, back traffic monitoring, back traffic notification, back traffic notifications, back traffic safety, back traffic sensor, back traffic viewer, back traffic warner, back traffic warning, back traffic warnings, back trans traffic signal, back ultrasonic parking, back ultrasonic parking assist, back ultrasonic parking assist or rearview bumper, back up alarm, back up alert, back up alerts, back up assist, back up assistance, back up assistant, back up beeper, back up bumper, back up bumper view, back up camera, back up camera alert, back up camera alerts, back up collision alert, back up collision alerts, back up collision avoidance, back up collision detector, back up collision preventing, back up cross alert, back up cross alerts, back up cross traffic detection, back up debris collision assist, back up detection, back up detection alert, back up detection alerts, back up early warning, back up hazard alert, back up hazard alerts, back up monitoring, back up notification, back up object detection, back up obstacle alert, back up obstacle alerts, back up obstruction alert, back up obstruction alerts, back up obstruction detection, back up parking alert, back up parking alerts, back up parking assist, back up proximity, back up safety, back up sensor, back up warning, back vehicle guidance, back vehicle indicator, back vehicle notification, back vehicle side traffic alert, back vehicle side traffic alerts, back vehicle traffic, back vehicle warning, back view alert, back view alerts, back view assist, back view back up camera, back view blind spot alert, back view blind spot alerts, back view camera, back view detection, back view detector, back view traffic alert, back view traffic alerts, backing alert, backing alerts, backing assist, backing assistance, backing cross traffic notification, backing indicator, backing notifications, backing sensors, backing up alert, backing up alerts, backing warning, backside cross traffic alert, backside cross traffic alerts, backup alert, backup alerts, backup assist, backup assistance, backup assistant, backup avoidance, backup back helper, backup beep, backup buddy, backup camera, backup collision alert, backup collision alerts, backup collision avoidance, backup cross traffic alert, backup cross traffic alerts, backup cross traffic detection, backup cross traffic warning, backup cross traffic warnings, backup movement assistance, backup navigation alert, backup navigation alerts, backup obstacle alert, backup obstacle alerts, backup parking assist, backup parking helper, backup rear helper, backup recognition, backup safety alarm, backup sensor, backup sensors, backup warning, beep alert, beep alerts, behind alert, behind alerts, behind cross alert, behind cross alerts, behind cross traffic alert, behind cross traffic alerts, behind vehicle notice, blind alert, blind alerts, blind area alert, blind area alerts, blind eye, blind eyes, blind notifier, blind reverse alert, blind reverse alerts, blind side alarm, blind side alert, blind side alert light, blind side alert monitor, blind side alerts, blind side alerts light, blind side alerts monitor, blind side assistance, blind side assistant, blind side buddy, blind side danger detector display, blind side detection, blind side detection warning, blind side hazard alert, blind side hazard alerts, blind side informant, blind side lane alert, blind side lane alerts, blind side mirror notifications, blind side notes, blind side notification, blind side rapid approach sensor, blind side spot alert, blind side spot alerts, blind side spot detect, blind side vehicle approach, blind side visialert, blind side visual alert, blind side visual alerts, blind side zone alert, blind side zone alerts, blind sides traffic proximity alert, blind sides traffic proximity alerts, blind size collision alert, blind size collision alerts, blind sport vehicle sensor, blind spot, blind spot activator, blind spot activity alert, blind spot activity alerts, blind spot alarm, blind spot alert, blind spot alert detection, blind spot alert light, blind spot alert notification, blind spot alert notifications, blind spot alerting, blind spot alerts, blind spot alerts detection, blind spot alerts light, blind spot alerts notification, blind spot alerts notifications, blind spot approach alert, blind spot approach alerts, blind spot assist, blind spot assistanc, blind spot assistance, blind spot assistant, blind spot avoidance, blind spot beep, blind spot bell, blind spot camera, blind spot check, blind spot checker, blind spot checking, blind spot checking technology, blind spot collision alert, blind spot collision alerts, blind spot collision avoidance, blind spot collision warning, blind spot crash alert, blind spot crash alerts, blind spot detection, blind spot detection alert, blind spot detection alerts, blind spot detection icon, blind spot detection signal, blind spot detections, blind spot detector, blind spot detector alert, blind spot detector alerts, blind spot detectors, blind spot enhanced vision, blind spot eye, blind spot fast alert, blind spot fast alerts, blind spot guide, blind spot hazard detector, blind spot help, blind spot icon, blind spot indicator, blind spot indicator alert, blind spot indicator alerts, blind spot information, blind spot lane alert, blind spot lane alerts, blind spot lane change alert, blind spot lane change alerts, blind spot lookout, blind spot monitor, blind spot monitor indication, blind spot monitoring, blind spot motioning, blind spot moving vehicle alert, blind spot moving vehicle alerts, blind spot nearby vehicle warning, blind spot notification, blind spot notifications, blind spot notifier, blind spot passing, blind spot protector, blind spot proximity alert, blind spot proximity alerts, blind spot safety, blind spot safety alert, blind spot safety alerts, blind spot safety assist, blind spot sensor, blind spot side alarm, blind spot side alert, blind spot side alerts, blind spot side hazard, blind spot side safety alert, blind spot side safety alerts, blind spot side warning, blind spot side warning indicator, blind spot signal, blind spot speed, blind spot traffic alert, blind spot traffic alerts, blind spot vehicle alert, blind spot vehicle alerts, blind spot vehicle detection, blind spot vehicle monitor, blind spot vehicle notifier, blind spot vehicle warning, blind spot viewer, blind spot visible warning, blind spot visual alert, blind spot visual alerts, blind spot visual queue, blind spot visualization, blind spot visuals, blind spot warner, blind spot warning, blind spot warning signal, blind spot warnings, blind spot watcher, blind spot zone, blind spot zone alert, blind spot zone alerts, blind spot zone detection, blind spotter, blind vehicle detector, blind visibility movement alert, blind visibility movement alerts, blind zone, blind zone alarm, blind zone alert, blind zone alert notification, blind zone alert notifications, blind zone alerts, blind zone alerts notification, blind zone alerts notifications, blind zone approaching vehicle alert, blind zone approaching vehicle alerts, blind zone approaching vehicle warning, blind zone assist, blind zone assistance, blind zone assistant, blind zone checker, blind zone checking, blind zone crash alert, blind zone crash alerts, blind zone detection, blind zone detections, blind zone detector, blind zone detectors, blind zone encroachment alert, blind zone encroachment alerts, blind zone hazard warning, blind zone monitor, blind zone monitoring, blind zone motion alert, blind zone motion alerts, blind zone notification, blind zone notifications, blind zone object alert, blind zone object alerts, blind zone recognition, blind zone safety, blind zone sense, blind zone sensor alarm, blind zone sensor alert, blind zone sensor alerts, blind zone sensor monitor, blind zone side lane alert, blind zone side lane alerts, blind zone side motion alert, blind zone side motion alerts, blind zone signal, blind zone vehicle alert, blind zone vehicle alerts, blind zone vehicle approaching alert, blind zone vehicle approaching alerts, blind zone vehicle proximity advisory, blind zone vehicle sensor, blind zone vehicle warning, blind zone visual, blind zone warner, blind zone warning, blind zone warnings, blind zone watch, blindness alert zone, blindness alerts zone, blindspot, blindspot alarm, blindspot alert, blindspot alerts, blindspot assist detection, blindspot assistance, blindspot detection, blindspot detector, blindspot fast vehicle detection, blindspot vehicle alert, blindspot vehicle alerts, brake, brake alert, brake alerts, brake assist, brake assist collision avoidance, brake assistance, brake assistance alert, brake assistance alerts, brake assistant, brake assurance, brake auto deterrent, brake automatic deterrent, brake avoidance, brake buddy, brake collision, brake delay safety, brake detection deploy, brake enhance, brake enhancement, brake enhancer, brake help, brake jam, brake mate, brake mechanization, brake safety, brake safety sensor, brake stop, brake warning, brakes, brakes alert, brakes alerts, brakes assist, brakes assist collision avoidance, brakes assistance, brakes assistance alert, brakes assistance alerts, brakes assistant, brakes assurance, brakes auto deterrent, brakes automatic deterrent, brakes avoidance, brakes buddy, brakes collision, brakes delay safety, brakes detection deploy, brakes enhance, brakes enhancement, brakes enhancer, brakes help, brakes jam, brakes mate, brakes mechanization, brakes safety, brakes safety sensor, brakes stop, brakes warning, braking, braking alert, braking alerts, braking assist, braking assist collision avoidance, braking assistance, braking assistance alert, braking assistance alerts, braking assistant, braking assurance, braking auto deterrent, braking automatic deterrent, braking avoidance, braking buddy, braking collision, braking delay safety, braking detection deploy, braking enhance, braking enhancement, braking enhancer, braking help, braking jam, braking mate, braking mechanization, braking safety, braking safety sensor, braking stop, braking warning, bumper, bumper alert, bumper alerts, bumper assistant, bumper camera, bumper collision alert, bumper collision alerts, bumper detection, bumper parking assist, bumper parking assistant, bumper protector alert, bumper protector alerts, bumper signal, bumper view notifications, change lane alert, change lane alert notification, change lane alert notifications, change lane alerts, change lane alerts notification, change lane alerts notifications, change lane assistant, change lane checker, change lane checking, change lane detection, change lane detections, change lane detector, change lane detectors, change lane monitor, change lane monitoring, change lane notification, change lane notifications, change lane warner, change lane warning, change lane warnings, changing lane notification, changing lanes, city street brake, city street brakes, city street braking, clear way reverse assistant, collision, collision ahead warning, collision alarm, collision alert, collision alert distance, collision alert forward end, collision alert front end, collision alert gap, collision alert length, collision alert margin, collision alert notification distance, collision alert notification gap, collision alert notification length, collision alert notification margin, collision alert notification space, collision alert notification spacing, collision alert notifications, collision alert notifications distance, collision alert notifications gap, collision alert notifications length, collision alert notifications margin, collision alert notifications space, collision alert notifications spacing, collision alert space, collision alert spacing, collision alert types, collision alerting, collision alerts, collision alerts distance, collision alerts forward end, collision alerts front end, collision alerts gap, collision alerts length, collision alerts margin, collision alerts notifications, collision alerts space, collision alerts spacing, collision alerts types, collision assist, collision assistance brake, collision assistance brakes, collision assistance braking, collision auto brake, collision auto brakes, collision auto braking, collision automatic brake, collision automatic brakes, collision automatic braking, collision avoidance, collision avoidance alert, collision avoidance alerts, collision avoidance brake, collision avoidance brake assistant, collision avoidance brakes, collision avoidance brakes assistant, collision avoidance braking, collision avoidance braking assistant, collision avoiding brake, collision avoiding brakes, collision avoiding braking, collision brake, collision brake alert, collision brake alerts, collision brake assist, collision brake enhancement, collision brake prevention, collision brakes, collision brakes alert, collision brakes alerts, collision brakes assist, collision brakes enhancement, collision brakes prevention, collision braking, collision braking alert, collision braking alerts, collision braking assist, collision braking enhancement, collision braking prevention, collision checker distance, collision checker gap, collision checker length, collision checker margin, collision checker space, collision checker spacing, collision checking distance, collision checking gap, collision checking length, collision checking margin, collision checking space, collision checking spacing, collision detect warning, collision detection, collision detection alert, collision detection alerts, collision detection auto brake, collision detection auto brakes, collision detection auto braking, collision detection automatic brake, collision detection automatic brakes, collision detection automatic braking, collision detection distance, collision detection gap, collision detection length, collision detection margin, collision detection space, collision detection spacing, collision detections distance, collision detections gap, collision detections length, collision detections margin, collision detections space, collision detections spacing, collision detector distance, collision detector gap, collision detector length, collision detector margin, collision detector space, collision detector spacing, collision detectors distance, collision detectors gap, collision detectors length, collision detectors margin, collision detectors space, collision detectors spacing, collision distance, collision emergency brake, collision emergency brakes, collision emergency braking, collision forward alert, collision forward alerts, collision forward auto brake, collision forward auto brakes, collision forward auto braking, collision forward automatic brake, collision forward automatic brakes, collision forward automatic braking, collision front alert, collision front alerts, collision front auto brake, collision front auto brakes, collision front auto braking, collision front automatic brake, collision front automatic brakes, collision front automatic braking, collision gap, collision length, collision margin, collision mitigating, collision mitigation brake, collision mitigation brakes, collision mitigation braking, collision monitor distance, collision monitor gap, collision monitor length, collision monitor margin, collision monitor space, collision monitor spacing, collision monitoring distance, collision monitoring gap, collision monitoring length, collision monitoring margin, collision monitoring space, collision monitoring spacing, collision notification, collision notification distance, collision notification gap, collision notification length, collision notification margin, collision notification space, collision notification spacing, collision notifications distance, collision notifications gap, collision notifications length, collision notifications margin, collision notifications space, collision notifications spacing, collision prevent, collision prevention, collision prevention alert, collision prevention alerts, collision prevention brake, collision prevention brakes, collision prevention braking, collision prevention warning, collision protection, collision proximity alert, collision proximity alerts, collision reduction auto brake, collision reduction auto brakes, collision reduction auto braking, collision reduction automatic brake, collision reduction automatic brakes, collision reduction automatic braking, collision safety, collision safety alert, collision safety alerts, collision safety notification, collision sensor, collision sensor brake engage, collision sensor brakes engage, collision sensor braking engage, collision sensor warning, collision sensors, collision severity brake, collision severity brakes, collision severity braking, collision smart safety, collision space, collision spacing, collision speed emergency brake, collision speed emergency brakes, collision speed emergency braking, collision system, collision warner distance, collision warner gap, collision warner length, collision warner margin, collision warner space, collision warner spacing, collision warning, collision warning alert, collision warning alerts, collision warning distance, collision warning gap, collision warning length, collision warning margin, collision warning sensor, collision warning space, collision warning spacing, collision warnings distance, collision warnings gap, collision warnings length, collision warnings margin, collision warnings space, collision warnings spacing, collision windshield display alert, collision windshield display alerts, collisions, collisions alert distance, collisions alert gap, collisions alert length, collisions alert margin, collisions alert notification distance, collisions alert notification gap, collisions alert notification length, collisions alert notification margin, collisions alert notification space, collisions alert notification spacing, collisions alert notifications distance, collisions alert notifications gap, collisions alert notifications length, collisions alert notifications margin, collisions alert notifications space, collisions alert notifications spacing, collisions alert space, collisions alert spacing, collisions alerts distance, collisions alerts gap, collisions alerts length, collisions alerts margin, collisions alerts space, collisions alerts spacing, collisions checker distance, collisions checker gap, collisions checker length, collisions checker margin, collisions checker space, collisions checker spacing, collisions checking distance, collisions checking gap, collisions checking length, collisions checking margin, collisions checking space, collisions checking spacing, collisions detection distance, collisions detection gap, collisions detection length, collisions detection margin, collisions detection space, collisions detection spacing, collisions detections distance, collisions detections gap, collisions detections length, collisions detections margin, collisions detections space, collisions detections spacing, collisions detector distance, collisions detector gap, collisions detector length, collisions detector margin, collisions detector space, collisions detector spacing, collisions detectors distance, collisions detectors gap, collisions detectors length, collisions detectors margin, collisions detectors space, collisions detectors spacing, collisions distance, collisions gap, collisions length, collisions margin, collisions monitor distance, collisions monitor gap, collisions monitor length, collisions monitor margin, collisions monitor space, collisions monitor spacing, collisions monitoring distance, collisions monitoring gap, collisions monitoring length, collisions monitoring margin, collisions monitoring space, collisions monitoring spacing, collisions notification distance, collisions notification gap, collisions notification length, collisions notification margin, collisions notification space, collisions notification spacing, collisions notifications distance, collisions notifications gap, collisions notifications length, collisions notifications margin, collisions notifications space, collisions notifications spacing, collisions space, collisions spacing, collisions warner distance, collisions warner gap, collisions warner length, collisions warner margin, collisions warner space, collisions warner spacing, collisions warning distance, collisions warning gap, collisions warning length, collisions warning margin, collisions warning space, collisions warning spacing, collisions warnings distance, collisions warnings gap, collisions warnings length, collisions warnings margin, collisions warnings space, collisions warnings spacing, collison alert, collison alerts, complete parking, complete parking assistance, complete ultrasonic parking, contact alert, contact alerts, crash alert, crash alert distance, crash alert gap, crash alert length, crash alert margin, crash alert module, crash alert notification distance, crash alert notification gap, crash alert notification length, crash alert notification margin, crash alert notification space, crash alert notification spacing, crash alert notifications distance, crash alert notifications gap, crash alert notifications length, crash alert notifications margin, crash alert notifications space, crash alert notifications spacing, crash alert space, crash alert spacing, crash alerts, crash alerts distance, crash alerts gap, crash alerts length, crash alerts margin, crash alerts module, crash alerts space, crash alerts spacing, crash avoidance, crash checker distance, crash checker gap, crash checker length, crash checker margin, crash checker space, crash checker spacing, crash checking distance, crash checking gap, crash checking length, crash checking margin, crash checking space, crash checking spacing, crash detection, crash detection distance, crash detection gap, crash detection length, crash detection margin, crash detection space, crash detection spacing, crash detection warning, crash detections distance, crash detections gap, crash detections length, crash detections margin, crash detections space, crash detections spacing, crash detector, crash detector distance, crash detector gap, crash detector length, crash detector margin, crash detector space, crash detector spacing, crash detectors distance, crash detectors gap, crash detectors length, crash detectors margin, crash detectors space, crash detectors spacing, crash distance, crash gap, crash length, crash margin, crash monitor distance, crash monitor gap, crash monitor length, crash monitor margin, crash monitor space, crash monitor spacing, crash monitoring distance, crash monitoring gap, crash monitoring length, crash monitoring margin, crash monitoring space, crash monitoring spacing, crash notification distance, crash notification gap, crash notification length, crash notification margin, crash notification space, crash notification spacing, crash notifications distance, crash notifications gap, crash notifications length, crash notifications margin, crash notifications space, crash notifications spacing, crash prevention, crash prevention forward end, crash prevention front end, crash space, crash spacing, crash warner distance, crash warner gap, crash warner length, crash warner margin, crash warner space, crash warner spacing, crash warning, crash warning alert, crash warning alerts, crash warning distance, crash warning gap, crash warning length, crash warning margin, crash warning space, crash warning spacing, crash warnings distance, crash warnings gap, crash warnings length, crash warnings margin, crash warnings space, crash warnings spacing, crashes alert distance, crashes alert gap, crashes alert length, crashes alert margin, crashes alert notification distance, crashes alert notification gap, crashes alert notification length, crashes alert notification margin, crashes alert notification space, crashes alert notification spacing, crashes alert notifications distance, crashes alert notifications gap, crashes alert notifications length, crashes alert notifications margin, crashes alert notifications space, crashes alert notifications spacing, crashes alert space, crashes alert spacing, crashes alerts distance, crashes alerts gap, crashes alerts length, crashes alerts margin, crashes alerts space, crashes alerts spacing, crashes checker distance, crashes checker gap, crashes checker length, crashes checker margin, crashes checker space, crashes checker spacing, crashes checking distance, crashes checking gap, crashes checking length, crashes checking margin, crashes checking space, crashes checking spacing, crashes detection distance, crashes detection gap, crashes detection length, crashes detection margin, crashes detection space, crashes detection spacing, crashes detections distance, crashes detections gap, crashes detections length, crashes detections margin, crashes detections space, crashes detections spacing, crashes detector distance, crashes detector gap, crashes detector length, crashes detector margin, crashes detector space, crashes detector spacing, crashes detectors distance, crashes detectors gap, crashes detectors length, crashes detectors margin, crashes detectors space, crashes detectors spacing, crashes distance, crashes gap, crashes length, crashes margin, crashes monitor distance, crashes monitor gap, crashes monitor length, crashes monitor margin, crashes monitor space, crashes monitor spacing, crashes monitoring distance, crashes monitoring gap, crashes monitoring length, crashes monitoring margin, crashes monitoring space, crashes monitoring spacing, crashes notification distance, crashes notification gap, crashes notification length, crashes notification margin, crashes notification space, crashes notification spacing, crashes notifications distance, crashes notifications gap, crashes notifications length, crashes notifications margin, crashes notifications space, crashes notifications spacing, crashes space, crashes spacing, crashes warner distance, crashes warner gap, crashes warner length, crashes warner margin, crashes warner space, crashes warner spacing, crashes warning distance, crashes warning gap, crashes warning length, crashes warning margin, crashes warning space, crashes warning spacing, crashes warnings distance, crashes warnings gap, crashes warnings length, crashes warnings margin, crashes warnings space, crashes warnings spacing, cross back view alert, cross back view alerts, cross rear view alert, cross rear view alerts, cross street backer, cross traffic alarm, cross traffic alert, cross traffic alert notification, cross traffic alert notifications, cross traffic alert while backing up, cross traffic alerts, cross traffic alerts notification, cross traffic alerts notifications, cross traffic alerts while backing up, cross traffic assistance, cross traffic avoidance, cross traffic back alert, cross traffic back alerts, cross traffic back notification, cross traffic back up safe, cross traffic behind alert, cross traffic behind alerts, cross traffic checker, cross traffic checking, cross traffic crash alert, cross traffic crash alerts, cross traffic crash warning, cross traffic detection, cross traffic detection alert, cross traffic detection alerts, cross traffic detections, cross traffic detector, cross traffic detectors, cross traffic hazard warning, cross traffic indicator, cross traffic monitor, cross traffic monitoring, cross traffic notification, cross traffic notifications, cross traffic rear alert, cross traffic rear alerts, cross traffic rear notification, cross traffic rear up safe, cross traffic reverse alert, cross traffic reverse alerts, cross traffic reverse detection, cross traffic sensor, cross traffic smart assist, cross traffic warner, cross traffic warning, cross traffic warnings, crossing alert, crossing alerts, crossing lane blind spot warning, crossing traffic alert, crossing traffic alerts, crossing traffic warning, crossover blind spot caution, custom alert, custom alerts, dds, detection back pedestrian, detection pedestrian, detection pedestrian forward, detection pedestrian front, detection rear pedestrian, digital parking assist, directional parking assistance, dirverless assisted parking, distance, distance object parking, distance parking alert, distance parking alerts, double park assist, drift alert, drift alerts, drifting assistance, drive collision assistance, driver alert, driver alert notification, driver alert notification type, driver alert notifications type, driver alert type, driver alert types, driver alerts, driver alerts notification, driver alerts notification type, driver alerts notifications type, driver alerts type, driver alerts types, driver checker type, driver checking type, driver detection type, driver detections type, driver detector type, driver detectors type, driver drifting warning, driver drowsiness, driver drowsiness alert, driver drowsiness alert notification, driver drowsiness alert notifications, driver drowsiness alerts, driver drowsiness alerts notification, driver drowsiness alerts notifications, driver drowsiness checker, driver drowsiness checking, driver drowsiness detection, driver drowsiness detections, driver drowsiness detector, driver drowsiness detectors, driver drowsiness monitor, driver drowsiness monitoring, driver drowsiness notification, driver drowsiness notifications, driver drowsiness warner, driver drowsiness warning, driver drowsiness warnings, driver drowsy detection, driver drowsy detection alert, driver drowsy detection alerts, driver fatigue, driver lane warning, driver laziness detection, driver laziness detection alert, driver laziness detection alerts, driver monitor type, driver monitoring type, driver notification type, driver notifications type, driver s side blind spot, driver seat safety warning alert, driver seat safety warning alerts, driver sleepiness detection, driver sleepiness detection alert, driver sleepiness detection alerts, driver sluggishness detection, driver sluggishness detection alert, driver sluggishness detection alerts, driver stupor detection, driver stupor detection alert, driver stupor detection alerts, driver tiredness alert, driver tiredness alert notification, driver tiredness alert notifications, driver tiredness alerts, driver tiredness alerts notification, driver tiredness alerts notifications, driver tiredness checker, driver tiredness checking, driver tiredness detection, driver tiredness detection alert, driver tiredness detection alerts, driver tiredness detections, driver tiredness detector, driver tiredness detectors, driver tiredness monitor, driver tiredness monitoring, driver tiredness notification, driver tiredness notifications, driver tiredness warner, driver tiredness warning, driver tiredness warnings, driver warner type, driver warning type, driver warnings type, driverless assisted parking, drivers alert, drivers alert notification, drivers alerts, drivers alerts notification, drivers drowsiness, drivers drowsy detection, drivers drowsy detection alert, drivers drowsy detection alerts, drivers fatigue, drivers laziness detection, drivers laziness detection alert, drivers laziness detection alerts, drivers sleepiness detection, drivers sleepiness detection alert, drivers sleepiness detection alerts, drivers sluggishness detection, drivers sluggishness detection alert, drivers sluggishness detection alerts, drivers stupor detection, drivers stupor detection alert, drivers stupor detection alerts, drivers tiredness detection, drivers tiredness detection alert, drivers tiredness detection alerts, driving drowsy detection, drowsiness alert, drowsiness alert notification, drowsiness alert notifications, drowsiness alerts, drowsiness alerts notification, drowsiness alerts notifications, drowsiness checker, drowsiness checking, drowsiness detection, drowsiness detections, drowsiness detector, drowsiness detectors, drowsiness monitor, drowsiness monitoring, drowsiness notification, drowsiness notifications, drowsiness warner, drowsiness warning, drowsiness warnings, drowsy alert, drowsy alerts, drowsy detection, drowsy detection alert, drowsy detection alerts, drowsy driver alert, drowsy driver alert notification, drowsy driver alert notifications, drowsy driver alerts, drowsy driver alerts notification, drowsy driver alerts notifications, drowsy driver checker, drowsy driver checking, drowsy driver detection, drowsy driver detections, drowsy driver detector, drowsy driver detectors, drowsy driver monitor, drowsy driver monitoring, drowsy driver notification, drowsy driver notifications, drowsy driver warner, drowsy driver warning, drowsy driver warnings, drowsy drivers detection, drowsy driving, drowsy notifications, dual parking assistant, dual parking detection, dual parking sensor, early collision warning, early warning collision assist, emergency blind spot detection, emergency brake, emergency brakes, emergency braking, emergency collision alert, emergency collision alerts, emergency crash alert, emergency crash alerts, emergency forward collision alert, emergency forward collision alerts, emergency front collision alert, emergency front collision alerts, emergency lane change side alert, emergency lane change side alerts, emergency safety alert forward end collision, emergency safety alert front end collision, emergency safety alerts forward end collision, emergency safety alerts front end collision, enhanced brake, enhanced brakes, enhanced braking, enhanced forward brake, enhanced forward brakes, enhanced forward braking, enhanced front brake, enhanced front brakes, enhanced front braking, enhanced lane change safety, enhanced lane change safety notifications, enhanced parking navigation assistance, enhanced parking technology, exterior sensory park assist, fab, fast speed blind side alert, fast speed blind side alerts, fast speed blind zone alert, fast speed blind zone alerts, fca, fcb, fcs, fender bender avoidance alarm, fender bender detector, follow crash alert, follow crash alerts, forewarning collision notification, forward accident alert, forward accident alerts, forward accident avoidance, forward accident prevention, forward accident warning, forward accidental warning, forward and back auto parking, forward and back automatic parking, forward and back bumper alert, forward and back bumper alerts, forward and back parking, forward and back parking assist, forward and back parking camera, forward and back ultrasonic parking, forward and rear auto parking, forward and rear automatic parking, forward and rear bumper alert, forward and rear bumper alerts, forward and rear parking, forward and rear parking assist, forward and rear parking camera, forward and rear ultrasonic parking, forward anti collision alert, forward anti collision alerts, forward auto brake, forward auto brake alert, forward auto brake alerts, forward auto brakes, forward auto brakes alert, forward auto brakes alerts, forward auto braking, forward auto braking alert, forward auto braking alerts, forward automatic brake, forward automatic brake alert, forward automatic brake alerts, forward automatic brakes, forward automatic brakes alert, forward automatic brakes alerts, forward automatic braking, forward automatic braking alert, forward automatic braking alerts, forward back active park assist, forward back assist parking, forward back assisted parking, forward back end parking alert, forward back end parking alerts, forward back guided parking, forward back object detect parking assist, forward back optical audible parking sensors, forward back park alert, forward back park alerts, forward back park assist, forward back park assist warning, forward back park buddy, forward back parking, forward back parking alarm, forward back parking alert, forward back parking alerts, forward back parking assist, forward back parking assistance, forward back parking assistant, forward back parking avoidance, forward back parking crash avoidance, forward back parking detection, forward back parking display, forward back parking guidance, forward back parking helper, forward back parking indicator, forward back parking navigation, forward back parking notification, forward back parking safety sensors, forward back parking sensor, forward back parking sensors, forward back parking warning, forward back safe parking, forward back sensor parking, forward back ultrasonic parking, forward backwards ultrasonic parking, forward brake, forward brake alert, forward brake alerts, forward brake assist, forward brake assistance, forward brake assistant, forward brake warning, forward brakes, forward brakes alert, forward brakes alerts, forward brakes assist, forward brakes assistance, forward brakes assistant, forward brakes warning, forward braking, forward braking alert, forward braking alerts, forward braking assist, forward braking assistance, forward braking assistant, forward braking warning, forward bumper accident alert, forward bumper accident alerts, forward cabin climate, forward collision, forward collision alarm, forward collision alert, forward collision alert distance, forward collision alert gap, forward collision alert length, forward collision alert margin, forward collision alert notification distance, forward collision alert notification gap, forward collision alert notification length, forward collision alert notification margin, forward collision alert notification space, forward collision alert notification spacing, forward collision alert notifications distance, forward collision alert notifications gap, forward collision alert notifications length, forward collision alert notifications margin, forward collision alert notifications space, forward collision alert notifications spacing, forward collision alert space, forward collision alert spacing, forward collision alert warning, forward collision alert zone, forward collision alerts, forward collision alerts distance, forward collision alerts gap, forward collision alerts length, forward collision alerts margin, forward collision alerts space, forward collision alerts spacing, forward collision alerts warning, forward collision alerts zone, forward collision assist, forward collision assist alert, forward collision assist alerts, forward collision assistance, forward collision assistance alert, forward collision assistance alerts, forward collision avoidance, forward collision avoidance alert, forward collision avoidance alerts, forward collision avoidance indicator, forward collision avoidance notification, forward collision avoidance reminder, forward collision avoidance warning, forward collision beep, forward collision checker distance, forward collision checker gap, forward collision checker length, forward collision checker margin, forward collision checker space, forward collision checker spacing, forward collision checking distance, forward collision checking gap, forward collision checking length, forward collision checking margin, forward collision checking space, forward collision checking spacing, forward collision detect, forward collision detection, forward collision detection alert, forward collision detection alerts, forward collision detection distance, forward collision detection gap, forward collision detection length, forward collision detection margin, forward collision detection space, forward collision detection spacing, forward collision detections distance, forward collision detections gap, forward collision detections length, forward collision detections margin, forward collision detections space, forward collision detections spacing, forward collision detector, forward collision detector alert, forward collision detector alerts, forward collision detector distance, forward collision detector gap, forward collision detector length, forward collision detector margin, forward collision detector space, forward collision detector spacing, forward collision detectors distance, forward collision detectors gap, forward collision detectors length, forward collision detectors margin, forward collision detectors space, forward collision detectors spacing, forward collision distance, forward collision gap, forward collision indicator, forward collision length, forward collision margin, forward collision mitigation, forward collision monitor, forward collision monitor distance, forward collision monitor gap, forward collision monitor length, forward collision monitor margin, forward collision monitor space, forward collision monitor spacing, forward collision monitoring distance, forward collision monitoring gap, forward collision monitoring length, forward collision monitoring margin, forward collision monitoring space, forward collision monitoring spacing, forward collision notification, forward collision notification distance, forward collision notification gap, forward collision notification length, forward collision notification margin, forward collision notification space, forward collision notification spacing, forward collision notifications distance, forward collision notifications gap, forward collision notifications length, forward collision notifications margin, forward collision notifications space, forward collision notifications spacing, forward collision prevent, forward collision prevention, forward collision response, forward collision safety notification, forward collision sensor, forward collision sensor alert, forward collision sensor alerts, forward collision space, forward collision spacing, forward collision system, forward collision visual alert, forward collision visual alerts, forward collision warner distance, forward collision warner gap, forward collision warner length, forward collision warner margin, forward collision warner space, forward collision warner spacing, forward collision warning, forward collision warning distance, forward collision warning gap, forward collision warning length, forward collision warning margin, forward collision warning signal, forward collision warning space, forward collision warning spacing, forward collision warnings, forward collision warnings distance, forward collision warnings gap, forward collision warnings length, forward collision warnings margin, forward collision warnings space, forward collision warnings spacing, forward collisions alert distance, forward collisions alert gap, forward collisions alert length, forward collisions alert margin, forward collisions alert notification distance, forward collisions alert notification gap, forward collisions alert notification length, forward collisions alert notification margin, forward collisions alert notification space, forward collisions alert notification spacing, forward collisions alert notifications distance, forward collisions alert notifications gap, forward collisions alert notifications length, forward collisions alert notifications margin, forward collisions alert notifications space, forward collisions alert notifications spacing, forward collisions alert space, forward collisions alert spacing, forward collisions alerts distance, forward collisions alerts gap, forward collisions alerts length, forward collisions alerts margin, forward collisions alerts space, forward collisions alerts spacing, forward collisions checker distance, forward collisions checker gap, forward collisions checker length, forward collisions checker margin, forward collisions checker space, forward collisions checker spacing, forward collisions checking distance, forward collisions checking gap, forward collisions checking length, forward collisions checking margin, forward collisions checking space, forward collisions checking spacing, forward collisions detection distance, forward collisions detection gap, forward collisions detection length, forward collisions detection margin, forward collisions detection space, forward collisions detection spacing, forward collisions detections distance, forward collisions detections gap, forward collisions detections length, forward collisions detections margin, forward collisions detections space, forward collisions detections spacing, forward collisions detector distance, forward collisions detector gap, forward collisions detector length, forward collisions detector margin, forward collisions detector space, forward collisions detector spacing, forward collisions detectors distance, forward collisions detectors gap, forward collisions detectors length, forward collisions detectors margin, forward collisions detectors space, forward collisions detectors spacing, forward collisions distance, forward collisions gap, forward collisions length, forward collisions margin, forward collisions monitor distance, forward collisions monitor gap, forward collisions monitor length, forward collisions monitor margin, forward collisions monitor space, forward collisions monitor spacing, forward collisions monitoring distance, forward collisions monitoring gap, forward collisions monitoring length, forward collisions monitoring margin, forward collisions monitoring space, forward collisions monitoring spacing, forward collisions notification distance, forward collisions notification gap, forward collisions notification length, forward collisions notification margin, forward collisions notification space, forward collisions notification spacing, forward collisions notifications distance, forward collisions notifications gap, forward collisions notifications length, forward collisions notifications margin, forward collisions notifications space, forward collisions notifications spacing, forward collisions space, forward collisions spacing, forward collisions warner distance, forward collisions warner gap, forward collisions warner length, forward collisions warner margin, forward collisions warner space, forward collisions warner spacing, forward collisions warning distance, forward collisions warning gap, forward collisions warning length, forward collisions warning margin, forward collisions warning space, forward collisions warning spacing, forward collisions warnings distance, forward collisions warnings gap, forward collisions warnings length, forward collisions warnings margin, forward collisions warnings space, forward collisions warnings spacing, forward crash alarm, forward crash alert, forward crash alert distance, forward crash alert gap, forward crash alert length, forward crash alert margin, forward crash alert notification, forward crash alert notification distance, forward crash alert notification gap, forward crash alert notification length, forward crash alert notification margin, forward crash alert notification space, forward crash alert notification spacing, forward crash alert notifications distance, forward crash alert notifications gap, forward crash alert notifications length, forward crash alert notifications margin, forward crash alert notifications space, forward crash alert notifications spacing, forward crash alert space, forward crash alert spacing, forward crash alerts, forward crash alerts distance, forward crash alerts gap, forward crash alerts length, forward crash alerts margin, forward crash alerts notification, forward crash alerts space, forward crash alerts spacing, forward crash assist, forward crash avoidance, forward crash checker distance, forward crash checker gap, forward crash checker length, forward crash checker margin, forward crash checker space, forward crash checker spacing, forward crash checking distance, forward crash checking gap, forward crash checking length, forward crash checking margin, forward crash checking space, forward crash checking spacing, forward crash detection, forward crash detection alert, forward crash detection alerts, forward crash detection distance, forward crash detection gap, forward crash detection length, forward crash detection margin, forward crash detection space, forward crash detection spacing, forward crash detections distance, forward crash detections gap, forward crash detections length, forward crash detections margin, forward crash detections space, forward crash detections spacing, forward crash detector, forward crash detector distance, forward crash detector gap, forward crash detector length, forward crash detector margin, forward crash detector space, forward crash detector spacing, forward crash detectors distance, forward crash detectors gap, forward crash detectors length, forward crash detectors margin, forward crash detectors space, forward crash detectors spacing, forward crash distance, forward crash gap, forward crash length, forward crash margin, forward crash monitor distance, forward crash monitor gap, forward crash monitor length, forward crash monitor margin, forward crash monitor space, forward crash monitor spacing, forward crash monitoring distance, forward crash monitoring gap, forward crash monitoring length, forward crash monitoring margin, forward crash monitoring space, forward crash monitoring spacing, forward crash notification alert, forward crash notification alerts, forward crash notification distance, forward crash notification gap, forward crash notification length, forward crash notification margin, forward crash notification space, forward crash notification spacing, forward crash notifications distance, forward crash notifications gap, forward crash notifications length, forward crash notifications margin, forward crash notifications space, forward crash notifications spacing, forward crash prevention, forward crash prevention alarm, forward crash protection, forward crash response, forward crash space, forward crash spacing, forward crash stop protect, forward crash warner distance, forward crash warner gap, forward crash warner length, forward crash warner margin, forward crash warner space, forward crash warner spacing, forward crash warning, forward crash warning distance, forward crash warning gap, forward crash warning length, forward crash warning margin, forward crash warning space, forward crash warning spacing, forward crash warnings distance, forward crash warnings gap, forward crash warnings length, forward crash warnings margin, forward crash warnings space, forward crash warnings spacing, forward crashes alert distance, forward crashes alert gap, forward crashes alert length, forward crashes alert margin, forward crashes alert notification distance, forward crashes alert notification gap, forward crashes alert notification length, forward crashes alert notification margin, forward crashes alert notification space, forward crashes alert notification spacing, forward crashes alert notifications distance, forward crashes alert notifications gap, forward crashes alert notifications length, forward crashes alert notifications margin, forward crashes alert notifications space, forward crashes alert notifications spacing, forward crashes alert space, forward crashes alert spacing, forward crashes alerts distance, forward crashes alerts gap, forward crashes alerts length, forward crashes alerts margin, forward crashes alerts space, forward crashes alerts spacing, forward crashes checker distance, forward crashes checker gap, forward crashes checker length, forward crashes checker margin, forward crashes checker space, forward crashes checker spacing, forward crashes checking distance, forward crashes checking gap, forward crashes checking length, forward crashes checking margin, forward crashes checking space, forward crashes checking spacing, forward crashes detection distance, forward crashes detection gap, forward crashes detection length, forward crashes detection margin, forward crashes detection space, forward crashes detection spacing, forward crashes detections distance, forward crashes detections gap, forward crashes detections length, forward crashes detections margin, forward crashes detections space, forward crashes detections spacing, forward crashes detector distance, forward crashes detector gap, forward crashes detector length, forward crashes detector margin, forward crashes detector space, forward crashes detector spacing, forward crashes detectors distance, forward crashes detectors gap, forward crashes detectors length, forward crashes detectors margin, forward crashes detectors space, forward crashes detectors spacing, forward crashes distance, forward crashes gap, forward crashes length, forward crashes margin, forward crashes monitor distance, forward crashes monitor gap, forward crashes monitor length, forward crashes monitor margin, forward crashes monitor space, forward crashes monitor spacing, forward crashes monitoring distance, forward crashes monitoring gap, forward crashes monitoring length, forward crashes monitoring margin, forward crashes monitoring space, forward crashes monitoring spacing, forward crashes notification distance, forward crashes notification gap, forward crashes notification length, forward crashes notification margin, forward crashes notification space, forward crashes notification spacing, forward crashes notifications distance, forward crashes notifications gap, forward crashes notifications length, forward crashes notifications margin, forward crashes notifications space, forward crashes notifications spacing, forward crashes space, forward crashes spacing, forward crashes warner distance, forward crashes warner gap, forward crashes warner length, forward crashes warner margin, forward crashes warner space, forward crashes warner spacing, forward crashes warning distance, forward crashes warning gap, forward crashes warning length, forward crashes warning margin, forward crashes warning space, forward crashes warning spacing, forward crashes warnings distance, forward crashes warnings gap, forward crashes warnings length, forward crashes warnings margin, forward crashes warnings space, forward crashes warnings spacing, forward distance, forward emergency collision, forward end accident alert, forward end accident alerts, forward end accident monitor, forward end accident protection, forward end accident warning, forward end auto brake, forward end auto brakes, forward end auto braking, forward end automatic brake, forward end automatic brakes, forward end automatic braking, forward end collision, forward end collision alarm, forward end collision alert, forward end collision alerts, forward end collision assistant, forward end collision avoidance, forward end collision avoidance alert, forward end collision avoidance alerts, forward end collision avoidance warning, forward end collision detection, forward end collision emergency alert, forward end collision emergency alerts, forward end collision indicator, forward end collision monitor, forward end collision monitoring, forward end collision notification, forward end collision notify, forward end collision prevention, forward end collision prevention notifications, forward end collision protector, forward end collision safety, forward end collision safety alert, forward end collision safety alerts, forward end collision warning, forward end crash, forward end crash alarm, forward end crash alert, forward end crash alerts, forward end crash avoidance, forward end crash avoidance alert, forward end crash avoidance alerts, forward end crash avoiding warning, forward end crash detection, forward end crash warning, forward enhanced brake, forward enhanced brakes, forward enhanced braking, forward following vehicle collision alert, forward following vehicle collision alerts, forward following vehicle collision warning, forward frontal rearview parking radar, forward gap, forward impact alarm, forward impact alert, forward impact alerts, forward impact collision warning, forward impact detection, forward impact notification, forward impact sensor, forward impact warning, forward park assist, forward park assistance, forward parking, forward passenger climate, forward pedestrian, forward pedestrian alert, forward pedestrian alert notification, forward pedestrian alert notifications, forward pedestrian alerts, forward pedestrian alerts notification, forward pedestrian alerts notifications, forward pedestrian avoidance detection, forward pedestrian brake, forward pedestrian brakes, forward pedestrian braking, forward pedestrian checker, forward pedestrian checking, forward pedestrian detection, forward pedestrian detections, forward pedestrian detector, forward pedestrian detectors, forward pedestrian monitor, forward pedestrian monitoring, forward pedestrian notification, forward pedestrian notifications, forward pedestrian protection, forward pedestrian warner, forward pedestrian warning, forward pedestrian warning alert, forward pedestrian warning alerts, forward pedestrian warnings, forward pedestrian way detector, forward people alert, forward people alerts, forward people detection, forward people notification, forward people way alert, forward people way alerts, forward potential collision warning, forward rear active park assist, forward rear assist parking, forward rear assisted parking, forward rear end parking alert, forward rear end parking alerts, forward rear guided parking, forward rear object detect parking assist, forward rear optical audible parking sensors, forward rear park alert, forward rear park alerts, forward rear park assist, forward rear park assist warning, forward rear park buddy, forward rear parking, forward rear parking alarm, forward rear parking alert, forward rear parking alerts, forward rear parking assist, forward rear parking assistance, forward rear parking assistant, forward rear parking avoidance, forward rear parking crash avoidance, forward rear parking detection, forward rear parking display, forward rear parking guidance, forward rear parking helper, forward rear parking indicator, forward rear parking navigation, forward rear parking notification, forward rear parking safety sensors, forward rear parking sensor, forward rear parking sensors, forward rear parking warning, forward rear safe parking, forward rear sensor parking, forward rear ultrasonic parking, forward reverse park assist, forward reverse parking assist, forward side blind spot alert, forward side blind spot alerts, forward side collision alert, forward side collision alerts, forward vehicle collision alert, forward vehicle collision alerts, fpb, frond end crash alert, frond end crash alerts, front accident alert, front accident alerts, front accident avoidance, front accident prevention, front accident warning, front accidental warning, front and back auto parking, front and back automatic parking, front and back bumper alert, front and back bumper alerts, front and back parking, front and back parking assist, front and back parking camera, front and back ultrasonic parking, front and rear auto parking, front and rear automatic parking, front and rear bumper alert, front and rear bumper alerts, front and rear parking, front and rear parking assist, front and rear parking camera, front and rear ultrasonic parking, front anti collision alert, front anti collision alerts, front auto brake, front auto brake alert, front auto brake alerts, front auto brakes, front auto brakes alert, front auto brakes alerts, front auto braking, front auto braking alert, front auto braking alerts, front automatic brake, front automatic brake alert, front automatic brake alerts, front automatic brakes, front automatic brakes alert, front automatic brakes alerts, front automatic braking, front automatic braking alert, front automatic braking alerts, front back active park assist, front back assist parking, front back assisted parking, front back end parking alert, front back end parking alerts, front back guided parking, front back object detect parking assist, front back optical audible parking sensors, front back park alert, front back park alerts, front back park assist, front back park assist warning, front back park buddy, front back parking, front back parking alarm, front back parking alert, front back parking alerts, front back parking assist, front back parking assistance, front back parking assistant, front back parking avoidance, front back parking crash avoidance, front back parking detection, front back parking display, front back parking guidance, front back parking helper, front back parking indicator, front back parking navigation, front back parking notification, front back parking safety sensors, front back parking sensor, front back parking sensors, front back parking warning, front back safe parking, front back sensor parking, front back ultrasonic parking, front backwards ultrasonic parking, front brake, front brake alert, front brake alerts, front brake assist, front brake assistance, front brake assistant, front brake warning, front brakes, front brakes alert, front brakes alerts, front brakes assist, front brakes assistance, front brakes assistant, front brakes warning, front braking, front braking alert, front braking alerts, front braking assist, front braking assistance, front braking assistant, front braking warning, front bumper accident alert, front bumper accident alerts, front cabin climate, front collision, front collision alarm, front collision alert, front collision alert distance, front collision alert gap, front collision alert length, front collision alert margin, front collision alert notification distance, front collision alert notification gap, front collision alert notification length, front collision alert notification margin, front collision alert notification space, front collision alert notification spacing, front collision alert notifications distance, front collision alert notifications gap, front collision alert notifications length, front collision alert notifications margin, front collision alert notifications space, front collision alert notifications spacing, front collision alert space, front collision alert spacing, front collision alert warning, front collision alert zone, front collision alerts, front collision alerts distance, front collision alerts gap, front collision alerts length, front collision alerts margin, front collision alerts space, front collision alerts spacing, front collision alerts warning, front collision alerts zone, front collision assist, front collision assist alert, front collision assist alerts, front collision assistance, front collision assistance alert, front collision assistance alerts, front collision avoidance, front collision avoidance alert, front collision avoidance alerts, front collision avoidance indicator, front collision avoidance notification, front collision avoidance reminder, front collision avoidance warning, front collision beep, front collision checker distance, front collision checker gap, front collision checker length, front collision checker margin, front collision checker space, front collision checker spacing, front collision checking distance, front collision checking gap, front collision checking length, front collision checking margin, front collision checking space, front collision checking spacing, front collision detect, front collision detection, front collision detection alert, front collision detection alerts, front collision detection distance, front collision detection gap, front collision detection length, front collision detection margin, front collision detection space, front collision detection spacing, front collision detections distance, front collision detections gap, front collision detections length, front collision detections margin, front collision detections space, front collision detections spacing, front collision detector, front collision detector alert, front collision detector alerts, front collision detector distance, front collision detector gap, front collision detector length, front collision detector margin, front collision detector space, front collision detector spacing, front collision detectors distance, front collision detectors gap, front collision detectors length, front collision detectors margin, front collision detectors space, front collision detectors spacing, front collision distance, front collision gap, front collision indicator, front collision length, front collision margin, front collision mitigation, front collision monitor, front collision monitor distance, front collision monitor gap, front collision monitor length, front collision monitor margin, front collision monitor space, front collision monitor spacing, front collision monitoring distance, front collision monitoring gap, front collision monitoring length, front collision monitoring margin, front collision monitoring space, front collision monitoring spacing, front collision notification, front collision notification distance, front collision notification gap, front collision notification length, front collision notification margin, front collision notification space, front collision notification spacing, front collision notifications distance, front collision notifications gap, front collision notifications length, front collision notifications margin, front collision notifications space, front collision notifications spacing, front collision prevent, front collision prevention, front collision response, front collision safety notification, front collision sensor, front collision sensor alert, front collision sensor alerts, front collision space, front collision spacing, front collision system, front collision visual alert, front collision visual alerts, front collision warner distance, front collision warner gap, front collision warner length, front collision warner margin, front collision warner space, front collision warner spacing, front collision warning, front collision warning distance, front collision warning gap, front collision warning length, front collision warning margin, front collision warning signal, front collision warning space, front collision warning spacing, front collision warnings, front collision warnings distance, front collision warnings gap, front collision warnings length, front collision warnings margin, front collision warnings space, front collision warnings spacing, front collisions alert distance, front collisions alert gap, front collisions alert length, front collisions alert margin, front collisions alert notification distance, front collisions alert notification gap, front collisions alert notification length, front collisions alert notification margin, front collisions alert notification space, front collisions alert notification spacing, front collisions alert notifications distance, front collisions alert notifications gap, front collisions alert notifications length, front collisions alert notifications margin, front collisions alert notifications space, front collisions alert notifications spacing, front collisions alert space, front collisions alert spacing, front collisions alerts distance, front collisions alerts gap, front collisions alerts length, front collisions alerts margin, front collisions alerts space, front collisions alerts spacing, front collisions checker distance, front collisions checker gap, front collisions checker length, front collisions checker margin, front collisions checker space, front collisions checker spacing, front collisions checking distance, front collisions checking gap, front collisions checking length, front collisions checking margin, front collisions checking space, front collisions checking spacing, front collisions detection distance, front collisions detection gap, front collisions detection length, front collisions detection margin, front collisions detection space, front collisions detection spacing, front collisions detections distance, front collisions detections gap, front collisions detections length, front collisions detections margin, front collisions detections space, front collisions detections spacing, front collisions detector distance, front collisions detector gap, front collisions detector length, front collisions detector margin, front collisions detector space, front collisions detector spacing, front collisions detectors distance, front collisions detectors gap, front collisions detectors length, front collisions detectors margin, front collisions detectors space, front collisions detectors spacing, front collisions distance, front collisions gap, front collisions length, front collisions margin, front collisions monitor distance, front collisions monitor gap, front collisions monitor length, front collisions monitor margin, front collisions monitor space, front collisions monitor spacing, front collisions monitoring distance, front collisions monitoring gap, front collisions monitoring length, front collisions monitoring margin, front collisions monitoring space, front collisions monitoring spacing, front collisions notification distance, front collisions notification gap, front collisions notification length, front collisions notification margin, front collisions notification space, front collisions notification spacing, front collisions notifications distance, front collisions notifications gap, front collisions notifications length, front collisions notifications margin, front collisions notifications space, front collisions notifications spacing, front collisions space, front collisions spacing, front collisions warner distance, front collisions warner gap, front collisions warner length, front collisions warner margin, front collisions warner space, front collisions warner spacing, front collisions warning distance, front collisions warning gap, front collisions warning length, front collisions warning margin, front collisions warning space, front collisions warning spacing, front collisions warnings distance, front collisions warnings gap, front collisions warnings length, front collisions warnings margin, front collisions warnings space, front collisions warnings spacing, front crash alarm, front crash alert, front crash alert distance, front crash alert gap, front crash alert length, front crash alert margin, front crash alert notification, front crash alert notification distance, front crash alert notification gap, front crash alert notification length, front crash alert notification margin, front crash alert notification space, front crash alert notification spacing, front crash alert notifications distance, front crash alert notifications gap, front crash alert notifications length, front crash alert notifications margin, front crash alert notifications space, front crash alert notifications spacing, front crash alert space, front crash alert spacing, front crash alerts, front crash alerts distance, front crash alerts gap, front crash alerts length, front crash alerts margin, front crash alerts notification, front crash alerts space, front crash alerts spacing, front crash assist, front crash avoidance, front crash checker distance, front crash checker gap, front crash checker length, front crash checker margin, front crash checker space, front crash checker spacing, front crash checking distance, front crash checking gap, front crash checking length, front crash checking margin, front crash checking space, front crash checking spacing, front crash detection, front crash detection alert, front crash detection alerts, front crash detection distance, front crash detection gap, front crash detection length, front crash detection margin, front crash detection space, front crash detection spacing, front crash detections distance, front crash detections gap, front crash detections length, front crash detections margin, front crash detections space, front crash detections spacing, front crash detector, front crash detector distance, front crash detector gap, front crash detector length, front crash detector margin, front crash detector space, front crash detector spacing, front crash detectors distance, front crash detectors gap, front crash detectors length, front crash detectors margin, front crash detectors space, front crash detectors spacing, front crash distance, front crash gap, front crash length, front crash margin, front crash monitor distance, front crash monitor gap, front crash monitor length, front crash monitor margin, front crash monitor space, front crash monitor spacing, front crash monitoring distance, front crash monitoring gap, front crash monitoring length, front crash monitoring margin, front crash monitoring space, front crash monitoring spacing, front crash notification alert, front crash notification alerts, front crash notification distance, front crash notification gap, front crash notification length, front crash notification margin, front crash notification space, front crash notification spacing, front crash notifications distance, front crash notifications gap, front crash notifications length, front crash notifications margin, front crash notifications space, front crash notifications spacing, front crash prevention, front crash prevention alarm, front crash protection, front crash response, front crash space, front crash spacing, front crash stop protect, front crash warner distance, front crash warner gap, front crash warner length, front crash warner margin, front crash warner space, front crash warner spacing, front crash warning, front crash warning distance, front crash warning gap, front crash warning length, front crash warning margin, front crash warning space, front crash warning spacing, front crash warnings distance, front crash warnings gap, front crash warnings length, front crash warnings margin, front crash warnings space, front crash warnings spacing, front crashes alert distance, front crashes alert gap, front crashes alert length, front crashes alert margin, front crashes alert notification distance, front crashes alert notification gap, front crashes alert notification length, front crashes alert notification margin, front crashes alert notification space, front crashes alert notification spacing, front crashes alert notifications distance, front crashes alert notifications gap, front crashes alert notifications length, front crashes alert notifications margin, front crashes alert notifications space, front crashes alert notifications spacing, front crashes alert space, front crashes alert spacing, front crashes alerts distance, front crashes alerts gap, front crashes alerts length, front crashes alerts margin, front crashes alerts space, front crashes alerts spacing, front crashes checker distance, front crashes checker gap, front crashes checker length, front crashes checker margin, front crashes checker space, front crashes checker spacing, front crashes checking distance, front crashes checking gap, front crashes checking length, front crashes checking margin, front crashes checking space, front crashes checking spacing, front crashes detection distance, front crashes detection gap, front crashes detection length, front crashes detection margin, front crashes detection space, front crashes detection spacing, front crashes detections distance, front crashes detections gap, front crashes detections length, front crashes detections margin, front crashes detections space, front crashes detections spacing, front crashes detector distance, front crashes detector gap, front crashes detector length, front crashes detector margin, front crashes detector space, front crashes detector spacing, front crashes detectors distance, front crashes detectors gap, front crashes detectors length, front crashes detectors margin, front crashes detectors space, front crashes detectors spacing, front crashes distance, front crashes gap, front crashes length, front crashes margin, front crashes monitor distance, front crashes monitor gap, front crashes monitor length, front crashes monitor margin, front crashes monitor space, front crashes monitor spacing, front crashes monitoring distance, front crashes monitoring gap, front crashes monitoring length, front crashes monitoring margin, front crashes monitoring space, front crashes monitoring spacing, front crashes notification distance, front crashes notification gap, front crashes notification length, front crashes notification margin, front crashes notification space, front crashes notification spacing, front crashes notifications distance, front crashes notifications gap, front crashes notifications length, front crashes notifications margin, front crashes notifications space, front crashes notifications spacing, front crashes space, front crashes spacing, front crashes warner distance, front crashes warner gap, front crashes warner length, front crashes warner margin, front crashes warner space, front crashes warner spacing, front crashes warning distance, front crashes warning gap, front crashes warning length, front crashes warning margin, front crashes warning space, front crashes warning spacing, front crashes warnings distance, front crashes warnings gap, front crashes warnings length, front crashes warnings margin, front crashes warnings space, front crashes warnings spacing, front distance, front emergency collision, front end accident alert, front end accident alerts, front end accident monitor, front end accident protection, front end accident warning, front end auto brake, front end auto brakes, front end auto braking, front end automatic brake, front end automatic brakes, front end automatic braking, front end collision, front end collision alarm, front end collision alert, front end collision alerts, front end collision assistant, front end collision avoidance, front end collision avoidance alert, front end collision avoidance alerts, front end collision avoidance warning, front end collision detection, front end collision emergency alert, front end collision emergency alerts, front end collision indicator, front end collision monitor, front end collision monitoring, front end collision notification, front end collision notify, front end collision prevention, front end collision prevention notifications, front end collision protector, front end collision safety, front end collision safety alert, front end collision safety alerts, front end collision warning, front end crash, front end crash alarm, front end crash alert, front end crash alerts, front end crash avoidance, front end crash avoidance alert, front end crash avoidance alerts, front end crash avoiding warning, front end crash detection, front end crash warning, front enhanced brake, front enhanced brakes, front enhanced braking, front following vehicle collision alert, front following vehicle collision alerts, front following vehicle collision warning, front frontal rearview parking radar, front gap, front impact alarm, front impact alert, front impact alerts, front impact collision warning, front impact detection, front impact notification, front impact sensor, front impact warning, front park assist, front park assistance, front parking, front passenger climate, front pedestrian, front pedestrian alert, front pedestrian alert notification, front pedestrian alert notifications, front pedestrian alerts, front pedestrian alerts notification, front pedestrian alerts notifications, front pedestrian avoidance detection, front pedestrian brake, front pedestrian brakes, front pedestrian braking, front pedestrian checker, front pedestrian checking, front pedestrian detection, front pedestrian detections, front pedestrian detector, front pedestrian detectors, front pedestrian monitor, front pedestrian monitoring, front pedestrian notification, front pedestrian notifications, front pedestrian protection, front pedestrian warner, front pedestrian warning, front pedestrian warning alert, front pedestrian warning alerts, front pedestrian warnings, front pedestrian way detector, front people alert, front people alerts, front people detection, front people notification, front people way alert, front people way alerts, front potential collision warning, front rear active park assist, front rear assist parking, front rear assisted parking, front rear end parking alert, front rear end parking alerts, front rear guided parking, front rear object detect parking assist, front rear optical audible parking sensors, front rear park alert, front rear park alerts, front rear park assist, front rear park assist warning, front rear park buddy, front rear parking, front rear parking alarm, front rear parking alert, front rear parking alerts, front rear parking assist, front rear parking assistance, front rear parking assistant, front rear parking avoidance, front rear parking crash avoidance, front rear parking detection, front rear parking display, front rear parking guidance, front rear parking helper, front rear parking indicator, front rear parking navigation, front rear parking notification, front rear parking safety sensors, front rear parking sensor, front rear parking sensors, front rear parking warning, front rear safe parking, front rear sensor parking, front rear ultrasonic parking, front reverse park assist, front reverse parking assist, front side blind spot alert, front side blind spot alerts, front side collision alert, front side collision alerts, front vehicle collision alert, front vehicle collision alerts, frontal accident alert, frontal accident alerts, frontal accident warning, frontal collision alert, frontal collision alerts, frontal collision brake, frontal collision brakes, frontal collision braking, frontal collision warning, frup, full parking alert, full parking alerts, full parking assistance, gap, hidden blind spot alert, hidden blind spot alerts, hitting back people alert, hitting back people alerts, hitting people alert, hitting people alert forward, hitting people alert front, hitting people alerts, hitting people alerts forward, hitting people alerts front, hitting rear people alert, hitting rear people alerts, impact alert, impact alerts, impact warning seat, information alert, information alerts, internal alert types, internal alerts types, kinds alert, kinds alerts, lake keep assist, lane, lane alarm, lane alert, lane alerts, lane assist, lane assistant, lane blind spot assist, lane blind zone alert, lane blind zone alerts, lane blind zone warning, lane change, lane change advisory, lane change alarm, lane change alert, lane change alert assistance, lane change alert indicator, lane change alert notification, lane change alert notifications, lane change alert side mirrors, lane change alerting, lane change alerts, lane change alerts assistance, lane change alerts indicator, lane change alerts notification, lane change alerts notifications, lane change alerts side mirrors, lane change and side blind alert, lane change and side blind alerts, lane change assist, lane change assist alert, lane change assist alerts, lane change assistance, lane change assistant, lane change blind spot alert, lane change blind spot alerts, lane change checker, lane change checking, lane change collision alert, lane change collision alerts, lane change collision avoidance, lane change collision warning, lane change detection, lane change detections, lane change detector, lane change detectors, lane change guidance, lane change guide, lane change hazard avoidance, lane change help, lane change helper, lane change mirror alert, lane change mirror alerts, lane change mirror warning, lane change monitor, lane change monitoring, lane change notification, lane change notification side mirrors, lane change notifications, lane change peripheral warning indicator, lane change protection, lane change proximity alert, lane change proximity alerts, lane change safety, lane change safety alert, lane change safety alerts, lane change safety assist, lane change safety assistant, lane change safety monitor, lane change sensor, lane change side alert, lane change side alerts, lane change side mirror alert, lane change side mirror alerts, lane change side mirror assistance, lane change vehicle alert, lane change vehicle alerts, lane change vehicle detection, lane change view alert, lane change view alerts, lane change viewing assistance, lane change warner, lane change warning, lane change warnings, lane change watcher, lane changer detector, lane changing alert, lane changing alert notification, lane changing alert notifications, lane changing alerts, lane changing alerts notification, lane changing alerts notifications, lane changing checker, lane changing checking, lane changing detection, lane changing detections, lane changing detector, lane changing detectors, lane changing monitor, lane changing monitoring, lane changing notification, lane changing notifications, lane changing warner, lane changing warning, lane changing warnings, lane check, lane crossover auto assist, lane crossover automatic assist, lane depart, lane departing warning signal, lane departure, lane departure alert, lane departure alerts, lane departure blind spot alert, lane departure blind spot alerts, lane departure side mirror warning, lane departure warning, lane deviation alert, lane deviation alerts, lane drift alert, lane drift alerts, lane drift warning, lane guardian, lane guidance, lane keep, lane keep alert, lane keep alerts, lane keep assist, lane keep assistance, lane keep assistant, lane keeper assist, lane maneuver alert, lane maneuver alerts, lane monitor, lane notifier, lane proximity warning, lane shift alert, lane shift alert notification, lane shift alert notifications, lane shift alerts, lane shift alerts notification, lane shift alerts notifications, lane shift checker, lane shift checking, lane shift detection, lane shift detections, lane shift detector, lane shift detectors, lane shift monitor, lane shift monitoring, lane shift notification, lane shift notifications, lane shift warner, lane shift warning, lane shift warnings, lane status alert, lane status alerts, lane switch alert, lane switch alerts, lane switch safety alert, lane switch safety alerts, lane switching assistance, lane warning, lane zone alert, lane zone alerts, laziness detection, laziness detection alert, laziness detection alerts, lazy driver detection, lazy drivers detection, lca, ldw, leaving lane alert, leaving lane alerts, mirror lane assist, mirror lane change alert, mirror lane change alert warning, mirror lane change alerts, mirror lane change alerts warning, mirror lane change warning, mirror lane switch warning, monitor lane changes, moving lanes side blind zone, neighbor lane notification, notification alert, notification alerts, notification types, notifications back pedestrians, notifications pedestrians, notifications pedestrians forward, notifications pedestrians front, notifications rear pedestrians, parallel parking, parallel parking assist, park alert, park alerts, park assist, park assistance, park assistant, parking, parking alert, parking alerts, parking assist, parking assistance, parking assistant, parking camera, parking help, parking helper, parking safety, parking sensor, parking sensors, pedestrian alert, pedestrian alert notification, pedestrian alert notifications, pedestrian alerts, pedestrian alerts notification, pedestrian alerts notifications, pedestrian avoidance detection, pedestrian brake, pedestrian brake assist, pedestrian brakes, pedestrian brakes assist, pedestrian braking, pedestrian braking assist, pedestrian checker, pedestrian checking, pedestrian detection, pedestrian detections, pedestrian detector, pedestrian detectors, pedestrian monitor, pedestrian monitoring, pedestrian notification, pedestrian notifications, pedestrian safety brake, pedestrian safety brakes, pedestrian safety braking, pedestrian warner, pedestrian warning, pedestrian warning alert, pedestrian warning alerts, pedestrian warnings, pedestrian way detector, people alert, people alerts, people detection, people notification, people way alert, people way alerts, preferred alert, preferred alerts, prevent lane changing collision alert, prevent lane changing collision alerts, rcc, rcta, rear alert, rear alerts, rear assist, rear avoidance cross traffic alert, rear avoidance cross traffic alerts, rear bumper alert, rear bumper alerts, rear bumper assist, rear bumper cross traffic warning, rear bumper parking assist, rear bumper protection, rear bumper view, rear camera, rear collision alert, rear collision alerts, rear cross alert, rear cross alerts, rear cross monitor, rear cross traffic, rear cross traffic alarm, rear cross traffic alert, rear cross traffic alert notification, rear cross traffic alert notifications, rear cross traffic alerts, rear cross traffic alerts notification, rear cross traffic alerts notifications, rear cross traffic assist, rear cross traffic assistance, rear cross traffic avoidance, rear cross traffic blindspot warning, rear cross traffic checker, rear cross traffic checking, rear cross traffic collision alert, rear cross traffic collision alerts, rear cross traffic collision mitigation, rear cross traffic collision warning, rear cross traffic crash warning, rear cross traffic detection, rear cross traffic detections, rear cross traffic detector, rear cross traffic detectors, rear cross traffic guidance, rear cross traffic indicator, rear cross traffic monitor, rear cross traffic monitoring, rear cross traffic notification, rear cross traffic notifications, rear cross traffic safety, rear cross traffic sensor, rear cross traffic warner, rear cross traffic warning, rear cross traffic warning indicator, rear cross traffic warnings, rear cross traffic zone, rear cross warning, rear crossing notification, rear end brake assistance, rear end brakes assistance, rear end braking assistance, rear end camera, rear end parking assist, rear end safety, rear end traffic alert, rear end traffic alerts, rear end ultrasonic parking assist, rear end warning, rear forward park alarm, rear front park alarm, rear hazard safety, rear object alert, rear object alerts, rear out alert, rear out alerts, rear out assist, rear out indicator, rear park assist, rear parking alert, rear parking alerts, rear parking assist, rear parking assist alert, rear parking assist alerts, rear parking assistance, rear parking assistance alert, rear parking assistance alerts, rear parking help, rear pedestrian alert, rear pedestrian alert notification, rear pedestrian alert notifications, rear pedestrian alerts, rear pedestrian alerts notification, rear pedestrian alerts notifications, rear pedestrian avoidance detection, rear pedestrian checker, rear pedestrian checking, rear pedestrian detection, rear pedestrian detections, rear pedestrian detector, rear pedestrian detectors, rear pedestrian monitor, rear pedestrian monitoring, rear pedestrian notification, rear pedestrian notifications, rear pedestrian warner, rear pedestrian warning, rear pedestrian warning alert, rear pedestrian warning alerts, rear pedestrian warnings, rear pedestrian way detector, rear people alert, rear people alerts, rear people detection, rear people notification, rear people way alert, rear people way alerts, rear side object detection, rear side traffic warnings, rear traffic, rear traffic alarm, rear traffic alert, rear traffic alert notification, rear traffic alert notifications, rear traffic alerts, rear traffic alerts notification, rear traffic alerts notifications, rear traffic approach alert, rear traffic approach alerts, rear traffic assist, rear traffic checker, rear traffic checking, rear traffic collision alert, rear traffic collision alerts, rear traffic detection, rear traffic detections, rear traffic detector, rear traffic detectors, rear traffic indicator, rear traffic monitor, rear traffic monitoring, rear traffic notification, rear traffic notifications, rear traffic safety, rear traffic sensor, rear traffic viewer, rear traffic warner, rear traffic warning, rear traffic warnings, rear trans traffic signal, rear ultrasonic parking, rear ultrasonic parking assist, rear ultrasonic parking assist or rearview bumper, rear up alarm, rear up alert, rear up alerts, rear up assist, rear up assistance, rear up assistant, rear up beeper, rear up bumper, rear up bumper view, rear up camera, rear up camera alert, rear up camera alerts, rear up collision alert, rear up collision alerts, rear up collision avoidance, rear up collision detector, rear up collision preventing, rear up cross alert, rear up cross alerts, rear up cross traffic detection, rear up debris collision assist, rear up detection, rear up detection alert, rear up detection alerts, rear up early warning, rear up hazard alert, rear up hazard alerts, rear up monitoring, rear up notification, rear up object detection, rear up obstacle alert, rear up obstacle alerts, rear up obstruction alert, rear up obstruction alerts, rear up obstruction detection, rear up parking alert, rear up parking alerts, rear up parking assist, rear up proximity, rear up safety, rear up sensor, rear up warning, rear vehicle guidance, rear vehicle indicator, rear vehicle notification, rear vehicle side traffic alert, rear vehicle side traffic alerts, rear vehicle traffic, rear vehicle warning, rear view alert, rear view alerts, rear view assist, rear view back up camera, rear view blind spot alert, rear view blind spot alerts, rear view camera, rear view detection, rear view detector, rear view traffic alert, rear view traffic alerts, rearview assist, rearview bumper, rearview bumper alert, rearview bumper alerts, rearview bumper assist, rearview bumper cross traffic alert, rearview bumper cross traffic alerts, rearview cross detection, rearview cross traffic alert, rearview cross traffic alerts, rearview cross traffic detection, rearview cross traffic signal, rearview parking, rearview parking assist, rearview warning, reversal cross traffic alert, reversal cross traffic alerts, reverse alert, reverse alerts, reverse crash warning detection, reverse cross traffic alarm, reverse cross traffic alert, reverse cross traffic alerting, reverse cross traffic alerts, reverse cross traffic assist, reverse cross traffic assistance, reverse cross traffic avoidance, reverse cross traffic avoidance alert, reverse cross traffic avoidance alerts, reverse cross traffic detection, reverse cross traffic guide, reverse cross traffic monitor, reverse cross traffic notification, reverse cross traffic notifications, reverse cross traffic warning, reverse cross warning, reverse crossing alert, reverse crossing alerts, reverse detector, reverse helper, reverse traffic warning, reversing cross traffic alert, reversing cross traffic alerts, reversing cross traffic assist, reversing cross traffic avoidance, right cross traffic monitor, right cross traffic sensor, safe lane side mirror alert, safe lane side mirror alerts, safe steering assist, safety alert, safety alert seat, safety alerts, safety alerts seat, safety parking warning, sbza, seat alert, seat alerts, seat vibration, seat vibration notification, seat vibration notifications, seat vibration type, seat vibration types, sensory alert, sensory alert types, sensory alerts, sensory alerts types, side alert, side alert lane change, side alerts, side alerts lane change, side blind, side blind alert, side blind alerts, side blind side alert, side blind side alerts, side blind sport alert, side blind sport alerts, side blind spot, side blind spot alert, side blind spot alert notification, side blind spot alert notifications, side blind spot alert warning, side blind spot alerts, side blind spot alerts notification, side blind spot alerts notifications, side blind spot alerts warning, side blind spot checker, side blind spot checking, side blind spot detection, side blind spot detections, side blind spot detector, side blind spot detectors, side blind spot monitor, side blind spot monitoring, side blind spot notification, side blind spot notifications, side blind spot warner, side blind spot warning, side blind spot warnings, side blind zone, side blind zone alert, side blind zone alert notification, side blind zone alert notifications, side blind zone alerts, side blind zone alerts notification, side blind zone alerts notifications, side blind zone checker, side blind zone checking, side blind zone detection, side blind zone detections, side blind zone detector, side blind zone detectors, side blind zone lane change alert, side blind zone lane change alerts, side blind zone monitor, side blind zone monitoring, side blind zone notification, side blind zone notifications, side blind zone sensor, side blind zone warner, side blind zone warning, side blind zone warnings, side collision alert, side collision alerts, side lane assist, side lane change alarm, side lane change alert, side lane change alerts, side lane change assist, side mirror alert, side mirror alerts, side mirror lane alert, side mirror lane alerts, side mirror lane change alert, side mirror lane change alerts, side mirror lane change detecting, side mirror lane change monitor, side mirror lane departure warning, side zone, side zone alert, side zone alerts, side zone blind alert, side zone blind alerts, sleepiness alert, sleepiness alert notification, sleepiness alert notifications, sleepiness alerts, sleepiness alerts notification, sleepiness alerts notifications, sleepiness checker, sleepiness checking, sleepiness detection, sleepiness detection alert, sleepiness detection alerts, sleepiness detections, sleepiness detector, sleepiness detectors, sleepiness monitor, sleepiness monitoring, sleepiness notification, sleepiness notifications, sleepiness warner, sleepiness warning, sleepiness warnings, sleepy alert, sleepy alert notification, sleepy alert notifications, sleepy alerts, sleepy alerts notification, sleepy alerts notifications, sleepy checker, sleepy checking, sleepy detection, sleepy detections, sleepy detector, sleepy detectors, sleepy driver, sleepy driver detection, sleepy drivers detection, sleepy monitor, sleepy monitoring, sleepy notification, sleepy notifications, sleepy warner, sleepy warning, sleepy warnings, sluggish driver detection, sluggish drivers detection, sluggishness detection, sluggishness detection alert, sluggishness detection alerts, smart brake, smart brakes, smart braking, smart lane monitor, steering assist, stupor detection, stupor detection alert, stupor detection alerts, switch lane alert, switch lane alerts, switching lane alert, switching lane alerts, tactile alert, tactile alerts, tired driver, tired driver detection, tired drivers detection, tiredness alert, tiredness alert notification, tiredness alert notifications, tiredness alerts, tiredness alerts notification, tiredness alerts notifications, tiredness checker, tiredness checking, tiredness detection, tiredness detection alert, tiredness detection alerts, tiredness detections, tiredness detector, tiredness detectors, tiredness monitor, tiredness monitoring, tiredness notification, tiredness notifications, tiredness warner, tiredness warning, tiredness warnings, traffic crossing back alert, traffic crossing back alerts, traffic crossing rear alert, traffic crossing rear alerts, type alert, type alerts, types alert, types alerts, ultrasonic parking, ultrasonic parking alert, ultrasonic parking alerts, ultrasonic parking assist, ultrasonic parking guidance, vehicle alert, vehicle alert choices, vehicle alert notification, vehicle alert options, vehicle alert types, vehicle alert types notifications, vehicle alerting, vehicle alerts, vehicle alerts choices, vehicle alerts notification, vehicle alerts options, vehicle alerts types, vehicle alerts types notifications, vehicle back cross traffic alert warning, vehicle back cross traffic alerts warning, vehicle rear cross traffic alert warning, vehicle rear cross traffic alerts warning, vibration alert, vibration alert types, vibration alerts, vibration alerts types, vibration seat, warning alert, warning alerts, warning back crossing, warning lane assist, warning lane change, warning notification types, warning rear crossing, warning type, warning types +$car_vehicle:phraseList +- automobile, automobiles, car, cars, vehicle, vehicles +$setting_name_air_delivery_mode_control:phraseList +- air, air control delivery, air delivery, air delivery control, air delivery mode, air delivery mode control, air direction, air direction control, air direction mode, air direction mode control, air flow, air flow control, air flow direction, air flow mode control, air flowing, air mode control, airflow, airflow control, airflow direction, airflow mode control, back adaptive air flow, back adjust air delivery, back adjustable air delivery, back air, back air current, back air delivery, back air delivery assist, back air delivery assistance, back air delivery channel, back air delivery circulation, back air delivery climate, back air delivery control, back air delivery flow management, back air delivery guidance, back air delivery mode, back air delivery mode control, back air delivery options, back air delivery selection, back air delivery selector, back air delivery type, back air delivery vent, back air delivery vents, back air direct, back air direction, back air direction control, back air direction delivery, back air direction flow, back air direction mode, back air direction mode control, back air direction vent, back air directional, back air directional delivery, back air directions, back air distribution, back air flow, back air flow choice, back air flow comfort adjustment, back air flow control, back air flow delivery, back air flow direction, back air flow direction regulator, back air flow director, back air flow distribution, back air flow master, back air flow mode control, back air flow optimization, back air flow option, back air flow regulator, back air flow selector, back air flow vent, back air function, back air location, back air mod, back air mode control, back air positioning, back air region, back air release, back air travel, back air use, back air vent delivery, back air vent direct, back air vent direction, back air vent distribution, back air vent diversion, back air vent flow, back air vent focus, back air vent regulator, back air vent selection, back air zone, back airflow, back airflow adapters, back airflow area, back airflow assist, back airflow choice, back airflow chooser, back airflow circulation, back airflow control, back airflow conveyance, back airflow deflector, back airflow delivery, back airflow detection, back airflow direct, back airflow direction, back airflow director, back airflow directors, back airflow indicator, back airflow mode control, back airflow move, back airflow regulation, back airflow regulator, back airflow restricting, back airflow router, back airflow selection, back airflow vent, back airflow vent modifier, back airflow vent operation, back airflow vent options, back airflow vent regulator, back airflow venting, back airflow vents, back airflow vents cabin, back airflow zone, back airflows, back cabin airflow vents, back combined adaptive air flow, back combined adjust air delivery, back combined adjustable air delivery, back combined air, back combined air current, back combined air delivery, back combined air delivery assist, back combined air delivery assistance, back combined air delivery channel, back combined air delivery circulation, back combined air delivery climate, back combined air delivery flow management, back combined air delivery guidance, back combined air delivery options, back combined air delivery selection, back combined air delivery selector, back combined air delivery type, back combined air delivery vent, back combined air delivery vents, back combined air direct, back combined air direction, back combined air direction delivery, back combined air direction flow, back combined air direction vent, back combined air directional, back combined air directional delivery, back combined air directions, back combined air distribution, back combined air flow, back combined air flow choice, back combined air flow comfort adjustment, back combined air flow delivery, back combined air flow direction, back combined air flow direction regulator, back combined air flow director, back combined air flow distribution, back combined air flow master, back combined air flow optimization, back combined air flow option, back combined air flow regulator, back combined air flow selector, back combined air flow vent, back combined air function, back combined air location, back combined air mod, back combined air positioning, back combined air region, back combined air release, back combined air travel, back combined air use, back combined air vent delivery, back combined air vent direct, back combined air vent direction, back combined air vent distribution, back combined air vent diversion, back combined air vent flow, back combined air vent focus, back combined air vent regulator, back combined air vent selection, back combined air zone, back combined airflow, back combined airflow adapters, back combined airflow area, back combined airflow assist, back combined airflow choice, back combined airflow chooser, back combined airflow circulation, back combined airflow conveyance, back combined airflow deflector, back combined airflow delivery, back combined airflow detection, back combined airflow direct, back combined airflow direction, back combined airflow director, back combined airflow directors, back combined airflow indicator, back combined airflow move, back combined airflow regulation, back combined airflow regulator, back combined airflow restricting, back combined airflow router, back combined airflow selection, back combined airflow vent, back combined airflow vent modifier, back combined airflow vent operation, back combined airflow vent options, back combined airflow vent regulator, back combined airflow venting, back combined airflow vents, back combined airflow vents cabin, back combined airflow zone, back combined airflows, back combined cabin airflow vents, back combined compartment airflow, back combined compartment flow, back combined custom air flow, back combined customize airflow position, back combined direct air flow, back combined direct air vent flow, back combined direct airflow, back combined direct airflows, back combined directed air flow, back combined directed airflow, back combined directed vehicle air flow, back combined directional air flow, back combined flow, back combined flow air, back combined flow vents, back combined guided airflow, back combined independent air flow, back combined individual air flow, back combined intuitive air delivery, back combined led airflow, back combined optimal air flow adjustment, back combined personalized airflow, back combined preferred airflow, back combined redirect air flow, back combined selective airflow, back combined smart airflow, back combined specialized airflow, back combined specific air flow, back combined specific airflow, back combined specific airflow vent, back combined specified airflow, back combined variable vent airflow, back compartment airflow, back compartment flow, back custom air flow, back customize airflow position, back direct air flow, back direct air vent flow, back direct airflow, back direct airflows, back directed air flow, back directed airflow, back directed vehicle air flow, back directional air flow, back flow, back flow air, back flow vents, back guided airflow, back independent air flow, back individual air flow, back intuitive air delivery, back led airflow, back left adaptive air flow, back left adjust air delivery, back left adjustable air delivery, back left air, back left air current, back left air delivery, back left air delivery assist, back left air delivery assistance, back left air delivery channel, back left air delivery circulation, back left air delivery climate, back left air delivery control, back left air delivery flow management, back left air delivery guidance, back left air delivery mode, back left air delivery mode control, back left air delivery options, back left air delivery selection, back left air delivery selector, back left air delivery type, back left air delivery vent, back left air delivery vents, back left air direct, back left air direction, back left air direction control, back left air direction delivery, back left air direction flow, back left air direction mode, back left air direction mode control, back left air direction vent, back left air directional, back left air directional delivery, back left air directions, back left air distribution, back left air flow, back left air flow choice, back left air flow comfort adjustment, back left air flow control, back left air flow delivery, back left air flow direction, back left air flow direction regulator, back left air flow director, back left air flow distribution, back left air flow master, back left air flow mode control, back left air flow optimization, back left air flow option, back left air flow regulator, back left air flow selector, back left air flow vent, back left air function, back left air location, back left air mod, back left air mode control, back left air positioning, back left air region, back left air release, back left air travel, back left air use, back left air vent delivery, back left air vent direct, back left air vent direction, back left air vent distribution, back left air vent diversion, back left air vent flow, back left air vent focus, back left air vent regulator, back left air vent selection, back left air zone, back left airflow, back left airflow adapters, back left airflow area, back left airflow assist, back left airflow choice, back left airflow chooser, back left airflow circulation, back left airflow control, back left airflow conveyance, back left airflow deflector, back left airflow delivery, back left airflow detection, back left airflow direct, back left airflow direction, back left airflow director, back left airflow directors, back left airflow indicator, back left airflow mode control, back left airflow move, back left airflow regulator, back left airflow restricting, back left airflow router, back left airflow selection, back left airflow vent, back left airflow vent modifier, back left airflow vent operation, back left airflow vent options, back left airflow vent regulator, back left airflow venting, back left airflow vents, back left airflow vents cabin, back left airflow zone, back left airflows, back left cabin airflow vents, back left compartment airflow, back left compartment flow, back left custom air flow, back left customize airflow position, back left direct air flow, back left direct air vent flow, back left direct airflow, back left direct airflows, back left directed air flow, back left directed airflow, back left directed vehicle air flow, back left directional air flow, back left flow, back left flow air, back left flow vents, back left guided airflow, back left independent air flow, back left individual air flow, back left intuitive air delivery, back left led airflow, back left optimal air flow adjustment, back left personalized airflow, back left preferred airflow, back left redirect air flow, back left selective airflow, back left side air, back left side air delivery, back left side air delivery control, back left side air delivery mode, back left side air delivery mode control, back left side air direction, back left side air direction control, back left side air direction mode, back left side air direction mode control, back left side air flow, back left side air flow control, back left side air flow direction, back left side air flow mode control, back left side air mode control, back left side airflow, back left side airflow control, back left side airflow direction, back left side airflow mode control, back left smart airflow, back left specialized airflow, back left specific air flow, back left specific airflow, back left specific airflow vent, back left specified airflow, back left variable vent airflow, back optimal air flow adjustment, back personalized airflow, back preferred airflow, back redirect air flow, back right adaptive air flow, back right adjust air delivery, back right adjustable air delivery, back right air, back right air current, back right air delivery, back right air delivery assist, back right air delivery assistance, back right air delivery channel, back right air delivery circulation, back right air delivery climate, back right air delivery control, back right air delivery flow management, back right air delivery guidance, back right air delivery mode, back right air delivery mode control, back right air delivery options, back right air delivery selection, back right air delivery selector, back right air delivery type, back right air delivery vent, back right air delivery vents, back right air direct, back right air direction, back right air direction control, back right air direction delivery, back right air direction flow, back right air direction mode, back right air direction mode control, back right air direction vent, back right air directional, back right air directional delivery, back right air directions, back right air distribution, back right air flow, back right air flow choice, back right air flow comfort adjustment, back right air flow control, back right air flow delivery, back right air flow direction, back right air flow direction regulator, back right air flow director, back right air flow distribution, back right air flow master, back right air flow mode control, back right air flow optimization, back right air flow option, back right air flow regulator, back right air flow selector, back right air flow vent, back right air function, back right air location, back right air mod, back right air mode control, back right air positioning, back right air region, back right air release, back right air travel, back right air use, back right air vent delivery, back right air vent direct, back right air vent direction, back right air vent distribution, back right air vent diversion, back right air vent flow, back right air vent focus, back right air vent regulator, back right air vent selection, back right air zone, back right airflow, back right airflow adapters, back right airflow area, back right airflow assist, back right airflow choice, back right airflow chooser, back right airflow circulation, back right airflow control, back right airflow conveyance, back right airflow deflector, back right airflow delivery, back right airflow detection, back right airflow direct, back right airflow direction, back right airflow director, back right airflow directors, back right airflow indicator, back right airflow mode control, back right airflow move, back right airflow regulation, back right airflow regulator, back right airflow restricting, back right airflow router, back right airflow selection, back right airflow vent, back right airflow vent modifier, back right airflow vent operation, back right airflow vent options, back right airflow vent regulator, back right airflow venting, back right airflow vents, back right airflow vents cabin, back right airflow zone, back right airflows, back right cabin airflow vents, back right compartment airflow, back right compartment flow, back right custom air flow, back right customize airflow position, back right direct air flow, back right direct air vent flow, back right direct airflow, back right direct airflows, back right directed air flow, back right directed airflow, back right directed vehicle air flow, back right directional air flow, back right flow, back right flow air, back right flow vents, back right guided airflow, back right independent air flow, back right individual air flow, back right intuitive air delivery, back right led airflow, back right optimal air flow adjustment, back right personalized airflow, back right preferred airflow, back right redirect air flow, back right selective airflow, back right side air, back right side air delivery, back right side air delivery control, back right side air delivery mode, back right side air delivery mode control, back right side air direction, back right side air direction control, back right side air direction mode, back right side air direction mode control, back right side air flow, back right side air flow control, back right side air flow direction, back right side air flow mode control, back right side air mode control, back right side airflow, back right side airflow control, back right side airflow direction, back right side airflow mode control, back right smart airflow, back right specialized airflow, back right specific air flow, back right specific airflow, back right specific airflow vent, back right specified airflow, back right variable vent airflow, back selective airflow, back smart airflow, back specialized airflow, back specific air flow, back specific airflow, back specific airflow vent, back specified airflow, back variable vent airflow, co-driver air, co-driver air delivery, co-driver air delivery control, co-driver air delivery mode, co-driver air delivery mode control, co-driver air direction, co-driver air direction control, co-driver air direction mode, co-driver air direction mode control, co-driver air flow, co-driver air flow control, co-driver air flow direction, co-driver air flow mode control, co-driver air mode control, co-driver airflow, co-driver airflow control, co-driver airflow direction, co-driver airflow mode control, co-driver side air, co-driver side air delivery, co-driver side air delivery control, co-driver side air delivery mode, co-driver side air delivery mode control, co-driver side air direction, co-driver side air direction control, co-driver side air direction mode, co-driver side air direction mode control, co-driver side air flow, co-driver side air flow control, co-driver side air flow direction, co-driver side air flow mode control, co-driver side air mode control, co-driver side airflow, co-driver side airflow control, co-driver side airflow direction, co-driver side airflow mode control, co-driver's air, co-driver's air delivery, co-driver's air delivery control, co-driver's air delivery mode, co-driver's air delivery mode control, co-driver's air direction, co-driver's air direction control, co-driver's air direction mode, co-driver's air direction mode control, co-driver's air flow, co-driver's air flow control, co-driver's air flow direction, co-driver's air flow mode control, co-driver's air mode control, co-driver's airflow, co-driver's airflow control, co-driver's airflow direction, co-driver's airflow mode control, co-driver's side air, co-driver's side air delivery, co-driver's side air delivery control, co-driver's side air delivery mode, co-driver's side air delivery mode control, co-driver's side air direction, co-driver's side air direction control, co-driver's side air direction mode, co-driver's side air direction mode control, co-driver's side air flow, co-driver's side air flow control, co-driver's side air flow direction, co-driver's side air flow mode control, co-driver's side air mode control, co-driver's side airflow, co-driver's side airflow control, co-driver's side airflow direction, co-driver's side airflow mode control, co-drivers air, co-drivers air delivery, co-drivers air delivery control, co-drivers air delivery mode, co-drivers air delivery mode control, co-drivers air direction, co-drivers air direction control, co-drivers air direction mode, co-drivers air direction mode control, co-drivers air flow, co-drivers air flow control, co-drivers air flow direction, co-drivers air flow mode control, co-drivers air mode control, co-drivers airflow, co-drivers airflow control, co-drivers airflow direction, co-drivers airflow mode control, co-drivers side air, co-drivers side air delivery, co-drivers side air delivery control, co-drivers side air delivery mode, co-drivers side air delivery mode control, co-drivers side air direction, co-drivers side air direction control, co-drivers side air direction mode, co-drivers side air direction mode control, co-drivers side air flow, co-drivers side air flow control, co-drivers side air flow direction, co-drivers side air flow mode control, co-drivers side air mode control, co-drivers side airflow, co-drivers side airflow control, co-drivers side airflow direction, co-drivers side airflow mode control, driver adaptive air flow, driver adjust air delivery, driver adjustable air delivery, driver air, driver air current, driver air delivery, driver air delivery assist, driver air delivery assistance, driver air delivery channel, driver air delivery circulation, driver air delivery climate, driver air delivery control, driver air delivery flow management, driver air delivery guidance, driver air delivery mode, driver air delivery mode control, driver air delivery options, driver air delivery selection, driver air delivery selector, driver air delivery type, driver air delivery vent, driver air delivery vents, driver air direct, driver air direction, driver air direction control, driver air direction delivery, driver air direction flow, driver air direction mode, driver air direction mode control, driver air direction vent, driver air directional, driver air directional delivery, driver air directions, driver air distribution, driver air flow, driver air flow choice, driver air flow comfort adjustment, driver air flow control, driver air flow delivery, driver air flow direction, driver air flow direction regulator, driver air flow director, driver air flow distribution, driver air flow master, driver air flow mode control, driver air flow optimization, driver air flow option, driver air flow regulator, driver air flow selector, driver air flow vent, driver air function, driver air location, driver air mod, driver air mode control, driver air positioning, driver air region, driver air release, driver air travel, driver air use, driver air vent delivery, driver air vent direct, driver air vent direction, driver air vent distribution, driver air vent diversion, driver air vent flow, driver air vent focus, driver air vent regulator, driver air vent selection, driver air zone, driver airflow, driver airflow adapters, driver airflow area, driver airflow assist, driver airflow choice, driver airflow chooser, driver airflow circulation, driver airflow control, driver airflow conveyance, driver airflow deflector, driver airflow delivery, driver airflow detection, driver airflow direct, driver airflow direction, driver airflow director, driver airflow directors, driver airflow indicator, driver airflow mode control, driver airflow move, driver airflow regulator, driver airflow restricting, driver airflow router, driver airflow selection, driver airflow vent, driver airflow vent modifier, driver airflow vent operation, driver airflow vent options, driver airflow vent regulator, driver airflow venting, driver airflow vents, driver airflow vents cabin, driver airflow zone, driver airflows, driver cabin airflow vents, driver compartment airflow, driver compartment flow, driver custom air flow, driver customize airflow position, driver direct air flow, driver direct air vent flow, driver direct airflow, driver direct airflows, driver directed air flow, driver directed airflow, driver directed vehicle air flow, driver directional air flow, driver flow, driver flow air, driver flow vents, driver guided airflow, driver independent air flow, driver individual air flow, driver intuitive air delivery, driver led airflow, driver optimal air flow adjustment, driver personalized airflow, driver preferred airflow, driver redirect air flow, driver selective airflow, driver side adaptive air flow, driver side adjust air delivery, driver side adjustable air delivery, driver side air, driver side air current, driver side air delivery, driver side air delivery assist, driver side air delivery assistance, driver side air delivery channel, driver side air delivery circulation, driver side air delivery climate, driver side air delivery control, driver side air delivery flow management, driver side air delivery guidance, driver side air delivery mode, driver side air delivery mode control, driver side air delivery options, driver side air delivery selection, driver side air delivery selector, driver side air delivery type, driver side air delivery vent, driver side air delivery vents, driver side air direct, driver side air direction, driver side air direction control, driver side air direction delivery, driver side air direction flow, driver side air direction mode, driver side air direction mode control, driver side air direction vent, driver side air directional, driver side air directional delivery, driver side air directions, driver side air distribution, driver side air flow, driver side air flow choice, driver side air flow comfort adjustment, driver side air flow control, driver side air flow delivery, driver side air flow direction, driver side air flow direction regulator, driver side air flow director, driver side air flow distribution, driver side air flow master, driver side air flow mode control, driver side air flow optimization, driver side air flow option, driver side air flow regulator, driver side air flow selector, driver side air flow vent, driver side air function, driver side air location, driver side air mod, driver side air mode control, driver side air positioning, driver side air region, driver side air release, driver side air travel, driver side air use, driver side air vent delivery, driver side air vent direct, driver side air vent direction, driver side air vent distribution, driver side air vent diversion, driver side air vent flow, driver side air vent focus, driver side air vent regulator, driver side air vent selection, driver side air zone, driver side airflow, driver side airflow adapters, driver side airflow area, driver side airflow assist, driver side airflow choice, driver side airflow chooser, driver side airflow circulation, driver side airflow control, driver side airflow conveyance, driver side airflow deflector, driver side airflow delivery, driver side airflow detection, driver side airflow direct, driver side airflow direction, driver side airflow director, driver side airflow directors, driver side airflow indicator, driver side airflow mode control, driver side airflow move, driver side airflow regulator, driver side airflow restricting, driver side airflow router, driver side airflow selection, driver side airflow vent, driver side airflow vent modifier, driver side airflow vent operation, driver side airflow vent options, driver side airflow vent regulator, driver side airflow venting, driver side airflow vents, driver side airflow vents cabin, driver side airflow zone, driver side airflows, driver side cabin airflow vents, driver side compartment airflow, driver side compartment flow, driver side custom air flow, driver side customize airflow position, driver side direct air flow, driver side direct air vent flow, driver side direct airflow, driver side direct airflows, driver side directed air flow, driver side directed airflow, driver side directed vehicle air flow, driver side directional air flow, driver side flow, driver side flow air, driver side flow vents, driver side guided airflow, driver side independent air flow, driver side individual air flow, driver side intuitive air delivery, driver side led airflow, driver side optimal air flow adjustment, driver side personalized airflow, driver side preferred airflow, driver side redirect air flow, driver side selective airflow, driver side smart airflow, driver side specialized airflow, driver side specific air flow, driver side specific airflow, driver side specific airflow vent, driver side specified airflow, driver side variable vent airflow, driver smart airflow, driver specialized airflow, driver specific air flow, driver specific airflow, driver specific airflow vent, driver specified airflow, driver variable vent airflow, driver's air, driver's air delivery, driver's air delivery control, driver's air delivery mode, driver's air delivery mode control, driver's air direction, driver's air direction control, driver's air direction mode, driver's air direction mode control, driver's air flow, driver's air flow control, driver's air flow direction, driver's air flow mode control, driver's air mode control, driver's airflow, driver's airflow control, driver's airflow direction, driver's airflow mode control, driver's side air, driver's side air delivery, driver's side air delivery control, driver's side air delivery mode, driver's side air delivery mode control, driver's side air direction, driver's side air direction control, driver's side air direction mode, driver's side air direction mode control, driver's side air flow, driver's side air flow control, driver's side air flow direction, driver's side air flow mode control, driver's side air mode control, driver's side airflow, driver's side airflow control, driver's side airflow direction, driver's side airflow mode control, drivers adaptive air flow, drivers adjust air delivery, drivers adjustable air delivery, drivers air, drivers air current, drivers air delivery, drivers air delivery assist, drivers air delivery assistance, drivers air delivery channel, drivers air delivery circulation, drivers air delivery climate, drivers air delivery control, drivers air delivery flow management, drivers air delivery guidance, drivers air delivery mode, drivers air delivery mode control, drivers air delivery options, drivers air delivery selection, drivers air delivery selector, drivers air delivery type, drivers air delivery vent, drivers air delivery vents, drivers air direct, drivers air direction, drivers air direction control, drivers air direction delivery, drivers air direction flow, drivers air direction mode, drivers air direction mode control, drivers air direction vent, drivers air directional, drivers air directional delivery, drivers air directions, drivers air distribution, drivers air flow, drivers air flow choice, drivers air flow comfort adjustment, drivers air flow control, drivers air flow delivery, drivers air flow direction, drivers air flow direction regulator, drivers air flow director, drivers air flow distribution, drivers air flow master, drivers air flow mode control, drivers air flow optimization, drivers air flow option, drivers air flow regulator, drivers air flow selector, drivers air flow vent, drivers air function, drivers air location, drivers air mod, drivers air mode control, drivers air positioning, drivers air region, drivers air release, drivers air travel, drivers air use, drivers air vent delivery, drivers air vent direct, drivers air vent direction, drivers air vent distribution, drivers air vent diversion, drivers air vent flow, drivers air vent focus, drivers air vent regulator, drivers air vent selection, drivers air zone, drivers airflow, drivers airflow adapters, drivers airflow area, drivers airflow assist, drivers airflow choice, drivers airflow chooser, drivers airflow circulation, drivers airflow control, drivers airflow conveyance, drivers airflow deflector, drivers airflow delivery, drivers airflow detection, drivers airflow direct, drivers airflow direction, drivers airflow director, drivers airflow directors, drivers airflow indicator, drivers airflow mode control, drivers airflow move, drivers airflow regulator, drivers airflow restricting, drivers airflow router, drivers airflow selection, drivers airflow vent, drivers airflow vent modifier, drivers airflow vent operation, drivers airflow vent options, drivers airflow vent regulator, drivers airflow venting, drivers airflow vents, drivers airflow vents cabin, drivers airflow zone, drivers airflows, drivers cabin airflow vents, drivers compartment airflow, drivers compartment flow, drivers custom air flow, drivers customize airflow position, drivers direct air flow, drivers direct air vent flow, drivers direct airflow, drivers direct airflows, drivers directed air flow, drivers directed airflow, drivers directed vehicle air flow, drivers directional air flow, drivers flow, drivers flow air, drivers flow vents, drivers guided airflow, drivers independent air flow, drivers individual air flow, drivers intuitive air delivery, drivers led airflow, drivers optimal air flow adjustment, drivers personalized airflow, drivers preferred airflow, drivers redirect air flow, drivers selective airflow, drivers side adaptive air flow, drivers side adjust air delivery, drivers side adjustable air delivery, drivers side air, drivers side air current, drivers side air delivery, drivers side air delivery assist, drivers side air delivery assistance, drivers side air delivery channel, drivers side air delivery circulation, drivers side air delivery climate, drivers side air delivery control, drivers side air delivery flow management, drivers side air delivery guidance, drivers side air delivery mode, drivers side air delivery mode control, drivers side air delivery options, drivers side air delivery selection, drivers side air delivery selector, drivers side air delivery type, drivers side air delivery vent, drivers side air delivery vents, drivers side air direct, drivers side air direction, drivers side air direction control, drivers side air direction delivery, drivers side air direction flow, drivers side air direction mode, drivers side air direction mode control, drivers side air direction vent, drivers side air directional, drivers side air directional delivery, drivers side air directions, drivers side air distribution, drivers side air flow, drivers side air flow choice, drivers side air flow comfort adjustment, drivers side air flow control, drivers side air flow delivery, drivers side air flow direction, drivers side air flow direction regulator, drivers side air flow director, drivers side air flow distribution, drivers side air flow master, drivers side air flow mode control, drivers side air flow optimization, drivers side air flow option, drivers side air flow regulator, drivers side air flow selector, drivers side air flow vent, drivers side air function, drivers side air location, drivers side air mod, drivers side air mode control, drivers side air positioning, drivers side air region, drivers side air release, drivers side air travel, drivers side air use, drivers side air vent delivery, drivers side air vent direct, drivers side air vent direction, drivers side air vent distribution, drivers side air vent diversion, drivers side air vent flow, drivers side air vent focus, drivers side air vent regulator, drivers side air vent selection, drivers side air zone, drivers side airflow, drivers side airflow adapters, drivers side airflow area, drivers side airflow assist, drivers side airflow choice, drivers side airflow chooser, drivers side airflow circulation, drivers side airflow control, drivers side airflow conveyance, drivers side airflow deflector, drivers side airflow delivery, drivers side airflow detection, drivers side airflow direct, drivers side airflow direction, drivers side airflow director, drivers side airflow directors, drivers side airflow indicator, drivers side airflow mode control, drivers side airflow move, drivers side airflow regulator, drivers side airflow restricting, drivers side airflow router, drivers side airflow selection, drivers side airflow vent, drivers side airflow vent modifier, drivers side airflow vent operation, drivers side airflow vent options, drivers side airflow vent regulator, drivers side airflow venting, drivers side airflow vents, drivers side airflow vents cabin, drivers side airflow zone, drivers side airflows, drivers side cabin airflow vents, drivers side compartment airflow, drivers side compartment flow, drivers side custom air flow, drivers side customize airflow position, drivers side direct air flow, drivers side direct air vent flow, drivers side direct airflow, drivers side direct airflows, drivers side directed air flow, drivers side directed airflow, drivers side directed vehicle air flow, drivers side directional air flow, drivers side flow, drivers side flow air, drivers side flow vents, drivers side guided airflow, drivers side independent air flow, drivers side individual air flow, drivers side intuitive air delivery, drivers side led airflow, drivers side optimal air flow adjustment, drivers side personalized airflow, drivers side preferred airflow, drivers side redirect air flow, drivers side selective airflow, drivers side smart airflow, drivers side specialized airflow, drivers side specific air flow, drivers side specific airflow, drivers side specific airflow vent, drivers side specified airflow, drivers side variable vent airflow, drivers smart airflow, drivers specialized airflow, drivers specific air flow, drivers specific airflow, drivers specific airflow vent, drivers specified airflow, drivers variable vent airflow, front adaptive air flow, front adjust air delivery, front adjustable air delivery, front air, front air current, front air delivery, front air delivery assist, front air delivery assistance, front air delivery channel, front air delivery circulation, front air delivery climate, front air delivery control, front air delivery flow management, front air delivery guidance, front air delivery mode, front air delivery mode control, front air delivery options, front air delivery selection, front air delivery selector, front air delivery type, front air delivery vent, front air delivery vents, front air direct, front air direction, front air direction control, front air direction delivery, front air direction flow, front air direction mode, front air direction mode control, front air direction vent, front air directional, front air directional delivery, front air directions, front air distribution, front air flow, front air flow choice, front air flow comfort adjustment, front air flow control, front air flow delivery, front air flow direction, front air flow direction regulator, front air flow director, front air flow distribution, front air flow master, front air flow mode control, front air flow optimization, front air flow option, front air flow regulator, front air flow selector, front air flow vent, front air function, front air location, front air mod, front air mode control, front air positioning, front air region, front air release, front air travel, front air use, front air vent delivery, front air vent direct, front air vent direction, front air vent distribution, front air vent diversion, front air vent flow, front air vent focus, front air vent regulator, front air vent selection, front air zone, front airflow, front airflow adapters, front airflow area, front airflow assist, front airflow choice, front airflow chooser, front airflow circulation, front airflow control, front airflow conveyance, front airflow deflector, front airflow delivery, front airflow detection, front airflow direct, front airflow direction, front airflow director, front airflow directors, front airflow indicator, front airflow mode control, front airflow move, front airflow regulator, front airflow restricting, front airflow router, front airflow selection, front airflow vent, front airflow vent modifier, front airflow vent operation, front airflow vent options, front airflow vent regulator, front airflow venting, front airflow vents, front airflow vents cabin, front airflow zone, front airflows, front cabin airflow vents, front combined adaptive air flow, front combined adjust air delivery, front combined adjustable air delivery, front combined air, front combined air current, front combined air delivery, front combined air delivery assist, front combined air delivery assistance, front combined air delivery channel, front combined air delivery circulation, front combined air delivery climate, front combined air delivery control, front combined air delivery flow management, front combined air delivery guidance, front combined air delivery mode, front combined air delivery mode control, front combined air delivery options, front combined air delivery selection, front combined air delivery selector, front combined air delivery type, front combined air delivery vent, front combined air delivery vents, front combined air direct, front combined air direction, front combined air direction control, front combined air direction delivery, front combined air direction flow, front combined air direction mode, front combined air direction mode control, front combined air direction vent, front combined air directional, front combined air directional delivery, front combined air directions, front combined air distribution, front combined air flow, front combined air flow choice, front combined air flow comfort adjustment, front combined air flow control, front combined air flow delivery, front combined air flow direction, front combined air flow direction regulator, front combined air flow director, front combined air flow distribution, front combined air flow master, front combined air flow mode control, front combined air flow optimization, front combined air flow option, front combined air flow regulator, front combined air flow selector, front combined air flow vent, front combined air function, front combined air location, front combined air mod, front combined air mode control, front combined air positioning, front combined air region, front combined air release, front combined air travel, front combined air use, front combined air vent delivery, front combined air vent direct, front combined air vent direction, front combined air vent distribution, front combined air vent diversion, front combined air vent flow, front combined air vent focus, front combined air vent regulator, front combined air vent selection, front combined air zone, front combined airflow, front combined airflow adapters, front combined airflow area, front combined airflow assist, front combined airflow choice, front combined airflow chooser, front combined airflow circulation, front combined airflow control, front combined airflow conveyance, front combined airflow deflector, front combined airflow delivery, front combined airflow detection, front combined airflow direct, front combined airflow direction, front combined airflow director, front combined airflow directors, front combined airflow indicator, front combined airflow mode control, front combined airflow move, front combined airflow regulator, front combined airflow restricting, front combined airflow router, front combined airflow selection, front combined airflow vent, front combined airflow vent modifier, front combined airflow vent operation, front combined airflow vent options, front combined airflow vent regulator, front combined airflow venting, front combined airflow vents, front combined airflow vents cabin, front combined airflow zone, front combined airflows, front combined cabin airflow vents, front combined compartment airflow, front combined compartment flow, front combined custom air flow, front combined customize airflow position, front combined direct air flow, front combined direct air vent flow, front combined direct airflow, front combined direct airflows, front combined directed air flow, front combined directed airflow, front combined directed vehicle air flow, front combined directional air flow, front combined flow, front combined flow air, front combined flow vents, front combined guided airflow, front combined independent air flow, front combined individual air flow, front combined intuitive air delivery, front combined led airflow, front combined optimal air flow adjustment, front combined personalized airflow, front combined preferred airflow, front combined redirect air flow, front combined selective airflow, front combined smart airflow, front combined specialized airflow, front combined specific air flow, front combined specific airflow, front combined specific airflow vent, front combined specified airflow, front combined variable vent airflow, front compartment airflow, front compartment flow, front custom air flow, front customize airflow position, front direct air flow, front direct air vent flow, front direct airflow, front direct airflows, front directed air flow, front directed airflow, front directed vehicle air flow, front directional air flow, front flow, front flow air, front flow vents, front guided airflow, front independent air flow, front individual air flow, front intuitive air delivery, front led airflow, front left adaptive air flow, front left adjust air delivery, front left adjustable air delivery, front left air, front left air current, front left air delivery, front left air delivery assist, front left air delivery assistance, front left air delivery channel, front left air delivery circulation, front left air delivery climate, front left air delivery control, front left air delivery flow management, front left air delivery guidance, front left air delivery mode, front left air delivery mode control, front left air delivery options, front left air delivery selection, front left air delivery selector, front left air delivery type, front left air delivery vent, front left air delivery vents, front left air direct, front left air direction, front left air direction control, front left air direction delivery, front left air direction flow, front left air direction mode, front left air direction mode control, front left air direction vent, front left air directional, front left air directional delivery, front left air directions, front left air distribution, front left air flow, front left air flow choice, front left air flow comfort adjustment, front left air flow control, front left air flow delivery, front left air flow direction, front left air flow direction regulator, front left air flow director, front left air flow distribution, front left air flow master, front left air flow mode control, front left air flow optimization, front left air flow option, front left air flow regulator, front left air flow selector, front left air flow vent, front left air function, front left air location, front left air mod, front left air mode control, front left air positioning, front left air region, front left air release, front left air travel, front left air use, front left air vent delivery, front left air vent direct, front left air vent direction, front left air vent distribution, front left air vent diversion, front left air vent flow, front left air vent focus, front left air vent regulator, front left air vent selection, front left air zone, front left airflow, front left airflow adapters, front left airflow area, front left airflow assist, front left airflow choice, front left airflow chooser, front left airflow circulation, front left airflow control, front left airflow conveyance, front left airflow deflector, front left airflow delivery, front left airflow detection, front left airflow direct, front left airflow direction, front left airflow director, front left airflow directors, front left airflow indicator, front left airflow mode control, front left airflow move, front left airflow regulator, front left airflow restricting, front left airflow router, front left airflow selection, front left airflow vent, front left airflow vent modifier, front left airflow vent operation, front left airflow vent options, front left airflow vent regulator, front left airflow venting, front left airflow vents, front left airflow vents cabin, front left airflow zone, front left airflows, front left cabin airflow vents, front left compartment airflow, front left compartment flow, front left custom air flow, front left customize airflow position, front left direct air flow, front left direct air vent flow, front left direct airflow, front left direct airflows, front left directed air flow, front left directed airflow, front left directed vehicle air flow, front left directional air flow, front left flow, front left flow air, front left flow vents, front left guided airflow, front left independent air flow, front left individual air flow, front left intuitive air delivery, front left led airflow, front left optimal air flow adjustment, front left personalized airflow, front left preferred airflow, front left redirect air flow, front left selective airflow, front left side air, front left side air delivery, front left side air delivery control, front left side air delivery mode, front left side air delivery mode control, front left side air direction, front left side air direction control, front left side air direction mode, front left side air direction mode control, front left side air flow, front left side air flow control, front left side air flow direction, front left side air flow mode control, front left side air mode control, front left side airflow, front left side airflow control, front left side airflow direction, front left side airflow mode control, front left smart airflow, front left specialized airflow, front left specific air flow, front left specific airflow, front left specific airflow vent, front left specified airflow, front left variable vent airflow, front optimal air flow adjustment, front personalized airflow, front preferred airflow, front redirect air flow, front right adaptive air flow, front right adjust air delivery, front right adjustable air delivery, front right air, front right air current, front right air delivery, front right air delivery assist, front right air delivery assistance, front right air delivery channel, front right air delivery circulation, front right air delivery climate, front right air delivery control, front right air delivery flow management, front right air delivery guidance, front right air delivery mode, front right air delivery mode control, front right air delivery options, front right air delivery selection, front right air delivery selector, front right air delivery type, front right air delivery vent, front right air delivery vents, front right air direct, front right air direction, front right air direction control, front right air direction delivery, front right air direction flow, front right air direction mode, front right air direction mode control, front right air direction vent, front right air directional, front right air directional delivery, front right air directions, front right air distribution, front right air flow, front right air flow choice, front right air flow comfort adjustment, front right air flow control, front right air flow delivery, front right air flow direction, front right air flow direction regulator, front right air flow director, front right air flow distribution, front right air flow master, front right air flow mode control, front right air flow optimization, front right air flow option, front right air flow regulator, front right air flow selector, front right air flow vent, front right air function, front right air location, front right air mod, front right air mode control, front right air positioning, front right air region, front right air release, front right air travel, front right air use, front right air vent delivery, front right air vent direct, front right air vent direction, front right air vent distribution, front right air vent diversion, front right air vent flow, front right air vent focus, front right air vent regulator, front right air vent selection, front right air zone, front right airflow, front right airflow adapters, front right airflow area, front right airflow assist, front right airflow choice, front right airflow chooser, front right airflow circulation, front right airflow control, front right airflow conveyance, front right airflow deflector, front right airflow delivery, front right airflow detection, front right airflow direct, front right airflow direction, front right airflow director, front right airflow directors, front right airflow indicator, front right airflow mode control, front right airflow move, front right airflow regulator, front right airflow restricting, front right airflow router, front right airflow selection, front right airflow vent, front right airflow vent modifier, front right airflow vent operation, front right airflow vent options, front right airflow vent regulator, front right airflow venting, front right airflow vents, front right airflow vents cabin, front right airflow zone, front right airflows, front right cabin airflow vents, front right compartment airflow, front right compartment flow, front right custom air flow, front right customize airflow position, front right direct air flow, front right direct air vent flow, front right direct airflow, front right direct airflows, front right directed air flow, front right directed airflow, front right directed vehicle air flow, front right directional air flow, front right flow, front right flow air, front right flow vents, front right guided airflow, front right independent air flow, front right individual air flow, front right intuitive air delivery, front right led airflow, front right optimal air flow adjustment, front right personalized airflow, front right preferred airflow, front right redirect air flow, front right selective airflow, front right side air, front right side air delivery, front right side air delivery control, front right side air delivery mode, front right side air delivery mode control, front right side air direction, front right side air direction control, front right side air direction mode, front right side air direction mode control, front right side air flow, front right side air flow control, front right side air flow direction, front right side air flow mode control, front right side air mode control, front right side airflow, front right side airflow control, front right side airflow direction, front right side airflow mode control, front right smart airflow, front right specialized airflow, front right specific air flow, front right specific airflow, front right specific airflow vent, front right specified airflow, front right variable vent airflow, front selective airflow, front side adaptive air flow, front side adjust air delivery, front side adjustable air delivery, front side air, front side air current, front side air delivery, front side air delivery assist, front side air delivery assistance, front side air delivery channel, front side air delivery circulation, front side air delivery climate, front side air delivery flow management, front side air delivery guidance, front side air delivery options, front side air delivery selection, front side air delivery selector, front side air delivery type, front side air delivery vent, front side air delivery vents, front side air direct, front side air direction, front side air direction delivery, front side air direction flow, front side air direction vent, front side air directional, front side air directional delivery, front side air directions, front side air distribution, front side air flow, front side air flow choice, front side air flow comfort adjustment, front side air flow delivery, front side air flow direction, front side air flow direction regulator, front side air flow director, front side air flow distribution, front side air flow master, front side air flow optimization, front side air flow option, front side air flow regulator, front side air flow selector, front side air flow vent, front side air function, front side air location, front side air mod, front side air positioning, front side air region, front side air release, front side air travel, front side air use, front side air vent delivery, front side air vent direct, front side air vent direction, front side air vent distribution, front side air vent diversion, front side air vent flow, front side air vent focus, front side air vent regulator, front side air vent selection, front side air zone, front side airflow, front side airflow adapters, front side airflow area, front side airflow assist, front side airflow choice, front side airflow chooser, front side airflow circulation, front side airflow conveyance, front side airflow deflector, front side airflow delivery, front side airflow detection, front side airflow direct, front side airflow direction, front side airflow director, front side airflow directors, front side airflow indicator, front side airflow move, front side airflow regulator, front side airflow restricting, front side airflow router, front side airflow selection, front side airflow vent, front side airflow vent modifier, front side airflow vent operation, front side airflow vent options, front side airflow vent regulator, front side airflow venting, front side airflow vents, front side airflow vents cabin, front side airflow zone, front side airflows, front side cabin airflow vents, front side compartment airflow, front side compartment flow, front side custom air flow, front side customize airflow position, front side direct air flow, front side direct air vent flow, front side direct airflow, front side direct airflows, front side directed air flow, front side directed airflow, front side directed vehicle air flow, front side directional air flow, front side flow, front side flow air, front side flow vents, front side guided airflow, front side independent air flow, front side individual air flow, front side intuitive air delivery, front side led airflow, front side optimal air flow adjustment, front side personalized airflow, front side preferred airflow, front side redirect air flow, front side selective airflow, front side smart airflow, front side specialized airflow, front side specific air flow, front side specific airflow, front side specific airflow vent, front side specified airflow, front side variable vent airflow, front smart airflow, front specialized airflow, front specific air flow, front specific airflow, front specific airflow vent, front specified airflow, front variable vent airflow, left air, left air delivery, left air delivery control, left air delivery mode, left air delivery mode control, left air direction, left air direction control, left air direction mode, left air direction mode control, left air flow, left air flow control, left air flow direction, left air flow mode control, left air mode control, left airflow, left airflow control, left airflow direction, left airflow mode control, left back air, left back air delivery, left back air delivery control, left back air delivery mode, left back air delivery mode control, left back air direction, left back air direction control, left back air direction mode, left back air direction mode control, left back air flow, left back air flow control, left back air flow direction, left back air flow mode control, left back air mode control, left back airflow, left back airflow control, left back airflow direction, left back airflow mode control, left back side air, left back side air delivery, left back side air delivery control, left back side air delivery mode, left back side air delivery mode control, left back side air direction, left back side air direction control, left back side air direction mode, left back side air direction mode control, left back side air flow, left back side air flow control, left back side air flow direction, left back side air flow mode control, left back side air mode control, left back side airflow, left back side airflow control, left back side airflow direction, left back side airflow mode control, left front air, left front air delivery, left front air delivery control, left front air delivery mode, left front air delivery mode control, left front air direction, left front air direction control, left front air direction mode, left front air direction mode control, left front air flow, left front air flow control, left front air flow direction, left front air flow mode control, left front air mode control, left front airflow, left front airflow control, left front airflow direction, left front airflow mode control, left front side air, left front side air delivery, left front side air delivery control, left front side air delivery mode, left front side air delivery mode control, left front side air direction, left front side air direction control, left front side air direction mode, left front side air direction mode control, left front side air flow, left front side air flow control, left front side air flow direction, left front side air flow mode control, left front side air mode control, left front side airflow, left front side airflow control, left front side airflow direction, left front side airflow mode control, left rear air, left rear air delivery, left rear air delivery control, left rear air delivery mode, left rear air delivery mode control, left rear air direction, left rear air direction control, left rear air direction mode, left rear air direction mode control, left rear air flow, left rear air flow control, left rear air flow direction, left rear air flow mode control, left rear air mode control, left rear airflow, left rear airflow control, left rear airflow direction, left rear airflow mode control, left rear side air, left rear side air delivery, left rear side air delivery control, left rear side air delivery mode, left rear side air delivery mode control, left rear side air direction, left rear side air direction control, left rear side air direction mode, left rear side air direction mode control, left rear side air flow, left rear side air flow control, left rear side air flow direction, left rear side air flow mode control, left rear side air mode control, left rear side airflow, left rear side airflow control, left rear side airflow direction, left rear side airflow mode control, left side air, left side air delivery, left side air delivery control, left side air delivery mode, left side air delivery mode control, left side air direction, left side air direction control, left side air direction mode, left side air direction mode control, left side air flow, left side air flow control, left side air flow direction, left side air flow mode control, left side air mode control, left side airflow, left side airflow control, left side airflow direction, left side airflow mode control, passenger adaptive air flow, passenger adjust air delivery, passenger adjustable air delivery, passenger air, passenger air current, passenger air delivery, passenger air delivery assist, passenger air delivery assistance, passenger air delivery channel, passenger air delivery circulation, passenger air delivery climate, passenger air delivery control, passenger air delivery flow management, passenger air delivery guidance, passenger air delivery mode, passenger air delivery mode control, passenger air delivery options, passenger air delivery selection, passenger air delivery selector, passenger air delivery type, passenger air delivery vent, passenger air delivery vents, passenger air direct, passenger air direction, passenger air direction control, passenger air direction delivery, passenger air direction flow, passenger air direction mode, passenger air direction mode control, passenger air direction vent, passenger air directional, passenger air directional delivery, passenger air directions, passenger air distribution, passenger air flow, passenger air flow choice, passenger air flow comfort adjustment, passenger air flow control, passenger air flow delivery, passenger air flow direction, passenger air flow direction regulator, passenger air flow director, passenger air flow distribution, passenger air flow master, passenger air flow mode control, passenger air flow optimization, passenger air flow option, passenger air flow regulator, passenger air flow selector, passenger air flow vent, passenger air function, passenger air location, passenger air mod, passenger air mode control, passenger air positioning, passenger air region, passenger air release, passenger air travel, passenger air use, passenger air vent delivery, passenger air vent direct, passenger air vent direction, passenger air vent distribution, passenger air vent diversion, passenger air vent flow, passenger air vent focus, passenger air vent regulator, passenger air vent selection, passenger air zone, passenger airflow, passenger airflow adapters, passenger airflow area, passenger airflow assist, passenger airflow choice, passenger airflow chooser, passenger airflow circulation, passenger airflow control, passenger airflow conveyance, passenger airflow deflector, passenger airflow delivery, passenger airflow detection, passenger airflow direct, passenger airflow direction, passenger airflow director, passenger airflow directors, passenger airflow indicator, passenger airflow mode control, passenger airflow move, passenger airflow regulator, passenger airflow restricting, passenger airflow router, passenger airflow selection, passenger airflow vent, passenger airflow vent modifier, passenger airflow vent operation, passenger airflow vent options, passenger airflow vent regulator, passenger airflow venting, passenger airflow vents, passenger airflow vents cabin, passenger airflow zone, passenger airflows, passenger cabin airflow vents, passenger compartment airflow, passenger compartment flow, passenger custom air flow, passenger customize airflow position, passenger direct air flow, passenger direct air vent flow, passenger direct airflow, passenger direct airflows, passenger directed air flow, passenger directed airflow, passenger directed vehicle air flow, passenger directional air flow, passenger flow, passenger flow air, passenger flow vents, passenger guided airflow, passenger independent air flow, passenger individual air flow, passenger intuitive air delivery, passenger led airflow, passenger optimal air flow adjustment, passenger personalized airflow, passenger preferred airflow, passenger redirect air flow, passenger selective airflow, passenger side adaptive air flow, passenger side adjust air delivery, passenger side adjustable air delivery, passenger side air, passenger side air current, passenger side air delivery, passenger side air delivery assist, passenger side air delivery assistance, passenger side air delivery channel, passenger side air delivery circulation, passenger side air delivery climate, passenger side air delivery control, passenger side air delivery flow management, passenger side air delivery guidance, passenger side air delivery mode, passenger side air delivery mode control, passenger side air delivery options, passenger side air delivery selection, passenger side air delivery selector, passenger side air delivery type, passenger side air delivery vent, passenger side air delivery vents, passenger side air direct, passenger side air direction, passenger side air direction control, passenger side air direction delivery, passenger side air direction flow, passenger side air direction mode, passenger side air direction mode control, passenger side air direction vent, passenger side air directional, passenger side air directional delivery, passenger side air directions, passenger side air distribution, passenger side air flow, passenger side air flow choice, passenger side air flow comfort adjustment, passenger side air flow control, passenger side air flow delivery, passenger side air flow direction, passenger side air flow direction regulator, passenger side air flow director, passenger side air flow distribution, passenger side air flow master, passenger side air flow mode control, passenger side air flow optimization, passenger side air flow option, passenger side air flow regulator, passenger side air flow selector, passenger side air flow vent, passenger side air function, passenger side air location, passenger side air mod, passenger side air mode control, passenger side air positioning, passenger side air region, passenger side air release, passenger side air travel, passenger side air use, passenger side air vent delivery, passenger side air vent direct, passenger side air vent direction, passenger side air vent distribution, passenger side air vent diversion, passenger side air vent flow, passenger side air vent focus, passenger side air vent regulator, passenger side air vent selection, passenger side air zone, passenger side airflow, passenger side airflow adapters, passenger side airflow area, passenger side airflow assist, passenger side airflow choice, passenger side airflow chooser, passenger side airflow circulation, passenger side airflow control, passenger side airflow conveyance, passenger side airflow deflector, passenger side airflow delivery, passenger side airflow detection, passenger side airflow direct, passenger side airflow direction, passenger side airflow director, passenger side airflow directors, passenger side airflow indicator, passenger side airflow mode control, passenger side airflow move, passenger side airflow regulator, passenger side airflow restricting, passenger side airflow router, passenger side airflow selection, passenger side airflow vent, passenger side airflow vent modifier, passenger side airflow vent operation, passenger side airflow vent options, passenger side airflow vent regulator, passenger side airflow venting, passenger side airflow vents, passenger side airflow vents cabin, passenger side airflow zone, passenger side airflows, passenger side cabin airflow vents, passenger side compartment airflow, passenger side compartment flow, passenger side custom air flow, passenger side customize airflow position, passenger side direct air flow, passenger side direct air vent flow, passenger side direct airflow, passenger side direct airflows, passenger side directed air flow, passenger side directed airflow, passenger side directed vehicle air flow, passenger side directional air flow, passenger side flow, passenger side flow air, passenger side flow vents, passenger side guided airflow, passenger side independent air flow, passenger side individual air flow, passenger side intuitive air delivery, passenger side led airflow, passenger side optimal air flow adjustment, passenger side personalized airflow, passenger side preferred airflow, passenger side redirect air flow, passenger side selective airflow, passenger side smart airflow, passenger side specialized airflow, passenger side specific air flow, passenger side specific airflow, passenger side specific airflow vent, passenger side specified airflow, passenger side variable vent airflow, passenger smart airflow, passenger specialized airflow, passenger specific air flow, passenger specific airflow, passenger specific airflow vent, passenger specified airflow, passenger variable vent airflow, passenger's air, passenger's air delivery, passenger's air delivery control, passenger's air delivery mode, passenger's air delivery mode control, passenger's air direction, passenger's air direction control, passenger's air direction mode, passenger's air direction mode control, passenger's air flow, passenger's air flow control, passenger's air flow direction, passenger's air flow mode control, passenger's air mode control, passenger's airflow, passenger's airflow control, passenger's airflow direction, passenger's airflow mode control, passenger's side air, passenger's side air delivery, passenger's side air delivery control, passenger's side air delivery mode, passenger's side air delivery mode control, passenger's side air direction, passenger's side air direction control, passenger's side air direction mode, passenger's side air direction mode control, passenger's side air flow, passenger's side air flow control, passenger's side air flow direction, passenger's side air flow mode control, passenger's side air mode control, passenger's side airflow, passenger's side airflow control, passenger's side airflow direction, passenger's side airflow mode control, passengers adaptive air flow, passengers adjust air delivery, passengers adjustable air delivery, passengers air, passengers air current, passengers air delivery, passengers air delivery assist, passengers air delivery assistance, passengers air delivery channel, passengers air delivery circulation, passengers air delivery climate, passengers air delivery control, passengers air delivery flow management, passengers air delivery guidance, passengers air delivery mode, passengers air delivery mode control, passengers air delivery options, passengers air delivery selection, passengers air delivery selector, passengers air delivery type, passengers air delivery vent, passengers air delivery vents, passengers air direct, passengers air direction, passengers air direction control, passengers air direction delivery, passengers air direction flow, passengers air direction mode, passengers air direction mode control, passengers air direction vent, passengers air directional, passengers air directional delivery, passengers air directions, passengers air distribution, passengers air flow, passengers air flow choice, passengers air flow comfort adjustment, passengers air flow control, passengers air flow delivery, passengers air flow direction, passengers air flow direction regulator, passengers air flow director, passengers air flow distribution, passengers air flow master, passengers air flow mode control, passengers air flow optimization, passengers air flow option, passengers air flow regulator, passengers air flow selector, passengers air flow vent, passengers air function, passengers air location, passengers air mod, passengers air mode control, passengers air positioning, passengers air region, passengers air release, passengers air travel, passengers air use, passengers air vent delivery, passengers air vent direct, passengers air vent direction, passengers air vent distribution, passengers air vent diversion, passengers air vent flow, passengers air vent focus, passengers air vent regulator, passengers air vent selection, passengers air zone, passengers airflow, passengers airflow adapters, passengers airflow area, passengers airflow assist, passengers airflow choice, passengers airflow chooser, passengers airflow circulation, passengers airflow control, passengers airflow conveyance, passengers airflow deflector, passengers airflow delivery, passengers airflow detection, passengers airflow direct, passengers airflow direction, passengers airflow director, passengers airflow directors, passengers airflow indicator, passengers airflow mode control, passengers airflow move, passengers airflow regulator, passengers airflow restricting, passengers airflow router, passengers airflow selection, passengers airflow vent, passengers airflow vent modifier, passengers airflow vent operation, passengers airflow vent options, passengers airflow vent regulator, passengers airflow venting, passengers airflow vents, passengers airflow vents cabin, passengers airflow zone, passengers airflows, passengers cabin airflow vents, passengers compartment airflow, passengers compartment flow, passengers custom air flow, passengers customize airflow position, passengers direct air flow, passengers direct air vent flow, passengers direct airflow, passengers direct airflows, passengers directed air flow, passengers directed airflow, passengers directed vehicle air flow, passengers directional air flow, passengers flow, passengers flow air, passengers flow vents, passengers guided airflow, passengers independent air flow, passengers individual air flow, passengers intuitive air delivery, passengers led airflow, passengers optimal air flow adjustment, passengers personalized airflow, passengers preferred airflow, passengers redirect air flow, passengers selective airflow, passengers side adaptive air flow, passengers side adjust air delivery, passengers side adjustable air delivery, passengers side air, passengers side air current, passengers side air delivery, passengers side air delivery assist, passengers side air delivery assistance, passengers side air delivery channel, passengers side air delivery circulation, passengers side air delivery climate, passengers side air delivery control, passengers side air delivery flow management, passengers side air delivery guidance, passengers side air delivery mode, passengers side air delivery mode control, passengers side air delivery options, passengers side air delivery selection, passengers side air delivery selector, passengers side air delivery type, passengers side air delivery vent, passengers side air delivery vents, passengers side air direct, passengers side air direction, passengers side air direction control, passengers side air direction delivery, passengers side air direction flow, passengers side air direction mode, passengers side air direction mode control, passengers side air direction vent, passengers side air directional, passengers side air directional delivery, passengers side air directions, passengers side air distribution, passengers side air flow, passengers side air flow choice, passengers side air flow comfort adjustment, passengers side air flow control, passengers side air flow delivery, passengers side air flow direction, passengers side air flow direction regulator, passengers side air flow director, passengers side air flow distribution, passengers side air flow master, passengers side air flow mode control, passengers side air flow optimization, passengers side air flow option, passengers side air flow regulator, passengers side air flow selector, passengers side air flow vent, passengers side air function, passengers side air location, passengers side air mod, passengers side air mode control, passengers side air positioning, passengers side air region, passengers side air release, passengers side air travel, passengers side air use, passengers side air vent delivery, passengers side air vent direct, passengers side air vent direction, passengers side air vent distribution, passengers side air vent diversion, passengers side air vent flow, passengers side air vent focus, passengers side air vent regulator, passengers side air vent selection, passengers side air zone, passengers side airflow, passengers side airflow adapters, passengers side airflow area, passengers side airflow assist, passengers side airflow choice, passengers side airflow chooser, passengers side airflow circulation, passengers side airflow control, passengers side airflow conveyance, passengers side airflow deflector, passengers side airflow delivery, passengers side airflow detection, passengers side airflow direct, passengers side airflow direction, passengers side airflow director, passengers side airflow directors, passengers side airflow indicator, passengers side airflow mode control, passengers side airflow move, passengers side airflow regulator, passengers side airflow restricting, passengers side airflow router, passengers side airflow selection, passengers side airflow vent, passengers side airflow vent modifier, passengers side airflow vent operation, passengers side airflow vent options, passengers side airflow vent regulator, passengers side airflow venting, passengers side airflow vents, passengers side airflow vents cabin, passengers side airflow zone, passengers side airflows, passengers side cabin airflow vents, passengers side compartment airflow, passengers side compartment flow, passengers side custom air flow, passengers side customize airflow position, passengers side direct air flow, passengers side direct air vent flow, passengers side direct airflow, passengers side direct airflows, passengers side directed air flow, passengers side directed airflow, passengers side directed vehicle air flow, passengers side directional air flow, passengers side flow, passengers side flow air, passengers side flow vents, passengers side guided airflow, passengers side independent air flow, passengers side individual air flow, passengers side intuitive air delivery, passengers side led airflow, passengers side optimal air flow adjustment, passengers side personalized airflow, passengers side preferred airflow, passengers side redirect air flow, passengers side selective airflow, passengers side smart airflow, passengers side specialized airflow, passengers side specific air flow, passengers side specific airflow, passengers side specific airflow vent, passengers side specified airflow, passengers side variable vent airflow, passengers smart airflow, passengers specialized airflow, passengers specific air flow, passengers specific airflow, passengers specific airflow vent, passengers specified airflow, passengers variable vent airflow, rear adaptive air flow, rear adjust air delivery, rear adjustable air delivery, rear air, rear air current, rear air delivery, rear air delivery assist, rear air delivery assistance, rear air delivery channel, rear air delivery circulation, rear air delivery climate, rear air delivery control, rear air delivery flow management, rear air delivery guidance, rear air delivery mode, rear air delivery mode control, rear air delivery options, rear air delivery selection, rear air delivery selector, rear air delivery type, rear air delivery vent, rear air delivery vents, rear air direct, rear air direction, rear air direction control, rear air direction delivery, rear air direction flow, rear air direction mode, rear air direction mode control, rear air direction vent, rear air directional, rear air directional delivery, rear air directions, rear air distribution, rear air flow, rear air flow choice, rear air flow comfort adjustment, rear air flow control, rear air flow delivery, rear air flow direction, rear air flow direction regulator, rear air flow director, rear air flow distribution, rear air flow master, rear air flow mode control, rear air flow optimization, rear air flow option, rear air flow regulator, rear air flow selector, rear air flow vent, rear air function, rear air location, rear air mod, rear air mode control, rear air positioning, rear air region, rear air release, rear air travel, rear air use, rear air vent delivery, rear air vent direct, rear air vent direction, rear air vent distribution, rear air vent diversion, rear air vent flow, rear air vent focus, rear air vent regulator, rear air vent selection, rear air zone, rear airflow, rear airflow adapters, rear airflow area, rear airflow assist, rear airflow choice, rear airflow chooser, rear airflow circulation, rear airflow control, rear airflow conveyance, rear airflow deflector, rear airflow delivery, rear airflow detection, rear airflow direct, rear airflow direction, rear airflow director, rear airflow directors, rear airflow indicator, rear airflow mode control, rear airflow move, rear airflow regulation, rear airflow regulator, rear airflow restricting, rear airflow router, rear airflow selection, rear airflow vent, rear airflow vent modifier, rear airflow vent operation, rear airflow vent options, rear airflow vent regulator, rear airflow venting, rear airflow vents, rear airflow vents cabin, rear airflow zone, rear airflows, rear cabin airflow vents, rear combined adaptive air flow, rear combined adjust air delivery, rear combined adjustable air delivery, rear combined air, rear combined air current, rear combined air delivery, rear combined air delivery assist, rear combined air delivery assistance, rear combined air delivery channel, rear combined air delivery circulation, rear combined air delivery climate, rear combined air delivery control, rear combined air delivery flow management, rear combined air delivery guidance, rear combined air delivery mode, rear combined air delivery mode control, rear combined air delivery options, rear combined air delivery selection, rear combined air delivery selector, rear combined air delivery type, rear combined air delivery vent, rear combined air delivery vents, rear combined air direct, rear combined air direction, rear combined air direction control, rear combined air direction delivery, rear combined air direction flow, rear combined air direction mode, rear combined air direction mode control, rear combined air direction vent, rear combined air directional, rear combined air directional delivery, rear combined air directions, rear combined air distribution, rear combined air flow, rear combined air flow choice, rear combined air flow comfort adjustment, rear combined air flow control, rear combined air flow delivery, rear combined air flow direction, rear combined air flow direction regulator, rear combined air flow director, rear combined air flow distribution, rear combined air flow master, rear combined air flow mode control, rear combined air flow optimization, rear combined air flow option, rear combined air flow regulator, rear combined air flow selector, rear combined air flow vent, rear combined air function, rear combined air location, rear combined air mod, rear combined air mode control, rear combined air positioning, rear combined air region, rear combined air release, rear combined air travel, rear combined air use, rear combined air vent delivery, rear combined air vent direct, rear combined air vent direction, rear combined air vent distribution, rear combined air vent diversion, rear combined air vent flow, rear combined air vent focus, rear combined air vent regulator, rear combined air vent selection, rear combined air zone, rear combined airflow, rear combined airflow adapters, rear combined airflow area, rear combined airflow assist, rear combined airflow choice, rear combined airflow chooser, rear combined airflow circulation, rear combined airflow control, rear combined airflow conveyance, rear combined airflow deflector, rear combined airflow delivery, rear combined airflow detection, rear combined airflow direct, rear combined airflow direction, rear combined airflow director, rear combined airflow directors, rear combined airflow indicator, rear combined airflow mode control, rear combined airflow move, rear combined airflow regulation, rear combined airflow regulator, rear combined airflow restricting, rear combined airflow router, rear combined airflow selection, rear combined airflow vent, rear combined airflow vent modifier, rear combined airflow vent operation, rear combined airflow vent options, rear combined airflow vent regulator, rear combined airflow venting, rear combined airflow vents, rear combined airflow vents cabin, rear combined airflow zone, rear combined airflows, rear combined cabin airflow vents, rear combined compartment airflow, rear combined compartment flow, rear combined custom air flow, rear combined customize airflow position, rear combined direct air flow, rear combined direct air vent flow, rear combined direct airflow, rear combined direct airflows, rear combined directed air flow, rear combined directed airflow, rear combined directed vehicle air flow, rear combined directional air flow, rear combined flow, rear combined flow air, rear combined flow vents, rear combined guided airflow, rear combined independent air flow, rear combined individual air flow, rear combined intuitive air delivery, rear combined led airflow, rear combined optimal air flow adjustment, rear combined personalized airflow, rear combined preferred airflow, rear combined redirect air flow, rear combined selective airflow, rear combined smart airflow, rear combined specialized airflow, rear combined specific air flow, rear combined specific airflow, rear combined specific airflow vent, rear combined specified airflow, rear combined variable vent airflow, rear compartment airflow, rear compartment flow, rear custom air flow, rear customize airflow position, rear direct air flow, rear direct air vent flow, rear direct airflow, rear direct airflows, rear directed air flow, rear directed airflow, rear directed vehicle air flow, rear directional air flow, rear flow, rear flow air, rear flow vents, rear guided airflow, rear independent air flow, rear individual air flow, rear intuitive air delivery, rear led airflow, rear left adaptive air flow, rear left adjust air delivery, rear left adjustable air delivery, rear left air, rear left air current, rear left air delivery, rear left air delivery assist, rear left air delivery assistance, rear left air delivery channel, rear left air delivery circulation, rear left air delivery climate, rear left air delivery control, rear left air delivery flow management, rear left air delivery guidance, rear left air delivery mode, rear left air delivery mode control, rear left air delivery options, rear left air delivery selection, rear left air delivery selector, rear left air delivery type, rear left air delivery vent, rear left air delivery vents, rear left air direct, rear left air direction, rear left air direction control, rear left air direction delivery, rear left air direction flow, rear left air direction mode, rear left air direction mode control, rear left air direction vent, rear left air directional, rear left air directional delivery, rear left air directions, rear left air distribution, rear left air flow, rear left air flow choice, rear left air flow comfort adjustment, rear left air flow control, rear left air flow delivery, rear left air flow direction, rear left air flow direction regulator, rear left air flow director, rear left air flow distribution, rear left air flow master, rear left air flow mode control, rear left air flow optimization, rear left air flow option, rear left air flow regulator, rear left air flow selector, rear left air flow vent, rear left air function, rear left air location, rear left air mod, rear left air mode control, rear left air positioning, rear left air region, rear left air release, rear left air travel, rear left air use, rear left air vent delivery, rear left air vent direct, rear left air vent direction, rear left air vent distribution, rear left air vent diversion, rear left air vent flow, rear left air vent focus, rear left air vent regulator, rear left air vent selection, rear left air zone, rear left airflow, rear left airflow adapters, rear left airflow area, rear left airflow assist, rear left airflow choice, rear left airflow chooser, rear left airflow circulation, rear left airflow control, rear left airflow conveyance, rear left airflow deflector, rear left airflow delivery, rear left airflow detection, rear left airflow direct, rear left airflow direction, rear left airflow director, rear left airflow directors, rear left airflow indicator, rear left airflow mode control, rear left airflow move, rear left airflow regulator, rear left airflow restricting, rear left airflow router, rear left airflow selection, rear left airflow vent, rear left airflow vent modifier, rear left airflow vent operation, rear left airflow vent options, rear left airflow vent regulator, rear left airflow venting, rear left airflow vents, rear left airflow vents cabin, rear left airflow zone, rear left airflows, rear left cabin airflow vents, rear left compartment airflow, rear left compartment flow, rear left custom air flow, rear left customize airflow position, rear left direct air flow, rear left direct air vent flow, rear left direct airflow, rear left direct airflows, rear left directed air flow, rear left directed airflow, rear left directed vehicle air flow, rear left directional air flow, rear left flow, rear left flow air, rear left flow vents, rear left guided airflow, rear left independent air flow, rear left individual air flow, rear left intuitive air delivery, rear left led airflow, rear left optimal air flow adjustment, rear left personalized airflow, rear left preferred airflow, rear left redirect air flow, rear left selective airflow, rear left side air, rear left side air delivery, rear left side air delivery control, rear left side air delivery mode, rear left side air delivery mode control, rear left side air direction, rear left side air direction control, rear left side air direction mode, rear left side air direction mode control, rear left side air flow, rear left side air flow control, rear left side air flow direction, rear left side air flow mode control, rear left side air mode control, rear left side airflow, rear left side airflow control, rear left side airflow direction, rear left side airflow mode control, rear left smart airflow, rear left specialized airflow, rear left specific air flow, rear left specific airflow, rear left specific airflow vent, rear left specified airflow, rear left variable vent airflow, rear optimal air flow adjustment, rear personalized airflow, rear preferred airflow, rear redirect air flow, rear right adaptive air flow, rear right adjust air delivery, rear right adjustable air delivery, rear right air, rear right air current, rear right air delivery, rear right air delivery assist, rear right air delivery assistance, rear right air delivery channel, rear right air delivery circulation, rear right air delivery climate, rear right air delivery control, rear right air delivery flow management, rear right air delivery guidance, rear right air delivery mode, rear right air delivery mode control, rear right air delivery options, rear right air delivery selection, rear right air delivery selector, rear right air delivery type, rear right air delivery vent, rear right air delivery vents, rear right air direct, rear right air direction, rear right air direction control, rear right air direction delivery, rear right air direction flow, rear right air direction mode, rear right air direction mode control, rear right air direction vent, rear right air directional, rear right air directional delivery, rear right air directions, rear right air distribution, rear right air flow, rear right air flow choice, rear right air flow comfort adjustment, rear right air flow control, rear right air flow delivery, rear right air flow direction, rear right air flow direction regulator, rear right air flow director, rear right air flow distribution, rear right air flow master, rear right air flow mode control, rear right air flow optimization, rear right air flow option, rear right air flow regulator, rear right air flow selector, rear right air flow vent, rear right air function, rear right air location, rear right air mod, rear right air mode control, rear right air positioning, rear right air region, rear right air release, rear right air travel, rear right air use, rear right air vent delivery, rear right air vent direct, rear right air vent direction, rear right air vent distribution, rear right air vent diversion, rear right air vent flow, rear right air vent focus, rear right air vent regulator, rear right air vent selection, rear right air zone, rear right airflow, rear right airflow adapters, rear right airflow area, rear right airflow assist, rear right airflow choice, rear right airflow chooser, rear right airflow circulation, rear right airflow control, rear right airflow conveyance, rear right airflow deflector, rear right airflow delivery, rear right airflow detection, rear right airflow direct, rear right airflow direction, rear right airflow director, rear right airflow directors, rear right airflow indicator, rear right airflow mode control, rear right airflow move, rear right airflow regulation, rear right airflow regulator, rear right airflow restricting, rear right airflow router, rear right airflow selection, rear right airflow vent, rear right airflow vent modifier, rear right airflow vent operation, rear right airflow vent options, rear right airflow vent regulator, rear right airflow venting, rear right airflow vents, rear right airflow vents cabin, rear right airflow zone, rear right airflows, rear right cabin airflow vents, rear right compartment airflow, rear right compartment flow, rear right custom air flow, rear right customize airflow position, rear right direct air flow, rear right direct air vent flow, rear right direct airflow, rear right direct airflows, rear right directed air flow, rear right directed airflow, rear right directed vehicle air flow, rear right directional air flow, rear right flow, rear right flow air, rear right flow vents, rear right guided airflow, rear right independent air flow, rear right individual air flow, rear right intuitive air delivery, rear right led airflow, rear right optimal air flow adjustment, rear right personalized airflow, rear right preferred airflow, rear right redirect air flow, rear right selective airflow, rear right side air, rear right side air delivery, rear right side air delivery control, rear right side air delivery mode, rear right side air delivery mode control, rear right side air direction, rear right side air direction control, rear right side air direction mode, rear right side air direction mode control, rear right side air flow, rear right side air flow control, rear right side air flow direction, rear right side air flow mode control, rear right side air mode control, rear right side airflow, rear right side airflow control, rear right side airflow direction, rear right side airflow mode control, rear right smart airflow, rear right specialized airflow, rear right specific air flow, rear right specific airflow, rear right specific airflow vent, rear right specified airflow, rear right variable vent airflow, rear selective airflow, rear smart airflow, rear specialized airflow, rear specific air flow, rear specific airflow, rear specific airflow vent, rear specified airflow, rear variable vent airflow, right air, right air delivery, right air delivery control, right air delivery mode, right air delivery mode control, right air direction, right air direction control, right air direction mode, right air direction mode control, right air flow, right air flow control, right air flow direction, right air flow mode control, right air mode control, right airflow, right airflow control, right airflow direction, right airflow mode control, right back air, right back air delivery, right back air delivery control, right back air delivery mode, right back air delivery mode control, right back air direction, right back air direction control, right back air direction mode, right back air direction mode control, right back air flow, right back air flow control, right back air flow direction, right back air flow mode control, right back air mode control, right back airflow, right back airflow control, right back airflow direction, right back airflow mode control, right back side air, right back side air delivery, right back side air delivery control, right back side air delivery mode, right back side air delivery mode control, right back side air direction, right back side air direction control, right back side air direction mode, right back side air direction mode control, right back side air flow, right back side air flow control, right back side air flow direction, right back side air flow mode control, right back side air mode control, right back side airflow, right back side airflow control, right back side airflow direction, right back side airflow mode control, right front air, right front air delivery, right front air delivery control, right front air delivery mode, right front air delivery mode control, right front air direction, right front air direction control, right front air direction mode, right front air direction mode control, right front air flow, right front air flow control, right front air flow direction, right front air flow mode control, right front air mode control, right front airflow, right front airflow control, right front airflow direction, right front airflow mode control, right front side air, right front side air delivery, right front side air delivery control, right front side air delivery mode, right front side air delivery mode control, right front side air direction, right front side air direction control, right front side air direction mode, right front side air direction mode control, right front side air flow, right front side air flow control, right front side air flow direction, right front side air flow mode control, right front side air mode control, right front side airflow, right front side airflow control, right front side airflow direction, right front side airflow mode control, right rear air, right rear air delivery, right rear air delivery control, right rear air delivery mode, right rear air delivery mode control, right rear air direction, right rear air direction control, right rear air direction mode, right rear air direction mode control, right rear air flow, right rear air flow control, right rear air flow direction, right rear air flow mode control, right rear air mode control, right rear airflow, right rear airflow control, right rear airflow direction, right rear airflow mode control, right rear side air, right rear side air delivery, right rear side air delivery control, right rear side air delivery mode, right rear side air delivery mode control, right rear side air direction, right rear side air direction control, right rear side air direction mode, right rear side air direction mode control, right rear side air flow, right rear side air flow control, right rear side air flow direction, right rear side air flow mode control, right rear side air mode control, right rear side airflow, right rear side airflow control, right rear side airflow direction, right rear side airflow mode control, right side air, right side air delivery, right side air delivery control, right side air delivery mode, right side air delivery mode control, right side air direction, right side air direction control, right side air direction mode, right side air direction mode control, right side air flow, right side air flow control, right side air flow direction, right side air flow mode control, right side air mode control, right side airflow, right side airflow control, right side airflow direction, right side airflow mode control +$setting_name_climate_control:phraseList +- a/c, a/c airflow, a/c airflow assist, a/c heater, a/c recirculation, a/c sync, a/c unit, a/c vent, ac, ac airflow, ac airflow assist, ac heater, ac recirculation, ac sync, ac unit, ac vent, acclimatization, active defrost, adaptable air vents, adaptive air circulation, adaptive auto back climate, adaptive auto front climate, adaptive auto rear climate, adaptive automatic back climate, adaptive automatic front climate, adaptive automatic rear climate, adaptive climate, adaptive front back climate, adaptive front rear climate, adaptive recirculation, adaptive vent, adjust airflow, adjustable air conditioning, adjustable air vent, adjustable air vents, adjustable airflow, advanced climate, air blower, air blowers, air cabin climate, air cabin recirculation, air circ, air circle, air circulate, air circulating, air circulation, air circulation cabin, air circulation fan, air circulator, air circulatory, air comfort, air condition, air condition adjuster, air condition knob, air conditioner, air conditioner sync, air conditioning, air conditionings, air cycle, air defrost, air defroster, air distribute, air distribution, air fan, air fans, air flow circulation, air flow equalizer, air flow recirculation, air flow recycling, air management, air movement, air mover, air re circulation, air recircle, air recirculate, air recirculating, air recirculation, air recirculation device module, air recirculator, air recycle, air recycler, air recycling, air redistribution, air refresh, air sync, air vent, air vent adjuster, air vent adjustment, air vent assist, air vent assistance, air vent circulation, air vent flow, air vent flow adapter, air vent modulator, air vent recirculation, air vent regulator, air ventilation adjuster, air ventilation adjustment, air venting, air vents, air vents airflow, airflow circulation, airflow recirculation, airflow vent, airflow vent adjustment, airflow vent rate, airflow vents, anti fogger, anti frost, anti frost fog, anti frost heating, anti frost vent, anti froster, anti ice, antifrost, assisted climate, auto a/c, auto ac, auto air, auto air conditioning, auto back a/c, auto back a/c airflow, auto back a/c airflow assist, auto back a/c heater, auto back a/c unit, auto back a/c vent, auto back ac, auto back ac airflow, auto back ac airflow assist, auto back ac heater, auto back ac unit, auto back ac vent, auto back acclimatization, auto back adaptable air vents, auto back adaptive climate, auto back adaptive vent, auto back adjust airflow, auto back adjustable air conditioning, auto back adjustable air flow, auto back adjustable air vent, auto back adjustable air vents, auto back adjustable airflow, auto back advanced climate, auto back air cabin climate, auto back air comfort, auto back air condition, auto back air condition adjuster, auto back air condition knob, auto back air conditioner, auto back air conditioning, auto back air conditionings, auto back air management, auto back air vent, auto back air vent adjuster, auto back air vent adjustment, auto back air vent assist, auto back air vent assistance, auto back air vent flow, auto back air vent flow adapter, auto back air vent modulator, auto back air vent regulator, auto back air ventilation adjuster, auto back air ventilation adjustment, auto back air venting, auto back air vents, auto back air vents airflow, auto back airflow vent, auto back airflow vent adjustment, auto back airflow vent rate, auto back airflow vents, auto back assisted climate, auto back heaters, auto back heating, auto back hvac, auto back left a/c, auto back left ac, auto back left air conditioning, auto back left heaters, auto back left heating, auto back left hvac, auto back left side a/c, auto back left side ac, auto back left side air conditioning, auto back left side heaters, auto back left side heating, auto back left side hvac, auto back left side ventilation, auto back left side vents, auto back left ventilation, auto back left vents, auto back right a/c, auto back right ac, auto back right air conditioning, auto back right heaters, auto back right heating, auto back right hvac, auto back right side a/c, auto back right side ac, auto back right side air conditioning, auto back right side heaters, auto back right side heating, auto back right side hvac, auto back right side ventilation, auto back right side vents, auto back right ventilation, auto back right vents, auto back thermostat, auto back ventilation, auto back vents, auto climate, auto co-driver a/c, auto co-driver ac, auto co-driver air conditioning, auto co-driver heaters, auto co-driver heating, auto co-driver hvac, auto co-driver side a/c, auto co-driver side ac, auto co-driver side air conditioning, auto co-driver side heaters, auto co-driver side heating, auto co-driver side hvac, auto co-driver side ventilation, auto co-driver side vents, auto co-driver ventilation, auto co-driver vents, auto co-driver's a/c, auto co-driver's ac, auto co-driver's air conditioning, auto co-driver's heaters, auto co-driver's heating, auto co-driver's hvac, auto co-driver's side a/c, auto co-driver's side ac, auto co-driver's side air conditioning, auto co-driver's side heaters, auto co-driver's side heating, auto co-driver's side hvac, auto co-driver's side ventilation, auto co-driver's side vents, auto co-driver's ventilation, auto co-driver's vents, auto co-drivers a/c, auto co-drivers ac, auto co-drivers air conditioning, auto co-drivers heaters, auto co-drivers heating, auto co-drivers hvac, auto co-drivers side a/c, auto co-drivers side ac, auto co-drivers side air conditioning, auto co-drivers side heaters, auto co-drivers side heating, auto co-drivers side hvac, auto co-drivers side ventilation, auto co-drivers side vents, auto co-drivers ventilation, auto co-drivers vents, auto defog, auto defogger, auto defoggers, auto defrost, auto driver a/c, auto driver ac, auto driver air conditioning, auto driver heaters, auto driver heating, auto driver hvac, auto driver side a/c, auto driver side ac, auto driver side air conditioning, auto driver side heaters, auto driver side heating, auto driver side hvac, auto driver side ventilation, auto driver side vents, auto driver ventilation, auto driver vents, auto driver's a/c, auto driver's ac, auto driver's air conditioning, auto driver's heaters, auto driver's heating, auto driver's hvac, auto driver's side a/c, auto driver's side ac, auto driver's side air conditioning, auto driver's side heaters, auto driver's side heating, auto driver's side hvac, auto driver's side ventilation, auto driver's side vents, auto driver's ventilation, auto driver's vents, auto drivers a/c, auto drivers ac, auto drivers air conditioning, auto drivers heaters, auto drivers heating, auto drivers hvac, auto drivers side a/c, auto drivers side ac, auto drivers side air conditioning, auto drivers side heaters, auto drivers side heating, auto drivers side hvac, auto drivers side ventilation, auto drivers side vents, auto drivers ventilation, auto drivers vents, auto front a/c, auto front a/c airflow, auto front a/c airflow assist, auto front a/c heater, auto front a/c unit, auto front a/c vent, auto front ac, auto front ac airflow, auto front ac airflow assist, auto front ac heater, auto front ac unit, auto front ac vent, auto front acclimatization, auto front adaptable air vents, auto front adaptive climate, auto front adaptive vent, auto front adjust airflow, auto front adjustable air conditioning, auto front adjustable air flow, auto front adjustable air vent, auto front adjustable air vents, auto front adjustable airflow, auto front advanced climate, auto front air cabin climate, auto front air comfort, auto front air condition, auto front air condition adjuster, auto front air condition knob, auto front air conditioner, auto front air conditioning, auto front air conditionings, auto front air management, auto front air vent, auto front air vent adjuster, auto front air vent adjustment, auto front air vent assist, auto front air vent assistance, auto front air vent flow, auto front air vent flow adapter, auto front air vent modulator, auto front air vent recirculation, auto front air vent regulator, auto front air ventilation adjuster, auto front air ventilation adjustment, auto front air venting, auto front air vents, auto front airflow vent, auto front airflow vent adjustment, auto front airflow vent rate, auto front airflow vents, auto front assisted climate, auto front heaters, auto front heating, auto front hvac, auto front left a/c, auto front left ac, auto front left air conditioning, auto front left heaters, auto front left heating, auto front left hvac, auto front left side a/c, auto front left side ac, auto front left side air conditioning, auto front left side heaters, auto front left side heating, auto front left side hvac, auto front left side ventilation, auto front left side vents, auto front left ventilation, auto front left vents, auto front right a/c, auto front right ac, auto front right air conditioning, auto front right heaters, auto front right heating, auto front right hvac, auto front right side a/c, auto front right side ac, auto front right side air conditioning, auto front right side heaters, auto front right side heating, auto front right side hvac, auto front right side ventilation, auto front right side vents, auto front right ventilation, auto front right vents, auto front ventilation, auto front vents, auto heaters, auto heating, auto hvac, auto left a/c, auto left ac, auto left air conditioning, auto left back a/c, auto left back ac, auto left back air conditioning, auto left back heaters, auto left back heating, auto left back hvac, auto left back side a/c, auto left back side ac, auto left back side air conditioning, auto left back side heaters, auto left back side heating, auto left back side hvac, auto left back side ventilation, auto left back side vents, auto left back ventilation, auto left back vents, auto left front a/c, auto left front ac, auto left front air conditioning, auto left front heaters, auto left front heating, auto left front hvac, auto left front side a/c, auto left front side ac, auto left front side air conditioning, auto left front side heaters, auto left front side heating, auto left front side hvac, auto left front side ventilation, auto left front side vents, auto left front ventilation, auto left front vents, auto left heaters, auto left heating, auto left hvac, auto left rear a/c, auto left rear ac, auto left rear air conditioning, auto left rear heaters, auto left rear heating, auto left rear hvac, auto left rear side a/c, auto left rear side ac, auto left rear side air conditioning, auto left rear side heaters, auto left rear side heating, auto left rear side hvac, auto left rear side ventilation, auto left rear side vents, auto left rear ventilation, auto left rear vents, auto left side a/c, auto left side ac, auto left side air conditioning, auto left side heaters, auto left side heating, auto left side hvac, auto left side ventilation, auto left side vents, auto left ventilation, auto left vents, auto passenger a/c, auto passenger ac, auto passenger air conditioning, auto passenger heaters, auto passenger heating, auto passenger hvac, auto passenger side a/c, auto passenger side ac, auto passenger side air conditioning, auto passenger side heaters, auto passenger side heating, auto passenger side hvac, auto passenger side ventilation, auto passenger side vents, auto passenger ventilation, auto passenger vents, auto passenger's a/c, auto passenger's ac, auto passenger's air conditioning, auto passenger's heaters, auto passenger's heating, auto passenger's hvac, auto passenger's side a/c, auto passenger's side ac, auto passenger's side air conditioning, auto passenger's side heaters, auto passenger's side heating, auto passenger's side hvac, auto passenger's side ventilation, auto passenger's side vents, auto passenger's ventilation, auto passenger's vents, auto passengers a/c, auto passengers ac, auto passengers air conditioning, auto passengers heaters, auto passengers heating, auto passengers hvac, auto passengers side a/c, auto passengers side ac, auto passengers side air conditioning, auto passengers side heaters, auto passengers side heating, auto passengers side hvac, auto passengers side ventilation, auto passengers side vents, auto passengers ventilation, auto passengers vents, auto rear a/c, auto rear a/c airflow, auto rear a/c airflow assist, auto rear a/c heater, auto rear a/c unit, auto rear a/c vent, auto rear ac, auto rear ac airflow, auto rear ac airflow assist, auto rear ac heater, auto rear ac unit, auto rear ac vent, auto rear acclimatization, auto rear adaptable air vents, auto rear adaptive climate, auto rear adaptive vent, auto rear adjust airflow, auto rear adjustable air conditioning, auto rear adjustable air flow, auto rear adjustable air vent, auto rear adjustable air vents, auto rear adjustable airflow, auto rear advanced climate, auto rear air cabin climate, auto rear air comfort, auto rear air condition, auto rear air condition adjuster, auto rear air condition knob, auto rear air conditioner, auto rear air conditioning, auto rear air conditionings, auto rear air management, auto rear air vent, auto rear air vent adjuster, auto rear air vent adjustment, auto rear air vent assist, auto rear air vent assistance, auto rear air vent flow, auto rear air vent flow adapter, auto rear air vent modulator, auto rear air vent regulator, auto rear air ventilation adjuster, auto rear air ventilation adjustment, auto rear air venting, auto rear air vents, auto rear air vents airflow, auto rear airflow vent, auto rear airflow vent adjustment, auto rear airflow vent rate, auto rear airflow vents, auto rear assisted climate, auto rear heaters, auto rear heating, auto rear hvac, auto rear left a/c, auto rear left ac, auto rear left air conditioning, auto rear left heaters, auto rear left heating, auto rear left hvac, auto rear left side a/c, auto rear left side ac, auto rear left side air conditioning, auto rear left side heaters, auto rear left side heating, auto rear left side hvac, auto rear left side ventilation, auto rear left side vents, auto rear left ventilation, auto rear left vents, auto rear right a/c, auto rear right ac, auto rear right air conditioning, auto rear right heaters, auto rear right heating, auto rear right hvac, auto rear right side a/c, auto rear right side ac, auto rear right side air conditioning, auto rear right side heaters, auto rear right side heating, auto rear right side hvac, auto rear right side ventilation, auto rear right side vents, auto rear right ventilation, auto rear right vents, auto rear thermostat, auto rear ventilation, auto rear vents, auto recirculation, auto right a/c, auto right ac, auto right air conditioning, auto right back a/c, auto right back ac, auto right back air conditioning, auto right back heaters, auto right back heating, auto right back hvac, auto right back side a/c, auto right back side ac, auto right back side air conditioning, auto right back side heaters, auto right back side heating, auto right back side hvac, auto right back side ventilation, auto right back side vents, auto right back ventilation, auto right back vents, auto right front a/c, auto right front ac, auto right front air conditioning, auto right front heaters, auto right front heating, auto right front hvac, auto right front side a/c, auto right front side ac, auto right front side air conditioning, auto right front side heaters, auto right front side heating, auto right front side hvac, auto right front side ventilation, auto right front side vents, auto right front ventilation, auto right front vents, auto right heaters, auto right heating, auto right hvac, auto right rear a/c, auto right rear ac, auto right rear air conditioning, auto right rear heaters, auto right rear heating, auto right rear hvac, auto right rear side a/c, auto right rear side ac, auto right rear side air conditioning, auto right rear side heaters, auto right rear side heating, auto right rear side hvac, auto right rear side ventilation, auto right rear side vents, auto right rear ventilation, auto right rear vents, auto right side a/c, auto right side ac, auto right side air conditioning, auto right side heaters, auto right side heating, auto right side hvac, auto right side ventilation, auto right side vents, auto right ventilation, auto right vents, auto ventilation, auto vents, automated a/c, automated ac, automated air conditioning, automated back a/c, automated back ac, automated back air conditioning, automated back heaters, automated back heating, automated back hvac, automated back left a/c, automated back left ac, automated back left air conditioning, automated back left heaters, automated back left heating, automated back left hvac, automated back left side a/c, automated back left side ac, automated back left side air conditioning, automated back left side heaters, automated back left side heating, automated back left side hvac, automated back left side ventilation, automated back left side vents, automated back left ventilation, automated back left vents, automated back right a/c, automated back right ac, automated back right air conditioning, automated back right heaters, automated back right heating, automated back right hvac, automated back right side a/c, automated back right side ac, automated back right side air conditioning, automated back right side heaters, automated back right side heating, automated back right side hvac, automated back right side ventilation, automated back right side vents, automated back right ventilation, automated back right vents, automated back ventilation, automated back vents, automated co-driver a/c, automated co-driver ac, automated co-driver air conditioning, automated co-driver heaters, automated co-driver heating, automated co-driver hvac, automated co-driver side a/c, automated co-driver side ac, automated co-driver side air conditioning, automated co-driver side heaters, automated co-driver side heating, automated co-driver side hvac, automated co-driver side ventilation, automated co-driver side vents, automated co-driver ventilation, automated co-driver vents, automated co-driver's a/c, automated co-driver's ac, automated co-driver's air conditioning, automated co-driver's heaters, automated co-driver's heating, automated co-driver's hvac, automated co-driver's side a/c, automated co-driver's side ac, automated co-driver's side air conditioning, automated co-driver's side heaters, automated co-driver's side heating, automated co-driver's side hvac, automated co-driver's side ventilation, automated co-driver's side vents, automated co-driver's ventilation, automated co-driver's vents, automated co-drivers a/c, automated co-drivers ac, automated co-drivers air conditioning, automated co-drivers heaters, automated co-drivers heating, automated co-drivers hvac, automated co-drivers side a/c, automated co-drivers side ac, automated co-drivers side air conditioning, automated co-drivers side heaters, automated co-drivers side heating, automated co-drivers side hvac, automated co-drivers side ventilation, automated co-drivers side vents, automated co-drivers ventilation, automated co-drivers vents, automated driver a/c, automated driver ac, automated driver air conditioning, automated driver heaters, automated driver heating, automated driver hvac, automated driver side a/c, automated driver side ac, automated driver side air conditioning, automated driver side heaters, automated driver side heating, automated driver side hvac, automated driver side ventilation, automated driver side vents, automated driver ventilation, automated driver vents, automated driver's a/c, automated driver's ac, automated driver's air conditioning, automated driver's heaters, automated driver's heating, automated driver's hvac, automated driver's side a/c, automated driver's side ac, automated driver's side air conditioning, automated driver's side heaters, automated driver's side heating, automated driver's side hvac, automated driver's side ventilation, automated driver's side vents, automated driver's ventilation, automated driver's vents, automated drivers a/c, automated drivers ac, automated drivers air conditioning, automated drivers heaters, automated drivers heating, automated drivers hvac, automated drivers side a/c, automated drivers side ac, automated drivers side air conditioning, automated drivers side heaters, automated drivers side heating, automated drivers side hvac, automated drivers side ventilation, automated drivers side vents, automated drivers ventilation, automated drivers vents, automated front a/c, automated front ac, automated front air conditioning, automated front heaters, automated front heating, automated front hvac, automated front left a/c, automated front left ac, automated front left air conditioning, automated front left heaters, automated front left heating, automated front left hvac, automated front left side a/c, automated front left side ac, automated front left side air conditioning, automated front left side heaters, automated front left side heating, automated front left side hvac, automated front left side ventilation, automated front left side vents, automated front left ventilation, automated front left vents, automated front right a/c, automated front right ac, automated front right air conditioning, automated front right heaters, automated front right heating, automated front right hvac, automated front right side a/c, automated front right side ac, automated front right side air conditioning, automated front right side heaters, automated front right side heating, automated front right side hvac, automated front right side ventilation, automated front right side vents, automated front right ventilation, automated front right vents, automated front ventilation, automated front vents, automated heaters, automated heating, automated hvac, automated left a/c, automated left ac, automated left air conditioning, automated left back a/c, automated left back ac, automated left back air conditioning, automated left back heaters, automated left back heating, automated left back hvac, automated left back side a/c, automated left back side ac, automated left back side air conditioning, automated left back side heaters, automated left back side heating, automated left back side hvac, automated left back side ventilation, automated left back side vents, automated left back ventilation, automated left back vents, automated left front a/c, automated left front ac, automated left front air conditioning, automated left front heaters, automated left front heating, automated left front hvac, automated left front side a/c, automated left front side ac, automated left front side air conditioning, automated left front side heaters, automated left front side heating, automated left front side hvac, automated left front side ventilation, automated left front side vents, automated left front ventilation, automated left front vents, automated left heaters, automated left heating, automated left hvac, automated left rear a/c, automated left rear ac, automated left rear air conditioning, automated left rear heaters, automated left rear heating, automated left rear hvac, automated left rear side a/c, automated left rear side ac, automated left rear side air conditioning, automated left rear side heaters, automated left rear side heating, automated left rear side hvac, automated left rear side ventilation, automated left rear side vents, automated left rear ventilation, automated left rear vents, automated left side a/c, automated left side ac, automated left side air conditioning, automated left side heaters, automated left side heating, automated left side hvac, automated left side ventilation, automated left side vents, automated left ventilation, automated left vents, automated passenger a/c, automated passenger ac, automated passenger air conditioning, automated passenger heaters, automated passenger heating, automated passenger hvac, automated passenger side a/c, automated passenger side ac, automated passenger side air conditioning, automated passenger side heaters, automated passenger side heating, automated passenger side hvac, automated passenger side ventilation, automated passenger side vents, automated passenger ventilation, automated passenger vents, automated passenger's a/c, automated passenger's ac, automated passenger's air conditioning, automated passenger's heaters, automated passenger's heating, automated passenger's hvac, automated passenger's side a/c, automated passenger's side ac, automated passenger's side air conditioning, automated passenger's side heaters, automated passenger's side heating, automated passenger's side hvac, automated passenger's side ventilation, automated passenger's side vents, automated passenger's ventilation, automated passenger's vents, automated passengers a/c, automated passengers ac, automated passengers air conditioning, automated passengers heaters, automated passengers heating, automated passengers hvac, automated passengers side a/c, automated passengers side ac, automated passengers side air conditioning, automated passengers side heaters, automated passengers side heating, automated passengers side hvac, automated passengers side ventilation, automated passengers side vents, automated passengers ventilation, automated passengers vents, automated rear a/c, automated rear ac, automated rear air conditioning, automated rear heaters, automated rear heating, automated rear hvac, automated rear left a/c, automated rear left ac, automated rear left air conditioning, automated rear left heaters, automated rear left heating, automated rear left hvac, automated rear left side a/c, automated rear left side ac, automated rear left side air conditioning, automated rear left side heaters, automated rear left side heating, automated rear left side hvac, automated rear left side ventilation, automated rear left side vents, automated rear left ventilation, automated rear left vents, automated rear right a/c, automated rear right ac, automated rear right air conditioning, automated rear right heaters, automated rear right heating, automated rear right hvac, automated rear right side a/c, automated rear right side ac, automated rear right side air conditioning, automated rear right side heaters, automated rear right side heating, automated rear right side hvac, automated rear right side ventilation, automated rear right side vents, automated rear right ventilation, automated rear right vents, automated rear ventilation, automated rear vents, automated right a/c, automated right ac, automated right air conditioning, automated right back a/c, automated right back ac, automated right back air conditioning, automated right back heaters, automated right back heating, automated right back hvac, automated right back side a/c, automated right back side ac, automated right back side air conditioning, automated right back side heaters, automated right back side heating, automated right back side hvac, automated right back side ventilation, automated right back side vents, automated right back ventilation, automated right back vents, automated right front a/c, automated right front ac, automated right front air conditioning, automated right front heaters, automated right front heating, automated right front hvac, automated right front side a/c, automated right front side ac, automated right front side air conditioning, automated right front side heaters, automated right front side heating, automated right front side hvac, automated right front side ventilation, automated right front side vents, automated right front ventilation, automated right front vents, automated right heaters, automated right heating, automated right hvac, automated right rear a/c, automated right rear ac, automated right rear air conditioning, automated right rear heaters, automated right rear heating, automated right rear hvac, automated right rear side a/c, automated right rear side ac, automated right rear side air conditioning, automated right rear side heaters, automated right rear side heating, automated right rear side hvac, automated right rear side ventilation, automated right rear side vents, automated right rear ventilation, automated right rear vents, automated right side a/c, automated right side ac, automated right side air conditioning, automated right side heaters, automated right side heating, automated right side hvac, automated right side ventilation, automated right side vents, automated right ventilation, automated right vents, automated ventilation, automated vents, automatic a/c, automatic ac, automatic air, automatic air conditioning, automatic back a/c, automatic back a/c airflow, automatic back a/c airflow assist, automatic back a/c heater, automatic back a/c unit, automatic back a/c vent, automatic back ac, automatic back ac airflow, automatic back ac airflow assist, automatic back ac heater, automatic back ac unit, automatic back ac vent, automatic back acclimatization, automatic back adaptable air vents, automatic back adaptive climate, automatic back adaptive vent, automatic back adjust airflow, automatic back adjustable air conditioning, automatic back adjustable air flow, automatic back adjustable air vent, automatic back adjustable air vents, automatic back adjustable airflow, automatic back advanced climate, automatic back air cabin climate, automatic back air comfort, automatic back air condition, automatic back air condition adjuster, automatic back air condition knob, automatic back air conditioner, automatic back air conditioning, automatic back air conditionings, automatic back air management, automatic back air vent, automatic back air vent adjuster, automatic back air vent adjustment, automatic back air vent assist, automatic back air vent assistance, automatic back air vent flow, automatic back air vent flow adapter, automatic back air vent modulator, automatic back air vent regulator, automatic back air ventilation adjuster, automatic back air ventilation adjustment, automatic back air venting, automatic back air vents, automatic back air vents airflow, automatic back airflow vent, automatic back airflow vent adjustment, automatic back airflow vent rate, automatic back airflow vents, automatic back assisted climate, automatic back heaters, automatic back heating, automatic back hvac, automatic back left a/c, automatic back left ac, automatic back left air conditioning, automatic back left heaters, automatic back left heating, automatic back left hvac, automatic back left side a/c, automatic back left side ac, automatic back left side air conditioning, automatic back left side heaters, automatic back left side heating, automatic back left side hvac, automatic back left side ventilation, automatic back left side vents, automatic back left ventilation, automatic back left vents, automatic back right a/c, automatic back right ac, automatic back right air conditioning, automatic back right heaters, automatic back right heating, automatic back right hvac, automatic back right side a/c, automatic back right side ac, automatic back right side air conditioning, automatic back right side heaters, automatic back right side heating, automatic back right side hvac, automatic back right side ventilation, automatic back right side vents, automatic back right ventilation, automatic back right vents, automatic back thermostat, automatic back ventilation, automatic back vents, automatic climate, automatic co-driver a/c, automatic co-driver ac, automatic co-driver air conditioning, automatic co-driver heaters, automatic co-driver heating, automatic co-driver hvac, automatic co-driver side a/c, automatic co-driver side ac, automatic co-driver side air conditioning, automatic co-driver side heaters, automatic co-driver side heating, automatic co-driver side hvac, automatic co-driver side ventilation, automatic co-driver side vents, automatic co-driver ventilation, automatic co-driver vents, automatic co-driver's a/c, automatic co-driver's ac, automatic co-driver's air conditioning, automatic co-driver's heaters, automatic co-driver's heating, automatic co-driver's hvac, automatic co-driver's side a/c, automatic co-driver's side ac, automatic co-driver's side air conditioning, automatic co-driver's side heaters, automatic co-driver's side heating, automatic co-driver's side hvac, automatic co-driver's side ventilation, automatic co-driver's side vents, automatic co-driver's ventilation, automatic co-driver's vents, automatic co-drivers a/c, automatic co-drivers ac, automatic co-drivers air conditioning, automatic co-drivers heaters, automatic co-drivers heating, automatic co-drivers hvac, automatic co-drivers side a/c, automatic co-drivers side ac, automatic co-drivers side air conditioning, automatic co-drivers side heaters, automatic co-drivers side heating, automatic co-drivers side hvac, automatic co-drivers side ventilation, automatic co-drivers side vents, automatic co-drivers ventilation, automatic co-drivers vents, automatic defog, automatic defogger, automatic defoggers, automatic defrost, automatic driver a/c, automatic driver ac, automatic driver air conditioning, automatic driver heaters, automatic driver heating, automatic driver hvac, automatic driver side a/c, automatic driver side ac, automatic driver side air conditioning, automatic driver side heaters, automatic driver side heating, automatic driver side hvac, automatic driver side ventilation, automatic driver side vents, automatic driver ventilation, automatic driver vents, automatic driver's a/c, automatic driver's ac, automatic driver's air conditioning, automatic driver's heaters, automatic driver's heating, automatic driver's hvac, automatic driver's side a/c, automatic driver's side ac, automatic driver's side air conditioning, automatic driver's side heaters, automatic driver's side heating, automatic driver's side hvac, automatic driver's side ventilation, automatic driver's side vents, automatic driver's ventilation, automatic driver's vents, automatic drivers a/c, automatic drivers ac, automatic drivers air conditioning, automatic drivers heaters, automatic drivers heating, automatic drivers hvac, automatic drivers side a/c, automatic drivers side ac, automatic drivers side air conditioning, automatic drivers side heaters, automatic drivers side heating, automatic drivers side hvac, automatic drivers side ventilation, automatic drivers side vents, automatic drivers ventilation, automatic drivers vents, automatic front a/c, automatic front a/c airflow, automatic front a/c airflow assist, automatic front a/c heater, automatic front a/c unit, automatic front a/c vent, automatic front ac, automatic front ac airflow, automatic front ac airflow assist, automatic front ac heater, automatic front ac unit, automatic front ac vent, automatic front acclimatization, automatic front adaptable air vents, automatic front adaptive climate, automatic front adaptive vent, automatic front adjust airflow, automatic front adjustable air conditioning, automatic front adjustable air flow, automatic front adjustable air vent, automatic front adjustable air vents, automatic front adjustable airflow, automatic front advanced climate, automatic front air cabin climate, automatic front air comfort, automatic front air condition, automatic front air condition adjuster, automatic front air condition knob, automatic front air conditioner, automatic front air conditioning, automatic front air conditionings, automatic front air management, automatic front air vent, automatic front air vent adjuster, automatic front air vent adjustment, automatic front air vent assist, automatic front air vent assistance, automatic front air vent flow, automatic front air vent flow adapter, automatic front air vent modulator, automatic front air vent recirculation, automatic front air vent regulator, automatic front air ventilation adjuster, automatic front air ventilation adjustment, automatic front air venting, automatic front air vents, automatic front airflow vent, automatic front airflow vent adjustment, automatic front airflow vent rate, automatic front airflow vents, automatic front assisted climate, automatic front heaters, automatic front heating, automatic front hvac, automatic front left a/c, automatic front left ac, automatic front left air conditioning, automatic front left heaters, automatic front left heating, automatic front left hvac, automatic front left side a/c, automatic front left side ac, automatic front left side air conditioning, automatic front left side heaters, automatic front left side heating, automatic front left side hvac, automatic front left side ventilation, automatic front left side vents, automatic front left ventilation, automatic front left vents, automatic front right a/c, automatic front right ac, automatic front right air conditioning, automatic front right heaters, automatic front right heating, automatic front right hvac, automatic front right side a/c, automatic front right side ac, automatic front right side air conditioning, automatic front right side heaters, automatic front right side heating, automatic front right side hvac, automatic front right side ventilation, automatic front right side vents, automatic front right ventilation, automatic front right vents, automatic front ventilation, automatic front vents, automatic heaters, automatic heating, automatic hvac, automatic left a/c, automatic left ac, automatic left air conditioning, automatic left back a/c, automatic left back ac, automatic left back air conditioning, automatic left back heaters, automatic left back heating, automatic left back hvac, automatic left back side a/c, automatic left back side ac, automatic left back side air conditioning, automatic left back side heaters, automatic left back side heating, automatic left back side hvac, automatic left back side ventilation, automatic left back side vents, automatic left back ventilation, automatic left back vents, automatic left front a/c, automatic left front ac, automatic left front air conditioning, automatic left front heaters, automatic left front heating, automatic left front hvac, automatic left front side a/c, automatic left front side ac, automatic left front side air conditioning, automatic left front side heaters, automatic left front side heating, automatic left front side hvac, automatic left front side ventilation, automatic left front side vents, automatic left front ventilation, automatic left front vents, automatic left heaters, automatic left heating, automatic left hvac, automatic left rear a/c, automatic left rear ac, automatic left rear air conditioning, automatic left rear heaters, automatic left rear heating, automatic left rear hvac, automatic left rear side a/c, automatic left rear side ac, automatic left rear side air conditioning, automatic left rear side heaters, automatic left rear side heating, automatic left rear side hvac, automatic left rear side ventilation, automatic left rear side vents, automatic left rear ventilation, automatic left rear vents, automatic left side a/c, automatic left side ac, automatic left side air conditioning, automatic left side heaters, automatic left side heating, automatic left side hvac, automatic left side ventilation, automatic left side vents, automatic left ventilation, automatic left vents, automatic passenger a/c, automatic passenger ac, automatic passenger air conditioning, automatic passenger heaters, automatic passenger heating, automatic passenger hvac, automatic passenger side a/c, automatic passenger side ac, automatic passenger side air conditioning, automatic passenger side heaters, automatic passenger side heating, automatic passenger side hvac, automatic passenger side ventilation, automatic passenger side vents, automatic passenger ventilation, automatic passenger vents, automatic passenger's a/c, automatic passenger's ac, automatic passenger's air conditioning, automatic passenger's heaters, automatic passenger's heating, automatic passenger's hvac, automatic passenger's side a/c, automatic passenger's side ac, automatic passenger's side air conditioning, automatic passenger's side heaters, automatic passenger's side heating, automatic passenger's side hvac, automatic passenger's side ventilation, automatic passenger's side vents, automatic passenger's ventilation, automatic passenger's vents, automatic passengers a/c, automatic passengers ac, automatic passengers air conditioning, automatic passengers heaters, automatic passengers heating, automatic passengers hvac, automatic passengers side a/c, automatic passengers side ac, automatic passengers side air conditioning, automatic passengers side heaters, automatic passengers side heating, automatic passengers side hvac, automatic passengers side ventilation, automatic passengers side vents, automatic passengers ventilation, automatic passengers vents, automatic rear a/c, automatic rear a/c airflow, automatic rear a/c airflow assist, automatic rear a/c heater, automatic rear a/c unit, automatic rear a/c vent, automatic rear ac, automatic rear ac airflow, automatic rear ac airflow assist, automatic rear ac heater, automatic rear ac unit, automatic rear ac vent, automatic rear acclimatization, automatic rear adaptable air vents, automatic rear adaptive climate, automatic rear adaptive vent, automatic rear adjust airflow, automatic rear adjustable air conditioning, automatic rear adjustable air flow, automatic rear adjustable air vent, automatic rear adjustable air vents, automatic rear adjustable airflow, automatic rear advanced climate, automatic rear air cabin climate, automatic rear air comfort, automatic rear air condition, automatic rear air condition adjuster, automatic rear air condition knob, automatic rear air conditioner, automatic rear air conditioning, automatic rear air conditionings, automatic rear air management, automatic rear air vent, automatic rear air vent adjuster, automatic rear air vent adjustment, automatic rear air vent assist, automatic rear air vent assistance, automatic rear air vent flow, automatic rear air vent flow adapter, automatic rear air vent modulator, automatic rear air vent regulator, automatic rear air ventilation adjuster, automatic rear air ventilation adjustment, automatic rear air venting, automatic rear air vents, automatic rear air vents airflow, automatic rear airflow vent, automatic rear airflow vent adjustment, automatic rear airflow vent rate, automatic rear airflow vents, automatic rear assisted climate, automatic rear heaters, automatic rear heating, automatic rear hvac, automatic rear left a/c, automatic rear left ac, automatic rear left air conditioning, automatic rear left heaters, automatic rear left heating, automatic rear left hvac, automatic rear left side a/c, automatic rear left side ac, automatic rear left side air conditioning, automatic rear left side heaters, automatic rear left side heating, automatic rear left side hvac, automatic rear left side ventilation, automatic rear left side vents, automatic rear left ventilation, automatic rear left vents, automatic rear right a/c, automatic rear right ac, automatic rear right air conditioning, automatic rear right heaters, automatic rear right heating, automatic rear right hvac, automatic rear right side a/c, automatic rear right side ac, automatic rear right side air conditioning, automatic rear right side heaters, automatic rear right side heating, automatic rear right side hvac, automatic rear right side ventilation, automatic rear right side vents, automatic rear right ventilation, automatic rear right vents, automatic rear thermostat, automatic rear ventilation, automatic rear vents, automatic recirculation, automatic right a/c, automatic right ac, automatic right air conditioning, automatic right back a/c, automatic right back ac, automatic right back air conditioning, automatic right back heaters, automatic right back heating, automatic right back hvac, automatic right back side a/c, automatic right back side ac, automatic right back side air conditioning, automatic right back side heaters, automatic right back side heating, automatic right back side hvac, automatic right back side ventilation, automatic right back side vents, automatic right back ventilation, automatic right back vents, automatic right front a/c, automatic right front ac, automatic right front air conditioning, automatic right front heaters, automatic right front heating, automatic right front hvac, automatic right front side a/c, automatic right front side ac, automatic right front side air conditioning, automatic right front side heaters, automatic right front side heating, automatic right front side hvac, automatic right front side ventilation, automatic right front side vents, automatic right front ventilation, automatic right front vents, automatic right heaters, automatic right heating, automatic right hvac, automatic right rear a/c, automatic right rear ac, automatic right rear air conditioning, automatic right rear heaters, automatic right rear heating, automatic right rear hvac, automatic right rear side a/c, automatic right rear side ac, automatic right rear side air conditioning, automatic right rear side heaters, automatic right rear side heating, automatic right rear side hvac, automatic right rear side ventilation, automatic right rear side vents, automatic right rear ventilation, automatic right rear vents, automatic right side a/c, automatic right side ac, automatic right side air conditioning, automatic right side heaters, automatic right side heating, automatic right side hvac, automatic right side ventilation, automatic right side vents, automatic right ventilation, automatic right vents, automatic ventilation, automatic vents, back a/c, back ac, back adaptive defog, back adaptive defogger, back air blower, back air blower speed, back air blowers, back air blowers speed, back air conditioning, back air fan, back air fan speed, back air fans, back air fans speed, back anti fog, back anti fog assist, back anti fog detection, back anti fog frost detector, back anti fog prevention, back anti fog sensor, back anti fog technology, back anti fog window, back anti fog windows, back anti fogger, back anti fogging, back anti fogging technology, back anti frost defogger, back antifog, back antifogger, back auto a/c, back auto ac, back auto air, back auto airflow adjust, back auto backseat air conditioner, back auto climate, back auto climate regulator, back auto flow, back automatic a/c, back automatic ac, back automatic air, back automatic airflow adjust, back automatic backseat air conditioner, back automatic climate, back automatic climate regulator, back automatic flow, back blower, back blower speed, back blowers, back blowers speed, back cabin de fogger, back cabin defog, back cabin defogger, back cabin fog prevent, back climate, back climate control temperature, back combined set temperature, back combined temperature, back comfort, back cool, back cooler, back cooling, back de fogger, back de humidity defogger, back defog, back defog assist, back defog assistance, back defog defrost, back defog detection, back defog module, back defog monitor, back defog sensor, back defog window, back defogger, back defogger assist, back defogging, back defogging assist, back defogging climate, back defogging temperature, back defogs, back defrost, back defroster, back defrosters, back demist, back demister, back dynamic defogging, back fan, back fan control, back fan control speed, back fan speed, back fans, back fans speed, back fog, back fog assist, back fog avoider, back fog clear, back fog detect, back fog detection, back fog detection eliminator, back fog detector, back fog free, back fog free shield, back fog free windows, back fog frost assist, back fog helper, back fog monitor, back fog preventer, back fog prevention, back fog protector, back fog reduction, back fog reduction monitor, back fog removal, back fog remover, back fog temperature, back fogger preventer, back glass defog, back glass defogger, back heat, back heater, back heaters, back heating, back humidity defog, back humidity defogger, back humidity sensor pre defogger, back hvac, back instant window defogger, back intelligent defogger, back interior anti defog, back interior defogger, back left a/c, back left ac, back left air conditioning, back left cool, back left cooler, back left cooling, back left heat, back left heater, back left heaters, back left heating, back left hvac, back left set temperature, back left side a/c, back left side ac, back left side air conditioning, back left side cool, back left side cooler, back left side cooling, back left side heat, back left side heater, back left side heaters, back left side heating, back left side hvac, back left side ventilation, back left side vents, back left temperature, back left ventilation, back left vents, back passenger climate, back passenger temperature, back right a/c, back right ac, back right air conditioning, back right cool, back right cooler, back right cooling, back right heat, back right heater, back right heaters, back right heating, back right hvac, back right set temperature, back right side a/c, back right side ac, back right side air conditioning, back right side cool, back right side cooler, back right side cooling, back right side heat, back right side heater, back right side heaters, back right side heating, back right side hvac, back right side ventilation, back right side vents, back right temperature, back right ventilation, back right vents, back temp, back temperature, back ventilation, back vents, back view defogger, back window defog, back window defog defrost, back window defogger, back window defrost, back window defroster, back window dehumidifier, back window demist, back window demister, back window fog removal, back window heater, back window rear window defogger, back window unfog, back windows defoggers, back windshield defog, back windshield defogger, back windshield fog reducer, blower, blowers, cabin air circulation, cabin air circulator, cabin air flow circulation, cabin air recirculation, cabin air recirculator, cabin circulation, cabin recirculation, chilly, chilly back, chilly back combined, chilly back left, chilly back right, chilly driver, chilly front, chilly front combined, chilly front left, chilly front right, chilly passenger, chilly rear, chilly rear combined, chilly rear left, chilly rear right, circular air flow, circulation, circulation assistant, circulation fan, circulation regulation, circulation regulator, circulatory, climate, climate circulation, climate control mode, climate control temperature, climate mode, climate preset, climate presetting, climate re circulation, climate recirculation, climate state, climate temperature, closed loop air circulation, co-driver a/c, co-driver ac, co-driver air conditioning, co-driver cool, co-driver cooler, co-driver cooling, co-driver heat, co-driver heater, co-driver heaters, co-driver heating, co-driver hvac, co-driver side a/c, co-driver side ac, co-driver side air conditioning, co-driver side cool, co-driver side cooler, co-driver side cooling, co-driver side heat, co-driver side heater, co-driver side heaters, co-driver side heating, co-driver side hvac, co-driver side ventilation, co-driver side vents, co-driver ventilation, co-driver vents, co-driver's a/c, co-driver's ac, co-driver's air conditioning, co-driver's cool, co-driver's cooler, co-driver's cooling, co-driver's heat, co-driver's heater, co-driver's heaters, co-driver's heating, co-driver's hvac, co-driver's side a/c, co-driver's side ac, co-driver's side air conditioning, co-driver's side cool, co-driver's side cooler, co-driver's side cooling, co-driver's side heat, co-driver's side heater, co-driver's side heaters, co-driver's side heating, co-driver's side hvac, co-driver's side ventilation, co-driver's side vents, co-driver's ventilation, co-driver's vents, co-drivers a/c, co-drivers ac, co-drivers air conditioning, co-drivers cool, co-drivers cooler, co-drivers cooling, co-drivers heat, co-drivers heater, co-drivers heaters, co-drivers heating, co-drivers hvac, co-drivers side a/c, co-drivers side ac, co-drivers side air conditioning, co-drivers side cool, co-drivers side cooler, co-drivers side cooling, co-drivers side heat, co-drivers side heater, co-drivers side heaters, co-drivers side heating, co-drivers side hvac, co-drivers side ventilation, co-drivers side vents, co-drivers ventilation, co-drivers vents, cold, cold air sync, cold back, cold back combined, cold back left, cold back right, cold driver, cold front, cold front combined, cold front left, cold front right, cold passenger, cold rear, cold rear combined, cold rear left, cold rear right, colder, colder back, colder back combined, colder back left, colder back right, colder driver, colder front, colder front combined, colder front left, colder front right, colder passenger, colder rear, colder rear combined, colder rear left, colder rear right, consistent vehicle circulation, continual circulation, continuous air circulation, continuous circulation, cool, cool back, cool back combined, cool back left, cool back right, cool driver, cool front, cool front combined, cool front left, cool front right, cool off, cool off back, cool off back combined, cool off back left, cool off back right, cool off driver, cool off front, cool off front combined, cool off front left, cool off front right, cool off passenger, cool off rear, cool off rear combined, cool off rear left, cool off rear right, cool passenger, cool rear, cool rear combined, cool rear left, cool rear right, cooled, cooled back, cooled back combined, cooled back left, cooled back right, cooled driver, cooled front, cooled front combined, cooled front left, cooled front right, cooled off, cooled off back, cooled off back combined, cooled off back left, cooled off back right, cooled off driver, cooled off front, cooled off front combined, cooled off front left, cooled off front right, cooled off passenger, cooled off rear, cooled off rear combined, cooled off rear left, cooled off rear right, cooled passenger, cooled rear, cooled rear combined, cooled rear left, cooled rear right, cooler, cooler back, cooler back combined, cooler back left, cooler back right, cooler driver, cooler front, cooler front combined, cooler front left, cooler front right, cooler passenger, cooler rear, cooler rear combined, cooler rear left, cooler rear right, cooling, de icer, defog, defog defrost, defog frost, defogger, defogger back window, defogger rear window, defrost, defrost air flow, defrost assist, defrost defog, defrost defogger, defrost fan, defrost notification, defrost sensor, defrost vent, defrost vents, defrost windshield, defrosted, defroster, defrosters, defrosting, demist, demister, driver a/c, driver ac, driver air conditioning, driver cool, driver cooler, driver cooling, driver heat, driver heater, driver heaters, driver heating, driver hvac, driver side a/c, driver side ac, driver side air conditioning, driver side cool, driver side cooler, driver side cooling, driver side heat, driver side heater, driver side heaters, driver side heating, driver side hvac, driver side temperature, driver side ventilation, driver side vents, driver temperature, driver ventilation, driver vents, driver's a/c, driver's ac, driver's air conditioning, driver's cool, driver's cooler, driver's cooling, driver's heat, driver's heater, driver's heaters, driver's heating, driver's hvac, driver's side a/c, driver's side ac, driver's side air conditioning, driver's side cool, driver's side cooler, driver's side cooling, driver's side heat, driver's side heater, driver's side heaters, driver's side heating, driver's side hvac, driver's side ventilation, driver's side vents, driver's ventilation, driver's vents, drivers a/c, drivers ac, drivers air conditioning, drivers cool, drivers cooler, drivers cooling, drivers heat, drivers heater, drivers heaters, drivers heating, drivers hvac, drivers side a/c, drivers side ac, drivers side air conditioning, drivers side cool, drivers side cooler, drivers side cooling, drivers side heat, drivers side heater, drivers side heaters, drivers side heating, drivers side hvac, drivers side temperature, drivers side ventilation, drivers side vents, drivers temperature, drivers ventilation, drivers vents, enhanced air circulation, equalize a/c, equalize ac, equalize air, equalize air conditioning, equalize cold air, equalize heat, equalize heaters, equalize hot air, equalize temp, equalize temperature, equalize ventilation, equalize vents, even air circulation, even circulation, even climate circulation, even recirculation, fan, fan circulation, fan control, fans, fog less back window, fog less rear window, fog removal, forward defogger, forward defrost, forward windshield defroster, freezing, freezing back, freezing back combined, freezing back left, freezing back right, freezing driver, freezing front, freezing front combined, freezing front left, freezing front right, freezing passenger, freezing rear, freezing rear combined, freezing rear left, freezing rear right, front a/c, front ac, front air blower, front air blower speed, front air blowers, front air blowers speed, front air conditioning, front air fan, front air fan speed, front air fans, front air fans speed, front and back hvac, front and rear hvac, front auto a/c, front auto ac, front auto backseat air conditioner, front auto climate, front auto climate regulator, front auto flow, front auto thermostat, front autodefrost, front automatic a/c, front automatic ac, front automatic backseat air conditioner, front automatic climate, front automatic climate regulator, front automatic flow, front automatic thermostat, front back a/c, front back a/c airflow, front back a/c airflow assist, front back a/c heater, front back a/c unit, front back a/c vent, front back ac, front back ac airflow, front back ac airflow assist, front back ac heater, front back ac unit, front back ac vent, front back acclimatization, front back adaptable air vents, front back adaptive climate, front back adaptive vent, front back adjust airflow, front back adjustable air conditioning, front back adjustable air vent, front back adjustable air vents, front back adjustable airflow, front back advanced climate, front back air cabin climate, front back air comfort, front back air condition, front back air condition adjuster, front back air condition knob, front back air conditioner, front back air conditioning, front back air conditionings, front back air management, front back air vent, front back air vent adjuster, front back air vent adjustment, front back air vent assist, front back air vent assistance, front back air vent flow, front back air vent flow adapter, front back air vent modulator, front back air vent recirculation, front back air vent regulator, front back air ventilation adjuster, front back air ventilation adjustment, front back air venting, front back air vents, front back air vents airflow, front back airflow vent, front back airflow vent adjustment, front back airflow vent rate, front back airflow vents, front back assisted climate, front back thermostat, front blower, front blower speed, front blowers, front blowers speed, front combined set temperature, front combined temperature, front cool, front cooler, front cooling, front defog defrost, front defrost, front defrost defog, front defroster, front defrosting, front fan, front fan control, front fan control speed, front fan speed, front fans, front fans speed, front heat, front heater, front heaters, front heating, front hvac, front left a/c, front left ac, front left air conditioning, front left cool, front left cooler, front left cooling, front left heat, front left heater, front left heaters, front left heating, front left hvac, front left set temperature, front left side a/c, front left side ac, front left side air conditioning, front left side cool, front left side cooler, front left side cooling, front left side heat, front left side heater, front left side heaters, front left side heating, front left side hvac, front left side ventilation, front left side vents, front left temperature, front left ventilation, front left vents, front rear a/c, front rear a/c airflow, front rear a/c airflow assist, front rear a/c heater, front rear a/c unit, front rear a/c vent, front rear ac, front rear ac airflow, front rear ac airflow assist, front rear ac heater, front rear ac unit, front rear ac vent, front rear acclimatization, front rear adaptable air vents, front rear adaptive climate, front rear adaptive vent, front rear adjust airflow, front rear adjustable air conditioning, front rear adjustable air vent, front rear adjustable air vents, front rear adjustable airflow, front rear advanced climate, front rear air cabin climate, front rear air comfort, front rear air condition, front rear air condition adjuster, front rear air condition knob, front rear air conditioner, front rear air conditioning, front rear air conditionings, front rear air management, front rear air vent, front rear air vent adjuster, front rear air vent adjustment, front rear air vent assist, front rear air vent assistance, front rear air vent flow, front rear air vent flow adapter, front rear air vent modulator, front rear air vent recirculation, front rear air vent regulator, front rear air ventilation adjuster, front rear air ventilation adjustment, front rear air venting, front rear air vents, front rear air vents airflow, front rear airflow vent, front rear airflow vent adjustment, front rear airflow vent rate, front rear airflow vents, front rear assisted climate, front rear thermostat, front right a/c, front right ac, front right air conditioning, front right cool, front right cooler, front right cooling, front right heat, front right heater, front right heaters, front right heating, front right hvac, front right set temperature, front right side a/c, front right side ac, front right side air conditioning, front right side cool, front right side cooler, front right side cooling, front right side heat, front right side heater, front right side heaters, front right side heating, front right side hvac, front right side ventilation, front right side vents, front right temperature, front right ventilation, front right vents, front side temperature, front temperature, front ventilation, front vents, front window defrost, front window defrost/defog, front window defroster, front windscreen defroster, front windshield de froster, front windshield defog/defrost, front windshield defrost, front windshield defrost/defog, front windshield defroster, frontal defrost, frost, frost blaster, frost clear, frost elimination, frost eliminator, frost free, frost melt, frost prevention, frost removal, frost remover, frost stop, frost window cleaner, frost windshield detector, full air circulation, full air circulator, full cabin air circulation, heat, heat back, heat back combined, heat back left, heat back right, heat control mode, heat driver, heat front, heat front combined, heat front left, heat front right, heat mode, heat passenger, heat rear, heat rear combined, heat rear left, heat rear right, heat state, heat up, heat up back, heat up back combined, heat up back left, heat up back right, heat up driver, heat up front, heat up front combined, heat up front left, heat up front right, heat up passenger, heat up rear, heat up rear combined, heat up rear left, heat up rear right, heated, heated back, heated back combined, heated back left, heated back right, heated driver, heated front, heated front combined, heated front left, heated front right, heated passenger, heated rear, heated rear combined, heated rear left, heated rear right, heated side mirror, heater, heater back, heater back combined, heater back left, heater back right, heater control mode, heater driver, heater front, heater front combined, heater front left, heater front right, heater mode, heater passenger, heater rear, heater rear combined, heater rear left, heater rear right, heater state, heater sync, heaters, heating, heating control mode, heating cooling circulation, heating mode, heating recirculation, heating state, heating sync, homogeneous air, hot, hot air sync, hot back, hot back combined, hot back left, hot back right, hot driver, hot front, hot front combined, hot front left, hot front right, hot passenger, hot rear, hot rear combined, hot rear left, hot rear right, hotter, hotter back, hotter back combined, hotter back left, hotter back right, hotter driver, hotter front, hotter front combined, hotter front left, hotter front right, hotter passenger, hotter rear, hotter rear combined, hotter rear left, hotter rear right, hvac, improved air circulation, increased circulation, indoor air circulation, interior air circulation, interior air recircle, interior cabin air circulation, interior climate, internal air circulation, internal recirculation, left a/c, left ac, left air conditioning, left back a/c, left back ac, left back air conditioning, left back cool, left back cooler, left back cooling, left back heat, left back heater, left back heaters, left back heating, left back hvac, left back side a/c, left back side ac, left back side air conditioning, left back side cool, left back side cooler, left back side cooling, left back side heat, left back side heater, left back side heaters, left back side heating, left back side hvac, left back side ventilation, left back side vents, left back ventilation, left back vents, left cool, left cooler, left cooling, left front a/c, left front ac, left front air conditioning, left front cool, left front cooler, left front cooling, left front heat, left front heater, left front heaters, left front heating, left front hvac, left front side a/c, left front side ac, left front side air conditioning, left front side cool, left front side cooler, left front side cooling, left front side heat, left front side heater, left front side heaters, left front side heating, left front side hvac, left front side ventilation, left front side vents, left front ventilation, left front vents, left heat, left heater, left heaters, left heating, left hvac, left rear a/c, left rear ac, left rear air conditioning, left rear cool, left rear cooler, left rear cooling, left rear heat, left rear heater, left rear heaters, left rear heating, left rear hvac, left rear side a/c, left rear side ac, left rear side air conditioning, left rear side cool, left rear side cooler, left rear side cooling, left rear side heat, left rear side heater, left rear side heaters, left rear side heating, left rear side hvac, left rear side ventilation, left rear side vents, left rear ventilation, left rear vents, left side a/c, left side ac, left side air conditioning, left side cool, left side cooler, left side cooling, left side heat, left side heater, left side heaters, left side heating, left side hvac, left side ventilation, left side vents, left ventilation, left vents, main cabin circulation, max defrost, maximal defrost, maximum defrost, mode heat, mode heat controls, mode heater, mode heater controls, mode heating, mode heating controls, no frost, no more frost, outside mirror heater, passenger a/c, passenger ac, passenger air conditioning, passenger climate, passenger cool, passenger cooler, passenger cooling, passenger heat, passenger heater, passenger heaters, passenger heating, passenger hvac, passenger side a/c, passenger side ac, passenger side air conditioning, passenger side cool, passenger side cooler, passenger side cooling, passenger side heat, passenger side heater, passenger side heaters, passenger side heating, passenger side hvac, passenger side temperature, passenger side ventilation, passenger side vents, passenger temperature, passenger ventilation, passenger vents, passenger's a/c, passenger's ac, passenger's air conditioning, passenger's cool, passenger's cooler, passenger's cooling, passenger's heat, passenger's heater, passenger's heaters, passenger's heating, passenger's hvac, passenger's side a/c, passenger's side ac, passenger's side air conditioning, passenger's side cool, passenger's side cooler, passenger's side cooling, passenger's side heat, passenger's side heater, passenger's side heaters, passenger's side heating, passenger's side hvac, passenger's side ventilation, passenger's side vents, passenger's ventilation, passenger's vents, passengers a/c, passengers ac, passengers air conditioning, passengers cool, passengers cooler, passengers cooling, passengers heat, passengers heater, passengers heaters, passengers heating, passengers hvac, passengers side a/c, passengers side ac, passengers side air conditioning, passengers side cool, passengers side cooler, passengers side cooling, passengers side heat, passengers side heater, passengers side heaters, passengers side heating, passengers side hvac, passengers side temperature, passengers side ventilation, passengers side vents, passengers temperature, passengers ventilation, passengers vents, re circulate air, re circulation button, re circulation vent, rear a/c, rear ac, rear adaptive defog, rear adaptive defogger, rear air blower, rear air blower speed, rear air blowers, rear air blowers speed, rear air conditioning, rear air fan, rear air fan speed, rear air fans, rear air fans speed, rear anti fog, rear anti fog assist, rear anti fog detection, rear anti fog frost detector, rear anti fog prevention, rear anti fog sensor, rear anti fog technology, rear anti fog window, rear anti fog windows, rear anti fogger, rear anti fogging, rear anti fogging technology, rear anti frost defogger, rear antifog, rear antifogger, rear auto a/c, rear auto ac, rear auto air, rear auto airflow adjust, rear auto backseat air conditioner, rear auto climate, rear auto climate regulator, rear auto flow, rear automatic a/c, rear automatic ac, rear automatic air, rear automatic airflow adjust, rear automatic backseat air conditioner, rear automatic climate, rear automatic climate regulator, rear automatic flow, rear blower, rear blower speed, rear blowers, rear blowers speed, rear cabin de fogger, rear cabin defog, rear cabin defogger, rear cabin fog prevent, rear climate, rear climate control temperature, rear combined set temperature, rear combined temperature, rear comfort, rear cool, rear cooler, rear cooling, rear de fogger, rear de humidity defogger, rear defog, rear defog assist, rear defog assistance, rear defog defrost, rear defog detection, rear defog module, rear defog monitor, rear defog sensor, rear defog window, rear defogger, rear defogger assist, rear defogging, rear defogging assist, rear defogging climate, rear defogging temperature, rear defogs, rear defrost, rear defroster, rear defrosters, rear demist, rear demister, rear dynamic defogging, rear fan, rear fan control, rear fan control speed, rear fan speed, rear fans, rear fans speed, rear fog, rear fog assist, rear fog avoider, rear fog clear, rear fog detect, rear fog detection, rear fog detection eliminator, rear fog detector, rear fog free, rear fog free shield, rear fog free windows, rear fog frost assist, rear fog helper, rear fog monitor, rear fog preventer, rear fog prevention, rear fog protector, rear fog reduction, rear fog reduction monitor, rear fog removal, rear fog remover, rear fog temperature, rear fogger preventer, rear glass defog, rear glass defogger, rear heat, rear heater, rear heaters, rear heating, rear humidity defog, rear humidity defogger, rear humidity sensor pre defogger, rear hvac, rear instant window defogger, rear intelligent defogger, rear interior anti defog, rear interior defogger, rear left a/c, rear left ac, rear left air conditioning, rear left cool, rear left cooler, rear left cooling, rear left heat, rear left heater, rear left heaters, rear left heating, rear left hvac, rear left set temperature, rear left side a/c, rear left side ac, rear left side air conditioning, rear left side cool, rear left side cooler, rear left side cooling, rear left side heat, rear left side heater, rear left side heaters, rear left side heating, rear left side hvac, rear left side ventilation, rear left side vents, rear left temperature, rear left ventilation, rear left vents, rear passenger climate, rear passenger temperature, rear right a/c, rear right ac, rear right air conditioning, rear right cool, rear right cooler, rear right cooling, rear right heat, rear right heater, rear right heaters, rear right heating, rear right hvac, rear right set temperature, rear right side a/c, rear right side ac, rear right side air conditioning, rear right side cool, rear right side cooler, rear right side cooling, rear right side heat, rear right side heater, rear right side heaters, rear right side heating, rear right side hvac, rear right side ventilation, rear right side vents, rear right temperature, rear right ventilation, rear right vents, rear temp, rear temperature, rear ventilation, rear vents, rear view defogger, rear window defog, rear window defog defrost, rear window defogger, rear window defrost, rear window defroster, rear window dehumidifier, rear window demist, rear window demister, rear window fog removal, rear window heater, rear window rear window defogger, rear window unfog, rear windows defoggers, rear windshield defog, rear windshield defogger, rear windshield fog reducer, recircle air, recirculate, recirculate air, recirculate airflow, recirculate cabin air, recirculated air, recirculated air conditioning, recirculating, recirculating air, recirculating airflow, recirculation, recirculation regulator, recirculator for air, recycle air, recycled air, redistribution, reflow, right a/c, right ac, right air conditioning, right back a/c, right back ac, right back air conditioning, right back cool, right back cooler, right back cooling, right back heat, right back heater, right back heaters, right back heating, right back hvac, right back side a/c, right back side ac, right back side air conditioning, right back side cool, right back side cooler, right back side cooling, right back side heat, right back side heater, right back side heaters, right back side heating, right back side hvac, right back side ventilation, right back side vents, right back ventilation, right back vents, right cool, right cooler, right cooling, right front a/c, right front ac, right front air conditioning, right front cool, right front cooler, right front cooling, right front heat, right front heater, right front heaters, right front heating, right front hvac, right front side a/c, right front side ac, right front side air conditioning, right front side cool, right front side cooler, right front side cooling, right front side heat, right front side heater, right front side heaters, right front side heating, right front side hvac, right front side ventilation, right front side vents, right front ventilation, right front vents, right heat, right heater, right heaters, right heating, right hvac, right rear a/c, right rear ac, right rear air conditioning, right rear cool, right rear cooler, right rear cooling, right rear heat, right rear heater, right rear heaters, right rear heating, right rear hvac, right rear side a/c, right rear side ac, right rear side air conditioning, right rear side cool, right rear side cooler, right rear side cooling, right rear side heat, right rear side heater, right rear side heaters, right rear side heating, right rear side hvac, right rear side ventilation, right rear side vents, right rear ventilation, right rear vents, right side a/c, right side ac, right side air conditioning, right side cool, right side cooler, right side cooling, right side heat, right side heater, right side heaters, right side heating, right side hvac, right side ventilation, right side vents, right ventilation, right vents, shield defrost, side mirror defroster, side mirror heater, side mirror heating, side mirror warmer, side mirror warming, side window defog, side window defogger, side window defrost, side window defroster, side window demist, side window demister, smart air circulation, smart circulation, smart defrost, smart defroster, smart recirculation, speed, sync a/c, sync ac, sync air, sync air conditioner, sync cold air, sync heat, sync heater, sync heating, sync hot air, sync hvac, sync temperature, sync ventilation, sync vents, synchronize a/c, synchronize ac, synchronize air, synchronize air conditioning, synchronize cold air, synchronize heat, synchronize heaters, synchronize hot air, synchronize temp, synchronize temperature, synchronize ventilation, synchronize vents, temp, temp back, temp back combined, temp back left, temp back right, temp driver, temp front, temp front combined, temp front left, temp front right, temp passenger, temp rear, temp rear combined, temp rear left, temp rear right, temperature, temperature sync, temperatures, temps, thermostat, throughout circulation, un frost, unfroster, vehicle air circulation, vehicle air circulator, vehicle air recirculation, vehicle cabin air circulator, vehicle cabin circulation, vehicle circulation, vehicle climate recirculation, vehicle defrost, vehicle defroster, vehicle even air flow, vehicle re circulation, vehicle re circulation air, vehicle recirculation, vehicle recirculation air, vehicle recirculation notification, vent circulation, vent flow, vent sync, ventilation, ventilation circulation, ventilation sync, vents, warm, warm back, warm back combined, warm back left, warm back right, warm driver, warm front, warm front combined, warm front left, warm front right, warm passenger, warm rear, warm rear combined, warm rear left, warm rear right, warm up, warm up back, warm up back combined, warm up back left, warm up back right, warm up driver, warm up front, warm up front combined, warm up front left, warm up front right, warm up passenger, warm up rear, warm up rear combined, warm up rear left, warm up rear right, warmed, warmed back, warmed back combined, warmed back left, warmed back right, warmed driver, warmed front, warmed front combined, warmed front left, warmed front right, warmed passenger, warmed rear, warmed rear combined, warmed rear left, warmed rear right, warmer, warmer back, warmer back combined, warmer back left, warmer back right, warmer driver, warmer front, warmer front combined, warmer front left, warmer front right, warmer passenger, warmer rear, warmer rear combined, warmer rear left, warmer rear right, window defrost, window defrost defog, window defroster, window ice melter, windscreen defroster, windshield airflow frost fog eliminator, windshield anti frost heating, windshield autodefrost, windshield de froster, windshield de icer, windshield defog, windshield defog defrost, windshield defogger, windshield defrost, windshield defrost assistance, windshield defrost defog, windshield defroster, windshield defroster vent, windshield defrosting vent, windshield demist, windshield demister, windshield exhaust, windshield frost eliminator, windshield heat, windshield heater, windshield heating fan vent, windshield thaw, windshield unfreeze, windshield vent, windshield vents, windshield warmer +$setting_name_csm:phraseList +- audio volume, bass, bass equalizer, equalizer, equalizer bass, equalizer midrange, equalizer surround, equalizer surround sound, equalizer treble, equalizers, media volume, midrange, midrange equalizer, sound equalizer, sound volume, surround equalizer, surround sound, surround sound equalizer, treble, treble equalizer, volume, volume equalizer +$number:phraseList +- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, -44, -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -57, -58, -59, -60, -61, -62, -63, -64, -65, -66, -67, -68, -69, -70, -71, -72, -73, -74, -75, -76, -77, -78, -79, -80, -81, -82, -83, -84, -85, -86, -87, -88, -89, -90, -91, -92, -93, -94, -95, -96, -97, -98, -99, -100, +1, +2, +3, +4, +5, +6, +7, +8, +9, +10, +11, +12, +13, +14, +15, +16, +17, +18, +19, +20, +21, +22, +23, +24, +25, +26, +27, +28, +29, +30, +31, +32, +33, +34, +35, +36, +37, +38, +39, +40, +41, +42, +43, +44, +45, +46, +47, +48, +49, +50, +51, +52, +53, +54, +55, +56, +57, +58, +59, +60, +61, +62, +63, +64, +65, +66, +67, +68, +69, +70, +71, +72, +73, +74, +75, +76, +77, +78, +79, +80, +81, +82, +83, +84, +85, +86, +87, +88, +89, +90, +91, +92, +93, +94, +95, +96, +97, +98, +99, +100, zero, one, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen, twenty, twenty-one, twenty-two, twenty-three, twenty-four, twenty-five, twenty-six, twenty-seven, twenty-eight, twenty-nine, thirty, thirty-one, thirty-two, thirty-three, thirty-four, thirty-five, thirty-six, thirty-seven, thirty-eight, thirty-nine, forty, forty-one, forty-two, forty-three, forty-four, forty-five, forty-six, forty-seven, forty-eight, forty-nine, fifty, fifty-one, fifty-two, fifty-three, fifty-four, fifty-five, fifty-six, fifty-seven, fifty-eight, fifty-nine, sixty, sixty-one, sixty-two, sixty-three, sixty-four, sixty-five, sixty-six, sixty-seven, sixty-eight, sixty-nine, seventy, seventy-one, seventy-two, seventy-three, seventy-four, seventy-five, seventy-six, seventy-seven, seventy-eight, seventy-nine, eighty, eighty-one, eighty-two, eighty-three, eighty-four, eighty-five, eighty-six, eighty-seven, eighty-eight, eighty-nine, ninety, ninety-one, ninety-two, ninety-three, ninety-four, ninety-five, ninety-six, ninety-seven, ninety-eight, ninety-nine, hundred, twenty one, twenty two, twenty three, twenty four, twenty five, twenty six, twenty seven, twenty eight, twenty nine, thirty one, thirty two, thirty three, thirty four, thirty five, thirty six, thirty seven, thirty eight, thirty nine, forty one, forty two, forty three, forty four, forty five, forty six, forty seven, forty eight, forty nine, fifty one, fifty two, fifty three, fifty four, fifty five, fifty six, fifty seven, fifty eight, fifty nine, sixty one, sixty two, sixty three, sixty four, sixty five, sixty six, sixty seven, sixty eight, sixty nine, seventy one, seventy two, seventy three, seventy four, seventy five, seventy six, seventy seven, seventy eight, seventy nine, eighty one, eighty two, eighty three, eighty four, eighty five, eighty six, eighty seven, eighty eight, eighty nine, ninety one, ninety two, ninety three, ninety four, ninety five, ninety six, ninety seven, ninety eight, ninety nine, minus one, minus two, minus three, minus four, minus five, minus six, minus seven, minus eight, minus nine, minus ten, minus eleven, minus twelve, minus thirteen, minus fourteen, minus fifteen, minus sixteen, minus seventeen, minus eighteen, minus nineteen, minus twenty, minus twenty-one, minus twenty-two, minus twenty-three, minus twenty-four, minus twenty-five, minus twenty-six, minus twenty-seven, minus twenty-eight, minus twenty-nine, minus thirty, minus thirty-one, minus thirty-two, minus thirty-three, minus thirty-four, minus thirty-five, minus thirty-six, minus thirty-seven, minus thirty-eight, minus thirty-nine, minus forty, minus forty-one, minus forty-two, minus forty-three, minus forty-four, minus forty-five, minus forty-six, minus forty-seven, minus forty-eight, minus forty-nine, minus fifty, minus fifty-one, minus fifty-two, minus fifty-three, minus fifty-four, minus fifty-five, minus fifty-six, minus fifty-seven, minus fifty-eight, minus fifty-nine, minus sixty, minus sixty-one, minus sixty-two, minus sixty-three, minus sixty-four, minus sixty-five, minus sixty-six, minus sixty-seven, minus sixty-eight, minus sixty-nine, minus seventy, minus seventy-one, minus seventy-two, minus seventy-three, minus seventy-four, minus seventy-five, minus seventy-six, minus seventy-seven, minus seventy-eight, minus seventy-nine, minus eighty, minus eighty-one, minus eighty-two, minus eighty-three, minus eighty-four, minus eighty-five, minus eighty-six, minus eighty-seven, minus eighty-eight, minus eighty-nine, minus ninety, minus ninety-one, minus ninety-two, minus ninety-three, minus ninety-four, minus ninety-five, minus ninety-six, minus ninety-seven, minus ninety-eight, minus ninety-nine, minus hundred, minus twenty one, minus twenty two, minus twenty three, minus twenty four, minus twenty five, minus twenty six, minus twenty seven, minus twenty eight, minus twenty nine, minus thirty one, minus thirty two, minus thirty three, minus thirty four, minus thirty five, minus thirty six, minus thirty seven, minus thirty eight, minus thirty nine, minus forty one, minus forty two, minus forty three, minus forty four, minus forty five, minus forty six, minus forty seven, minus forty eight, minus forty nine, minus fifty one, minus fifty two, minus fifty three, minus fifty four, minus fifty five, minus fifty six, minus fifty seven, minus fifty eight, minus fifty nine, minus sixty one, minus sixty two, minus sixty three, minus sixty four, minus sixty five, minus sixty six, minus sixty seven, minus sixty eight, minus sixty nine, minus seventy one, minus seventy two, minus seventy three, minus seventy four, minus seventy five, minus seventy six, minus seventy seven, minus seventy eight, minus seventy nine, minus eighty one, minus eighty two, minus eighty three, minus eighty four, minus eighty five, minus eighty six, minus eighty seven, minus eighty eight, minus eighty nine, minus ninety one, minus ninety two, minus ninety three, minus ninety four, minus ninety five, minus ninety six, minus ninety seven, minus ninety eight, minus ninety nine, negative one, negative two, negative three, negative four, negative five, negative six, negative seven, negative eight, negative nine, negative ten, negative eleven, negative twelve, negative thirteen, negative fourteen, negative fifteen, negative sixteen, negative seventeen, negative eighteen, negative nineteen, negative twenty, negative twenty-one, negative twenty-two, negative twenty-three, negative twenty-four, negative twenty-five, negative twenty-six, negative twenty-seven, negative twenty-eight, negative twenty-nine, negative thirty, negative thirty-one, negative thirty-two, negative thirty-three, negative thirty-four, negative thirty-five, negative thirty-six, negative thirty-seven, negative thirty-eight, negative thirty-nine, negative forty, negative forty-one, negative forty-two, negative forty-three, negative forty-four, negative forty-five, negative forty-six, negative forty-seven, negative forty-eight, negative forty-nine, negative fifty, negative fifty-one, negative fifty-two, negative fifty-three, negative fifty-four, negative fifty-five, negative fifty-six, negative fifty-seven, negative fifty-eight, negative fifty-nine, negative sixty, negative sixty-one, negative sixty-two, negative sixty-three, negative sixty-four, negative sixty-five, negative sixty-six, negative sixty-seven, negative sixty-eight, negative sixty-nine, negative seventy, negative seventy-one, negative seventy-two, negative seventy-three, negative seventy-four, negative seventy-five, negative seventy-six, negative seventy-seven, negative seventy-eight, negative seventy-nine, negative eighty, negative eighty-one, negative eighty-two, negative eighty-three, negative eighty-four, negative eighty-five, negative eighty-six, negative eighty-seven, negative eighty-eight, negative eighty-nine, negative ninety, negative ninety-one, negative ninety-two, negative ninety-three, negative ninety-four, negative ninety-five, negative ninety-six, negative ninety-seven, negative ninety-eight, negative ninety-nine, negative hundred, negative twenty one, negative twenty two, negative twenty three, negative twenty four, negative twenty five, negative twenty six, negative twenty seven, negative twenty eight, negative twenty nine, negative thirty one, negative thirty two, negative thirty three, negative thirty four, negative thirty five, negative thirty six, negative thirty seven, negative thirty eight, negative thirty nine, negative forty one, negative forty two, negative forty three, negative forty four, negative forty five, negative forty six, negative forty seven, negative forty eight, negative forty nine, negative fifty one, negative fifty two, negative fifty three, negative fifty four, negative fifty five, negative fifty six, negative fifty seven, negative fifty eight, negative fifty nine, negative sixty one, negative sixty two, negative sixty three, negative sixty four, negative sixty five, negative sixty six, negative sixty seven, negative sixty eight, negative sixty nine, negative seventy one, negative seventy two, negative seventy three, negative seventy four, negative seventy five, negative seventy six, negative seventy seven, negative seventy eight, negative seventy nine, negative eighty one, negative eighty two, negative eighty three, negative eighty four, negative eighty five, negative eighty six, negative eighty seven, negative eighty eight, negative eighty nine, negative ninety one, negative ninety two, negative ninety three, negative ninety four, negative ninety five, negative ninety six, negative ninety seven, negative ninety eight, negative ninety nine, plus one, plus two, plus three, plus four, plus five, plus six, plus seven, plus eight, plus nine, plus ten, plus eleven, plus twelve, plus thirteen, plus fourteen, plus fifteen, plus sixteen, plus seventeen, plus eighteen, plus nineteen, plus twenty, plus twenty-one, plus twenty-two, plus twenty-three, plus twenty-four, plus twenty-five, plus twenty-six, plus twenty-seven, plus twenty-eight, plus twenty-nine, plus thirty, plus thirty-one, plus thirty-two, plus thirty-three, plus thirty-four, plus thirty-five, plus thirty-six, plus thirty-seven, plus thirty-eight, plus thirty-nine, plus forty, plus forty-one, plus forty-two, plus forty-three, plus forty-four, plus forty-five, plus forty-six, plus forty-seven, plus forty-eight, plus forty-nine, plus fifty, plus fifty-one, plus fifty-two, plus fifty-three, plus fifty-four, plus fifty-five, plus fifty-six, plus fifty-seven, plus fifty-eight, plus fifty-nine, plus sixty, plus sixty-one, plus sixty-two, plus sixty-three, plus sixty-four, plus sixty-five, plus sixty-six, plus sixty-seven, plus sixty-eight, plus sixty-nine, plus seventy, plus seventy-one, plus seventy-two, plus seventy-three, plus seventy-four, plus seventy-five, plus seventy-six, plus seventy-seven, plus seventy-eight, plus seventy-nine, plus eighty, plus eighty-one, plus eighty-two, plus eighty-three, plus eighty-four, plus eighty-five, plus eighty-six, plus eighty-seven, plus eighty-eight, plus eighty-nine, plus ninety, plus ninety-one, plus ninety-two, plus ninety-three, plus ninety-four, plus ninety-five, plus ninety-six, plus ninety-seven, plus ninety-eight, plus ninety-nine, plus hundred, plus twenty one, plus twenty two, plus twenty three, plus twenty four, plus twenty five, plus twenty six, plus twenty seven, plus twenty eight, plus twenty nine, plus thirty one, plus thirty two, plus thirty three, plus thirty four, plus thirty five, plus thirty six, plus thirty seven, plus thirty eight, plus thirty nine, plus forty one, plus forty two, plus forty three, plus forty four, plus forty five, plus forty six, plus forty seven, plus forty eight, plus forty nine, plus fifty one, plus fifty two, plus fifty three, plus fifty four, plus fifty five, plus fifty six, plus fifty seven, plus fifty eight, plus fifty nine, plus sixty one, plus sixty two, plus sixty three, plus sixty four, plus sixty five, plus sixty six, plus sixty seven, plus sixty eight, plus sixty nine, plus seventy one, plus seventy two, plus seventy three, plus seventy four, plus seventy five, plus seventy six, plus seventy seven, plus seventy eight, plus seventy nine, plus eighty one, plus eighty two, plus eighty three, plus eighty four, plus eighty five, plus eighty six, plus eighty seven, plus eighty eight, plus eighty nine, plus ninety one, plus ninety two, plus ninety three, plus ninety four, plus ninety five, plus ninety six, plus ninety seven, plus ninety eight, plus ninety nine +$position:phraseList +- back, back combined, back left, back left hand, back left hand side, back left side, back right, back right hand, back right hand side, back right side, co-driver, co-driver side, co-driver's, co-driver's side, co-drivers, co-drivers side, driver, driver side, driver's, driver's side, drivers, drivers side, front, front combined, front left, front left hand, front left hand side, front left side, front right, front right hand, front right hand side, front right side, left, left back, left back side, left front, left front side, left hand, left hand side, left rear, left rear side, left side, passenger, passenger side, passenger's, passenger's side, passengers, passengers side, rear, rear combined, rear left, rear left hand, rear left hand side, rear left side, rear right, rear right hand, rear right hand side, rear right side, right, right back, right back side, right front, right front side, right hand, right hand side, right rear, right rear side, right side +$max_min:phraseList +- max, maximum, min, minimum + +> # List entities + diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/calendar.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/calendar.lu new file mode 100644 index 0000000000..a5a1d520f9 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/calendar.lu @@ -0,0 +1,1320 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:18 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: stdin + +> ! Source QnA TSV file: Not Specified + +> ! Source QnA Alterations file: Not Specified + + +> # Intent definitions + +## AcceptEventEntry +- accept all meetings for {Subject=christmas party} {FromDate=next week}. +- accept an appointment +- accept {Subject=dinner} +- accept my meeting at {FromTime=7pm} {FromDate=today} +- accept my meeting at {FromDate=tomorrow} {FromTime=10am} +- accept the appointment from {FromTime=3pm} to {ToTime=5pm}. +- accept the appointment on {FromDate=january 18th} in {MeetingRoom=palace meeting room}. +- accept the appointment sent by lucas +- accept the event +- accept the event for {FromTime=tonight}. +- accept the event on {FromDate=feb. 18} in {Location=beijing}. +- accept the event sent by yolanda wong. +- accept the meeting held on {FromDate=tomorrow} at {MeetingRoom=room 301} +- accept the meeting organized by jack lauren. +- accept the meeting with mary and tom held on {FromDate=wednesday} +- accept the meeting with tom chen. +- accept this appointment with jane and mary on {FromDate=next tuesday}. +- accept this event. +- accept this {Subject=lunch meeting}. +- accept {FromDate=today}'s event at {FromTime=3pm}. +- accept {FromDate=today}'s meeting +- attend the {Subject=fy19 celebration party} sent by daisy chan. +- attend the {Subject=lunch meeting} at {FromTime=10:30 am}. +- attend the meeting held at {FromTime=3pm} {FromDate=next tuesday} at the {MeetingRoom=conference center}. +- i'll attend the meeting at {FromTime=2pm} {FromDate=tomorrow} in {MeetingRoom=room 304} +- i'll attend the meeting {FromTime=this afternoon}. +- i'll attend this upcoming event in {Location=redmond}. + + +## ChangeCalendarEntry +- bring forward my {FromTime=4 o'clock} appointment {MoveEarlierTimeSpan=2 hours} +- can you change it to {ToTime=5 pm} +- can you move this appointment to {ToTime=5pm} +- change {FromTime=10 am} meeting to start {MoveLaterTimeSpan=20 minutes} later +- change {FromTime=4pm} {Subject=lunch appointment} +- change {FromTime=5pm} appointment {MoveEarlierTimeSpan=1 hour} earlier +- change an appointment +- change appointment +- change {Subject=big event} to {ToDate=tomorrow} +- change calendar +- change {Subject=dentist appointment} +- change {Subject=dentist appt} to {MoveLaterTimeSpan=an hour} later +- change {Subject=developmental agenda for lunch} {FromDate=tomorrow} +- change it to {ToTime=5pm} +- change {SlotAttribute=location} +- change {Subject=lunch appt} to {ToTime=2} +- change {Subject=lunch date} from {FromTime=11} - {FromTime=12} to {ToTime=12} - {ToTime=1 30} +- change {Subject=marathon training} from {FromTime=8:00am} to {ToTime=1:00pm} +- change {Subject=marketing meeting} from {FromDate=every tuesday} to {ToDate=every wednesdays} +- change meeting from {FromTime=2}-{FromTime=3pm} to {ToTime=4}-{FromTime=5pm} {ToDate=today} +- change meeting from {FromTime=2pm}-{FromTime=3pm} to {ToTime=4pm}-{ToTime=5pm} {ToDate=today} +- change my {ToTime=11pm} appointment's {SlotAttribute=location} to {Location=cal anderson park} +- change my {FromTime=3pm} event to {ToTime=4pm} +- change my {FromTime=6pm} event to {ToTime=7pm} +- change my {FromTime=7 30 pm} appointment to {ToTime=8 pm} +- change my {FromTime=7pm} event to {ToTime=6pm} +- change my {FromTime=8} till {FromTime=9} appointment to {ToTime=11} till {ToTime=12} +- change my {FromTime=9 30} till {FromTime=10 30} appointment to {ToTime=9 30} till {ToTime=5} +- change my appointment +- change my {Subject=dentist appointment} +- change my {Subject=dentist appointment} from {FromTime=3:30} to {ToTime=4} +- change my meeting at {FromTime=night} to {ToDate=tomorrow} +- change my {OrderReference=next} meeting +- change my schedule +- change my {FromTime=ten am} appointment +- change my {Subject=vacation} from ending on {FromDate=friday} to {ToDate=monday} +- change {Subject=recital} to start {MoveEarlierTimeSpan=half an hour} earlier +- change {Subject=shave} {ToDate=tomorrow} {ToTime=8 30} +- change the {Subject=appointment} ending at {FromTime=4} to end at {ToTime=5} instead +- change the {SlotAttribute=end date} of {Subject=my trip} from the {FromDate=3rd} to the {ToDate=4th} +- change the {SlotAttribute=end time} of my {FromTime=3 o'clock} meeting to {ToTime=3 30 pm} +- change the {SlotAttribute=location} of my {Subject=singing appointment} +- change the {SlotAttribute=time} +- change the {SlotAttribute=time} to {ToTime=eleven thirty am} +- change the {SlotAttribute=title} of my {FromTime=11am} appointment to {Subject=soccer practice} +- change the {SlotAttribute=title} of my appointment +- change this appointment's {SlotAttribute=location} +- change {FromDate=thursday} {Subject=team meeting} +- change {SlotAttribute=time} +- change {FromDate=today} 's meeting from {FromTime=6pm} to {ToDate=tomorrow} {ToTime=9am} +- change {FromDate=today} 's meeting from {FromTime=6pm} to {ToDate=tomorrow} {ToTime=9pm} +- change {FromDate=tomorrow} ' s appointment from {FromTime=10am} to {ToDate=wednesday} at {ToTime=9 am} +- delay the meeting event by {MoveLaterTimeSpan=1 hours} +- delay the {OrderReference=next} meeting by {MoveLaterTimeSpan=30 minutes} +- edit calendar +- extend meeting from {FromTime=9 am} to {ToTime=12 am} +- let {FromTime=5 pm} meeting starting at {ToTime=3} +- let {OrderReference=next} meeting starting at 10am +- make {OrderReference=next} meeting to start {MoveLaterTimeSpan=1 hour} later +- make the appointment ending at {FromTime=2} go until {ToTime=4 pm} +- make the meeting ending at {FromTime=10} go until {ToTime=11} +- make the meeting to start {MoveLaterTimeSpan=1 hour} later +- make the meeting to start {MoveEarlierTimeSpan=40 minutes} earlier +- modify the meeting +- modify the {PositionReference=second} meeting +- move {FromTime=3pm} meeting to {ToTime=4pm} +- move appt with rebecca to {ToDate=next week} +- move meeting from {FromTime=9pm}-{FromTime=10pm} to {ToTime=8pm}-{ToTime=9pm} {ToDate=today} +- move my {FromTime=1 pm} appointment up {MoveEarlierTimeSpan=30 minutes} +- move my {FromTime=10 past 10} {Subject=doctor ' s appointment} to {ToTime=10} +- move my {FromTime=10pm} meeting to {ToTime=9pm} +- move my {FromTime=12 pm} meeting to {ToTime=2} +- move my {FromTime=4 pm} to {ToTime=5 pm} {ToDate=today} +- move my {ToTime=9 am} {Subject=doctor ' s appointment} to {ToTime=10 am} +- move my {FromTime=9pm} meeting to {ToTime=8pm} +- move my meeting back by {MoveLaterTimeSpan=an hour} +- move my meeting to {ToTime=6pm} from {FromTime=7pm} +- move my meeting up by {MoveEarlierTimeSpan=half an hour} +- move my {OrderReference=next} meeting +- move my {OrderReference=next} meeting out by {MoveLaterTimeSpan=30 minutes} +- move my {OrderReference=next} meeting out {MoveLaterTimeSpan=thirty minutes} +- move my {OrderReference=next} meeting up by {MoveEarlierTimeSpan=10 minutes} +- move my {OrderReference=next} meeting up by {MoveEarlierTimeSpan=30 minutes} +- move my {Subject=text meeting} +- move my {FromTime=twelve p . m .} meeting forward {MoveEarlierTimeSpan=two hours} +- move my {FromTime=twelve p. m.} {MoveEarlierTimeSpan=thirty minutes} up +- move {Subject=shoe appointment} to {ToDate=tuesday} at {ToTime=one} +- please move this to {ToTime=3 pm} +- postpone my {FromTime=4 pm} meeting {FromDate=today} until {ToTime=5 pm} +- postpone my {FromTime=four p. m.} meeting {ToDate=today} until {ToTime=five p. m.} +- push my {Subject=trip} {FromDate=july 16th} out {MoveLaterTimeSpan=5 days} +- reschedule appointment with stephanie at {FromDate=next week} +- reschedule appointment with stephanie to {ToDate=next week} +- reschedule meeting +- reschedule my {FromTime=3:30} {Subject=dentist appointment} to {ToTime=4} +- reschedule my {FromTime=3:30} {Subject=dentist appointment} {FromDate=today} for {ToTime=4pm} {ToDate=tomorrow} +- this meeting should be changed to {ToDate=tomorrow} +- update appointment +- update calendar +- update {Subject=lunch appointment} +- update meeting from {FromTime=8am}-{FromTime=12pm} to {ToTime=7am}-{ToTime=11am} {ToDate=today} +- update my appointment +- update my {Subject=calendar} +- update my calendar from {FromTime=2 pm} to {ToTime=4 pm} {ToDate=today} +- update my calendar from {FromTime=6pm} to {ToTime=7pm} +- update my {Subject=camping appointment} +- update my {OrderReference=next} appointment +- update my {FromTime=tomorrow} {FromTime=6pm} meeting to {ToTime=7pm} +- update {Subject=party} + + +## CheckAvailability +- am i available +- am i available at {FromTime=10 am} on {FromDate=monday} +- am i available on {FromDate=monday} at {FromTime=9 pm} +- am i available {FromDate=tomorrow} at {FromTime=5 30 pm} +- am i busy on the {FromDate=6th of february} +- am i busy on {FromDate=this weekend} +- am i busy {FromDate=this weekend} +- am i free +- am i free at {FromTime=5 pm} {FromDate=today} +- am i free at {FromTime=7 p . m .} +- am i free for {Subject=drinks} {FromDate=monday} at {FromTime=5} +- am i free for {Subject=drinks} {FromDate=monday} at {FromTime=5 pm} +- am i free for {Subject=hiking} on {FromDate=saturday} at {FromTime=8 am} +- am i free from {FromTime=3 pm} - {ToTime=10 pm} +- am i free on {FromDate=monday} at {FromTime=9 pm} +- am i free on {FromDate=saturday} +- am i free on the {FromDate=12th of july} +- am i free to {Subject=drive} with kim on {FromDate=thurs} at {FromTime=3 pm} +- am i free {FromDate=today} +- am i free {FromDate=tomorrow} {FromTime=3 pm} +- am i free {FromTime=tonight} +- am i free {FromDate=tuesday} at {FromTime=7 am} +- can you check my dad 's calendar for free time {FromDate=this week} +- can you tell me if my husband is free on {FromDate=sunday} +- display olivia 's availability +- do i have any free time {FromDate=this weekend} +- i would like to know if my mother is available {FromDate=today} +- is carolyn available {FromDate=tuesday} {FromTime=afternoon} +- is debra available on {FromDate=saturday} +- is gerald busy {FromDate=this weekend} +- is madison busy +- is nicholas available {FromDate=friday} +- is raymond free on {FromDate=monday} {FromTime=evening} +- is rebecca busy {FromDate=thursday} at {FromTime=4} +- is russell free on {FromDate=friday} at {FromTime=4pm} +- is {FromDate=saturday} free +- is theresa free {FromDate=october 9th} +- is virginia free on {FromDate=monday} +- search jesse 's calendar for availability +- what is anna 's availability {FromDate=next tuesday} +- when am i free +- when am i free {FromDate=today} +- when is aaron free {FromDate=tomorrow} +- when is bryan free +- when is dylan available +- when is samuel available {FromDate=tomorrow} +- when will jordan be free +- will tyler be free on {FromDate=friday} + + +## ConnectToMeeting +- add me to conference call +- add me to the conference call +- call conference +- call conference call +- call genpact conference call +- call harris conference +- call into conference call +- call into {Subject=marketing meeting} +- call into meeting +- call the {Subject=morning breifing} conference number +- call the {Subject=weekly marketing meeting} +- conference join +- connect me to {FromTime=10 00} conf call with bryan +- connect me to conference call +- connect me to conference call with debra +- connect me to {Subject=marketing meeting} +- connect me to the {Subject=budget meeting} conference call +- connect me to the conference call +- connect me to the {Subject=marketing meeting} +- connect me with conference call +- connect me with my {FromTime=2 o clock} meeting +- connect to conference call +- connect to conference call {FromTime=now} +- connect to {Subject=weekly marketing meeting} +- dial into conference call +- dial {Subject=marketing meeting} +- get me on the conference call +- i need to join conference call +- i need to join the conference call +- join {Subject=budget} conference call +- join conference +- join conference call +- join {FromTime=current} {Subject=budget} conf call +- join {FromTime=current} conference +- join {FromTime=current} conference call +- join lync meeting +- join meeting +- join meeting {FromTime=now} +- join my meeting +- join my {OrderReference=next} meeting +- join {OrderReference=next} {Subject=link meeting} +- join {OrderReference=next} meeting +- join {OrderReference=next} meeting on link +- join the {Subject=budget meeting} conference call +- join the conference +- join the meeting +- join the {OrderReference=next} {Subject=lync meeting} +- link join my {OrderReference=next} meeting +- link join {OrderReference=next} meeting +- lync join {OrderReference=next} meeting +- {MeetingRoom=nokia conference room} join +- start meeting +- start my conference +- start my meeting +- start the meeting + + +## ContactMeetingAttendees +- alert attendees {Message=meeting is at 8 30} +- alert attendees of {Subject=dinner meeting} that {Message=i will be late} +- alert {Subject=quality control meeting} participants that {Message=i am 15 minutes late} +- alert {Subject=quality control meeting} participants that {Message=the meeting will be 30 minutes later} +- {Message=meeting room changed to new location} send to meeting attendees +- meeting will start soon remind everybody involved +- message colleagues that {Message=meeting needs to be moved to 8 : 30 am} +- message everyone advising that {Message=i will be late to the meeting} +- message nancy and tell him to {Message=postpone the meeting because i ' m going to be 30 minutes late} +- {Message=my 9 o ' clock meeting can ' t start until 9 15} can you let everyone know +- new location for meeting {ToTime=this afternoon} let others attendees know {Message=meeting is now in room 100} +- notify all attendees +- notify all attendees about the change +- notify attendees of office meeting that {Message=i will be a little later} +- notify diana that {Message=i ' ll be late to our meeting} +- notify {ToDate=friday}'s {ToTime=2 pm} that we are cancelling the meeting +- notify kimberly that {Message=i will be late for our 3 pm meeting} +- notify noah that {Message=our meeting is pushed back 30 minutes} +- notify others that {Message=i am going to be late to meeting} +- notify people of meeting on {ToDate=tue} that {Message=it will begin 15-30 min later} +- ok find out if that is possible by sending a meeting change notification to all attendees +- over run of time in confer room - all attendees to be notified of {Message=meeting being moved to next room} - will explain why later +- please advise {Message=i am late} for {ToDate=3 pm} meeting +- please alert {ToTime=3 o ' clock} meeting attendees +- please alert attendees {Message=meeting is at 8:30} +- please alert those attending the meeting that {Message=i am running a few minutes late} +- please inform colleagues {Message=running late and meeting half hour later} +- please inform colleagues {Message=we will be meeting at 8 : 30 due to being late} +- please inform joshua that {Message=i will be late for our meeting today} +- please inform meeting attendees that {Message=i am running late} +- please inform the thomas that {Message=i will be late for the meeting} +- please inform work contact group that {Message=i am running late for the meeting} +- please let all in work group know {Message=meeting to start at 9 15} +- please let them know {Message=i'm late} +- please notify everyone {Message=i ' m running late to the 3 pm meeting} +- please notify george that {Message=i will be late for the meeting} +- please remind the attendee that {Message=i am running late} +- provide {Message=the time change for the meeting} to all participants +- remind all attendees of {ToDate=tomorrow} ' s {Subject=lunch} that {Message=we have changed the venue} +- {Message=room 100 is location} for {ToTime=this afternoon} ' s meeting please notify others +- {Message=running late for meeting} - notify others +- {Message=running late} for the {Subject=board meeting} alert catherine daniel and all the other attendees +- {Message=running late} to my meeting please let jennifer know +- send a message out to {Message=cancel my 3 pm meeting} +- send a message to johnny and jessie that {Message=our meeting today will be later by 30 minutes} +- send a message to the meeting attendees that {Message=the meeting will now start at 8 30 am} +- send a notice to douglas {Message=the first will be attending the meeting} +- send a notice to paul that {Message=xu wen will attend the meeting} +- send a text to the people going to the meeting that {Message=the location has changed} +- send reminder of {ToTime=9 am} meeting to all participants {Message=15 minutes later} +- tell attendees {Message=i am late} +- tell everyone {Message=the meeting is now in room 204} +- tell {OrderReference=next} meeting that {Message=i'm running late} + + +## CreateCalendarEntry +- {Duration=2 hours} meeting with ladawn padilla at {FromTime=5} on {FromDate=tuesday} +- add a meeting with herman to my calendar +- add an appointment on {FromDate=may 8th} at {Location=shanghai} +- add {Subject=applied motion} to my calendar {FromTime=9 am} +- add appt with mickey li for {Subject=dinner} on {FromDate=march 5th} at {FromTime=5 pm} at {Location=dennys} +- add {Subject=balboa practice} to my calendar at {FromTime=3 30} {FromDate=today} +- add {Subject=ballet} to my calendar {FromDate=wednesday} at {FromTime=five thirty} to {ToTime=six thirty pm} +- add {Subject=baseball game} on {FromDate=friday} to calendar +- add {Subject=chicago bulls versus washington wizards} to my calendar {FromDate=tomorrow} at {FromTime=seven pm} +- add {Subject=choir practice} on {FromDate=saturday} at {FromTime=7 pm} to my {DestinationCalendar=personal} calendar +- add {Subject=choreography} to my {DestinationCalendar=family} calendar +- add {Subject=chorus concert} to calendar for {FromDate=may 1st} at {FromTime=3 pm} +- add {Subject=church} to {DestinationCalendar=personal} calendar on {FromDate=sundays} at {FromTime=9} +- add {Subject=coffee} on {FromDate=august 12th} at {FromTime=2 pm} with herman for {Duration=one hour} +- add {Subject=dance} on {FromDate=tuesday} at {FromTime=four o clock} +- add {Subject=date night} on the {FromDate=5th} at {FromTime=7pm} {FromDate=every month} +- add {Subject=dentist appointment} on {FromDate=tuesday june} at the {Location=1st clinic} +- add {Subject=dentist appointment} to my calendar at {FromTime=3:30} for the {FromDate=8th of may} +- add {Subject=dentist appointment} to my calendar {FromDate=tomorrow} from {FromTime=3} to {ToTime=4:30} +- add {Subject=dentist appointments} to my calendar at {FromTime=3 thirty p m} +- add {Subject=dinner} to {DestinationCalendar=personal} calendar +- add {Subject=dinner} with mom to {DestinationCalendar=personal} +- add {Subject=doctors appointment} on {FromDate=march 13} at {FromTime=2 pm} at the {Location=tricare virginia beach clinic} +- add {Subject=go shopping} with sam meng on the calendar +- add {Subject=haircut} to my {DestinationCalendar=google} calendar {FromDate=tomorrow} at {FromTime=2 30} +- add {Subject=kane s dr appt} to calendar for {FromTime=3} {FromDate=friday} +- add {Subject=maple beach} to my calendar at {FromTime=10} on {FromDate=sunday} +- add {Subject=megan training} to calendar on {FromDate=july 4th} at {FromTime=11 am} +- add {Subject=office party} on {FromDate=march 8th} from {FromTime=6 p} to {ToTime=9 p} +- add {Subject=order cabinets} to my calendar {FromDate=today} at {FromTime=2 o clock} +- add {Location=ow huth middle school} {Subject=meet and greet} on my calendar +- add {Subject=pay credit card} to calendar {FromDate=may twentieth} +- add {Subject=pay pearl fees} on my calendar {FromDate=tomorrow} +- add {Subject=picture day} at {Location=school} to my calendar for {FromDate=friday, november the 8th} from {FromTime=8 am} to {ToTime=9:30} am +- add {Subject=solo gig} at {Location=lincombe hall} on the {FromDate=7th of march} at {FromTime=8 pm} +- add {Subject=team meeting} to my calendar at {FromTime=10pm} with xiaoming wang +- add {Subject=ultimate frisbee} on {FromDate=sunday} at {FromTime=2 pm} for {Duration=2 hours} +- add {Subject=vacation} to my calendar from {FromDate=july 4th} until {ToDate=july 29th} +- add {Subject=work} to calendar at {FromTime=3 pm} on {FromDate=friday} +- add {Subject=work} to calendar {FromDate=friday} from {FromTime=8} for {Duration=an hour} +- add {Subject=work} to calendar {FromDate=sunday} {FromTime=10} till {ToTime=5} +- add {Subject=work} to calendar {FromDate=thursday} {FromTime=8 30 am} +- add {Subject=work} to my calendar {FromDate=monday} {FromTime=6 am} to {ToTime=11 am} +- add {Subject=work} to my calendar {FromDate=today} +- append {Subject=dad's birthday} {FromDate=every july 21st} +- appending {Subject=group meeting} {FromDate=next monday} at {FromTime=11am} for {Duration=an hour} +- create a calendar appointment at {FromTime=3:30} {FromDate=tomorrow} for {Duration=half an hour} +- create a event with eden roth at {FromTime=4pm} {FromDate=today} for {Duration=30 mins} +- create a meeting at {FromTime=7:00pm} +- create a meeting at {FromTime=8am} +- create a meeting for {FromDate=tomorrow} {FromTime=6pm} with lucy chen +- create a meeting with tom34@outlook.com +- create appointment for {Duration=30 minutes} +- create appointment from {FromDate=tuesday} to {ToDate=wednesday} +- create calendar : {FromDate=tomorrow} {FromTime=morning} from {FromTime=9} to {ToTime=11} at {MeetingRoom=1103 room} for {Subject=internal meeting} +- make appointment for {FromTime=5 30} {FromDate=tomorrow} +- make appointment for {FromTime=7 30} +- make appointment for me +- make appointment on {FromDate=monday}. +- make appointment on {DestinationCalendar=personal} calendar +- make appointment to {Subject=play squash} on {FromDate=thursday} at {FromTime=7 20} +- make appointment to {Subject=see doctor culver} {FromDate=august the 22nd 2013} {FromTime=1 pm} +- make appointment with tom roth. +- make appt for {FromTime=3 pm} on {FromDate=christmas} +- make me a calendar event +- make me a {Subject=dentist appointment} {FromDate=wednesday} at {FromTime=two forty five} +- make me an appointment +- make me an appointment for {FromDate=next weekend} +- make me an appointment for {FromTime=ten forty} {FromDate=next monday} +- make me an appointment for the {FromDate=next week thursday} +- make me an appointment on the calendar +- make me an appointment {FromDate=tomorrow} at {FromTime=2 30 pm} +- {FromDate=march 15} {Subject=dinner} at {Location=refectory} at {FromTime=6 pm} +- meet ming wang for {Subject=lunch} on {FromDate=tuesday} at {FromTime=noon} +- meet with a.j. lee {FromDate=saturday} at {FromTime=3 pm} +- meet with carol lee at {Location=home} on {FromDate=march 10th} at {FromTime=4 pm} +- meeting with ben randie {FromDate=tomorrow} at {FromTime=noon} +- meeting with ellen fung on {FromDate=monday} at {FromTime=9 am} +- meeting with jia li {FromDate=monday} {FromTime=3 30} +- meeting with morrison sun at {FromTime=2 pm} {FromDate=saturday} +- meeting with morrison yang at {FromTime=4} +- new appointment for {FromDate=tomorrow} +- new appointment in calendar +- new appointment in my calendar +- new appointment {FromDate=next wednesday} +- new appointment {FromDate=today} {FromTime=6 pm} {Subject=see dead people} +- new appointment {FromDate=tomorrow} at {FromTime=3 pm} at {Location=sunken} +- new calendar appointment +- new calendar entry +- new calendar event +- new calendar item +- on {FromDate=saturday} at {FromTime=7 thirty p m} +- {DestinationCalendar=personal} calendar {FromDate=5/1/2013} {Subject=meet mom for yard sale} +- place an appointment in my calendar +- put {Subject=anniversary} on my calendar +- put {Subject=bitch appointment} {FromDate=tomorrow} {FromTime=morning} +- put {Subject=captains} in my calendar for {FromDate=saturday} {FromTime=evening} +- put {Subject=dance} on my calendar for {FromDate=monday} {FromTime=7 pm} +- put {Subject=dance} on my calendar from {FromTime=6} to {ToTime=7} +- put {Subject=delainey on to doctor reddy} on {FromDate=october 20th} at {FromTime=3 30} +- put {Subject=dental appointment} on my calendar {FromDate=saturday march 22nd} at {FromTime=twelve pm} +- put {Subject=dentist appointment} in my calendar for {FromDate=tomorrow} at {FromTime=one pm} +- put {Subject=dentist appointment} in my calendar {FromDate=tuesday} {FromTime=2 45 pm} +- put {Subject=dentist} on my calendar for {FromDate=this thursday} at {FromTime=10 am} +- put {Subject=doctor s appointment} in my calendar for {FromTime=5 forty} {FromDate=next thursday} +- put {Subject=eye doctor appointment} {FromDate=saturday} at {FromTime=11 am} +- put {Subject=hair appointment} on calendar +- put {Subject=insanity} on my calendar at {FromTime=6 30 am} +- put {Subject=jason work} on my calendar {FromDate=thursday} {FromTime=9 am} to {ToTime=5 pm} +- put {Subject=julie camil} in my calendar for {FromDate=tomorrow} +- put {Subject=mathematics paper one} on {FromDate=tuesday 13} +- put {Subject=shopping day} on {FromDate=april 1st} at {FromTime=10 am} on calendar +- put {Subject=swimming} in my calendar {FromDate=tomorrow} +- put {Subject=swimming} {FromDate=tomorrow} +- put {Subject=tennis game} for {FromDate=friday} at {FromTime=1} on calendar +- put {Subject=test appointment} in my calendar {FromDate=tomorrow} at {FromTime=7} +- put {Subject=walk sing appointment} +- put {Subject=work} on my calendar {FromDate=tomorrow} from {FromTime=8 30} to {ToTime=5 30} +- put {Subject=yoga} on my calendar for {FromDate=mondays} and {FromDate=wednesdays} at {FromTime=3 pm} +- schedule a {Subject=breakfast meeting} at {FromTime=8 am} {FromDate=tomorrow} +- schedule a {Subject=buisness lunch for my department} at {Location=pf chang} on {FromDate=wednesday} at {FromTime=11 30 am} +- schedule a calendar event for my sister +- schedule a {Subject=chiropractors appointment} on {FromDate=july 7th} at {FromTime=4 o clock} +- schedule a {Subject=dental appointment} {FromDate=tomorrow} {FromTime=afternoon at five thirty pm} +- schedule a {Subject=dentist appointment} for {FromDate=tomorrow} {FromTime=night at 7 pm} +- schedule a {Subject=dinner} for {FromTime=tonight} at {FromTime=8 pm} +- schedule a {Subject=doctor s office appointment} for {FromDate=march 12th} +- schedule a {Subject=doctors appointment} at {FromTime=15 30} +- schedule a {Subject=doctors appointment} with madden on {FromDate=march 12th} at {FromTime=4 pm} +- schedule a {Subject=lunch date} with mom {FromDate=every tuesday} at {FromTime=noon} for the {FromDate=next 5 weeks} +- schedule a {Subject=lunch meeting} with my lead +- schedule a {Subject=massage} on {FromDate=tuesday} +- schedule a meeting +- schedule a meeting for {FromDate=next thursday} +- schedule a meeting for {FromDate=this friday} {FromTime=11 am} +- schedule a meeting for {FromDate=tomorrow} at {FromTime=5 pm} +- schedule a meeting on {FromDate=nov. 3} from {FromTime=3}-{ToTime=4pm} +- schedule a meeting {FromDate=tomorrow} +- schedule a meeting with andy +- schedule a meeting with han lu {FromTime=8 am} {FromDate=next tuesday} +- schedule a meeting with ryan from {FromTime=3}-{ToTime=4pm} on {FromDate=october 25th} +- schedule a {Subject=run} at the {Location=lake} with madden +- schedule a {Subject=shopping trip} with shawntia on {FromDate=friday} at {FromTime=5 pm} +- schedule a {Subject=soccer game} for {FromDate=next friday} +- schedule a {Subject=vet appointment} at {FromTime=9 am} on {FromDate=saturday} +- schedule a {Subject=visit to the market} {FromDate=this saturday} at {FromTime=10 o clock} +- schedule a {Subject=workout} with madden to my calendar +- schedule an appointment for {FromTime=10 30 in the morning} on {FromDate=january 20 1st} +- schedule an appointment for {FromTime=9 am} +- schedule an appointment for me +- schedule an appointment for me on {FromDate=tomorrow} +- schedule an appointment for me {FromDate=today} +- schedule an appointment for me {FromDate=tomorrow} at {FromTime=3 am} +- schedule an appointment for my mom +- schedule an appointment for {FromTime=noon} {FromDate=tomorrow} +- schedule an appointment for {FromTime=one o clock} {FromDate=today} +- schedule an appointment for {FromDate=saturday} at {FromTime=8} {Subject=dinner} with madden +- schedule an appointment for {FromDate=saturday} at {FromTime=one 30 pm} to {Subject=measure house} +- schedule an appointment for {FromDate=thursday} at {FromTime=3 pm} {Subject=haircut} +- schedule an appointment for {FromDate=tomorrow} at {FromTime=one o clock} +- schedule an appointment from {FromDate=june 18th} to {ToDate=june 20th} +- schedule an appointment on {FromDate=monday} from {FromTime=noon} to {ToTime=4 pm} +- schedule an appointment on my calendar +- schedule an appointment on {FromDate=november 5th} at {FromTime=3 30} +- schedule an appointment on {FromDate=october 31st} +- schedule an appointment on {FromDate=thursday october second} at {FromTime=8 forty am} {Subject=mom s medical appointment} +- schedule an appointment to {Subject=call meredith} at {FromTime=12} +- schedule an appointment to {Subject=groom my dogs} at {Location=petco} on {FromDate=friday} at {FromTime=6 pm} +- schedule an appointment to {Subject=see cj} on {FromDate=thursday} +- schedule an appointment with madden +- schedule an appointment with madden at {FromTime=10 pm} +- schedule an appointment with madden for {FromDate=wednesday the 20 4th} at {FromTime=9 30 am} +- schedule an appointment with madden {FromDate=today} at {FromTime=2 o clock} +- schedule an appointment with madden {FromDate=tomorrow} at {FromTime=5 pm} +- schedule an appointment with mom +- schedule an event +- schedule an event for me +- schedule an event for {Subject=scrum} with madden at {FromTime=10 am} {FromDate=saturday} +- schedule an event for the {FromDate=5th of july} +- schedule an event on the calendar +- schedule appointment +- schedule appointment at {FromTime=eight p m} {FromDate=tomorrow} +- schedule appointment for madden {Subject=account payment} +- schedule appointment {Subject=yearly check up} {FromDate=friday march one} {FromTime=10 am} {Duration=one hour} +- schedule {Subject=art show} on calendar for {FromTime=noon} on {FromDate=march 6th} +- schedule {Subject=ben baig} for {FromDate=saturday} {FromTime=evening} +- schedule {Subject=camping} for {FromDate=friday} to {ToDate=sunday} +- schedule {Subject=college} for {FromDate=tomorrow} at {FromTime=5 am} +- schedule {Subject=dentist appointment} with madden for {FromDate=may the 20th} at {FromTime=3 pm} +- schedule {Subject=dinner} on the {FromDate=8th} at {FromTime=6 thirty p m} +- schedule {Subject=dinner} with madden at {FromTime=6 pm} on {FromDate=june 4th} at {Location=buffalo wild wings} +- schedule {Subject=dinner} with madden {FromDate=every friday} at {FromTime=5 pm} +- schedule {Subject=dry cleaning pick up} at {FromTime=three thirty pm} {FromDate=today} +- schedule {Subject=group meeting} with madden on {FromDate=march 3rd} at {FromTime=4 00 pm} +- schedule {Subject=hair appointment} on {FromDate=monday} at {FromTime=2 pm} +- schedule {Subject=holiday} for the {FromDate=thirty first of july} +- schedule {Subject=holiday} on the {FromDate=31st july} +- schedule {Subject=lunch} with madden for {FromTime=11 30 am} on {FromDate=wednesday} +- schedule {Subject=lunch} with madden on {FromDate=tuesday} +- schedule {Subject=lunch} with pura at {FromTime=noon} on {FromDate=wednesday may} {Duration=20 minutes} +- schedule {Subject=mechanics exam} at {FromTime=12 pm} on {FromDate=friday} +- schedule {Subject=miranda s graduation} from {FromTime=11} to {ToTime=3} on {FromDate=may 28th} +- schedule my vacation from {FromDate=today} {FromTime=5pm} to {ToDate=tomorrow} {ToTime=5pm} +- schedule {Subject=therapy appointment} at {FromTime=8 o clock} +- schedule {Subject=wanda s graduation} for {FromDate=saturday} at {FromTime=11 o clock} +- schedule {Subject=wedding anniversary} on {FromDate=friday} {FromTime=evening} +- schedule {Subject=work} for {FromTime=7 am} {FromDate=tomorrow} +- schedule {Subject=work} on {FromDate=thursday the thirty first} from {FromTime=three} to {ToTime=seven thirty} +- schedule {Subject=yoga class} from {FromTime=2 pm} to {ToTime=3 pm} +- set up an appointment with my sister in my {DestinationCalendar=main} calendar. +- set up an appointment with pura +- set up an appointment with pura {FromDate=tomorrow} at {FromTime=3 pm} +- set up an appointment with tom +- set up an event +- set up an event in my calendar +- set up meeting with pura for {FromDate=every tuesday} at {FromTime=1 pm} +- set up meeting with thomson +- set up the appointment +- should you schedule to {FromTime=after lunch} +- we make an appointment for me + + +## DeleteCalendarEntry +- can you cancel the {PositionReference=1st} one +- cancel {FromTime=1 pm} {Subject=staff meeting} +- cancel all events +- cancel an appointment +- cancel appointment +- cancel appointment {FromDate=today} +- cancel appointments +- cancel calendar entry +- cancel {Subject=dinner} +- cancel {Subject=doctor ' s appointment} {FromDate=monday} +- cancel event +- cancel event {FromDate=tomorrow} +- cancel {Subject=lunch} {FromDate=next wednesday} +- cancel meeting +- cancel meeting with abigail {FromTime=3 pm} {FromDate=today} +- cancel meeting with bob marlon {FromTime=3pm} {FromDate=today} +- cancel my {Subject=adventureworks trip} to {Location=seattle} +- cancel my appointment +- cancel my appointment at {FromTime=9 pm} +- cancel my appointment for {FromDate=october 4} +- cancel my {Subject=driving lesson} {FromDate=tomorrow} +- cancel my event +- cancel my meeting +- cancel my meeting at {Location=shanghai} on {FromDate=monday} at {FromTime=10 am} +- cancel my {OrderReference=next} appointment +- cancel my {Subject=singing appointment} on {FromDate=monday} +- cancel my {Subject=three o'clock} appointment +- cancel that appointment +- cancel that meeting +- cancel the appointment +- cancel the calendar +- cancel the event +- cancel the {Subject=group meeting} +- cancel the meeting +- cancel the meeting with julie +- cancel the {Subject=pickup food from ted} +- cancel the untitled event on {FromDate=may twenty eighth} +- cancel this meeting +- cancel {FromDate=today} ' s appointment +- cancel {FromDate=tomorrow} ' s plan +- clear all my appointments +- clear all of my appointments +- clear all of my appointments {FromDate=today} +- clear all the appointments from my calendar for {FromDate=today} +- clear my calendar +- clear my calendar for {FromDate=january 29th} +- clear my schedule +- clear my schedule for {FromDate=tomorrow} +- clear my schedule {FromDate=today} +- decline my meeting on {FromDate=monday} +- delete an appointment +- delete appointment +- delete {Subject=birthday calendar} +- delete calendar event +- delete event +- delete meeting +- delete my schedule +- delete my schedule for {FromDate=today} +- delete that appointment +- delete the {PositionReference=1st} one from my calendar +- delete the appointment with jeffrey +- delete the appointment with mom +- delete the scheduled meeting with zachary +- delete this appointment +- discard the appointment with george +- discard the meeting +- drop my appointment for {FromDate=monday} +- i need to delete this appointment from my calendar +- i want to delete an appointment +- remove {Subject=dentist appointment} +- remove {Subject=final tutoring} from my calendar + + +## FindCalendarDetail +- can you tell me about {Subject=master chief} +- can you tell me something about {Subject=shakespeare} +- detail about {FromDate=tomorrow}'s meeting +- detailed information about the {OrderReference=next} meeting +- details about the meeting with grace +- details about the meeting with karen and tom +- find the meetings mary +- give me details of the {OrderReference=next} appointment +- i need to know about my {Subject=date} with stephanie +- i need to know about my meeting +- i need to know about my {OrderReference=next} appointment +- i need you to provide me the details of the meeting i have scheduled with my colleague amanda +- please open my {Subject=date} with stephanie and tell me about it +- tell me about my meeting {FromDate=today} +- tell me about my {OrderReference=next} meeting +- tell me about my {Subject=planned trip} +- tell me about my schedule with {FromTime=afternoon} +- tell me about my {FromDate=sunday} schedule +- tell me all about {Subject=dinner date} with stephanie +- what are the particulars for the {Subject=picnic} {FromDate=next week} +- what are the plans for the {Subject=dinner date} with stephanie +- what did the sister say about meeting on {FromDate=sunday} +- what is {Subject=destiny ' s event} for {FromDate=next week} +- what is my meeting with ming xu about +- what is that meeting with ashley and jane berlin about +- what is the meeting with daniel robert regarding + + +## FindCalendarEntry +- at {FromTime=10 am} do i have a {Duration=30 minutes} meeting +- calendar for {FromDate=today} +- check janice 's calendar for {FromDate=this weekend} +- check kronos calendar +- check my calendar +- check my {DestinationCalendar=family} calendar +- check my mom's schedule +- do i have any appointments {FromDate=today} +- do i have any meetings {FromDate=today} +- do i have anything from {FromTime=11} to {ToTime=2} +- do i have anything on {FromDate=wednesday} +- do i have anything {FromDate=today} +- find a meeting about {Subject=group meeting} +- find a meeting about {Subject=plan} +- find a meeting at {FromTime=7pm} from melissa +- find a meeting from darren about {Subject=status update} +- find a meeting from deborah about {Subject=team session} +- find a meeting from donna +- find a meeting subject {Subject=daily meeting} +- find a meeting with subject {Subject=weekly report} +- find a meeting with title {Subject=second lesson} from amanda +- find a meeting with title {Subject=sharing} from steven +- find me the meetings at {FromTime=6} +- find me the meetings at {FromTime=9 o'clock} +- find the meeting around {FromTime=5} to {FromTime=8 pm} +- find the meeting around {FromTime=5} to {FromTime=8pm} +- find the meeting with judith +- find the meeting with timothy +- find the {OrderReference=next} meeting +- get to my {OrderReference=next} event +- locate the {OrderReference=next} appointment +- look up my {OrderReference=next} appointment for me +- {OrderReference=next} meeting +- obtain the appointment with frank +- search a meeting subject {Subject=project proposal rehearsal} +- search the meeting with title {Subject=employee orientation} +- show jean calendar +- show me brenda 's schedule for {FromDate=friday} +- show me heather 's calendar +- show me my calendar +- show me my calendar for {FromDate=monday} +- show me my {DestinationCalendar=google} calendar +- show me my {OrderReference=next} meeting +- show me my schedule {FromTime=tonight} +- show me the calendar at {FromTime=night} +- show me the meeting about {Subject=briefing session} +- show me the meeting about {Subject=online session} +- show me the meeting with paul +- show me victoria 's calendar for {FromDate=monday} +- show my schedule at {FromTime=night} +- tell me the events scheduled at calendar {Location=constitution hall} +- the {OrderReference=next} appointment after that +- view emily calendar +- view ethan 's calendar +- what ' s after that on my calendar +- what ' s going on {FromDate=this weekend} +- what ' s happening {FromDate=today} +- what ' s in my calendar for {FromDate=today} +- what ' s my {PositionReference=1st} appointment {FromDate=tomorrow} +- what ' s my {PositionReference=1st} meeting {FromDate=tomorrow} +- what ' s my {OrderReference=next} appointment +- what ' s my {OrderReference=next} meeting +- what ' s my schedule for {FromDate=tomorrow} +- what ' s my schedule like {FromDate=tomorrow} +- what ' s my schedule {FromDate=tomorrow} +- what ' s {OrderReference=next} on my calendar +- what ' s on my calendar +- what ' s on my calendar for {FromDate=today} +- what ' s on my calendar {FromDate=today} +- what ' s on my {OrderReference=next} meeting +- what ' s on my schedule +- what ' s on my schedule for {FromDate=tomorrow} +- what ' s on my schedule {FromDate=today} +- what ' s the meeting {FromDate=today} between {FromTime=10} and {ToTime=12:00} +- what am i doing {FromDate=next week} +- what am i doing on {FromDate=june ninth} +- what am i doing {FromTime=tonight} +- what appointments do i have {FromDate=tomorrow} +- what are my appointments for {FromDate=this week} +- what are my appointments {FromDate=today} +- what are my meetings at {FromTime=night} +- what do i have for {FromDate=today} +- what do i have from {FromTime=2} to {ToTime=4} on {ToDate=saturday} +- what do i have from {FromDate=monday} through {ToDate=wednesday} +- what do i have going on {FromDate=today} +- what do i have {OrderReference=next} +- what do i have on my calendar {FromDate=today} +- what do i have on {FromDate=sunday} +- what do i have {FromTime=this afternoon} +- what do i have to do {FromTime=this afternoon} +- what do i have to do {FromDate=tomorrow} +- what do i have {FromDate=tomorrow} +- what have i got on {FromDate=tomorrow} +- what i am doing {FromDate=next week} +- what i'm doing {FromDate=this weekend} +- what is henry doing on {FromDate=monday} at {FromTime=noon} +- what is logan 's schedule {FromDate=this week} +- what is my {PositionReference=1st} meeting {FromDate=today} +- what is my {OrderReference=next} appointment +- what is my schedule for {FromDate=tomorrow} +- what is my schedule {FromDate=tomorrow} +- what is {OrderReference=next} in calendar +- what is on my calendar {FromDate=today} +- what is the schedule before that +- what is timothy doing {FromDate=today} +- what meetings do i have {FromDate=next week} +- what was my {PositionReference=first} appointment +- what's going on {FromDate=this week} +- what's happening {FromDate=tomorrow} +- what's my {PositionReference=first} meeting {FromDate=tomorrow} +- when and where is my {OrderReference=next} meeting +- which is my {OrderReference=next} event +- which will be my {OrderReference=next} {Subject=flight} + + +## FindCalendarWhen +- my {OrderReference=next} meeting with emily is when +- what day is {Subject=lego land} scheduled for +- what time do i have {Subject=work} {FromDate=tomorrow} +- what time do i {Subject=work} {FromDate=today} +- what time is {Subject=beth over} {FromDate=today} +- what time is my {Subject=cooking class} {FromTime=tonight} +- what time is my {PositionReference=first} meeting {FromDate=tomorrow} +- what time is my {PositionReference=last} meeting +- what time is my meeting {FromDate=today} +- what time is my {Subject=mobile devices exam} {FromDate=tomorrow} +- what time is my {OrderReference=next} appointment +- what time is my {Subject=wallet team meeting} +- what time is oshwin's {Subject=interview} +- what time is the {Subject=ice cream social} +- what time is the {Subject=trade show} {FromDate=this saturday} +- when ' s my {PositionReference=1st} appointment {FromDate=tomorrow} +- when ' s my {PositionReference=1st} meeting {FromDate=tomorrow} +- when ' s my {Subject=doctor ' s appointment} +- when ' s my {OrderReference=next} appointment +- when ' s my {OrderReference=next} {Subject=doctors appointment} +- when ' s my {OrderReference=next} meeting +- when am i {Subject=watching england} +- when do i {Subject=break up} from {Location=school} +- when do i have {Subject=exam} +- when do i have free time {FromDate=today} +- when do i meet with charles +- when do i {Subject=work} {FromDate=tomorrow} +- when is {Subject=concert} on my calendar +- when is {Subject=ifeomas basketball} {FromDate=today} +- when is {Subject=lunch} with frank +- when is my {PositionReference=1st} meeting {FromDate=tomorrow} +- when is my appointment with willie +- when is my {Subject=daily stand up} with ethan +- when is my {PositionReference=fifth} {Subject=kick-off} +- when is my meeting with kenneth +- when is my meeting with martha and deborah +- when is my {OrderReference=next} appointment +- when is my {OrderReference=next} appointment with douglas +- when is my {OrderReference=next} event +- when is my {OrderReference=next} {Subject=hair cut} appointment +- when is my {OrderReference=next} meeting +- when is my {OrderReference=next} meeting with edward +- when is my {OrderReference=next} meeting with miss kathleen +- when is my {OrderReference=next} meeting with ms lawrence +- when is my {OrderReference=next} {Subject=trip} to {Location=kew garde} +- when is my {Subject=physio} +- when is my {Subject=picnic lunch} {FromDate=today} +- when is {Subject=sports day for the girls} +- when is the {OrderReference=next} {Subject=dentist appointment} +- when is the {Subject=social} +- when is the {Subject=wedding} {FromDate=tomorrow} +- when's my {Subject=haircut} +- when's my {OrderReference=next} appointment +- when's my {OrderReference=next} {Subject=trip} +- which {FromDate=weekend} am i {Subject=shopping} with sarah + + +## FindCalendarWhere +- location of {FromTime=11 am} meeting +- location of the {OrderReference=next} appointment +- meeting at {FromTime=3 pm} {FromDate=today} locations +- show me the place of the {Subject=work smart training} +- show me where my {OrderReference=next} appointment is +- what is the location of {OrderReference=next} meeting +- what the place of the {Subject=weekly meeting} +- where ' s my meeting +- where ' s my {OrderReference=next} appointment +- where ' s my {OrderReference=next} meeting +- where am i going {FromDate=this weekend} +- where am i going {FromTime=tonight} +- where am i meeting austin and john +- where am i on {FromDate=may the twenty first} +- where am i {FromDate=tomorrow} +- where are my meetings {FromDate=today} +- where do i go for my meeting {FromDate=tomorrow} at {FromTime=11 am} +- where do i go {FromDate=tomorrow} +- where do i have to be {OrderReference=next} +- where do i have to be {FromDate=today} +- where do i need to be {OrderReference=next} +- where do i need to go {FromDate=today} +- where does my meeting take place +- where i'm doing {FromDate=this weekend} +- where is {Subject=dinner} with abigail liu +- where is it +- where is {Subject=margot lunch} +- where is meeting {FromDate=tomorrow} at {FromTime=11 am} +- where is meeting with shirley +- where is my {FromTime=11 am} appointment {FromDate=tomorrow} happening +- where is my {FromTime=11 am} meeting {FromDate=tomorrow} +- where is my current meeting +- where is my {Subject=dentist appointment} +- where is my {FromTime=eleven o'clock} meeting +- where is my {PositionReference=first} appointment {FromDate=tomorrow} +- where is my {PositionReference=forth} event with brandon {FromDate=friday} +- where is my {PositionReference=forth} event with christopher on {FromDate=thursday} +- where is my meeting +- where is my meeting with kayla +- where is my {OrderReference=next} appointment +- where is my {OrderReference=next} appointment with miss doris +- where is my {OrderReference=next} appointment with olivia +- where is my {OrderReference=next} {Subject=dentist appointment} +- where is my {OrderReference=next} event +- where is my {OrderReference=next} meeting +- where is my {OrderReference=next} meeting with ms natalie +- where is my {PositionReference=third} {Subject=shiproom} with tiffany +- where is that meeting +- where is the meeting +- where is the meeting at {FromTime=11 am} {FromDate=tomorrow} +- where is the {Subject=performance review meeting} +- where is {FromDate=tomorrow} ' s {FromTime=11 am} meeting +- where is {FromDate=tomorrow} meeting at {FromTime=11 am} +- where is {FromDate=tomorrow} 's event +- where's my {OrderReference=next} meeting + + +## FindCalendarWho +- {FromTime=2 pm} meeting {FromDate=tomorrow} - who else is going +- {FromTime=2 pm} meeting with who +- attendees who will join the {FromTime=5 pm} meeting +- did hellen come to {FromTime=3 pm}'s meeting +- did mark sign up to the {FromDate=tomorrow}'s meeting +- did martin come to {FromDate=today}'s meeting +- find attendees who will attend {FromTime=8 o ' clock} meeting +- i want to take a look at the attendee list +- is bruce young attending the meeting +- is charles wong going to be at the meeting +- is joe going to be at the {OrderReference=next} meeting +- is victoria participating {OrderReference=next} meeting +- let me see who will attend {Subject=party planning meeting} +- list the attendees of the {OrderReference=next} meeting +- list the participants for the {FromTime=2 pm} meeting {FromTime=tomorrow} +- show me the confirmed attendees +- show me who will attend {Subject=family gathering} +- show me who will be at {Subject=planning meeting} {FromDate=tomorrow} at {FromTime=2 pm} +- show meeting participants +- who ' s in my {PositionReference=1st} meeting {FromDate=today} +- who all will be present at the {OrderReference=next 5} meetings +- who am i meeting at {FromTime=10 am} {FromDate=tomorrow} +- who am i meeting for {Subject=dinner} +- who do i have {OrderReference=next} +- who else is going to the {FromTime=2pm} meeting {FromDate=tomorrow} +- who else will be in {Subject=banking meeting} +- who is attending {FromTime=2 pm} meeting {FromDate=tomorrow} +- who is attending the meeting +- who is attending the meeting on {FromDate=wednesday} +- who is attending the meetings +- who is coming the the meeting {FromDate=tomorrow} at {FromTime=2 pm} +- who is going to attend the meeting {FromDate=tomorrow} at {FromTime=2 pm} +- who is going to the meeting at {FromTime=2 pm} {FromDate=tomorrow} +- who is going to {FromDate=tomorrow} ' s meeting +- who is in my {OrderReference=next} meeting +- who is in that meeting +- who is in the meeting +- who is my {PositionReference=first} meeting with {FromDate=tomorrow} +- who is my {FromTime=morning} meeting with +- who is on my list for the {FromTime=2 pm} meeting {FromDate=tomorrow} +- who is participating {FromDate=tomorrow} at {FromTime=2 pm} meeting +- who is the {FromTime=2 pm} meeting with +- who responded to meeting request +- who shall be joining the meeting {FromDate=tomorrow} at {FromTime=2 pm} +- who will attend the meeting at {FromTime=4} +- who will be at the {Subject=kids game} +- who will be attending {Subject=picnic} +- who will be in {Subject=banking meeting} +- who's going to be at those two events +- will amber join {Subject=office meeting} {FromDate=today} +- will amy be at {FromDate=today} ' s meeting +- will anthony be at the meeting +- will bobby shen be at {OrderReference=next} meeting +- will ethan, yutien and a.j. be at the {Subject=picnic} +- will george be in the {Subject=hr meeting} at {FromTime=1} o' clock +- will jane be at the {FromTime=3 pm} meeting +- will jimmy parker be attending the meeting +- will john be at {Subject=marketing meeting} +- will johnny be at {Subject=office meeting} {FromDate=today} +- will nancy be at the {FromTime=morning} {Subject=briefing meeting} +- will nicholas be attending the {Subject=management meeting} +- will paul be going to the meeting on {FromDate=friday} +- will roy be at our {Subject=weekly team meeting} +- will teresa be at my {OrderReference=next} meeting +- will thomas be in {Subject=insurance meeting} {FromDate=monday} at {FromTime=noon} +- will timothy be coming to the meeting +- will virginia be attending my {OrderReference=next} meeting +- will zachary be in the {Subject=finance meeting} + + +## FindDuration +- about how long will the meeting last +- duration of {Subject=machine learning talk} +- how long do i have for {Subject=lunch} +- how long is going to last that meeting +- how long is my {FromTime=4 o'clock} meeting +- how long is my {Subject=dentist appointment} +- how long is my {Subject=facial time} +- how long is my {Subject=lunch} {FromDate=today} +- how long is my meeting at {FromTime=4} +- how long is the event +- how long is the {Subject=movie jurassic world} +- how long will my {Subject=dentist appointment} last +- how many hours +- how much time as of now is set for the {Subject=bill payments} +- how much time as set for the {Subject=bill payments} +- how much time between schedule {FromDate=thursday} meetings {FromDate=next week} +- how much time do i have for a {Subject=lunch break} {FromDate=today} +- how much time do i have for {Subject=lunch} {FromDate=today} +- how much time do i have to {Subject=take back the movie} +- how much time do we have for {Subject=lunch} {FromDate=today} +- how much time does my meetings take up +- how much time for {Subject=lunch} {FromDate=today} +- how much time is there for {Subject=errands} during my {Subject=lunch break} +- how much time open {FromDate=today} +- how much time out on {Subject=lunch} +- how much time to i have for {Subject=lunch} {FromDate=today} +- how much time will i have to {Subject=pick up groceries} +- is it going to last long +- is my lunch long enough for {Subject=errands} +- minutes in {Subject=lunch break} +- please show me how much time i have to {Subject=run errands} +- please tell me how long i have for {Subject=lunch} +- show me the duration of the {Subject=weekly sharing} +- tell me how long is my {FromTime=4 oclock} meeting +- tell me how long is {FromDate=today} ' s {Subject=lunch break} +- tell me the duration of the {Subject=product introducation} +- time for {Subject=lunch errands} +- {FromDate=today} ' s {Subject=lunch} will be how long +- total {Subject=lunch break} time {FromDate=today} please +- what allotted time is for {Subject=hair dresser} + + +## FindMeetingRoom +- a new meeting location find one +- bing find me a conference room in the {Location=bravern} {FromTime=this afternoon} +- book a conference room +- book a meeting +- book {MeetingRoom=blue meeting room} +- book the conference room for {FromDate=thursday} at {FromTime=one} i want to meet with benjamin +- can you reserve {MeetingRoom=room 258} right away +- check meeting room for {FromDate=tomorrow} +- find a free meeting room for {FromDate=next tuesday} +- find a new meeting location +- find an available meeting room from {FromTime=3} to {ToTime=5} {FromDate=tomorrow} +- find me an empty conference room +- help me to book a conference room +- help me to book a meeting room from {FromTime=10 am} to {ToTime=3 pm} +- help me to book the {MeetingRoom=room 102} +- help me to find a meeting room +- i need you to find a new meeting location +- i want to meet with bruce lee so book the conference room for {FromDate=thursday} at {FromTime=one} +- i want to meet with donna please book for {FromDate=thursday} the conference room at {FromTime=one} +- i'm looking for a conference room +- is this room busy at {FromTime=5 pm} +- is this room busy {FromDate=tomorrow} +- let's find a new meeting location +- locate another meeting location +- reserve {MeetingRoom=room 258} +- reserve {MeetingRoom=room 258} now +- reserve {MeetingRoom=room 258} right away +- reserve the conference room for {FromTime=1 pm} {FromDate=thursday} because i need to have a meeting with amber +- reserve the conference room for {FromTime=3pm} {FromDate=tomorrow} +- schedule conference room with mary cooper for {FromDate=thursday} at {FromTime=one} +- what meet rooms do i have +- where shall we meet + + +## GoBack +- back +- back one step +- back the {OrderReference=last} step +- can you go back +- go back +- go back a step +- go back one step +- go back please +- go back the {OrderReference=previous} step +- go back to the {OrderReference=last} step +- go back to the main menu +- go back to the {OrderReference=previous} step +- i need to go back +- i want to go back +- i would like to go back +- please go back +- please return back +- return +- return back +- return please +- return to {OrderReference=previous} step +- return to the {OrderReference=previous} step +- we should go back + + +## None +- hello world +- how's the weather today +- what can you do +- what is the time now +- what's my name +- what's the weather today +- what's your name + + +## ShowNextCalendar +- what are the {OrderReference=next 3} events on my calendar +- what is my {OrderReference=next} event + + +## ShowPreviousCalendar +- i need to check the {OrderReference=previous} appointment +- show me the {OrderReference=previous} meeting with tiffany + + +## TimeRemaining +- can you show me the time remaining before my {OrderReference=next} appointment +- check on the time to see when i {Subject=go to school and pick up luca} +- do i have any spare time before {OrderReference=next} appointment +- how long is it until the {FromDate=14th of march} +- how long till {Subject=disneyland paris} +- how long till my {OrderReference=next} appointment +- how long till the {OrderReference=next} meeting +- how long until {Subject=christmas} +- how long until my {OrderReference=next} appointment +- how long until my {OrderReference=next} meeting +- how long until the {Subject=social} +- how long will i wait for the {OrderReference=next} appointment +- how many days is it until {FromDate=christmas} +- how many days left until the {Subject=opening ceremony} +- how many days till {FromDate=april} +- how many days till {FromDate=christmas} +- how many days until {FromDate=june the fifteenth} +- how many days until {FromDate=june the fifteenth 2019} +- how many days until {FromDate=march twenty six} +- how many days until my {Subject=doctor ' s appointment} +- how many days until {FromDate=thanksgiving} +- how many days until the {FromDate=10th of december} +- how many hours left till the {Subject=closing ceremony} +- how many hours remaining till {OrderReference=next} appointment +- how many hours until my {Subject=doc appointment} +- how many minutes before my {OrderReference=next} appointment +- how many minutes free do i have before {OrderReference=next} scheduled appointment +- how much longer do i have before {Subject=pick up luca from school} +- how much longer do i have until {Subject=pick up luca from school} +- how much longer until my {OrderReference=next} appointment +- how much longer until my {OrderReference=next} meeting +- how much time before {Subject=lunch} +- how much time before my {OrderReference=next} appointment +- how much time before {OrderReference=next} appointment +- how much time do i have +- how much time do i have before my {OrderReference=next} appointment +- how much time do i have before my {OrderReference=next} meeting +- how much time do i have free until my {OrderReference=next} meeting +- how much time do i have until i have to {Subject=meet} with michael +- how much time do i have until i {Subject=start the meeting} +- how much time do i have until my {Subject=doc appt} +- how much time do i have until my meeting with larry +- how much time do i have until my {OrderReference=next} appointment +- how much time is there before {Subject=office meeting} +- how much time remaining till {OrderReference=next} meeting +- how much time until my meeting with lori +- how much time until {OrderReference=next} scheduled appointment +- how much time until {FromTime=noon} +- i want to know the time left for my {OrderReference=next} appointment +- show time before {OrderReference=next} appointment +- tell me how much free time i have before {OrderReference=next} appt +- tell me how much time before my {OrderReference=next} meeting +- time before my {OrderReference=next} appointment +- time remaining + + +> # Entity definitions + +$DestinationCalendar:simple + +$Duration:simple + +$FromDate:simple + +$FromTime:simple + +$Location:simple + +$MeetingRoom:simple + +$Message:simple + +$MoveEarlierTimeSpan:simple + +$MoveLaterTimeSpan:simple + +$OrderReference:simple + +$PositionReference:simple + +$SlotAttribute:simple + +$Subject:simple + +$ToDate:simple + +$ToTime:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:datetimeV2 + +$PREBUILT:number + +$PREBUILT:ordinal + +$PREBUILT:personName + + +> # Phrase list definitions + + +> # List entities + +$RelationshipName:aunt= + +$RelationshipName:aunts= + +$RelationshipName:boss= + +$RelationshipName:brother= + +$RelationshipName:brother in law= + +$RelationshipName:brother-in-law= + +$RelationshipName:brothers= + +$RelationshipName:child= + +$RelationshipName:children= + +$RelationshipName:colleague= + +$RelationshipName:colleagues= + +$RelationshipName:cousin= + +$RelationshipName:cousins= + +$RelationshipName:dad= + +$RelationshipName:daughter= + +$RelationshipName:daughter in law= + +$RelationshipName:daughter-in-law= + +$RelationshipName:daughters= + +$RelationshipName:families= + +$RelationshipName:family= + +$RelationshipName:father= + +$RelationshipName:father in law= + +$RelationshipName:father-in-law= + +$RelationshipName:friend= + +$RelationshipName:friends= + +$RelationshipName:grandchild= + +$RelationshipName:grandchildren= + +$RelationshipName:granddaughter= + +$RelationshipName:grandfather= + +$RelationshipName:grandma= + +$RelationshipName:grandmother= + +$RelationshipName:grandparent= + +$RelationshipName:grandparents= + +$RelationshipName:grandson= + +$RelationshipName:grandsons= + +$RelationshipName:husband= + +$RelationshipName:in-laws= + +$RelationshipName:kids= + +$RelationshipName:mom= + +$RelationshipName:mother= + +$RelationshipName:mother in law= + +$RelationshipName:mother-in-law= + +$RelationshipName:neighbor= + +$RelationshipName:neighbors= + +$RelationshipName:nephew= + +$RelationshipName:niece= + +$RelationshipName:parent= + +$RelationshipName:parents= + +$RelationshipName:partner= + +$RelationshipName:siblings= + +$RelationshipName:sister= + +$RelationshipName:sister in law= + +$RelationshipName:sister-in-law= + +$RelationshipName:sisters= + +$RelationshipName:son= + +$RelationshipName:son in law= + +$RelationshipName:son-in-law= + +$RelationshipName:step daughter= + +$RelationshipName:step-daughter= + +$RelationshipName:stepfather= + +$RelationshipName:stepmother= + +$RelationshipName:stepsister= + +$RelationshipName:stepson= + +$RelationshipName:students= + +$RelationshipName:teachers= + +$RelationshipName:uncle= + +$RelationshipName:uncles= + +$RelationshipName:wife= + +$RelationshipName:manager= + + + +> # RegEx entities + + diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/email.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/email.lu new file mode 100644 index 0000000000..85434d27cd --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/email.lu @@ -0,0 +1,711 @@ +> # Intent definitions + +## AddFlag +- add a flag +- add a flag please +- add a flag to the {OrderReference=last} email +- add a flag to this email +- add flag +- add flag on it +- add flag to it +- add flag to the email {SenderName=john} just sent to me +- add {Category=flag} to this email +- add flag to this message +- flag +- flag it +- flag on +- flag the current email +- flag the email +- flag the email from {SenderName=davis} +- flag this email +- flag this email as {Category=important} for me +- i want to add a flag +- i want to add a flag on this email +- make it flagged +- mark as flag +- mark the email {Category=flagged} +- put a flag +- put a flag on the new email +- the email from {SenderName=thomas} should be flagged +- the email to {ContactName=ruth} needs to be flagged +- this email need to be flagged +- this email needs to be flagged +- this email should be flagged +- turn flag on + + +## AddMore +- add a {Attachment=file} to the email +- add a {Attachment=picture} +- add a subject +- add another line to the message +- add {Message=did you enjoy the entire program} +- add {Attachment=file} to email +- add more +- add more and change the message +- add more details to it +- add more {Message=don't forget to bring beer} +- add more message +- add more please +- add more text +- add more text please +- add more to email +- add more to email body +- add more to it +- add more to message +- add more to {ContactName=roy} 's email +- add more to text +- add more to the email +- add more to the {OrderReference=last} email +- add more to the message +- add {Attachment=photo} +- add some more +- add something +- add to body of email +- add, by the way, what's the plan of next step +- add: {Message=call me tonight after work} +- append an {Attachment=attachment} to this email +- attach {Attachment=file} +- can i add more to the email +- can i add more to the message +- edit email so i can type an additional message +- i am not done yet. i need to add some more details +- i forgot to add an important part to that email to {ContactName=james} . please set it up to edit +- i need to add additional lines +- i need to add further contents +- i need to add more message +- i need to add more text +- i need to add more to the email +- i need to add more to the email message i am sending to {ContactName=vincent} +- i need to add something else to my email to {ContactName=cheryl} +- i need to add something else to that email to {ContactName=donna} before it is sent +- i want to add more the email +- i wish to add more to the message +- i would like to add more to the email +- i would like to add more to the email message +- i would like to open a new line +- i'd like to add a bit more to the email. +- i'd like to add a bit more to the message +- i'd like to add more to the email +- insert more lines for me please +- insert more text in my email +- is it ok if i add more to the email? +- it isn't complete, need more contents +- more text +- need to add information to the {OrderReference=previous} email +- ok, i need to add a few things to that +- please add {Message=it was terrible} +- please add more +- please add, {Message=please let me know what i can bring. i'd be happy to make a side dish or dessert} +- put some additional lines to this message +- wait, i need to write more +- write more + + +## CancelMessages +- abort deletion +- can you cancel it +- cancel email +- cancel email to {ContactName=natalie} +- cancel message +- cancel my email to {ContactName=jane} +- cancel searching the messages +- cancel the email +- cancel the email sent to {ContactName=alex} +- cancel the email to my {RelationshipName=sister} +- cancel the mail +- cancel the message +- cancel this email +- cancel this message +- cancel this sending process +- don ' t read +- don ' t read it +- don 't send the email +- don't email +- don't email to her +- don't read the email +- don't read the message +- don't send +- don't send it +- don't send out +- don't send that email +- don't send this email +- don't show me +- exit +- forget about the email +- i want you to cancel the email +- neither of them +- never mind cancel the mail +- never mind cancel the message +- never mind, forget about the mail +- nevermind cancel +- no cancel it, i don't want to send the mail +- no don't send +- no don't send it +- no just cancel the email +- no, i don't want to send this message +- no, no, cancel the reading +- okay cancel sending the mail +- quit the sending +- stop message +- stop reading +- ^cancel [sending] [(my|the)] (email|mail) to {ContactName} + + +## CheckMessages +- any {Category=new} email +- any {Category=new} email available +- any {Category=new} email {Time=now} +- any {Category=new} message {Time=now} +- check email +- check email please +- check my email please +- check my emails +- check my {Line=gmail} +- check my inbox +- check my mail box +- check my message +- check {Line=outlook} please +- check up email +- check up messages +- could you please check my emails +- could you please check my inbox +- could you please check my messages +- do i get new email +- do i have any {Category=new} mail +- do i have {Category=new} email +- do i have {Category=new} email {Time=now} +- do i have {Category=new} message +- do i receive {Category=new} email +- do i receive {Category=new} mail in {Line=outlook}? +- do i receive {Category=new} message +- does anyone send email to me just then +- does anyone send message to me {Time=just then} +- does my {Line=outlook} have {Category=new} email +- i want to check my emails +- i want to check my inbox +- i'd like to check my inbox +- is there new email +- please check my emails +- please check my inbox +- please check my {Line=outlook} +- show {OrderReference=latest} emails +- show my emails +- show my {Category=unread} mails +- show the {Category=important} emails in my inbox +- whether i get {Category=new} email +- whether i get {Category=new} message +- whether i have {Category=new} email +- whether i have {Category=new} message +- whether i receive new email +- show [(my|the)] [(unread|important|{Category})] (email|mail|emails)^ + + +## ConfirmMessages +- "okay, send it" +- "sure, go ahead" +- "yes, you can" +- alright, just send the message +- correct, please send it. +- i confirm that i want to send this email +- just do it +- no problem, go ahead send the mail +- of course, just delete the mail +- ok send the mail to {ContactName=may} +- ok, good to me, send it please +- ok, good, just send it +- okay +- okay send it +- okay, send it now +- perfect thank you +- right, send it please +- yeah right, send to {ContactName=alex} +- yes it's right +- yes that's right +- yes, send it + + +## Delete +- can you help me delete it +- clear my inbox +- delete all emails from {SenderName=tom} +- delete all emails received {Time=tonight} +- delete the email from my {Line=hotmail} account +- delete the email sent from {SenderName=mary jane} +- delete the {PositionReference=first} email for me +- delete the {OrderReference=last} one +- delete the {OrderReference=previous} 4 emails +- delete the {Category=red} ones +- delete the second mail +- delete the {PositionReference=second} one +- delete the {Category=unread} emails +- delete this email +- delete this message permanently +- delete what i just wrote +- empty the email inbox +- put it in the recycle bin +- put the email in the recycle bin +- put the email to trash bin +- put the emails from this file folder to trash bin +- remove emails that are duplicate +- remove emails with {Category=red} flags +- remove it from my inbox +- remove the email from {SenderName=mary} +- remove the emails received {Date=yesterday} +- ^(delete|remove) [the] [{OrderReference}] (email|emails|mails) [from {SenderName}] + + +## Forward +- could you forward this message to {ContactName=ronald} and {ContactName=roy} +- could you please forward this email to my {RelationshipName=sister} +- forward all {Attachment=files} from {SenderName=sally} to {ContactName=austin} +- forward by saying {Message=if you interest} to {ContactName=rebecca} +- forward email +- forward email to {RelationshipName=girlfriend} +- forward emails to {ContactName=gabriel} +- forward message to {RelationshipName=girlfriend} +- forward the email from {SenderName=john smith} to {ContactName=michelle} by saying {Message=fyi} +- forward the email from {SenderName=melissa} to {ContactName=peter} +- forward the email to {RelationshipName=dad} +- forward the {OrderReference=last} email to {ContactName=susan} +- forward this email +- forward this email to {ContactName=eugene} by typing {Message=what do you think} +- forward this email to {ContactName=gary brown} please +- forward this email to {ContactName=joseph} +- forward this email to partone dot parttwo at gmail dot com +- forward this email to {ContactName=patricia} +- forward to {ContactName=alan} {Time=tonight} +- forward to {ContactName=brian potter} {Time=tonight} +- forward to {ContactName=deborah} with a message saying that {Message=i don't want that} +- forward to {ContactName=dorothy} by typing {Message=i agree with it} +- forward to {RelationshipName=mom} +- forward to my {RelationshipName=boss} and attach the {Attachment=schedule file} +- forward to partoneparttwo@gmail.com {Date=next monday} +- forward to {ContactName=thomas} please +- forward to {RelationshipName=wife} by saying {Message=i love you} +- please forward this email to {ContactName=albert} by typing {Message=everything goes fine} +- please forward this email to partoneparttwo@163.com +- please forward this email to partoneparttwo@outlook.com +- please forward this message +- please forward to {ContactName=benjamin} + + +## None +- 1 +- 2 +- 3 +- the {PositionReference=first} one +- the {PositionReference=second} one +- the {PositionReference=third} one + + +## QueryLastText +- can you tell me the {OrderReference=last} email i received +- come to the {OrderReference=last} +- go to the {OrderReference=last} one +- i want to see the {OrderReference=last} email +- {OrderReference=last} email +- open the {OrderReference=last} email +- open the {OrderReference=lastest} email i got +- please tell me who emailed me {OrderReference=last} +- show me the {OrderReference=lastest} email +- show me the {OrderReference=newest} email +- show the {OrderReference=last} email +- the {OrderReference=last} email +- what did {RelationshipName=mom} just say +- what {ContactName=eric watson} just said +- what {SenderName=harry} {OrderReference=last} email said +- what {ContactName=henry} just said +- what is the {OrderReference=last} email i received {Date=today} +- what is the {OrderReference=lastest} email i received from {FromRelationshipName=dad} +- what was the {OrderReference=last} email +- what was the {OrderReference=last} email i got from {FromRelationshipName=dad} +- what was the {OrderReference=last} email i got from {SenderName=steve edwards} +- who email me {Time=just now} +- who emailed me +- who emailed me just now +- who emailed me {OrderReference=last} +- who recently emailed me +- who sent me the email lastly {Date=yesterday} +- who sent me the mail just now +- who texted me +- who texted me {Time=just now} +- whose email just then ? +- whose email {Time=now} ? + + +## ReadAloud +- can you read my emails +- can you read my {OrderReference=last} email +- could you read out the email on {EmailSubject=how to use the new tool}? +- please read my {OrderReference=last} email +- read aloud my {Category=new} email +- read aloud the {EmailSubject=christmas party} email +- read {SenderName=darren}'s mail on {EmailSubject=the movie} +- read email +- read email from {SenderName=dawn} +- read email from {SenderName=kat} +- read email from {FromRelationshipName=mum} +- read email to me +- read emails +- read emails from {SenderName=clay} +- read {PositionReference=first} email in link box +- read {PositionReference=first} email in the linked inbox +- read {Line=google} mail +- read it +- read {OrderReference=last} email received +- read {OrderReference=last} incoming emails +- read {OrderReference=last} mail +- read {OrderReference=latest} email +- read {SenderName=mary grace white} email +- read me {SenderName=dylan}'s email sent on {Date=yesterday} +- read me {SenderName=jessica}'s email on {EmailSubject=dress code for the party} +- read me my {OrderReference=last} {Line=hotmail} email +- read me my {OrderReference=latest} emails +- read me the email +- read me the email on {EmailSubject=apple} +- read me the email on {EmailSubject=thanksgiving day} +- read me the email sent on {Date=thanksgiving day} +- read me the email titled {EmailSubject=happy new year} +- read me the emails from {SenderName=agatha} +- read me the {OrderReference=last} email {SenderName=claude} sent +- read me the {OrderReference=last} emails of the {Time=five minutes} +- read me the {OrderReference=newest} email +- read me the {OrderReference=recent} email titled {EmailSubject=abcd} from {SenderName=jessica} +- read most {OrderReference=recent} email +- read my email from {SenderName=baby} +- read my email from {SenderName=hubby} +- read my email from {SenderName=tyler swift} +- read my email messages +- read my email please +- read my email to me +- read my emails +- read my emails from {SenderName=patty} +- read my inbox +- read my {OrderReference=last} email +- read my {OrderReference=last} email out to me +- read my {OrderReference=most recent} email +- read my {Category=new} email +- read my {Category=new} emails +- read my notification +- read my {Line=outlook} email +- read my {OrderReference=recent} email +- read my {OrderReference=recent} email message please +- read my {OrderReference=recent} email messages +- read my {OrderReference=recent} email to me +- read my {PositionReference=second} email +- read {Category=new} email +- read {Category=new} email from {SenderName=david ma} +- read {Category=new} message +- read out {SenderName=darren}'s mail +- read out the email from {SenderName=liu} about {EmailSubject=transfer} +- read out {SenderName=xu}'s email about {EmailSubject=apple's news} +- read please +- read {OrderReference=recent} email +- read the email +- read the email on {EmailSubject=auto repair} +- read the {PositionReference=first} email +- read the {PositionReference=first} email in {Line=hotmail} +- read the {OrderReference=last} email +- read the {OrderReference=last} email message +- read the {OrderReference=latest} email from {FromRelationshipName=mom} +- read the {OrderReference=latest} email from {SenderName=steve lip} +- read the {OrderReference=latest} email i sent +- read {Date=todays} mail +- read {Date=today}'s mail +- read {Category=unread} email +- read {Category=unread} message +- ^read [(me|out)] [the] (email|emails) from {SenderName} [(about|on) {EmailSubject}]^ +- ^read [me] [the] (email|mail|emails) (on|about|titled) {EmailSubject} +- ^read [me] [the] (email|mail|emails) (on|about|titled) {EmailSubject} [sent] from {SenderName}^ +- ^read [me] the (email|mail) (titled|about|on) [the] {EmailSubject}^ + + +## Reply +- create a response to the email by saying {Message=pls send me the picture again} +- email back +- email back {Message=i will call you back} +- how to reply to an email +- make a response with {Message=thank you very much} +- reply +- reply by email {Message=thank you very much best regards jun} +- reply by saying {Message=i love you} +- reply by saying {Message=yes} +- reply by typing {Message=hello} +- reply {Message=required} to an email +- reply that {Message=i am busy} +- reply to {ContactName=edward} +- reply to email {Message=i am busy now} +- reply to my {OrderReference=last} email +- reply to {ContactName=susan} +- reply to the email +- reply to the {PositionReference=first} one +- reply {Message=we'll see you later} +- reply with {Message=hello} +- reply {Message=yee ha} +- reply {ContactName=yee} {Message=hello} +- reply {Message=yes boss.} +- respond {Message=i ' m sick i can ' t do it} +- respond to {ContactName=lore hound} +- respond to {ContactName=nathan} +- respond to the email by saying {Message=i am busy today} +- return {ContactName=barbara} on {Line=mobile} +- return {ContactName=siberian huskies} {Line=mobile} +- send email back +- send the response with {Message=i've already know} +- ^reply [back] with [the] (title|subject) {EmailSubject} +- ^reply [back] [the] message [that] {Message}^ +- ^reply [back] [with] [the] [message] [that] "{Message.Any}" + + +## SearchMessages +- can you search my emails +- detect emails from {SenderName=betty} +- detect the email containing keyword {SearchTexts=beauty} +- detect the email from {SenderName=lisa} +- did i get any email from {SenderName=tom} +- did i get emails from {SenderName=tom} +- did i get the email containing keyword {SearchTexts=lunch} +- email sent from {SenderName=lisa} +- emails contains {SearchTexts=bank} +- enumerate the emails with {SearchTexts=algroithm} +- find an email about {EmailSubject=new year's planning} +- find an email from abc123@outlook.com +- find an email from {SenderName=angela} +- find an email from {SenderName=jay} that contains {SearchTexts=halloween} +- find an email on the {EmailSubject=dinner reservation} +- find email titled {EmailSubject=new design} +- find email with title {EmailSubject=production tools} +- find emails from {FromRelationshipName=mom} +- find emails that contain {SearchTexts=malta} +- find emails with {SearchTexts=resume} +- find mails titled {EmailSubject=recommended courses} +- list the emails contain {SearchTexts=funny picture} +- looking for an email with {SearchTexts=hello} +- query emails with {SearchTexts=bill} +- search an email with subject {EmailSubject=background screening} +- search {SearchTexts=bla bla} in my emails +- search email contain {SearchTexts=outlook} +- search email with key words {SearchTexts=lunch} +- search emails about {EmailSubject=boating} +- search emails contain {SearchTexts=work items} +- search emails contains {SearchTexts=coupons} +- search emails from {SenderName=mike} +- search {SenderName=jensen}'s emails +- search keywords {SearchTexts=keywordone keywordtwo} in my emails +- search {SearchTexts=keywordsone keywordstwo} from inbox +- search my emails +- search text with words {SearchTexts=lunch together} +- search the email with keywords {SearchTexts=hello} +- search the emails contains {SearchTexts=microsoft} +- search the emails contains {SearchTexts=money} +- show emails contain words "{SearchTexts=future plan}" +- show emails with "{SearchTexts=credit card}" +- show me emails from {SenderName=clara chan} +- show me emails from {FromRelationshipName=girlfriend} +- show me the email about {EmailSubject=spring festival} +- show me the email from {SenderName=tom} and filtering with word {SearchTexts=lunch} +- show me the email sent from {FromRelationshipName=mom} +- tell me the email from {SenderName=lily wong} +- tell me the email with subject {EmailSubject=weekly report} +- ^(tell|find|show) [me] [(an|the)] email (with the title|with title|titled) {EmailSubject} +- ^(tell|find|show) [me] [(an|the)] email (with the title|with title|titled) "{EmailSubject.Any}" +- ^(search|find|show) [me] [(an|the)] (email|emails|mail) [(containing|filtering)] [with] [the] [(texts|text|word)] "{SearchTexts.Any}" +- ^(show|search|find) [me] [(an|the)] [{Category}] email[s] (on|about|titled) {EmailSubject} [sent] [(by|from) {SenderName}]^ + + +## SendEmail +- compose new email about {EmailSubject=spanish homework} +- create new mail titled {EmailSubject=urgent meeting information} to {ContactName=jonathan} +- email her the message "fine, ok" +- email my {RelationshipName=brother} +- email my {Attachment=presentation} +- email the {Attachment=file} to {ContactName=henry mathew} +- email to {ContactName=amy cooper} about {Message=haha saying hello} +- email to {ContactName=cynthia} and {ContactName=mike}, {Message=that dinner {OrderReference=last} week was splendid}. +- email to {ContactName=harry potter} and {ContactName=hermione granger} +- email to {ContactName=lawrence} about {EmailSubject=opening issue} +- email to {ContactName=mike waters} : {Message=mike, that dinner last week was splendid.} +- email to partoneparttwo@gmail.com +- email to {ContactName=tom white} about {Message=that flower saying beautiful} +- i need to send an email about the {EmailSubject=words to a song} +- make a new email about {EmailSubject=weather forecast} +- mark email for {Category=follow up} and send to {ContactName=arthur} +- new email about {EmailSubject=really good talk} to {ContactName=michelle} +- new email about {EmailSubject=writing documents} +- new email to {ContactName=kimberly} about {EmailSubject=wingman} +- send a email to {ContactName=leehom wong} about the {EmailSubject=piano concert} saying {Message=it's wonderful} +- send a mail to {ContactName=daniel} +- send a new email about {EmailSubject=facebook} +- send a new email about the {EmailSubject=hockey tournament} to {ContactName=marie jane}, {ContactName=joseph} , and {ContactName=john} +- send a new email about the {EmailSubject=problem solving} to {ContactName=andrea}, {ContactName=angela}, and {ContactName=ron} +- send a new email to {ContactName=larry} with a {Attachment=file} attached +- send a new email to {ContactName=nicholas} and {ContactName=jesse} about {EmailSubject=coupons} +- send a new email to partonepartwopartthree@yahoo.com +- send a new {Category=high importance} email to {ContactName=jordan} +- send a {Category=read receipt} email to {ContactName=samuel} +- send {ContactName=alexander} a {Category=red bang} email +- send an email +- send an email about {EmailSubject=swim team practice} +- send an email about {EmailSubject=test status} to {ContactName=mark} +- send an email about the {EmailSubject=window that is broken} +- send an email for me +- send an email marked {Category=follow up} to {ContactName=jerry} +- send an email marked for {Category=follow up} to {ContactName=christian} +- send an email marked with a {Category=bang} to {ContactName=amy} +- send an email to {ContactName=a.j.ron} marked as {Category=important} +- send an email to {ContactName=christopher carpenter} about the {EmailSubject=hiking trip} +- send an email to {ContactName=harold} and {ContactName=bob kappus} about {Message=team lunch saying same team lunch this tuesday} +- send an email to {ContactName=harry potter} +- send an email to {ContactName=jacqueline} and {ContactName=tianyu} about the {EmailSubject=test result} +- send an email to {ContactName=jimmy klein} saying {Message=this is the message about weekend plans} +- send an email to {ContactName=larry} , {ContactName=joseph} and {ContactName=billy larkson} +- send an email to {ContactName=lily roth} and abc123@microsoft.com +- send an email to {ContactName=lu} , {ContactName=yue} and {ContactName=qiong} about {EmailSubject=funding} +- send an email to {RelationshipName=mom} +- send an email to my {RelationshipName=brother} +- send an email to {ContactName=nathan} with a {Category=red bang} +- send an email to partone@gmail.com +- send an email to partone_parttwo@microsoft.com +- send an email to {ContactName=sean} about {EmailSubject=weekend plans} +- send an email to {ContactName=zachary} about {EmailSubject=we can plan things let's go hiking} +- send an email {Date=today} +- send an email with {Category=read receipt} to {ContactName=peter} +- send an {Category=important} email to {ContactName=olivia} +- send an {Category=urgent} email +- send an {Category=urgent} email from my {Line=work account} to {ContactName=christian} +- send an {Category=urgent} email from my {Line=work} email to {ContactName=jack} +- send and email about {EmailSubject=swim team practice} +- send {ContactName=angela} an email marked as {Category=high priority} +- send {ContactName=billy} an email with a {Category=red bang} +- send email about {EmailSubject=homework plan} to {ContactName=raymond} and {ContactName=philip} +- send email marked {Category=priority} to {ContactName=yun-sim} and {ContactName=yi} +- send email to {ContactName=a} and {ContactName=tian} +- send email to {ContactName=hannah} saying {Message=test} +- send email to {ContactName=heather} about {EmailSubject=car} +- send email to {ContactName=jiayi} {Date=today} +- send email to {ContactName=kai xu}, {ContactName=mingming} and my {RelationshipName=mother} +- send email to {ContactName=louis} and mark it {Category=important} +- send email to partone.parttwo@outlook.com +- send {Category=important} email to {ContactName=evelyn} and {ContactName=gary} +- send {ContactName=jacqueline} an email with {Category=low priority} +- send {Attachment=large files} through email +- send {ContactName=lori} a new {Category=flagged} email +- send mail to {ContactName=dorothy} +- send my {Attachment=housekeeping doc} to {ContactName=jeffrey} +- send my {Attachment=payment visio diagram} to {ContactName=ronald} +- send new email to {ContactName=christian} and mark it {Category=high importance} +- send the email +- send the email {Time=now} +- send this {Attachment=document} to an email +- send {ContactName=thomas} an email +- set an email {Date=today} +- start a new email about {EmailSubject=marriage counselor appointments} +- start a new email from {SenderName=tracy} saying {Message=here is my resume} +- start a new email saying {Message=lets go to the park} +- start a new email to {ContactName=aaron} about {EmailSubject=sleeping over tonight} +- start an email to {ContactName=jason} about {EmailSubject=speaking up} +- start new email about {EmailSubject=taco blog} to {ContactName=nicole} and {ContactName=emily} +- start new email to {RelationshipName=friends} about the {EmailSubject=club} +- start up a new email to {ContactName=michelle} about {EmailSubject=watching baseball} +- the new email is {Category=high priority} that is being sent to {ContactName=jacob} +- will you send a marked {Category=non urgent} email to {ContactName=james} +- write an email about the {EmailSubject=fundraiser} +- write an email which title is {EmailSubject=hello} and context is {Message=let's have meeting together} +- write an {Category=urgent} email to {ContactName=bobby} +- write email +- write email to {RelationshipName=mom} subject is {EmailSubject=babysit} +- ^(write|send|start) [(a|an|the)] [new] email to {ContactName}^ +- ^[(send|write)] [(the|a)] [new] [(email|mail)] [to {ContactName}] [with message "{Message.Any}"] +- ^(write|send|start) [(a|an|the)] [new] email to {ContactName} (about|on|with) [the subject] [that] {EmailSubject}^ + + +## ShowNext +- are there any {Category=unread} messages? show {OrderReference=next} +- go forward to {OrderReference=next} mails +- go on, show me more mails +- go to {OrderReference=next} mail +- go to the {OrderReference=next} page +- move forward +- move on {OrderReference=next} mail by jason +- move on to {OrderReference=next} mails +- {OrderReference=next} email +- {OrderReference=next} {Category=unread} email +- {OrderReference=next} {Category=unread} one +- show me {OrderReference=next} from {SenderName=mary} +- show me the {OrderReference=next} +- show me the {OrderReference=next} five mails +- show {OrderReference=next} email +- show {OrderReference=next} {Category=unread} +- show the {OrderReference=next} email from my {FromRelationshipName=boss} +- show the {OrderReference=next} emails by wong +- show the {OrderReference=next} messages +- the {OrderReference=next} email +- the {OrderReference=next} {Category=important} message +- ^(show|give|tell) [me] [the] next (email|message|mail)^ + + +## ShowPrevious +- back to the {OrderReference=last} one from {SenderName=apple} +- bring the {OrderReference=previous} one, i want to read it again +- go to {OrderReference=previous} mails +- move back to {OrderReference=last} mails +- {OrderReference=previous} email +- {OrderReference=previous} one please +- show me {OrderReference=previous} email from {SenderName=jack} +- show me the {OrderReference=last} three mails +- show me the one {OrderReference=before} +- show me the {OrderReference=previous} email +- show {OrderReference=previous} in {Category=red} category +- show {OrderReference=previous} one in inbox +- show the {OrderReference=previous} email from my {FromRelationshipName=mentor} +- show the {OrderReference=previous} one +- the {OrderReference=previous} email +- what is the {OrderReference=previous} email +- ^(show|give|tell) [me] [the] previous (email|message|mail)^ + + +> # Entity definitions + +$Attachment:simple + +$Category:simple + +$ContactName:simple + +$Date:simple + +$EmailSubject:simple + +$FromRelationshipName:simple + +$Line:simple + +$Message:simple + +$OrderReference:simple + +$PositionReference:simple + +$RelationshipName:simple + +$SearchTexts:simple + +$SenderName:simple + +$Time:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:email + +$PREBUILT:ordinal + + +> # Phrase list definitions + + +> # List entities + +> # RegEx entities \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/news.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/news.lu new file mode 100644 index 0000000000..72eca94923 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/news.lu @@ -0,0 +1,27 @@ +> # Intent definitions + +## FindArticles +- find me news about {topic=xbox} +- find me news on {topic=microsoft} +- find news about {topic} +- latest news +- news about {topic=microsoft} +- news about {topic=the stock market} +- {topic=sports} news +- tell me the news +- whats the latest news +- whats the latest news on {topic=brexit} +- whats the latest on {topic=microsoft} +- what's the latest on {topic=usa} +- whats the news +- what's the latest on {topic} +- whats the latest news on {topic} +- find me news on {topic} +- find news on {topic} +- news about {topic} + +## None + +> # Entity definitions + +$topic:simple \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/pointofinterest.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/pointofinterest.lu new file mode 100644 index 0000000000..9b32d928aa --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/pointofinterest.lu @@ -0,0 +1,1388 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:27 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: stdin + +> ! Source QnA TSV file: Not Specified + +> ! Source QnA Alterations file: Not Specified + + +> # Intent definitions + +## NAVIGATION_CANCEL_ROUTE +- abort destination +- abort navigation +- abort route +- actually cancel going to {keyword} +- actually cancel navi +- actually clear navi +- actually cut navi +- actually delete navi +- actually end navi +- actually erase navi +- actually forget navi +- actually forget navigating +- actually get rid of navi +- actually never mind navigating +- actually remove navi +- actually stop navi +- actually wipe off navi +- actually wipe out navi +- can you cancel navigating +- can you cancel route service +- can you clear going +- can you clear navigation +- can you cut going +- can you cut navigation +- can you delete going +- can you delete navigation +- can you end navigating +- can you end route service +- can you erase going +- can you erase navigation +- can you forget navigation +- can you get rid of navigation +- can you please cancel navigating +- can you please cancel route service +- can you please clear navigation +- can you please cut going +- can you please cut navigation +- can you please delete going +- can you please delete navigation +- can you please end navigating +- can you please end route service +- can you please erase going +- can you please erase navigation +- can you please forget navigation +- can you please get rid of navigation +- can you please remove going +- can you please remove navigation +- can you please stop navigation +- can you please wipe off navigation +- can you please wipe out going +- can you please wipe out navigation +- can you remove navigation +- can you stop navigation +- can you wipe off going +- can you wipe off navigation +- can you wipe out navigation +- cancel going +- cancel navigation +- cancel wherever going +- clear destination +- clear going +- clear navigating +- clear route +- clear route service +- could you cancel navigating +- could you cancel route service +- could you clear going +- could you clear navigation +- could you cut going +- could you cut navigation +- could you delete going +- could you delete navigation +- could you end navigating +- could you end route service +- could you erase navigation +- could you forget navigation +- could you get rid of navigation +- could you please cancel navigating +- could you please cancel route service +- could you please clear going +- could you please clear navigation +- could you please cut going +- could you please cut navigation +- could you please delete going +- could you please delete navigation +- could you please end navigating +- could you please end route service +- could you please erase going +- could you please erase navigation +- could you please forget navigation +- could you please get rid of navigation +- could you please remove going +- could you please remove navigation +- could you please stop navigation +- could you please wipe off going +- could you please wipe off navigation +- could you please wipe out navigation +- could you remove going +- could you remove navigation +- could you stop navigation +- could you wipe off going +- could you wipe off navigation +- could you wipe out going +- could you wipe out navigation +- cut destination +- cut navigating +- cut route +- cut route service +- delete destination +- delete going +- delete navigating +- delete route +- delete route service +- dismiss destination +- dismiss navigation +- dismiss route +- do not go +- do not navigate +- don't go +- don't navigate +- drop destination +- drop navigation +- drop route +- end going +- end navigation +- end wherever going +- erase destination +- erase navigating +- erase route +- erase route service +- forget destination +- forget going +- forget navi +- forget navigating +- forget navigation +- forget route service +- get rid of going +- get rid of navigating +- get rid of route service +- go ahead and cancel navigating +- go ahead and cancel route service +- go ahead and clear going +- go ahead and clear navigation +- go ahead and cut going +- go ahead and cut navigation +- go ahead and delete going +- go ahead and delete navigation +- go ahead and end navigating +- go ahead and end route service +- go ahead and erase going +- go ahead and erase navigation +- go ahead and get rid of navigation +- go ahead and remove going +- go ahead and remove navigation +- go ahead and stop navigation +- go ahead and wipe off going +- go ahead and wipe off navigation +- go ahead and wipe out going +- go ahead and wipe out navigation +- is it possible to cancel navigating +- is it possible to cancel route service +- is it possible to clear going +- is it possible to clear navigation +- is it possible to cut going +- is it possible to delete going +- is it possible to delete navigation +- is it possible to end navigating +- is it possible to end route service +- is it possible to erase going +- is it possible to erase navigation +- is it possible to forget navigation +- is it possible to get rid of navigation +- is it possible to remove going +- is it possible to remove navigation +- is it possible to wipe off navigation +- is it possible to wipe out going +- navigation clear +- navigation delete +- navigation forget +- navigation get rid of +- navigation remove +- navigation stop +- never mind going +- never mind navi +- never mind navigation +- never mind route service +- on second thought cancel navi +- on second thought clear navi +- on second thought cut navi +- on second thought delete navi +- on second thought end navi +- on second thought erase navi +- on second thought forget navi +- on second thought forget navigating +- on second thought get rid of navi +- on second thought never mind navigating +- on second thought remove navi +- on second thought stop navi +- on second thought wipe off navi +- on second thought wipe out navi +- please cancel navigating +- please cancel route service +- please clear going +- please clear navigation +- please cut going +- please cut navigation +- please delete navigation +- please end navigating +- please end route service +- please erase going +- please erase navigation +- please forget navigation +- please get rid of navigation +- please remove going +- please remove navigation +- please stop navigation +- please wipe off going +- please wipe off navigation +- please wipe out going +- please wipe out navigation +- quit destination +- quit navigation +- quit route +- remove destination +- remove going +- remove navigating +- remove route +- remove route service +- reset destination +- reset route +- restart destination +- restart route +- scratch destination +- scratch route +- stop going +- stop navigating +- stop route service +- will you cancel navigating +- will you cancel route service +- will you clear going +- will you clear navigation +- will you cut going +- will you cut navigation +- will you delete going +- will you delete navigation +- will you end navigating +- will you end route service +- will you erase navigation +- will you forget navigation +- will you get rid of navigation +- will you please cancel navigating +- will you please cancel route service +- will you please clear going +- will you please clear navigation +- will you please cut navigation +- will you please delete going +- will you please delete navigation +- will you please end navigating +- will you please end route service +- will you please erase navigation +- will you please get rid of navigation +- will you please remove going +- will you please remove navigation +- will you please stop navigation +- will you please wipe off going +- will you please wipe off navigation +- will you please wipe out going +- will you please wipe out navigation +- will you remove going +- will you remove navigation +- will you stop navigation +- will you wipe off going +- will you wipe off navigation +- will you wipe out going +- will you wipe out navigation +- wipe off destination +- wipe off navigating +- wipe off route +- wipe off route service +- wipe out destination +- wipe out navigating +- wipe out route +- wipe out route service +- would you cancel navigating +- would you cancel route service +- would you clear going +- would you clear navigation +- would you cut going +- would you cut navigation +- would you delete going +- would you delete navigation +- would you end navigating +- would you end route service +- would you erase going +- would you forget navigation +- would you get rid of navigation +- would you please cancel navigating +- would you please cancel route service +- would you please clear going +- would you please clear navigation +- would you please cut going +- would you please cut navigation +- would you please delete going +- would you please delete navigation +- would you please end navigating +- would you please end route service +- would you please erase going +- would you please erase navigation +- would you please forget navigation +- would you please remove going +- would you please remove navigation +- would you please stop navigation +- would you please wipe off going +- would you please wipe off navigation +- would you please wipe out going +- would you please wipe out navigation +- would you remove going +- would you remove navigation +- would you stop navigation +- would you wipe off going +- would you wipe off navigation +- would you wipe out going +- would you wipe out navigation +- get rid of navigating to a {KEYWORD} +- cancel {KEYWORD} navi +- get rid of going to {KEYWORD} in {ADDRESS} +- cancel going to {KEYWORD} in {ADDRESS} +- forget navigating to an {KEYWORD} +- get rid of navigating to an {KEYWORD} +- remove going to {ADDRESS} +- do not take me to {ADDRESS} +- clear navigating to a {KEYWORD} +- cancel taking me to {ADDRESS} in {ADDRESS} +- do not navigate to a {KEYWORD} +- on second thought end going to {KEYWORD} +- clear {KEYWORD} navi +- remove {KEYWORD} navi +- on second thought do not go to {ADDRESS} +- remove taking me to {ADDRESS} in {ADDRESS} +- clear navigating to an {KEYWORD} +- on second thought forget going to {ADDRESS} +- forget {KEYWORD} navi +- on second thought never mind going to {ADDRESS} +- delete going to {ADDRESS} +- end navigating to a {KEYWORD} +- on second thought don't go to {ADDRESS} +- remove navigating to a {KEYWORD} +- on second thought cancel going to {KEYWORD} +- forget taking me to {ADDRESS} in {ADDRESS} +- clear going to {ADDRESS} +- stop going to {KEYWORD} in {ADDRESS} +- forget going to {KEYWORD} in {ADDRESS} +- cancel navigating to a {KEYWORD} +- actually do not go to {ADDRESS} +- never mind navigating to a {KEYWORD} +- clear taking me to {ADDRESS} in {ADDRESS} +- never mind going to {KEYWORD} in {ADDRESS} +- end taking me to {ADDRESS} in {ADDRESS} +- never mind {KEYWORD} navi +- stop {KEYWORD} navi +- delete navigating to a {KEYWORD} +- get rid of going to {ADDRESS} +- clear going to {KEYWORD} in {ADDRESS} +- delete taking me to {ADDRESS} in {ADDRESS} +- don't take me to {ADDRESS} +- end {KEYWORD} navi +- actually cancel going to {KEYWORD} +- forget navigating to a {KEYWORD} +- do not navigate to an {KEYWORD} +- never mind taking me to {ADDRESS} in {ADDRESS} +- don't navigate to an {KEYWORD} +- get rid of {KEYWORD} navi +- stop going to {ADDRESS} +- stop taking me to {ADDRESS} in {ADDRESS} +- forget going to {ADDRESS} +- stop navigating to a {KEYWORD} +- don't navigate to a {KEYWORD} +- actually forget going to {ADDRESS} +- delete navigating to an {KEYWORD} +- delete going to {KEYWORD} in {ADDRESS} +- end going to {KEYWORD} in {ADDRESS} +- actually never mind going to {ADDRESS} +- remove going to {KEYWORD} in {ADDRESS} +- get rid of taking me to {ADDRESS} in {ADDRESS} +- delete {KEYWORD} navi + + +## NAVIGATION_FIND_PARKING +- check a parking garage in my surrounding area +- direct me 2 the parking lot at the the intersection of {ADDRESS=springfield city} and {ADDRESS=disraeli} in that place please +- directions for a parking lot +- find me a parking lot +- find parking by {KEYWORD=brazilian restaurant} +- find parking by {KEYWORD=burger restaurant} +- find parking by {KEYWORD=cambodian restaurant} +- find parking by {KEYWORD=chicken restaurant} +- find parking by {KEYWORD=chinese restaurant} +- find parking by {KEYWORD=french restaurant} +- find parking by {KEYWORD=german restaurant} +- find parking by {KEYWORD=indian restaurant} +- find parking by {KEYWORD=italian restaurant} +- find parking by {KEYWORD=japanese restaurant} +- find parking by {KEYWORD=laotian restaurant} +- find parking by {KEYWORD=mexican restaurant} +- find parking by {KEYWORD=peruvian restaurant} +- find parking by {KEYWORD=spanish restaurant} +- find parking by {KEYWORD=steakhouse restaurant} +- find parking by {KEYWORD=thai restaurant} +- find parking near {KEYWORD=accountant} +- find parking near {KEYWORD=airport} +- find parking near {KEYWORD=aquarium} +- find parking near {KEYWORD=art gallery} +- find parking near {KEYWORD=auto rental place} +- find parking near {KEYWORD=bed and breakfast} +- find parking near {KEYWORD=beer store} +- find parking near {KEYWORD=bus stop} +- find parking near {KEYWORD=charging station} +- find parking near {KEYWORD=child daycare center} +- find parking near {KEYWORD=community centre} +- find parking near {KEYWORD=convenience store} +- find parking near {KEYWORD=country club} +- find parking near {KEYWORD=dentist} +- find parking near {KEYWORD=golf course} +- find parking near {KEYWORD=health club} +- find the nearest parking +- find the nearest parking by {ADDRESS=123 sesame street} +- go to the parking lot +- how about you find a route to a parking lot +- i need to park the {KEYWORD=car} +- is there any parking by {KEYWORD=starbucks} +- is there parking near my office? +- look up a parking lot +- search parking lot in {ADDRESS=kiron city} {ADDRESS=ia} +- show me poor the parking garage on {ADDRESS=mill lane} for not more than 16 pounds +- the parking garage at {ADDRESS=elm springs} and {ADDRESS=coates city} in the area bring us there +- what is the bottom rated parking garage in my vicinity +- where is a parking lot near {KEYWORD=mcdonalds} +- where is the nearest parking garage located + + +## NAVIGATION_FIND_POINTOFINTEREST +- any {KEYWORD=east side mario's} nearby +- are there {KEYWORD=restaurants} nearby {KEYWORD=sydney tower} +- are {KEYWORD=we} near {ADDRESS=400} {ADDRESS=broad street}{ADDRESS=?} +- bring up best rated {KEYWORD=tattoos} nearby for over 165 pounds +- bring up nearest {KEYWORD=landscaping} nearby for no more than 469 pounds +- bring up {ADDRESS=parker street} close by {KEYWORD=plaza las americas} +- bring up {KEYWORD=pistachio biscotti} in the vicinity for no more than 217 euros +- bring up {KEYWORD=speakers} for less than 312 bucks nearby +- bring up the {KEYWORD=townhall} at the intersection of {ADDRESS=benton county} and {ADDRESS=sapulpa} nearby me +- can you recommend a {KEYWORD=bombay palace} near my area +- can you recommend a {KEYWORD=bulgarian restaurant} around here for below 25 bucks +- can you recommend a {KEYWORD=bulk barn} in that country +- can you recommend a {KEYWORD=carpet store} for for about 49 bucks around here to me +- can you recommend a {KEYWORD=cell phone store} for for less than 916 dollars nearby to me +- can you recommend a costliest {KEYWORD=healthy restaurant} in town for above 95 euros +- can you recommend a crappiest {KEYWORD=family diner} near my area for below 357 quid +- can you recommend a crappiest {KEYWORD=real beauty inc} in that country +- can you recommend a {KEYWORD=creole restaurant} here for below 102 euros +- can you recommend a far {KEYWORD=indian restaurant} in that town +- can you recommend a {KEYWORD=kurdish restaurant} in my vicinity +- can you recommend a less costly {KEYWORD=parking lot} in city +- can you recommend a lousy {KEYWORD=smith} around me for me +- can you recommend a low priced {KEYWORD=barsa taberna} around my current location +- can you recommend a lowest priced {KEYWORD=kurdish restaurant} nearby +- can you recommend a lowest priced {KEYWORD=sandwich bar} here +- can you recommend a {KEYWORD=mcdonald} around my current location for me +- can you recommend a {KEYWORD=middle eastern restaurant} in that region for between 171 and 145 dollars to me +- can you recommend a most liked {KEYWORD=merrimack valley health services} near my place to me +- can you recommend a outstanding {KEYWORD=headway hair styles} in town for me +- can you recommend a {KEYWORD=sugar mountain} in the vicinity to me +- can you recommend a {KEYWORD=wild wing} in town +- can you recommend an {KEYWORD=ad agency} in that city for more than 375 pounds +- can you recommend an affordable {KEYWORD=business school} in the vicinity to me +- can you recommend an affordable {KEYWORD=car wash} nearby to me +- can you recommend an {KEYWORD=eclectic restaurant} in town for me +- can you recommend the affordable {KEYWORD=thai restaurant} in town +- can you recommend the best rated {KEYWORD=tattoo parlours} in the surrounding area for between 274 and 116 euros +- can you recommend the better {KEYWORD=afghan restaurants} in that town for no more than 126 euros +- can you recommend the better {KEYWORD=italian restaurant} in city for me +- can you recommend the bottom rated {KEYWORD=jewish restaurants} in city for below 54 dollars +- can you recommend the crappiest {KEYWORD=football stadiums} around here for over 212 quid to me +- can you recommend the far {KEYWORD=clothing store} around me for below 239 quid +- can you recommend the farther {KEYWORD=healthy restaurant} near my current location for not more than 472 bucks +- can you recommend the farthest {KEYWORD=british restaurants} near me for less than 465 pounds +- can you recommend the highest quality {KEYWORD=variety stores} in city for me +- can you recommend the highest ratings {KEYWORD=bar italia} in city +- can you recommend the least popular {KEYWORD=delatour staffing agency} around my area +- can you recommend the less costly {KEYWORD=stripmall} in this area +- can you recommend the mediocre {KEYWORD=davidstea} near my place to me +- can you recommend the mediocre {KEYWORD=ethiopiques ethiopian restaurant} in that area +- can you recommend the mediocre {KEYWORD=organic restaurants} around here for more than 17 quid to me +- can you recommend the most liked {KEYWORD=bicycle shop} near me for me +- can you recommend the most liked {KEYWORD=golf clubs} in town for no more than 233 dollars for me +- can you recommend the most popular {KEYWORD=rbc} in that region +- can you recommend the most popular {KEYWORD=vegetarian restaurant} in the vicinity +- can you recommend the nearest {KEYWORD=camping store} around my location to me +- can you recommend the poor {KEYWORD=bar and lounges} in that region for above 226 dollars for me +- can you recommend the priciest {KEYWORD=uhaul} in this area for me +- can you recommend the worst {KEYWORD=jewish restaurant} in my vicinity for under 235 bucks for me +- can you recommend the worst {KEYWORD=tcby} in the surrounding area +- can you suggest a highly rated {KEYWORD=home repair shop} nearby for between 448 and 500 dollars for me +- can you suggest a more pricey {KEYWORD=chili's} nearby me +- can you suggest an {KEYWORD=appliance store} nearby for no more than 216 bucks +- can you suggest an inexpensive {KEYWORD=american eagle} nearby to me +- can you suggest the cheapest {KEYWORD=chinese restaurants} nearby for above 362 quid for me +- can you suggest the crappiest {KEYWORD=kosher restaurant} nearby for below 63 quid +- can you suggest the highest priced {KEYWORD=michel's baguette french bkry} nearby me +- can you suggest the most low priced {KEYWORD=night club} nearby me +- {KEYWORD=champs-elysees} nearby {KEYWORD=easter road stadium} +- check a {KEYWORD=bistro} at {ADDRESS=edmore} and {ADDRESS=dodge city town} nearby me plz +- check {KEYWORD=bikes} nearby for under 414 quid +- check closer {KEYWORD=tvs} for no more than 444 euros nearby +- check {KEYWORD=fish and chips} nearby for below 318 bucks +- check for a {KEYWORD=pedicure} for about 3158 pounds in my area +- check for a {KEYWORD=rococoa} between 50 and 65 bucks in my area +- check for a {KEYWORD=scooter} for under 2631 bucks in my area +- check for a {KEYWORD=subway} for less than 41 dollars in my area +- check for {KEYWORD=round table pizza} for for not more than 7999 bucks nearby +- check second rate {KEYWORD=financial advice} nearby for between 250 and 331 pounds +- check worse {KEYWORD=bikes} nearby for about 347 bucks +- check {KEYWORD=york minster} nearby +- display close {KEYWORD=package delivery} nearby for over 431 euros +- display far {KEYWORD=i t support} nearby for not more than 129 euros +- display high-priced {KEYWORD=boats} nearby for less than 76 pounds +- display near {KEYWORD=scooters} nearby for more than 433 quid +- display nearest {KEYWORD=dishwashers} for over 52 pounds nearby +- display {KEYWORD=sound bars} for more than 163 quid nearby +- display the best reviewed {KEYWORD=national naval aviation museum} nearby +- find a {KEYWORD=dinner restaurant} at the intersection of {ADDRESS=athens} and {ADDRESS=montezuma town} nearby +- find a {KEYWORD=grocery store} +- find a {KEYWORD=pharmacy} +- find and show me where a {KEYWORD=back yard burgers} is nearby me +- find and show me where a {KEYWORD=rus fast foods} is nearby me +- find {KEYWORD=bakery} +- find {KEYWORD=chinese restaurant} +- find {KEYWORD=chinese shop} +- find {KEYWORD=coffee shop} +- find costliest {KEYWORD=sandwiches} for about 301 quid nearby me +- find high priced {KEYWORD=tax advice} for no more than 421 pounds nearby +- find low-priced {KEYWORD=dry cleaning} for over 57 pounds nearby +- find me a {KEYWORD=coffee shop} in town +- find the closest {KEYWORD=bakeries} nearby not more than 58 euros +- find the closest {KEYWORD=therapists} nearby not more than 138 euros +- get a {KEYWORD=bakery} +- get a {KEYWORD=bath and body shop} +- get a {KEYWORD=brasserie} +- get a {KEYWORD=brazilian restaurant} +- get a {KEYWORD=clothing store} +- get a {KEYWORD=delicatessen} +- get a {KEYWORD=family restaurant} +- get a {KEYWORD=fire station} +- get a {KEYWORD=firearms store} +- get a {KEYWORD=gift shop} +- get a {KEYWORD=home decor store} +- get a {KEYWORD=latin american restaurant} +- get a {KEYWORD=medical school} +- get a {KEYWORD=party supply store} +- get me a {KEYWORD=men's fashion store} +- get me a {KEYWORD=movie theater} +- get me a {KEYWORD=pastry shop} +- get me a {KEYWORD=south african restaurant} +- get me a {KEYWORD=spanish restaurant} +- get me a {KEYWORD=theater} +- get me a {KEYWORD=vegan restaurant} +- get me an {KEYWORD=academy} +- get me an {KEYWORD=accountant} +- get me an {KEYWORD=ethnic grocery store} +- get me an {KEYWORD=optometrist} +- get me {KEYWORD=baconator} +- get me {KEYWORD=belarusan food} +- get me {KEYWORD=buta palace} +- get me {KEYWORD=cambodian} +- i am looking for a {KEYWORD=altman electronics} nearby +- i am looking for a {KEYWORD=carpenter} for no more than than 667 pounds nearby +- i am looking for a {KEYWORD=towing truck} for no more than than 10 pounds nearby +- i am looking for finest {KEYWORD=financial advice} in town +- i am looking for good {KEYWORD=casino} in town +- i am looking for good {KEYWORD=chapel} in town +- i am looking for good {KEYWORD=children's clothing store} in town +- i am looking for good {KEYWORD=computer store} in town +- i am looking for good {KEYWORD=guesthouse} in town +- i am looking for good {KEYWORD=service station} in town +- i am looking for good {KEYWORD=skating rink} in town +- i am looking for good {KEYWORD=stripmall} in town +- i am looking for good {KEYWORD=tailor} in town +- i am looking for high cost {KEYWORD=barbeques} +- i am looking for {KEYWORD=i t support} in that location +- i am looking for {KEYWORD=kernels} in the area +- i am looking for {KEYWORD=lebanese restaurants} nearby +- i am looking for less expensive {KEYWORD=fast food restaurants} in city for over 378 bucks +- i am looking for low-cost {KEYWORD=package delivery} around here for about 255 bucks +- i am looking for more close {KEYWORD=tattoos} in town +- i am looking for most cheap {KEYWORD=package delivery} here +- i am looking for most fairly priced {KEYWORD=dvd players} in that area for below 165 dollars +- i am looking for {KEYWORD=pie} here +- i am looking for places i can buy {KEYWORD=night tables} +- i am looking for places i can {KEYWORD=repair my computer} +- i am looking for places to buy {KEYWORD=motorcycles} +- i am looking for {KEYWORD=seafood restaurants} in city +- i need directions to {KEYWORD=bob evans} +- i want a {KEYWORD=train station} nearby +- i want to go to {KEYWORD=table top mountain} nearby {ADDRESS=kingsborough 6th walk} and {ADDRESS=raleigh place} {ADDRESS=basseterre} +- i want you to locate {KEYWORD=artistic hair lounge} nearby {KEYWORD=the kaaba} +- i would like to pick up a {KEYWORD=dk display} in my area +- i would like to pick up a {KEYWORD=markel canada} in the surrounding area +- i would like to pick up a worst {KEYWORD=freshii} in my vicinity +- i would like to pick up bad {KEYWORD=quads} in that city for not more than 120 quid +- i would like to pick up best ratings {KEYWORD=gingerbread} in that location for no more than 295 bucks +- i would like to pick up {KEYWORD=car detailing} +- i would like to pick up close {KEYWORD=spring rolls} in city +- i would like to pick up close {KEYWORD=tvs} nearby for no more than 429 bucks +- i would like to pick up costliest {KEYWORD=vegetable lasagna} +- i would like to pick up crappy {KEYWORD=blenders} for less than 406 dollars +- i would like to pick up crappy {KEYWORD=tvs} in town for above 282 pounds +- i would like to pick up {KEYWORD=dry cleaning} nearby +- i would like to pick up farther {KEYWORD=express delivery} in my surrounding area +- i would like to pick up farthest {KEYWORD=tvs} near me for not more than 143 quid +- i would like to pick up less pricey {KEYWORD=tvs} in town +- i would like to pick up lowest rated {KEYWORD=coffee machines} near my current location +- i would like to pick up mediocre {KEYWORD=barbeques} in the town +- i would like to pick up more close {KEYWORD=tax advice} nearby +- i would like to pick up most economical {KEYWORD=onion rings} in my surrounding area +- i would like to pick up most expensive {KEYWORD=express delivery} +- i would like to pick up most expensive {KEYWORD=tables} nearby me +- i would like to pick up most mediocre {KEYWORD=baklava} around my location +- i would like to pick up {KEYWORD=scooters} in city +- i would love for you to show cheapest {KEYWORD=i t support} for more than 167 quid nearby +- i'd like you to find poi nearby me +- i'd like you to show me economical {KEYWORD=dressers} for about 420 dollars nearby +- i'd like you to show mediocre {KEYWORD=dry cleaning} nearby for not more than 434 euros +- i'd love for you to display nearer {KEYWORD=dry cleaning} nearby me for less than 20 dollars +- i'd love for you to show me more pricey {KEYWORD=dry cleaning} for no more than 309 quid nearby +- i'd love for you to view {KEYWORD=poutine} nearby for less than 44 euros +- i'd love the highly rated {KEYWORD=kindergartens} nearby +- i'd really like you to find {KEYWORD=pizza crust} for over 494 pounds nearby +- i'd really like you to find {KEYWORD=scooters} nearby for above 292 dollars +- i'd really like you to show me {KEYWORD=scooters} nearby for no more than 58 euros +- i'll pricey {KEYWORD=men's fashion stores} nearby +- is it possible to show {KEYWORD=sphinx} nearby +- is there a good place to buy affordable {KEYWORD=apple strudel} nearby +- is there a good place to buy affordable {KEYWORD=braised pork carnitas} nearby +- is there a good place to buy affordable {KEYWORD=donuts} nearby +- is there a good place to find bad {KEYWORD=vegetarian restaurant} nearby +- is there a good place to find good {KEYWORD=healthy restaurant} nearby +- is there a high-cost place to find poorest {KEYWORD=hand mixers} nearby +- is there a low-cost place to find top {KEYWORD=phones} nearby +- is there a most popular {KEYWORD=bistro} nearby for under 351 euros +- is there a nearer {KEYWORD=carberry intenational inc} nearby +- is there a rated place to find bottom rated {KEYWORD=dishwashers} nearby +- is there a worse {KEYWORD=pakistani restaurant} nearby {KEYWORD=garden of the gods} +- is there {KEYWORD=kazakh cuisine} nearby +- is there {KEYWORD=pakistani cuisine} nearby +- {KEYWORD=lion's choice} nearby the the junction of {ADDRESS=40th street} and {ADDRESS=mcdonald avenue} {ADDRESS=burt county} +- location of {KEYWORD=mantha insurance brokers ltd} nearby the intersection of {ADDRESS=losee terrace} and {ADDRESS=moore street} {ADDRESS=valentine city} +- location of {KEYWORD=navajo national monument} nearby the the intersection of {ADDRESS=forest drive} and {ADDRESS=riverside drive} in {ADDRESS=mountain home} {ADDRESS=yt} +- please a {KEYWORD=temple} nearby the the intersection {ADDRESS=kenmore court} and {ADDRESS=krier place} {ADDRESS=glenville} {ADDRESS=ga} +- please check {KEYWORD=marble slab creamery} nearby +- please find {ADDRESS=middagh street} nearby me +- please {KEYWORD=frost bank tower} nearby the the intersection {ADDRESS=beach 37th street} and {ADDRESS=brighton 3 place} in {ADDRESS=east chicago city} {ADDRESS=ga} +- please show me {ADDRESS=875} {ADDRESS=new utrecht avenue} nearby +- plz show me the {KEYWORD=beer store} at the intersection of {ADDRESS=hawarden} and {ADDRESS=adams village} nearby +- poi nearby {KEYWORD=palace hotel} +- put {KEYWORD=aeropostale} {ADDRESS=winnipeg} {ADDRESS=ontario} on a map +- put {KEYWORD=chernobyl npp} {ADDRESS=ainsworth city} {ADDRESS=south carolina} on a map +- put {KEYWORD=columbia lake village} {ADDRESS=kitchener} {ADDRESS=ontario} on a map +- put {KEYWORD=columbus city schools central enrollment center} {ADDRESS=owen sound} {ADDRESS=ontario} on a map +- put {KEYWORD=dk display} {ADDRESS=clarendon city} {ADDRESS=kentucky} on a map +- put {KEYWORD=eaton centre} {ADDRESS=monroe village} {ADDRESS=sd} on a map +- put {KEYWORD=exhale} {ADDRESS=kitchener} {ADDRESS=ontario} on a map +- put {KEYWORD=fazoli's italian foods} {ADDRESS=trimble} on a map +- put {KEYWORD=frat burger} {ADDRESS=chelsea} on a map +- put {KEYWORD=harrison park} {ADDRESS=sapulpa} {ADDRESS=pa} on a map +- put {KEYWORD=heel boy} {ADDRESS=bernard city} {ADDRESS=nv} on a map +- put {KEYWORD=hue's kitchen} {ADDRESS=centre hall} on a map +- put {KEYWORD=jefferson memorial} {ADDRESS=healy} on a map +- put {KEYWORD=kernels} {ADDRESS=montrose ghent} on a map +- put {KEYWORD=leo j. ryan federal building} {ADDRESS=algonac} on a map +- put {KEYWORD=lowes} {ADDRESS=ottawa} {ADDRESS=ontario} on a map +- put {KEYWORD=marble slab creamery} {ADDRESS=kiawah island} on a map +- put {KEYWORD=onroute} {ADDRESS=ankara} {ADDRESS=ontario} on a map +- put {KEYWORD=remax} {ADDRESS=paris} {ADDRESS=ontario} on a map +- put {KEYWORD=romano's macaroni grill} {ADDRESS=edgartown} on a map +- put {KEYWORD=sanraku} {ADDRESS=horseheads} on a map +- put {KEYWORD=subway} {ADDRESS=new century} on a map +- put {KEYWORD=td bank} {ADDRESS=douglas} {ADDRESS=ontario} on a map +- put {KEYWORD=td bank} {ADDRESS=gage county} {ADDRESS=ontario} on a map +- put {KEYWORD=td bank} {ADDRESS=harrold town} {ADDRESS=ontario} on a map +- put {KEYWORD=td bank} {ADDRESS=hudson} {ADDRESS=ontario} on a map +- put {KEYWORD=td bank} {ADDRESS=kinston town} {ADDRESS=ontario} on a map +- put {KEYWORD=td bank} {ADDRESS=nulato} {ADDRESS=ontario} on a map +- put {KEYWORD=td bank} {ADDRESS=ohio county} {ADDRESS=ontario} on a map +- put {KEYWORD=td bank} {ADDRESS=shoreham village} {ADDRESS=ontario} on a map +- put {KEYWORD=the co-operators} {ADDRESS=balance of brown county} {ADDRESS=nebraska} on a map +- put {KEYWORD=the works} {ADDRESS=gas city city} {ADDRESS=mt} on a map +- put {KEYWORD=the works} {ADDRESS=tyrone} {ADDRESS=ny} on a map +- put {KEYWORD=trip central} {ADDRESS=south jordan city} {ADDRESS=id} on a map +- put {KEYWORD=williams} {ADDRESS=vineland} on a map +- put {KEYWORD=ymca} {ADDRESS=boston} {ADDRESS=ontario} on a map +- put {KEYWORD=yogenfruz} {ADDRESS=upper lake} on a map +- recommend a {KEYWORD=atv} for about 71 euros in my area +- recommend a {KEYWORD=chair} for less than 21 pounds in my area +- recommend a {KEYWORD=charging station} nearby me +- recommend a cheap {KEYWORD=travel agent} in the vicinity to me +- recommend a {KEYWORD=cheese boutique & delicatessen} here +- recommend a {KEYWORD=church} in my vicinity +- recommend a close {KEYWORD=ruby watchco} in town +- recommend a {KEYWORD=dishwasher} for less than 712 bucks in my area +- recommend a {KEYWORD=dishwasher} for no more than 759 dollars in my area +- recommend a {KEYWORD=dishwasher} for not more than 5564 euros in my area +- recommend a {KEYWORD=dresser} for more than 55 dollars in my area +- recommend a {KEYWORD=dvd player} for about 8133 quid in my area +- recommend a finest {KEYWORD=albanian restaurant} here to me +- recommend a {KEYWORD=fresh-co} in town for me +- recommend a further {KEYWORD=shopping mall} around here +- recommend a {KEYWORD=german restaurant} in the vicinity to me +- recommend a {KEYWORD=gift shop} around my location for no more than 433 bucks for me +- recommend a {KEYWORD=glen j sytnyk - realtor} in my surrounding area +- recommend a {KEYWORD=haircut} for under 6373 dollars in my area +- recommend a highest priced {KEYWORD=barbecue restaurant} in town to me +- recommend a {KEYWORD=lamp} for not more than 9945 pounds in my area +- recommend a less expensive {KEYWORD=antique shop} in city for no more than 81 dollars to me +- recommend a most cheap {KEYWORD=canada one travel} in the city +- recommend a most costly {KEYWORD=gold mirror} nearby me to me +- recommend a most fairly priced {KEYWORD=a1 car cleaning} nearby to me +- recommend a most pricey {KEYWORD=menchie'slab} in city for me +- recommend a {KEYWORD=motorcycle} between 3100 and 7500 quid in my area +- recommend a {KEYWORD=ood_goods} for about 262 pounds in my area +- recommend a {KEYWORD=ood_goods} for less than 985 quid in my area +- recommend a {KEYWORD=ood_goods} for no more than 10 quid in my area +- recommend a {KEYWORD=pho restaurant} around here +- recommend a poor {KEYWORD=long john silver's} in city to me +- recommend a {KEYWORD=sound bar} for under 7676 quid in my area +- recommend a top ratings {KEYWORD=il panettone fine italian food} here +- recommend a top ratings {KEYWORD=pack rat hobbies & collectibles} in city +- recommend an {KEYWORD=academy} in the vicinity to me +- recommend an {KEYWORD=indian restaurant} in that city for me +- recommend {KEYWORD=bruno's restaurant} near me +- recommend {KEYWORD=ruby tuesdays} in this area +- recommend the closest {KEYWORD=resorts} in that region to me +- recommend the costly {KEYWORD=indian restaurant} in town to me +- recommend the farther {KEYWORD=sandwich shops} in the town for not more than 288 pounds +- recommend the further {KEYWORD=camping stores} around my location for more than 164 euros +- recommend the {KEYWORD=grocery store} in city for less than 356 bucks to me +- recommend the {KEYWORD=hardware store} around my current location to me +- recommend the high-cost {KEYWORD=pizzerias} in that area +- recommend the high-cost {KEYWORD=the guanaquits restaurant} in that town for me +- recommend the least popular {KEYWORD=kernels} here for me +- recommend the less pricey {KEYWORD=afghan restaurant} in that place for not more than 403 euros for me +- recommend the lousy {KEYWORD=afghan restaurant} in the surrounding area for more than 118 dollars to me +- recommend the low priced {KEYWORD=clinic} in city for me +- recommend the low-cost {KEYWORD=softmoc} nearby for me +- recommend the most inexpensive {KEYWORD=outsource computronics} in that region to me +- recommend the poorest quality {KEYWORD=bar and grills} in my surrounding area for between 353 and 478 pounds +- recommend the poorest {KEYWORD=td bank financial group} in that town +- recommend the second rate {KEYWORD=massage parlor} nearby for above 413 dollars +- recommend the top rated {KEYWORD=subway entrances} in the vicinity +- recommend the top rating {KEYWORD=classic restaurant} in city for between 399 and 325 dollars +- recommend the top-rated {KEYWORD=houston avenue bar and grill} in the vicinity +- recommend the worse {KEYWORD=campground} here to me +- search {KEYWORD=boston market} at the crossroads of {ADDRESS=washington} and {ADDRESS=wardsville} nearby please +- search {KEYWORD=mashed potatoes} for less than 372 pounds nearby +- search top rating {KEYWORD=tax advice} nearby for between 351 and 169 quid +- search {KEYWORD=tvs} for not more than 250 bucks nearby +- search worse {KEYWORD=package delivery} for above 369 euros nearby +- show a {KEYWORD=department store} nearby {KEYWORD=newgrange} +- show {KEYWORD=cici's pizza} nearby between 240 and 860 dollars +- show {KEYWORD=financial advice} for over 336 pounds nearby +- show me a {KEYWORD=coffee shop} in town +- show me a {KEYWORD=houseware store} place nearby +- show me a {KEYWORD=list of pharmacies} in the area +- show me a {KEYWORD=taco} place nearby +- show me cheaper {KEYWORD=boats} nearby for not more than 232 dollars +- show me {KEYWORD=mr rooter plumbing} at {ADDRESS=fowler city} and {ADDRESS=cardigan} nearby plz +- show me {KEYWORD=nouvelle cuisine restaurant} for not more than 23 quid nearby +- show me {KEYWORD=scooters} nearby for above 86 bucks +- show me {KEYWORD=sesame noodles} for between 229 and 91 bucks nearby +- show {KEYWORD=parma ham} nearby for below 17 bucks +- show {KEYWORD=t.g.i. friday's} nearby between 320 and 640 quid +- show {KEYWORD=the co-operators} nearby for over 79 euros +- show the location of {KEYWORD=chic-fil-a} nearby me +- show the location of {KEYWORD=gettysburg national military park} nearby me +- show the location of {KEYWORD=marble slab creamery} nearby me +- show the location of {KEYWORD=pizza hut} nearby me +- show the location of {KEYWORD=shalom meir tower} nearby me +- show where is {KEYWORD=swan} nearby the intersection of {ADDRESS=sherman street} and {ADDRESS=oceanview avenue} {ADDRESS=forestburg} +- suggest a {KEYWORD=legal sea foods} for over 44 dollars nearby to me +- suggest a {KEYWORD=mars bar and restaurant} for over 3 bucks nearby to me +- suggest a most fairly priced {KEYWORD=town milk & variety} nearby +- suggest a {KEYWORD=peartree restaurant} between 35 and 75 dollars nearby to me +- suggest an expensive {KEYWORD=yoga class} nearby me to me +- suggest {KEYWORD=pho cuisine} for for more than 3722 dollars nearby to me +- suggest {KEYWORD=pho cuisine} for for over 82 quid nearby to me +- suggest the worst {KEYWORD=shawarma} nearby to me +- the {KEYWORD=glassmaker} at {ADDRESS=pachuta town} and {ADDRESS=burke county} nearby find that for me +- try to bring up {KEYWORD=quads} for between 224 and 134 euros nearby + + +## NAVIGATION_ROUTE_FROM_X_TO_Y +- {ADDRESS=1286} {ADDRESS=sycamore street} {ADDRESS=burrton city} in {ADDRESS=nj} how can i go there +- {ADDRESS=92} {ADDRESS=beech street} not too far from {KEYWORD=great mosque of djenn} in {ADDRESS=balance of oliver county} guide me there +- {ADDRESS=93} {ADDRESS=bay 40th street} {ADDRESS=71400} {ADDRESS=payson village} {ADDRESS=north korea} +- {ADDRESS=936} {ADDRESS=howard alley} {ADDRESS=ulm town} in {ADDRESS=maryland} +- {ADDRESS=950} {ADDRESS=rosewood drive} in {ADDRESS=kenmore city} +- {ADDRESS=99th fwy} and {ADDRESS=rd. t} in {ADDRESS=appomattox} +- {ADDRESS=99th ter} and {ADDRESS=west lawrence cswy} please +- {KEYWORD=a and w} {ADDRESS=lecompton} find it please +- a {KEYWORD=bakery} at {ADDRESS=1715} {ADDRESS=riverdale avenue} {ADDRESS=stone park village} {ADDRESS=iowa} +- a {KEYWORD=bakery} close to {ADDRESS=bay 14th street} and {ADDRESS=route 44} in {ADDRESS=boulder city city} {ADDRESS=oregon} tell me how i would drive there plz +- a {KEYWORD=bakery} drive us there +- a {KEYWORD=bar and grill} not so far from {KEYWORD=fulton opera house} +- a {KEYWORD=bar and lounge} at {ADDRESS=1262} {ADDRESS=schenck court} {ADDRESS=46186} {ADDRESS=freeman city} {ADDRESS=fl} {ADDRESS=sri lanka} +- a {KEYWORD=bar and lounge} at {ADDRESS=633} {ADDRESS=bay 49th street} {ADDRESS=lawrence county} {ADDRESS=illinois} +- a {KEYWORD=railroad station} at {ADDRESS=juneau} and {ADDRESS=new windsor} in that country find it for me +- a {KEYWORD=railroad station} at the intersection of {ADDRESS=balance of beaver county} and {ADDRESS=balance of appling county} in that town directions please +- a {KEYWORD=resort} at {ADDRESS=333} {ADDRESS=bay 32nd street} {ADDRESS=in} {ADDRESS=lauderhill city} in how do i get there +- a {KEYWORD=restaurant} at {ADDRESS=o'brien place} and {ADDRESS=malta street} in {ADDRESS=les boules} {ADDRESS=north carolina} plz +- a {KEYWORD=water park} at {ADDRESS=356} {ADDRESS=cherry lane} {ADDRESS=49433} {ADDRESS=mcadenville town} {ADDRESS=pe} {ADDRESS=germany} show me how to get there +- a way to {KEYWORD=skool} at {ADDRESS=monitor street} and {ADDRESS=hewes street} please +- a {KEYWORD=yoga class} at {ADDRESS=331} {ADDRESS=5th street north} {ADDRESS=77187} {ADDRESS=logan city} {ADDRESS=missouri} {ADDRESS=republic of congo} +- {ADDRESS=abu dhabi} map +- {ADDRESS=acadia parish} {ADDRESS=nigeria} where is that +- actually start going to {KEYWORD=anchor inn} +- actually start going to {KEYWORD=ayers rock} +- actually start going to {KEYWORD=berlaymont building} +- actually start going to {KEYWORD=bucharest mall} +- actually turn on going to {KEYWORD=golden gate bridge} +- actually turn on going to {KEYWORD=jefferson arch} +- actually turn on going to {KEYWORD=louvre} +- actually turn on going to {KEYWORD=point lobos state reserve} +- {KEYWORD=aeropostale} on {ADDRESS=franklin court} in city plz direct me there +- affordable {KEYWORD=dress pants} in {ADDRESS=mcclusky city} +- affordable {KEYWORD=dress pants} in {ADDRESS=ramona town} +- {KEYWORD=al-aqsa mosque} at {ADDRESS=1421} {ADDRESS=linda lane} {ADDRESS=66096} {ADDRESS=washburn city} in {ADDRESS=czech republic} +- {KEYWORD=al-aqsa mosque} at {ADDRESS=967} {ADDRESS=navy walk} {ADDRESS=52279} in {ADDRESS=columbus village} give me directions there +- {KEYWORD=albert college} at {ADDRESS=eglinton east dr} and {ADDRESS=k vis} show me where it is +- {KEYWORD=alhambra} at {ADDRESS=56th street} {ADDRESS=uintah} +- {KEYWORD=allan gardens conservatory} in {ADDRESS=milledgeville} +- {KEYWORD=always plumbing & heating ltd} at {ADDRESS=fort liard} and {ADDRESS=alexandria} around me navigation please +- {KEYWORD=amir} at {ADDRESS=north blvd} and {ADDRESS=cir g} please +- {KEYWORD=amsouth tower} close-by {ADDRESS=mckibbin street} in {ADDRESS=bryce canyon city town} {ADDRESS=florida} please +- an {KEYWORD=afghan restaurant} at {ADDRESS=1103} {ADDRESS=woods place} in {ADDRESS=idaho springs city} +- an {KEYWORD=afghan restaurant} at {ADDRESS=467} {ADDRESS=adams street} {ADDRESS=26108} {ADDRESS=mannington} in {ADDRESS=saint vincent and the grenadines} +- an {KEYWORD=albanian restaurant} at {ADDRESS=3rd avenue} and {ADDRESS=brighton 5th court} in {ADDRESS=river heights} plz +- an {KEYWORD=albanian restaurant} not that far from {ADDRESS=alabama avenue} in {ADDRESS=ryley} {ADDRESS=georgia} please +- an {KEYWORD=all you can eat buffet} on {ADDRESS=sherlock place} +- an {KEYWORD=art store} in city of {ADDRESS=nelson county} +- an {KEYWORD=asian restaurant} at {ADDRESS=407} {ADDRESS=12th street} {ADDRESS=anamoose city} {ADDRESS=kentucky} {ADDRESS=us} +- {KEYWORD=angel falls} on {ADDRESS=sheffield avenue} and {ADDRESS=bayard street} +- are there {KEYWORD=restaurants} not too far from {KEYWORD=walmart} +- are you able to find a map of {KEYWORD=house of prime rib} locations in {ADDRESS=bay de verde} +- {ADDRESS=argyle road} in my area +- {KEYWORD=arizona-sonora desert museum} at {ADDRESS=1877} {ADDRESS=division avenue} {ADDRESS=bean station city} {ADDRESS=ga} in {ADDRESS=mauritania} +- {ADDRESS=arlington county} map +- {KEYWORD=ashabori} at {ADDRESS=981} at {ADDRESS=van siclen court} +- {KEYWORD=ashabori} at {ADDRESS=weldon street} and {ADDRESS=route 20} {ADDRESS=cuyahoga heights village} please +- {ADDRESS=balance of rush county} {ADDRESS=latvia} tell me how i would drive there +- {ADDRESS=balboa road north} and {ADDRESS=l ave.} please +- {ADDRESS=bamako} location +- {KEYWORD=bank of china tower} at the junction of {ADDRESS=kingsborough 1st walk} and {ADDRESS=beekman place} +- {ADDRESS=briarwood court} {ADDRESS=meservey} +- {ADDRESS=briarwood drive} and {ADDRESS=brevoort place} please +- {ADDRESS=brighton 4 place} and {ADDRESS=canton court} is the intersection +- bring me to {ADDRESS=736} {ADDRESS=jamison lane} {ADDRESS=camargo village} {ADDRESS=52132} +- bring me to an {KEYWORD=art gallery} +- bring me to an {KEYWORD=art museum} +- bring me to {KEYWORD=azadi tower} at {ADDRESS=wjtesvrfx} and {ADDRESS=dbargpnwmsif} +- bring me to {ADDRESS=bragg court} +- {ADDRESS=brown street} and {ADDRESS=2nd street north} please +- can you suggest the {KEYWORD=glassmaker} in the town for under 121 pounds +- can you suggest the highest cost {KEYWORD=long & mcquade} in city +- can you suggest the least popular {KEYWORD=sushi bar} in that place for between 483 and 455 bucks +- can you suggest the worst {KEYWORD=pizza hut} in city to me +- can you suggest the worst {KEYWORD=pizza hut} in the city to me +- can you suggest the worst {KEYWORD=richardson building} in the area to me +- {KEYWORD=canadian war museum} at {ADDRESS=1512} {ADDRESS=just court} {ADDRESS=mannford} in {ADDRESS=minnesota} +- {ADDRESS=canal blvd.} and {ADDRESS=l cswy} navigate me there +- {KEYWORD=can-west global place} at {ADDRESS=1551} {ADDRESS=4th avenue} in {ADDRESS=st. george} {ADDRESS=south dakota} {ADDRESS=saint vincent and the grenadines} +- {ADDRESS=cape coral city} map +- {KEYWORD=capella tower} at {ADDRESS=31} {ADDRESS=furman avenue} {ADDRESS=74889} {ADDRESS=balance of cedar county} in {ADDRESS=martinique} +- {KEYWORD=capitol} at {ADDRESS=castleberry town} and {ADDRESS=columbus} +- {KEYWORD=caplansky's deli and catering} in {ADDRESS=sabetha} on {ADDRESS=44th street east} find it +- {KEYWORD=captain d's} at {ADDRESS=main street west} and {ADDRESS=49th street} {ADDRESS=lindsay} {ADDRESS=new mexico} please +- {ADDRESS=carbonear} map +- {KEYWORD=carl's jr.} closest {ADDRESS=brighton 1st terrace} {ADDRESS=gloucester} {ADDRESS=ny} +- {KEYWORD=champions golf course} at the intersection {ADDRESS=schweikerts walk} and {ADDRESS=westminster road} +- {KEYWORD=champions golf course} at the intersection {ADDRESS=walnut avenue} and {ADDRESS=92nd street} +- {ADDRESS=changchun} take me there with the most scenic route +- {ADDRESS=charlotte court house town} {ADDRESS=sc} start navigation +- {KEYWORD=chateau laurier} at {ADDRESS=1916} {ADDRESS=maujer street} in {ADDRESS=aberdeen} +- {KEYWORD=cheap jack's} at {ADDRESS=rutland county} and {ADDRESS=balance of love county} in city can you guide me there +- check furthest {KEYWORD=car repair} for more than 362 dollars in town +- check {KEYWORD=gameknight games and cool stuff} not far from {KEYWORD=capital tower} +- check {KEYWORD=gasometer} at {ADDRESS=e 41st} and {ADDRESS=cambridge drive} +- check lowly rated a {KEYWORD=dutch restaurant} in my surrounding area +- check map results of {ADDRESS=wesleyville} {ADDRESS=mexico} +- check most pricey {KEYWORD=gingerbread} here for more than 50 dollars +- check {KEYWORD=mr rooter plumbing} on {ADDRESS=palmetto street} in {ADDRESS=gering} +- check {KEYWORD=naan bread} in town for not more than 317 pounds +- check {KEYWORD=the pita pit} on {ADDRESS=jackson street} +- {KEYWORD=chili} +- {KEYWORD=chili's} at {ADDRESS=t blvd} and {ADDRESS=86th boulevard south} please +- {KEYWORD=chipotle mexican grill} at {ADDRESS=o gtwy} and {ADDRESS=l ave.} show me where it is +- {KEYWORD=chipotle mexican grill} {ADDRESS=correctionville} find it please +- {KEYWORD=chris mellor insurance brokers ltd} around me can you guide me there +- {KEYWORD=chrysler building} at {ADDRESS=155} {ADDRESS=penn street} {ADDRESS=musgrave harbour} {ADDRESS=50587} show me how to get there +- {KEYWORD=city gate} at {ADDRESS=51st pl. b} and {ADDRESS=course j} show me where it is +- {KEYWORD=city kitchen restaurant n bar} at the crossroads of {ADDRESS=wood lake village} and {ADDRESS=balance of bailey county} here where is it +- city of {ADDRESS=balance of edgecombe county} guide me there +- city of {ADDRESS=boyle} drive me there +- city of {ADDRESS=dellroy village} give me directions +- city of {ADDRESS=eden village} how can i go there +- city of {ADDRESS=erlanger} directions please +- city of {ADDRESS=haywood county} tell me how i would drive there +- city of {ADDRESS=lonoke city} navigation please +- {KEYWORD=city tower} at {ADDRESS=856} {ADDRESS=van sinderen avenue} {ADDRESS=kaysville city} {ADDRESS=in} in +- {ADDRESS=clock tower road} and {ADDRESS=e noble st} in {ADDRESS=new perlican} +- {KEYWORD=cluny bistro and boulangerie} at {ADDRESS=n dr.} and {ADDRESS=36th way z} navigate me there +- {KEYWORD=cn tower} in {ADDRESS=toronto} search for it +- {KEYWORD=coconut cream pie} not too far from {ADDRESS=marquette city} +- {ADDRESS=coffey street} within walking distance of {KEYWORD=uob plaza one} in {ADDRESS=balance of morrow county} direct me there +- {KEYWORD=college park} at {ADDRESS=crawford avenue} {ADDRESS=balance of riley county} +- {ADDRESS=columbia} and {ADDRESS=university avenue} please +- {KEYWORD=columbus downtown high school} at {ADDRESS=62nd street} and {ADDRESS=route 20} please +- could you send me the directions to {ADDRESS=belmont} +- could you send me the directions to {ADDRESS=granby} +- could you send me the directions to {ADDRESS=gustavia} +- could you show {ADDRESS=715} {ADDRESS=cranberry street} in the vicinity +- could you show me {ADDRESS=686} {ADDRESS=5th street east} in city +- could you view {ADDRESS=loudonville village} {ADDRESS=spain} +- {ADDRESS=covert street} and {ADDRESS=brighton 5th walk} in {ADDRESS=les boules} +- {KEYWORD=cozy kitty accommodations} at {ADDRESS=highland view avenue} and {ADDRESS=laurel lane} +- {KEYWORD=cracker barrel} on {ADDRESS=bainbridge street} and {ADDRESS=creamer street} plz +- {ADDRESS=crawford avenue} and {ADDRESS=7th avenue} in {ADDRESS=newark village} +- {ADDRESS=cswy e} and {ADDRESS=blvd x} navigate me there +- {KEYWORD=delta hotel} {ADDRESS=humboldt street} {ADDRESS=la grange park village} {ADDRESS=ontario} find it please +- {KEYWORD=delta hotel} {ADDRESS=reeve place} {ADDRESS=climax city} {ADDRESS=ontario} find it please +- {KEYWORD=delta hotel} {ADDRESS=schoolhouse lane} {ADDRESS=fairfield} {ADDRESS=ontario} find it please +- {ADDRESS=detroit} {ADDRESS=ontario} {ADDRESS=canada} show me it +- {KEYWORD=devil's tower} at {ADDRESS=brighton 8th place} and {ADDRESS=duryea place} in {ADDRESS=pelahatchie town} {ADDRESS=north dakota} plz +- {ADDRESS=dewitt avenue} and {ADDRESS=brook lane} in {ADDRESS=etna borough} please +- {KEYWORD=dhanbad} at {ADDRESS=94} {ADDRESS=lawrence street} {ADDRESS=94375} {ADDRESS=halkirk} {ADDRESS=idaho} {ADDRESS=aruba} +- {ADDRESS=dickson county} map +- diplay the nearest {KEYWORD=banks} in this area +- diplay the nearest {KEYWORD=banks} in town +- direct me to {KEYWORD=noah's bagels} +- direct me to {KEYWORD=panera bread} +- direct me to {ADDRESS=parkville avenue} +- direct me to {ADDRESS=pin oak drive} +- direct me with the shortest route to {ADDRESS=rocanville} +- direct me with the shortest route to {ADDRESS=waynesboro city} +- direct me with the shortest route to {ADDRESS=white county} +- directions 2 {ADDRESS=dooley street} +- directions 2 {ADDRESS=route 32} +- directions 2 {KEYWORD=rus fast foods} +- directions for {KEYWORD=mcdonald} +- directions for {ADDRESS=mount vernon city} +- directions for {ADDRESS=oxford road} +- directions for {KEYWORD=potatopia} +- directions for {ADDRESS=schenectady avenue} +- display {KEYWORD=car maintenance} for between 77 and 148 dollars around me +- display {KEYWORD=car maintenance} here for below 315 euros +- display {KEYWORD=chairs} in city for no more than 63 dollars +- display {KEYWORD=chandeliers} for under 456 dollars +- display {KEYWORD=chandeliers} here for no more than 276 pounds +- display cheaper the {KEYWORD=car repair shop} around my current location +- display {KEYWORD=chicken fingers} for more than 320 pounds in {ADDRESS=balance of eddy county} +- drive me to the intersection of {ADDRESS=schaefer street} and {ADDRESS=warsoff place} +- drive me to {ADDRESS=waterdown} +- drive me to {ADDRESS=windsor town} using the quickest path +- drive me to {ADDRESS=winthrop town} +- drive me to {KEYWORD=zaxby's} +- {KEYWORD=dubailand} at {ADDRESS=694} {ADDRESS=gunnison court} {ADDRESS=apalachicola} in {ADDRESS=quebec} drive us there +- {KEYWORD=duke of wellington} on {ADDRESS=h gtwy} and {ADDRESS=ln. s} +- {KEYWORD=duke's refresher and bar} where is it +- {ADDRESS=durham county} map +- {KEYWORD=duthie park winter gardens} at the the intersection of {ADDRESS=barbey street} and {ADDRESS=hickory lane} plz +- {KEYWORD=duthie park winter gardens} where is it +- find a {KEYWORD=nursery school} on the way to {ADDRESS=peers} +- find a {KEYWORD=office} on the way to {ADDRESS=delphos city} +- find a {KEYWORD=pancheros mexican grill} +- find a place of interest {KEYWORD=avon motel ltd} +- find a route +- find an {KEYWORD=art gallery} +- find an {KEYWORD=art museum}] +- find {ADDRESS=malden village} {ADDRESS=dominica} +- find {ADDRESS=mammoth} on map +- find map results of {ADDRESS=monaco} +- find {KEYWORD=marble slab creamery} at the intersection {ADDRESS=devoe street} and {ADDRESS=empire boulevard} in {ADDRESS=clifton} {ADDRESS=ak} +- find {KEYWORD=marble slab creamery} on {ADDRESS=cadman plaza} in {ADDRESS=balance of jackson county} {ADDRESS=arkansas} +- find {KEYWORD=marble's ice cream} in {ADDRESS=richfield} near {ADDRESS=64th hwy} +- find {KEYWORD=mary} +- find {KEYWORD=mary brown's} in {ADDRESS=cheyenne} near {ADDRESS=central park south bnd} +- find me a {KEYWORD=aeropostale} on {ADDRESS=jessie} {ADDRESS=salado village} {ADDRESS=ar} +- find me a {KEYWORD=all you can eat buffet} near {ADDRESS=cranesville} +- find me a {KEYWORD=au bon pain} near {ADDRESS=road east a} and {ADDRESS=t ln} +- find me a {KEYWORD=football field} near {ADDRESS=shellsburg} +- find me a {KEYWORD=football stadium} +- find me a {KEYWORD=fusion restaurant} near {ADDRESS=philmont} +- find me a {KEYWORD=gracie mews diner} in the postal code {ADDRESS=38543} +- find me a {KEYWORD=hotel} +- find {KEYWORD=sydney tower} +- find {KEYWORD=symphony orchestra} at {ADDRESS=1027} {ADDRESS=lincoln road} in {ADDRESS=lee} {ADDRESS=me} {ADDRESS=iraq} +- find {KEYWORD=tattoos} here for above 78 pounds +- find {KEYWORD=tattoos} in the vicinity for between 315 and 59 euros +- find {KEYWORD=teatro yaguez} at {ADDRESS=2nd west} and {ADDRESS=88th avenue west} +- find the {KEYWORD=mall} at the crossroads of {ADDRESS=stuyvesant avenue} and {ADDRESS=bethel loop} +- find the {KEYWORD=mall} at the crossroads of {ADDRESS=sullivan place} and {ADDRESS=john street} +- find {KEYWORD=ue tower} +- find {KEYWORD=united nations headquarters} close by the corner {ADDRESS=mckibben street} and {ADDRESS=washington street} in {ADDRESS=moravia} {ADDRESS=va} +- {ADDRESS=garden street} and {ADDRESS=brighton 8th place} is the intersection +- {ADDRESS=gateway 46} and {ADDRESS=o ave} is the intersection +- {KEYWORD=gentlemen plumbers} at the intersection of {ADDRESS=littleton city} and {ADDRESS=wabbaseka} around my area find that for me +- {ADDRESS=georgia avenue} and {ADDRESS=mill road} in {ADDRESS=blue springs town} now +- {KEYWORD=georgian food} +- get me directions to {ADDRESS=29th street} +- get me directions to {ADDRESS=728} {ADDRESS=avenue c} {ADDRESS=leclercville} {ADDRESS=az} {ADDRESS=guatemala} +- get me directions to a {KEYWORD=bakery} +- get me directions to a {KEYWORD=day camp} close {KEYWORD=manchester victoria station} +- get me directions to a {KEYWORD=dessert restaurant} +- get me to {ADDRESS=route 41} +- get me to {KEYWORD=roy rogers restaurants} +- get me to {ADDRESS=ryder street} {ADDRESS=combes town} +- get to {ADDRESS=walworth street} +- get to {ADDRESS=yamachiche} +- get {KEYWORD=toppers pizza} +- {ADDRESS=gibbs village} map +- {KEYWORD=gifts from the earth} on {ADDRESS=post court} in town please how can i go there +- give directions to {ADDRESS=1380} {ADDRESS=grant street} {ADDRESS=28720} {ADDRESS=edna city} {ADDRESS=canada} +- give directions to {ADDRESS=1614} on {ADDRESS=atlantic avenue} +- give directions to {ADDRESS=2nd avenue} +- give me the toll free route to {KEYWORD=six mile lake provincial park} +- go 2 {ADDRESS=1223} {ADDRESS=2nd street east} in {ADDRESS=carillon} {ADDRESS=arizona} +- go 2 a {KEYWORD=bus stop} +- go 2 a {KEYWORD=fitness center} at the the junction of {ADDRESS=garden street} and {ADDRESS=white avenue} +- go 2 a {KEYWORD=fusion restaurant} +- go 2 a {KEYWORD=garage} +- go ahead and bring me to {ADDRESS=297} {ADDRESS=polhemus place} in {ADDRESS=pointe-lebel} {ADDRESS=manitoba} +- go ahead and bring me to a {KEYWORD=bed and breakfast} on {ADDRESS=main street east} {ADDRESS=nokomis} +- go ahead and bring me to a {KEYWORD=circus} +- go ahead and bring me to a {KEYWORD=realtor} +- go ahead and bring me to {ADDRESS=fair street} +- go ahead and bring me to {ADDRESS=herkimer court} +- {KEYWORD=great mosque of djenn} close-by {KEYWORD=kangaroo creek farm} +- {KEYWORD=great wall} at {ADDRESS=1046} {ADDRESS=georgia avenue} {ADDRESS=benton county} bring us there +- {KEYWORD=great wall} at {ADDRESS=1776} {ADDRESS=cooke court} {ADDRESS=43636} {ADDRESS=dodge city town} {ADDRESS=mo} {ADDRESS=ghana} +- {KEYWORD=great wall} close {ADDRESS=kane street} and {ADDRESS=margaret court} {ADDRESS=idanha city} please +- {KEYWORD=gros morne national park} at {ADDRESS=5th n st.} and {ADDRESS=r ct} in {ADDRESS=owen} +- {KEYWORD=gros morne national park} {ADDRESS=glasford} where is it +- {ADDRESS=grove street} in {ADDRESS=balance of hopkins county} {ADDRESS=new york state} +- {ADDRESS=gtwy 38} and {ADDRESS=elgin street west} is the intersection +- {ADDRESS=guelph} take me there with the most scenic route +- guide me +- {ADDRESS=guiyang} take me there with the most scenic route +- {ADDRESS=gyeonggi} take me there with the most scenic route +- {KEYWORD=habitat '67} around {KEYWORD=ids center} +- {KEYWORD=hadrian's wall} here please how can i go there +- {ADDRESS=hamlin} navigation please +- {KEYWORD=harrison park}, {ADDRESS=ford heights village}, find it please +- head to a {KEYWORD=beauty salon} +- head to a {KEYWORD=bus station} +- head to a {KEYWORD=copy center} +- head to {KEYWORD=firehouse subs} not that far from {KEYWORD=casa mila} +- head to {ADDRESS=hill street} +- head to {ADDRESS=ketchikan gateway borough} +- head to {ADDRESS=lake street} +- head to {ADDRESS=lenexa city} +- {ADDRESS=holt court} in my vicinity give me directions there +- {ADDRESS=honduras} direct me there +- {KEYWORD=hong kong fashions} on {ADDRESS=state street} in {ADDRESS=scranton} {ADDRESS=ri} +- {KEYWORD=hot rod cafe} at {ADDRESS=2nd pkwy.} and {ADDRESS=west 118th pl} please +- {KEYWORD=hot rod cafe} at {ADDRESS=j 90th boulevard east} and {ADDRESS=5th n road north f} navigate me there +- {KEYWORD=hot rod cafe} at the intersection of {ADDRESS=98th boulevard east w} and {ADDRESS=w 14th dr} +- how about you bring me to {ADDRESS=1218} {ADDRESS=skidmore lane} {ADDRESS=laurel county} +- how about you bring me to {ADDRESS=1549} {ADDRESS=cobek court} {ADDRESS=70212} {ADDRESS=anderson city} in {ADDRESS=madagascar} +- how about you bring me to {ADDRESS=1616} {ADDRESS=24th avenue} in {ADDRESS=balance of greene county} {ADDRESS=new brunswick} +- how can i get to a {KEYWORD=sandwich bar} +- how can i get to {KEYWORD=a1 car cleaning} +- how can i get to {ADDRESS=lewis county} +- how can i get to {ADDRESS=marconi place} +- how can i get to {ADDRESS=monroe county} +- i need directions to {KEYWORD=bonanza steakhouse} +- i need directions to {ADDRESS=briarwood drive} +- i need directions to {KEYWORD=curzon street railway station} at {ADDRESS=dpfw} and {ADDRESS=zxebw} +- i need directions to {KEYWORD=denny's} +- i need directions to {KEYWORD=dunkin' donuts} +- i need directions to {ADDRESS=evans street} +- i need directions to {KEYWORD=gyro} +- i need to get to {ADDRESS=clavet} +- i need to get to {ADDRESS=danielson borough} +- i need to get to {ADDRESS=draper} +- let's go to a {KEYWORD=monarch tavern} at {ADDRESS=rochester avenue} and {ADDRESS=jackson court} +- let's go to a {KEYWORD=panera bread} at {ADDRESS=mc keever place} and {ADDRESS=johnson street} +- let's go to a {KEYWORD=phone store} +- let's go to a {KEYWORD=rococoa} at {ADDRESS=lincoln avenue} and {ADDRESS=seeley street} +- {KEYWORD=my thai} at {ADDRESS=304} {ADDRESS=1st street} {ADDRESS=94627} in {ADDRESS=midway city} +- {ADDRESS=n front st} and {ADDRESS=northwoods blvd} please +- {ADDRESS=n fwy} and {ADDRESS=6th place} navigate me there +- {ADDRESS=n hampton dr} and {ADDRESS=old henderson rd} in {ADDRESS=friend city} +- {ADDRESS=nain} map +- {KEYWORD=nami japanese restaurant} in {ADDRESS=poplar hills} on {ADDRESS=fremont avenue north d} find it +- {KEYWORD=nando's} show it to me +- {KEYWORD=navajo national monument} at {ADDRESS=833} {ADDRESS=thomas street} {ADDRESS=rich county} {ADDRESS=mi} +- navigate +- navigate 2 a {KEYWORD=kosher restaurant} +- navigate 2 a {KEYWORD=pizzeria} at {ADDRESS=fleet walk} and {ADDRESS=indiana place} {ADDRESS=balance of bedford county} {ADDRESS=tn} +- navigate 2 {ADDRESS=cambridge drive} +- navigate 2 {KEYWORD=carrabba's italian grill} in my vicinity +- navigate 2 city of {ADDRESS=mbinepsa} +- navigate to {ADDRESS=dumont avenue} +- navigate to {ADDRESS=elko town} +- navigation to {ADDRESS=abu dhabi} +- navigation to {ADDRESS=margate} +- navigation to {ADDRESS=nodaway city} +- navigational directions for {KEYWORD=columbus city schools central enrollment center} {ADDRESS=fairview road} and {ADDRESS=columbus place} +- navigational directions for {KEYWORD=columbus city schools central enrollment center} {ADDRESS=preston court} and {ADDRESS=rost place} +- navigational directions for {KEYWORD=columbus city schools central enrollment center} {ADDRESS=rapelye street} and {ADDRESS=bank street} +- navigational directions for {KEYWORD=loco prepaid} {ADDRESS=48th street} and {ADDRESS=woodhull street} +- please show where is an {KEYWORD=ethnic restaurant} at {ADDRESS=60th street} and {ADDRESS=greene avenue} {ADDRESS=deerfield village} {ADDRESS=minnesota} +- please {KEYWORD=signal hill} at {ADDRESS=whitwell place} and {ADDRESS=amherst street} in {ADDRESS=grand ridge town} +- please take me to a {KEYWORD=school} at the the intersection of {ADDRESS=tombstone city} and {ADDRESS=keene} +- please take me to the city of {ADDRESS=minidoka city} +- please take me to the city of {ADDRESS=mount carroll} +- please {KEYWORD=torre colpatria} close-by {ADDRESS=ovington avenue} and {ADDRESS=atkins avenue} {ADDRESS=carver county} +- please why don't you find a route to the {KEYWORD=food bank} at {ADDRESS=teton county} and {ADDRESS=balance of greene county} in this area +- please why don't you give me directions to {KEYWORD=newport tower} close to the intersection of {ADDRESS=lawton street} and {ADDRESS=palm court} {ADDRESS=san felipe town} +- please why don't you navigate me to a {KEYWORD=fusion restaurant} at {ADDRESS=campus road} and {ADDRESS=lawton street} +- please why don't you navigate me to {ADDRESS=konawa city} {ADDRESS=guatemala} +- please why don't you navigate to {KEYWORD=bucharest mall} at {ADDRESS=doughty street} {ADDRESS=attala county} +- please why don't you take me to {KEYWORD=roosevelt campobello international park} not that far from {ADDRESS=bay 38th street} and {ADDRESS=kings place} {ADDRESS=balance of summit county} {ADDRESS=ab} +- {ADDRESS=plymouth street} and {ADDRESS=summer street} in {ADDRESS=middleton city} please +- plz bring me to {ADDRESS=morris street} +- plz bring me to the the junction of {ADDRESS=ratcliff city} and {ADDRESS=rivesville town} near my current location +- plz bring up a {KEYWORD=dim sum restaurant} at {ADDRESS=eastborough} and {ADDRESS=ramsey city} in that city +- plz bring up a {KEYWORD=public house} at {ADDRESS=le flore} and {ADDRESS=belzoni city} near my place +- plz directions 2 a {KEYWORD=park} at {ADDRESS=empire boulevard} and {ADDRESS=sutter avenue} {ADDRESS=lyerly town} +- plz directions 2 an {KEYWORD=appliance store} at the the junction of {ADDRESS=neoga} and {ADDRESS=st-felix-de-valois} +- plz directions for {KEYWORD=grand canyon} not that far from the intersection {ADDRESS=spencer place} and {ADDRESS=front street south} in {ADDRESS=burke city} {ADDRESS=delaware} +- plz directions for {KEYWORD=gump's} at {ADDRESS=mulvane} and {ADDRESS=salaberry-de-valleyfield} +- plz see where is {KEYWORD=hollywood bar} at the the intersection {ADDRESS=whitney avenue} and {ADDRESS=liberty avenue} {ADDRESS=weaubleau} {ADDRESS=ky} +- plz see where is {KEYWORD=konzelmann estate winery} at {ADDRESS=main street} and {ADDRESS=regent place} in {ADDRESS=chittenden county} {ADDRESS=pennsylvania} +- plz view {KEYWORD=parkland kennels west inc} at {ADDRESS=balance of estill county} and {ADDRESS=balance of laclede county} +- plz view {KEYWORD=princess of wales theatre} here +- plz view {KEYWORD=sweet temptations} at {ADDRESS=sutton} and {ADDRESS=bend} in the vicinity +- plz we are going to an {KEYWORD=afghan restaurant} at {ADDRESS=heyward street} and {ADDRESS=quentin street} {ADDRESS=brookneal town} {ADDRESS=missouri} +- plz we are going to {KEYWORD=notre-dame de montral} at the intersection of {ADDRESS=mother gaston boulevard} and {ADDRESS=elmwood avenue} {ADDRESS=sturgis} {ADDRESS=ne} +- plz what roads will take me to a {KEYWORD=british restaurant} near the intersection {ADDRESS=homestead drive} and {ADDRESS=west avenue} in {ADDRESS=murray} {ADDRESS=yt} +- point me the way to {ADDRESS=sidney place} +- point me the way to {KEYWORD=sydney tower} +- point me the way to {ADDRESS=teulon} +- point me the way to {ADDRESS=williamsburg village} +- {ADDRESS=polhemus place} in {ADDRESS=washington} take me there +- {ADDRESS=polk county} +- {ADDRESS=pooles lane} and {ADDRESS=ash street} in {ADDRESS=balance of douglas county} now +- {ADDRESS=poplar street} and {ADDRESS=hillcrest drive} please +- {ADDRESS=poplar street} not too far from {KEYWORD=ggantija} guide me there +- {KEYWORD=prime burger} at {ADDRESS=1665} {ADDRESS=aspen court} in {ADDRESS=polk county} {ADDRESS=wv} {ADDRESS=sri lanka} +- {ADDRESS=produce court} and {ADDRESS=e gay st} in {ADDRESS=bartlett village} +- {ADDRESS=prospect avenue} and {ADDRESS=homestead drive} in {ADDRESS=jacksonville beach} please +- {ADDRESS=proton station} take me there with the most scenic route +- provide me with the construction free way to {ADDRESS=city} please +- {KEYWORD=reunion tower} at {ADDRESS=571} {ADDRESS=haring street} {ADDRESS=57682} {ADDRESS=upton} in {ADDRESS=pa} {ADDRESS=bulgaria} +- {KEYWORD=rex's} at {ADDRESS=496} {ADDRESS=edgewood drive} {ADDRESS=courtenay} {ADDRESS=me} {ADDRESS=new zealand} +- {KEYWORD=rococoa} at {ADDRESS=w pkwy.} and {ADDRESS=strawberry road south} in {ADDRESS=homeacre} +- {ADDRESS=ronceverte city} {ADDRESS=san marino} where is it +- {KEYWORD=roosevelt campobello international park} on {ADDRESS=shore road lane} in {ADDRESS=kugluktuk} how do i get to that place +- {ADDRESS=rosendale} map +- {ADDRESS=route 20} and {ADDRESS=knight court} i need to get to the intersection +- route me to {ADDRESS=balance of boise county} +- route me to {ADDRESS=bay 14th street} +- route me to {ADDRESS=beaver street} +- route me to {KEYWORD=big pita} +- route me to {ADDRESS=breckenridge town} +- route me to {KEYWORD=cathedral of christ the saviour} in {ADDRESS=benjamin} +- route me to {KEYWORD=cheesecake factory} +- {KEYWORD=santa maria novella} at {ADDRESS=1035} {ADDRESS=seeley street} {ADDRESS=63052} {ADDRESS=richburg village} in {ADDRESS=austria} navigate me there +- {KEYWORD=schlotzsky's deli} where is it +- {KEYWORD=schnbrunn palace} on {ADDRESS=fairview place} in the vicinity please can you give me directions to it +- {KEYWORD=schonbrunn palace} at {ADDRESS=544} {ADDRESS=charles street} {ADDRESS=ninnekah} in {ADDRESS=ar} +- {ADDRESS=school lane} and {ADDRESS=24th avenue} please +- {KEYWORD=scotia plaza} in {ADDRESS=87479} +- {KEYWORD=scottish parliament building} in the city of {ADDRESS=ouzinkie} +- {KEYWORD=scottish parliament building} on {ADDRESS=orchard avenue} +- show me high cost {KEYWORD=tvs} for no more than 219 dollars in the surrounding area +- show me highest ratings {KEYWORD=curry} in the vicinity for below 150 bucks +- show me highest ratings {KEYWORD=pizza crust} in that region for more than 441 quid +- show me toll free routes to {ADDRESS=cleveland} {ADDRESS=ns} +- show me toll free routes to {ADDRESS=gull bay} {ADDRESS=massachusetts} +- start directing me to {KEYWORD=victoria falls} +- start directing me to {KEYWORD=villa emo} +- start directing me to {KEYWORD=westminster} +- start direction to {KEYWORD=starbucks} +- start go to {KEYWORD=starbucks} +- start going +- start taking me to {KEYWORD=west edmonton mall} +- {KEYWORD=stephansdom} {ADDRESS=mesick} where is it +- {ADDRESS=stockholm} directions +- {ADDRESS=stockville village} {ADDRESS=poland} show me where that is +- {ADDRESS=street east 90} and {ADDRESS=p pl} in {ADDRESS=kenmore} {ADDRESS=florida} +- {ADDRESS=street south c} and {ADDRESS=pl. e} in {ADDRESS=grover beach} {ADDRESS=fl} +- {KEYWORD=sugar mountain} in {ADDRESS=orlando} on {ADDRESS=i ln} find it +- suggest a {KEYWORD=apalla} for more than 44 bucks here to me +- suggest a {KEYWORD=bed} for under 72 euros in that place to me +- suggest a best {KEYWORD=swyft technologies inc} around here +- suggest a {KEYWORD=boat} for over 719 euros in that place to me +- suggest a {KEYWORD=brewpub} here for not more than 311 bucks to me +- suggest a {KEYWORD=brewpub} in that town for between 447 and 299 dollars to me +- suggest a {KEYWORD=buffalo wild wings} in my surrounding area +- suggest the worst {KEYWORD=mcdouble} around here to me +- suggest the worst {KEYWORD=sausages} in the vicinity to me +- suggest the worst {KEYWORD=wraps} in the surrounding area to me +- {ADDRESS=sunnyside avenue} nearby {KEYWORD=fort knox} take me there +- {ADDRESS=sunset drive} {ADDRESS=harrison county} +- {ADDRESS=sweden} can you help me find that +- {KEYWORD=sweet temptations} in {ADDRESS=93398} +- {KEYWORD=sweet temptations} on {ADDRESS=sumner place} +- switch on directing me to {KEYWORD=al-aqsa mosque} +- switch on directing me to {KEYWORD=bajrakli mosque} +- switch on directing me to {KEYWORD=cherun-meru} +- switch on going to {KEYWORD=york minster} in {ADDRESS=edgewood city} +- switch on going to {KEYWORD=york minster} in {ADDRESS=sault ste. marie city} +- switch on navigating to a {KEYWORD=fitness store} +- switch on navigating to a {KEYWORD=florist} +- switch on navigating to a {KEYWORD=french restaurant} +- take me to {ADDRESS=grainola town} +- take me to {ADDRESS=gray} +- take me to {ADDRESS=grovetown} +- take me to {ADDRESS=gruver city} +- take me to {ADDRESS=zeeland} +- take me to {KEYWORD=zehrs} {ADDRESS=king city} +- take me to {KEYWORD=zoup!} +- take the construction free way to {ADDRESS=fremont county} +- take the fastest route to {ADDRESS=kingston town} +- take the fastest route to {ADDRESS=monetta} +- take the fastest route to {ADDRESS=oriska} +- take the fastest way to {ADDRESS=union city} +- take the shortest route to {ADDRESS=eston} +- take the shortest way to {ADDRESS=clayton town} +- take the traffic free route to {ADDRESS=balance of campbell county} +- {KEYWORD=tcby} at the intersection of {ADDRESS=w vis} and {ADDRESS=brown cir} +- {KEYWORD=tcby} at {ADDRESS=w 118th blvd q} and {ADDRESS=st. 706} please +- {KEYWORD=tcby} on {ADDRESS=pier 39 concourse byp} and {ADDRESS=a blvd.} +- {KEYWORD=td bank} at {ADDRESS=cass place} {ADDRESS=wenonah borough} please +- {KEYWORD=temple of artemisof the ephesians} at {ADDRESS=1721} {ADDRESS=church road} {ADDRESS=37863} {ADDRESS=highland city} {ADDRESS=newfoundland and labrador} {ADDRESS=united states} +- {KEYWORD=terminal tower} at {ADDRESS=b crse} and {ADDRESS=e expy} navigate me there +- {KEYWORD=terminal tower} in {ADDRESS=clark county} +- {ADDRESS=terrell hills} {ADDRESS=india} start navigation +- the {KEYWORD=ad agency} at the the intersection of {ADDRESS=sellersburg} and {ADDRESS=fremont county} can you guide me there +- the address {ADDRESS=1065} {ADDRESS=c rd.} where is that +- the address {ADDRESS=1097} {ADDRESS=gion rd} where is that +- the address {ADDRESS=1422} {ADDRESS=street east e} where is that +- the address {ADDRESS=1487} {ADDRESS=crse f} where is that +- the intersection of {ADDRESS=hrqeas} and {ADDRESS=preum} +- the intersection of {ADDRESS=queen} and {ADDRESS=south civic center drive} in {ADDRESS=balance of ziebach county} directions please +- the intersection of {ADDRESS=s high st} and {ADDRESS=erb} in {ADDRESS=balance of seminole county} directions please +- the intersection of {ADDRESS=seldom seen rd} and {ADDRESS=s high st} in {ADDRESS=mcfarland} directions please +- the place i need to get to is {KEYWORD=captain printworks} in city +- the place i need to get to is {KEYWORD=promenade ii} on {ADDRESS=banner 3rd road} in the vicinity +- the place i want to get to is {ADDRESS=1635} {ADDRESS=17th avenue} {ADDRESS=mi} {ADDRESS=st vincent and the grenadines} +- the place i want to get to is {ADDRESS=1828} {ADDRESS=will place} {ADDRESS=alberta} +- turn on going to {ADDRESS=ketchikan} +- turn on going to {KEYWORD=lds church office building} in {ADDRESS=ione city} +- turn on going to {KEYWORD=macy's} in {ADDRESS=stephens county} +- turn on going to {ADDRESS=mattawa} +- turn on taking me to {KEYWORD=donglin temple} +- turn on taking me to {KEYWORD=jagannath temple} +- we are going to {ADDRESS=route 41} +- we are going to {ADDRESS=stuyvesant avenue} +- we are going to {ADDRESS=suydam street} +- we are going to the a {KEYWORD=square} at {ADDRESS=166} {ADDRESS=brighton 7th street} called {KEYWORD=ten restaurant and wine bar} +- we are going to the city of {ADDRESS=balance of chittenden county} please +- we are going to {KEYWORD=torre mayor} at {ADDRESS=w seminole dr} and {ADDRESS=university} +- we are going to {KEYWORD=twice the deal pizza} +- we are going to {ADDRESS=victoria} +- {ADDRESS=weber} and {ADDRESS=vine st} please +- {KEYWORD=wells fargo center} at {ADDRESS=439} {ADDRESS=brighton 7th lane} {ADDRESS=deer park village} {ADDRESS=minnesota} +- {ADDRESS=west avenue} and {ADDRESS=mechanic street} i need to get to the intersection +- what are directions to {ADDRESS=jackson city} {ADDRESS=thailand} plz +- what are directions to {ADDRESS=lakeview drive} in {ADDRESS=conquest}, {ADDRESS=maine}, {ADDRESS=north korea} +- what are directions to {KEYWORD=pancheros mexican grill} +- what are directions to {KEYWORD=panda express} +- what are directions to {KEYWORD=takakkaw falls} near the intersection of {ADDRESS=sands street} and {ADDRESS=paerdegat 1st street} in {ADDRESS=ryland heights} {ADDRESS=quebec} +- will you how about you navigate me to {KEYWORD=victoria & julia's flowers} on dakota place in humphrey city +- will you how far away to the city of {ADDRESS=little rock} +- {ADDRESS=xiangyang} take me there with the most scenic route +- {ADDRESS=y way} and {ADDRESS=33rd pkwy.} in {ADDRESS=madisonville} {ADDRESS=washington} +- {KEYWORD=ymca} where is it +- {KEYWORD=yogenfruz} at {ADDRESS=south michigan boulevard south} and {ADDRESS=blvd. a} in {ADDRESS=ewa beach} +- {KEYWORD=yogenfruz} at {ADDRESS=west randolph pkwy.} and {ADDRESS=r dr.} please +- {KEYWORD=york minster} at {ADDRESS=1827} {ADDRESS=hutchinson court} {ADDRESS=boone county} {ADDRESS=md} +- {ADDRESS=z blvd.} and {ADDRESS=bnd 972} navigate me there +- {KEYWORD=zion national park} at {ADDRESS=47th street} and {ADDRESS=columbus place} plz +- {KEYWORD=zoup!} at {ADDRESS=1497} {ADDRESS=fort hill place} {ADDRESS=harlem city} {ADDRESS=rhode island} in {address=papua new guinea} + + +## None +- accept that event +- add to list +- are you married +- do you have any kids +- find a meeting room +- find a room +- forward this +- get +- greetings +- hi +- how long do cats live +- how old are you +- is my dog sick +- is there an animal larger than the elephant +- mark that as finished +- my plants are dying +- read that message out +- remember to buy milk +- remind me +- send a message +- send an email +- should i call a {KEYWORD=doctor} +- should i upgrade my phone +- show me the attendees +- task completed +- what kind of dinosaur has blue tooth +- whats my latest purchase +- whats the loudest noise you can think of +- whats the weather in boston +- whats the weather in los angeles +- whats your favorite thing to drinkh +- when will it rain +- who will be in the meeting +- who won the superbowl + + +> # Entity definitions + +$ADDRESS:simple + +$KEYWORD:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:number + + +> # Phrase list definitions + +$address_city:phraseList +- washington township, strafford, brantford, mccormick, texas charter township, interlochen, baldwyn, berthold, elm creek, window rock, universal city, bryson city, downs, beckley, galesburg, curllsville, atwater, holland, south el monte, mechanicville, washington city, simla, genesee charter township, epping, guthrie, gualala, mather, silver grove, belview, russell, kinta, sauble beach, lady lake, kittredge, johnson creek, bossier, richwood, hutchinson, polk, midwest, pauls valley, mount laurel, north port, wellston, lufkin, shelby charter, la mirada, lake ronkonkoma, rutherford college, arab, oxford junction, marmora, klingerstown, tawas, oil city, mound, cresskill, susanville, goliad, blandon, port angeles, santa fe springs, pensacola, south dayton, pen argyl, royal palm beach, benton harbor, needham, alexandria bay, moscow, saint bonaventure, zimmerman, west sayville, dickson, ketchum, norfolk, neptune township, severn, long lake, inez, pleasant plain, royal city, pearblossom, maple shade, cookeville, minot, earlville, chengdu, altadena, rocky mount, glen rock, sagamore beach, valders, gloucester city, pittsburg, porterdale, binger, sylvania, fleetwood, siler, grindstone, greeley, south salem, milwaukie, skopje, california city, azalea park, myrtle grove, willow park, herreid, irvington, ravena, cedar creek, cannelton, porum, south hutchinson, streamwood, silver city, grosse ile, kiawah island, loudon, locust grove, kings bay base, orrtanna, cairnbrook, brevard, palm city, lake isabella, east massapequa, levelland, apache junction, smith center, mango, lely resort, norridgewock, new sweden, marrero, killona, merino, random lake, st . mary-of the woods, bucklin, callao, warsaw, waldport, otterville, sherburn, bushland, olalla, knightstown, craigsville, new lebanon, saint clair shores, corry, gowrie, melrose, massena, mancelona, jordan, mcallen, hardin, lee, encinitas, davidsville, upland, simsbury, vinita, lake lillian, elkhart, sunny isles beach, orange, harrison valley, hacienda heights, otterbein, qingdao, natchitoches, hale, davidsonville, carolina beach, lagrange, new meadows, coolidge, johnston, lucama, bamako, fort sheridan, depew, chattahoochee, sunflower, dolgeville, brownsville, unicoi, nottoway court house, shepherdstown, roberta, brinkley, french lick, issaquah, bucksport, bassett, cotati, ama, maple park, east longmeadow, eagan, washington dc, cold spring harbor, henderson, walworth, west greenwich, old town, olivia, rolling meadows, paragould, new hanover, sandia park, wynne, smoot, lafayette hill, floodwood, grass lake charter, gordo, bernie, electra, ida grove, monmouth, east greenville, flora, whiteface, lyon charter, paynesville, okawville, cloverdale, medelln, rodeo, moss landing, cranberry isles, tarawa, addy, soledad, zaria, san carlos park, carlisle, monrovia, kota, bratislava, wilmot, wagener, windsor charter, falmouth, lloyd, pell, lucasville, broomall, snellville, winterport, auburndale, weber city, windsor, meadowlands, montrose, spartansburg, wyldwood, bowling green, yerevan, poway, millport, kouts, brewerton, smithfield, panama city beach, woody creek, wallis, branson, russellton, sunspot, mio, lasara, bridger, rocky ford, fincastle, sandy, detroit lakes, littlefork, waukee, nekoosa, poplar bluff, opp, lockwood, moody, tonkawa, laughlin, trimont, new philadelphia, sedan, marble, morris township, park forest, cal-nev ari, applegate, stockbridge, pinole, west warwick, blanco, jones mills, reedsville, milam, flasher, jackson center, gatineau, walnut bottom, palermo, lake peekskill, cass city, sherrard, nuuk, sky lake, wyndmere, maracaibo, pahrump, cheltenham, holts summit, boone grove, fort stockton, hughes springs, stayton, karachi, pierre part, eminence, new england, monee, yardley, scipio center, kelliher, frederic, fife lake, marianna, oswego, greencastle, fort atkinson, henryville, destrehan, st . inigoes, port moresby, owego, holland patent, ramah, hazel crest, little rock, tracy, socastee, logansport, markle, waldoboro, bensenville, new braunfels, winslow, gratz, east stroudsburg, bel air north, reddick, juneau, michigan center, artesian, union grove, pocono pines, burns, osage, bayard, brodheadsville, huzhou, hawkins, julian, hermosa beach, norfolk county, stickney, coxs creek, havre de grace, moundsville, honeoye, annapolis junction, hazlehurst, vandalia, kekaha, indianola, alanson, west haven, scranton, davis junction, star, woden, chevy chase, new portland, blountsville, edgar springs, luanda, st . clairsville, eagle butte, traverse, lagos, blacksburg, killen, saint-jean-sur-richelieu, north berwick, bound brook, zalma, orland, fort leavenworth, rattan, shabbona, carolina shores, knoxville, addison, omega, cerro gordo, hazelton, james, df, schuylkill haven, whitman, north kingstown, wyndham, bayfield, dove creek, assumption, maple grove, monterrey, keene, rangely, fort myer, shoshone, rancho murieta, broad top, edgewood, lynnville, middletown springs, crump, gladwin, carsonville, coplay, marienville, milan, lochearn, kane, college station, westminster, marlinton, mentor, rajkot, crossett, keller, anacortes, lamar, ravenwood, basin, rexford, cotonou, scottsboro, port louis, plum, huxford, brackenridge, hartley, forestville, pottsville, pocomoke city, sykesville, mokena, tucker, mancos, wheatfield, puebla, oakton, coachella, chouteau, zieglerville, roaring spring, catalina, deer river, st. albans, wylie, wauconda, canfield, douglas, cape coral, kuala lumpur, port ludlow, harahan, attica, port wentworth, natalia, valley park, souderton, ogden, eitzen, rexburg, packwaukee, st . andrews, whitley, sears, strathmore, underhill, shoe storeacas, scottsdale, swan quarter, tribune, coconut creek, grass lake charter township, checotah, vienna, goodlettsville, shorewood, cirebon, calpella, niantic, beechwood, meeker, derwood, detroit, haiku pauwela, reading, holly springs, tuckahoe, bucharest, butner, kensett, killdeer, desert center, gervais, adana, perry, yogyakarta, shaw air force base, cave creek, dubois, stephenson, st . bernard, ocilla, gasconade, plain, westland, banner elk, mrida, saint louis park, senoia, marriottsville, greece, pantego, chesterfield township, cudahy, greenwood village, henry, yellville, crested butte, holcomb, east syracuse, brownsboro, whitfield, ferguson, sierra blanca, capitol heights, bluff city, st . albans city, centereach, medicine lake, voorhees township, union bridge, williamstown, burgaw, waterford, the meadows, eagle point, howells, abilene, crdoba, lauderdale by the sea, saint georges, placerville, fountain hill, curtis, edmond, orchard park, spalding, pampa, byram, egan, weott, powers, richton, laceys spring, shanksville, st anne, trumbull, stetson, castleton, orland park, coon rapids, essexville, linn, white hall, kendall, ottumwa, collinston, wiscasset, smithtown, milesburg, wabasha, medellin, jack, amery, flagler beach, nespelem, merida, cushing, adelanto, fenton charter township, holdingford, grand blanc charter township, choctaw, lake villa, radcliff, peoria, saigon, saint paul, rio, carney, howard lake, donora, brook, terrebonne, kings park, foxburg, augusta, summerlin south, sarasota, hydesville, tenaha, gates mills, crystal lake, north salt lake, cummings, naalehu, coulee dam, brighton, joy, vacaville, oakdale, rehoboth, three rivers, littlestown, montoursville, stevenson ranch, spanish springs, gate city, ranchi, bell gardens, center harbor, matawan, yukon city, forestdale, wallops island, meadow vista, sparks, tannersville, thousand oaks, vail, pennsville, lincolnwood, horicon, piqua, dravosburg, walsenburg, minsk, rosholt, jenner, arena, godley, kollam, osborn, blackduck, travis air force base, mattoon, oblong, pine city, grand haven, burnside, longwood, paintsville, ahvaz, happy valley, new ulm, gove, pleasant garden, joyce, worland, nauvoo, lasalle, willow grove, wood-ridge, indian trail, abernathy, sugar land, thonotosassa, salt point, solomons, lithia springs, smithton, noblesville, poplarville, ashland, san luis potosi, pownal, wallingford, cleburne, cloquet, hoople, statenville, tryon, potomac, new prague, yantai, fort lee, bay springs, merkel, weddington, scottville, rhinelander, westwood, south lebanon, varnville, land o lakes, ramer, burr oak, angel fire, new iberia, sunman, rui'an, dixons mills, rouses point, navasota, lemoyne, russia, nicholson, shadyside, casas adobes, lonedell, front royal, new oxford, pitman, eureka springs, dawsonville, brookside, kellyton, kankakee, pickering, pontotoc, brent, millersport, hallock, west middlesex, narragansett, cohoes, alma, bath, ligonier, hana, terryville, barnes, dola, elroy, dunnigan, red bank, hubbard, story, meansville, kildeer, south bend, marlboro township, clemons, drain, agate, fruitland, primrose, st. henry, piscataway, patterson, ocracoke, thibodaux, new kensington, chambersburg, erving, trenton, san jacinto, hanford, palacios, osburn, hatfield, west mifflin, gracey, delbarton, brown city, katonah, new bloomfield, woodstown, allenhurst, chesterville, madras, pinecliffe, coram, oscoda charter township, rocksprings, bowdon, medan, san marcos, west norriton, minford, blanding, belcourt, cortez, primghar, huletts landing, loachapoka, mckinleyville, wilson, willows, west harrison, bellview, merrimac, new madrid, mesquite, dollard-des-ormeaux, ormond beach, bronson, fort monmouth, milton, wingate, weymouth, red oaks mill, freehold township, westerly, fishers, st. simons island, swannanoa, wimbledon, st. maries, uniontown, corder, what cheer, dagsboro, everly, yorklyn, new baden, woodmoor, chataignier, coin, lairdsville, sloughhouse, revillo, hershey, lewis, tracy city, loves park, womelsdorf, garfield, suttons bay, clarkfield, pisgah forest, salem, new salem, laurelville, clarkesville, puning, clarkton, cutler bay, seabrook island, south gate, burlington junction, boca raton, plummer, watford city, highland charter township, covert, oakville, canby, knob noster, lyndon, hollins, bowbells, eastland, renner, hollowville, nova, multan, carriere, munroe falls, dry ridge, shirley, james city, pataskala, kellogg, ephrata township, fertile, maple, lemon grove, lennox, hatton, crum lynne, nashotah, quebec city, somerville, sulphur rock, laquey, herriman, ivanhoe, waterproof, weiner, morrilton, horseshoe bay, west lafayette, pepin, trappe, miranda, saint paul park, asansol, branchton, plankinton, kailua, gautier, bellport, yadkinville, fogelsville, brackettville, riyadh, batesland, fort deposit, bulls gap, hospers, croswell, owatonna, quapaw, benton city, cathlamet, saint michaels, pulaski, miramar beach, clovis, sikeston, rogue river, elm grove, dorchester, calico rock, barnard, belm, north palm beach, morrill, tuckerton, belding, lynwood, darwin, oley, west nyack, flint, climax springs, interior, sciota, el paso, wills point, hoyt lakes, alameda, wheaton-glenmont, kaanapali, calexico, averill park, pleasant prairie, leacock-leola bareville, sayville, mathiston, del city, east alton, greendale, sanger, mcconnell air force base, st mary-of-the woods, cavour, la villa, lenora, green city, vinton, kinde, hermosa, zeeland charter township, eldersburg, mountain iron, chalmette, dietrich, poplar grove, saint henry, st james city, peachtree, isabel, june lake, clarion, guinda, branch, tyngsboro, crisfield, rose hill, estero, kirksville, heavener, clawson, dearborn heights, forest hills, orondo, castle dale, north, belle fourche, leipsic, massapequa, north chatham, ona, calumet, cass lake, gaza, ringsted, ferriday, falcon heights, glenwood springs, greenwich township, san luis obispo, templeton, murdock, crestwood, chanhassen, wind gap, new city, maringouin, chaoyang, gypsum, salinas, skiatook, new carlisle, kinzers, new washoe, gilberts, fort wayne, st petersburg, tonawanda, orangefield, boonville, flower mound, ocean view, big bear lake, ridgely, willits, timberlake, center junction, eldon, childress, arbyrd, pretoria, okaloosa island, sulaymaniyah, beaverdam lake-salisbury mills, naypyidaw, moultrie, wrangell, kongiganak, mascot, hill city, halfway, village of nagog woods, ishpeming, cle elum, mbabane, deptford, braintree, bakersville, gresham, wadena, chadds ford, harlan, wrightsville beach, kiln, cincinnati, mercedes, fenton, oronoko charter township, goodfield, sundance, williamsport, rebuck, de graff, kingfield, fryeburg, tigerton, wrentham, bangall, huntington beach, st. paul park, burnet, eagle, bennsville, gwinner, natrona heights, prescott valley, mayville, hardy, carpentersville, renville, chilliwack, mcbain, flushing charter township, brenham, north fork, meadville, santa monica, broad top city, mastic, castleton on hudson, spry, hawley, colorado springs, calabash, apia, dallas city, virginia city, wisconsin, point harbor, trotwood, oostburg, helena west helena, istanbul, woodward, east palo alto, springport, izmir, rogers, vassar, tanger, el dorado springs, fields, laton, orient, paradise valley, cecilton, olivet, mexico beach, chickamauga, new, st john's, aliso viejo, palm beach gardens, yokohama, colusa, cascade locks, hackettstown, fordland, st clair, saint augustine shores, windthorst, hines, mohave valley, campbell hall, raeford, whitefield, laguna niguel, wilber, harrisburg, tavernier, walden, parkers prairie, keewatin, england, mamaroneck, schroeder, west friendship, center, hampshire, thomas, seven oaks, bishkek, lehman, nanty-glo, owen, altura, confluence, roseville, beloit, chalfont, boise city, charlottesville, parkville, rialto, oak park, new london, gallatin, placitas, la porte, summit, chittenango, merna, deer isle, fairfax station, daly city, garden prairie, spirit lake, latimer, dekalb, ho-ho kus, lakemoor, west allis, san marino, railroad, frederick, citrus heights, oconomowoc, north little rock, beltsville, shamokin, garrettsville, goldfield, millsboro, germansville, farmington hills, coleridge, mishawaka, vernon township, portal, boyertown, point reyes station, huddleston, epworth, lakewood, craigville, cusick, monterey park, cocoa, laval, hodgenville, township of washington, lutcher, driscoll, heath springs, troutdale, sugar hill, nunica, pollock pines, vilonia, circle pines, castle rock, boyne, tremonton, bellmawr, sebago, the villages, eden, alexandria, lake ozark, hidalgo, sharonville, spring green, lincolnshire, karlstad, pageland, dade city, locust, sault ste marie, pago pago, arapahoe, mcgrath, colts neck, broadview heights, buena vista charter township, eclectic, fombell, le mars, tisbury, belvedere tiburon, edwards, altamont, bailey s crossroads, mantua township, lusk, marcellus, richlands, east montpelier, mcnabb, san benito, oakland, hettinger, schererville, beggs, cresco, jenkinsburg, sunnyside, bolingbroke, artondale, forest, red lodge, mazomanie, piscataway township, morning sun, port clinton, fayette city, cut off, pendleton, macungie, groveton, st. elizabeth, north laurel, sheffield, point city, wichita falls, pine bush, acme, aldie, st. peters, tuxedo park, hotevilla-bacavi, shrewsbury, dieterich, amana, highmore, olde west chester, osceola, roland, mifflinburg, town of rockingham, bluejacket, east amwell township, dar es salaam, virgil, bird city, moss, salmon, owasso, westmont, low moor, mauriceville, munich, la joya, st . james city, asbury, aptos, fort gratiot charter, fort rucker, kittanning, mccleary, la follette, saguenay, aitkin, lacona, hillsmere shores, west newton, saint albert, patrick air force base, tonganoxie, cainsville, piper city, walpole, mount holly, scurry, fruitdale, malverne, fredericktown, prairie city, east hampton north, lindenhurst, eastchester, north bay shore, lamoni, trivoli, willis, changshu, byers, cawker, plainsboro, ash grove, st. louis park, keenesburg, crystal falls, bedminster, philadelphia, huntington, dauphin island, laughlin air force base, brasstown, ruian, woonsocket, labelle, new vernon, ouagadougou, silver springs shores, grand ledge, eatontown, voluntown, anahuac, rabun gap, humeston, molino, north pole, supply, san juan, fort riley, summertown, angier, magna, bowie, lake city, denham springs, cobden, fort madison, tenafly, westville, alexander, bartlett, plainville, redford charter township, lisbon, astoria, minneapolis, wilsonville, glenbrook, wolsey, north syracuse, dickey, st. peter port, marietta, hillsville, loup, manitou springs, ruthven, wooster, columbine, jinan, oakbrook terrace, jacksonville, waco, portales, castle hayne, amberg, gloucester point, maypearl, seville, allen, north prairie, panora, okreek, saxonburg, itasca, critz, buffalo creek, rose city, lookeba, pearlington, reedsburg, kenduskeag, port orange, andorra la vella, big stone, bellmore, westbrook, middleton, herington, holliston, senecaville, sitka, ghent, latrobe, palmdale, sierraville, dansville, mount arlington, granite falls, d hanis, needles, asher, liberal, redondo beach, wellsboro, soperton, cottonwood, hillside lake, show low, presque isle, chatfield, modesto, metairie, lansford, moorhead, abu dhabi, fort wright, albert city, helmetta, tranquillity, linneus, port hope, barrow, brown deer, coulee city, spanish lake, st. robert, st . anthony, placida, st . george, sugar, flanagan, cloverport, del monte forest, bastrop, havertown, perkins, fall river mills, mount washington, riverwoods, wuhu, amite, chino, arimo, oak hill, la fayette, port st. lucie, weippe, indiantown, melissa, rolla, lethbridge, big lake, aspen park, rockingham, fort indiantown gap, colora, lordstown, zuni, crow agency, boynton beach, dermott, mosier, neptune, culbertson, sun lakes, ponte vedra beach, kings canyon national park, carol stream, hitchcock, mandeville, porto, santa margarita, killingly, suisun, st xavier, brook park, becket, casper, newaygo, madrid, monroeville, jarrettsville, pine grove, le sueur, readington, sultan, norden, huizhou, auburn hills, henryetta, harrah, mission viejo, malang, ann arbor, carlstadt, albany, rainbow, eureka, hephzibah, ojai, valley, lake george, carmel, spindale, earth city, st . helena, shasta lake, mountain village, west seneca, lincolnton, avon-by-the sea, waynesburg, berlin center, ocoee, florissant, tychy, corryton, central city, allison, university city, annandale, claflin, parker city, clarinda, conley, denville, south river, plattsburgh, old orchard beach, goshen, newburg, sand lake, china spring, roswell, crystal springs, ho olehua, mount ulla, tabor, mcville, killington, little river, mantua, mooresville, lakeville, ludowici, kernville, long grove, belle haven, kaunakakai, blackwell, st michael, grosse pointe woods, shelburne falls, shaoxing, rangoon, vancouver, gordon, lubbock, agency, grandville, bell, reeds spring, northwood, sunderland, leonard, honey brook, glen cove, north fort myers, port charlotte, franklinton, chesnee, coquille, new straitsville, martin, greeneville, barrie, grand mound, wheaton glenmont, pelkie, massapequa park, baldwinsville, gustine, farr west, dover foxcroft, nesconset, kemp, tamms, dunn loring, kinsley, new westminster, meade, el dorado, miamiville, angwin, fort branch, torreon, white cloud, kiribati, maple shade township, st . xavier, woodbury heights, walpack township, anadarko, ethekwini, mont belvieu, cantril, walnut grove, northvale, gastonia, cordele, edgartown, east shoreham, scotia, ashfield, newburgh, wolf trap, portage, big rock, minidoka, monaca, new fairfield, zortman, guilderland center, mackay, healdsburg, grand canyon national park, waconia, olivette, north reading, north druid hills, red lake, wabasso, colstrip, warden, opa-locka, new orleans, san tan valley, pellston, ashby, wolfe, eleanor, sesser, chicago ridge, telluride, paia, barnwell, babylon, feasterville trevose, howards grove, glen ridge, harrison charter township, tokyo, weiser, west burlington, bridgewater, summerdale, new hyde park, georgetown charter township, melcher-dallas, butternut, st . georges, woodmore, bemidji, berkeley township, pitsburg, westside, high point, auberry, thompsonville, fargo, la vista, slatington, mayer, larchmont, wyomissing, carson, creede, argonia, steele, pearl city, piketon, shinnston, carmichael, groveland-big oak flat, aledo, new effington, jericho, little rock air force base, windcrest, mbuji-mayi, kaohsiung, coquitlam, jones, holly hill, grand forks, oilville, point roberts, price, red lion, lake charles, sunland park, bar harbor, fort gibson, dillard, antioch, central islip, sumter, woodcrest, dallastown, brier hill, xi an, boyce, league city, hemet, takoma park, gillett grove, boling-iago, dakota, kenyon, laramie, canyonville, harare, sun, portersville, winthrop, lanesville, hialeah, mexico df, agar, winnipeg, jeddah, goldsboro, hermantown, groesbeck, danboro, ledyard, morehead city, wilton manors, saint joseph, northford, buckhannon, lanai, north jackson, east rochester, remus, elizaville, findlay, zillah, cameron, new port richey east, beardsley, boonton, hamilton, clearlake oaks, toronto, prospect, home, guin, manhasset, neligh, silver lake, la jara, shelby charter township, west bloomfield, west valley city, mendota heights, fairview, lime springs, ladonia, riverview, pilot grove, parks, ewing township, model, sicily island, coopersville, redwood falls, edwardsburg, leadville, little ferry, richton park, shippensburg, stratford, nantong, mauckport, fairview village, swissvale, paramount, n djamena, brownsburg, north yarmouth, bonham, sunnyvale, capac, haleiwa, warrenville, kersey, ridge spring, lynnwood, clancy, dodd city, montclair, chatsworth, camp verde, accomac, lytle, steeleville, shamrock, lynnfield, angleton, saint mary of the woods, leggett, sans souci, dix hills, shavertown, colwich, rhame, napoleon, conestoga, kunshan, goose creek, bedminster township, mckinney, northville, flint charter township, center valley, copperhill, irmo, nebo, new middletown, opelika, cowiche, brunswick, lake hart, mesick, prosser, west boylston, redstone arsenal, ahoskie, sheboygan, ocheyedan, alachua, jimo, north platte, jenkintown, westchester county, wautoma, sublette, marne, twin peaks, layton, horsham, pierz, ellenville, jamshedpur, woodville, galena park, huffman, seattle, ringwood, munster, christiansburg, benin city, millinocket, st pete beach, west decatur, fishtail, carteret, buckner, plumsteadville, clearwater, temple hills, jeffers, colliers, winterthur, manchester-by-the sea, hammond, floral park, edmonton, tolleson, lampeter, chestertown, grygla, cedar hills, devens, new kent, oakfield, palmyra, ciudad jurez, kolkata, millstadt, wadsworth, daggett, honolulu, northfield, gorham, luke, apopka, cheverly, woodberry forest, harbor beach, elliott, elsmere, wantage, montara, milton-freewater, pittsfield charter township, oxford charter township, aspen hill, lawson heights, spring grove, hermann, foley, burgettstown, stanberry, elysian, shullsburg, tappan, brossard, huron charter township, cathedral, sand springs, millen, caruthers, lind, muskoka, cumming, brambleton, archer city, justin, strong, wakonda, kharkiv, cornettsville, pine bluff, des plaines, sabina, montevideo, paxinos, farmersville, oak harbor, simi valley, morris plains, temple city, chester township, burlingame, hurricane, morrison, red hill, tower, waggaman, jefferson hills, rensselaer, jemez springs, cooper, omsk, goffstown, budapest, tamaroa, parker, mcarthur, fredon township, pine valley, southbury, menoken, cobourg, east wenatchee, tennessee ridge, hamler, rosemount, tunnelton, tallassee, creve coeur, sanatoga, miami shores, payette, torrey, hurlburt field, el segundo, appleton, moncton, chisago, spencerport, nether providence township, kerman, madurai, barron, leavittsburg, southwest harbor, moran, brookport, cuyahoga heights, manila, lone star, bechtelsville, american fork, fushun, phoenicia, croton-on hudson, ukiah, twin valley, montello, zephyr cove round hill village, plymouth, mandaree, headland, lunenburg, odell, dock junction, guthrie center, duquesne, horton, west fargo, pineland, klamath, pfafftown, elbert, westphalia, hazelwood, elon, stockwell, mount dora, peterstown, oneonta, atkins, lenoir city, sloan, artesia, rocklake, delphi, ravenna, lakehills, energy, camas valley, gowen city, st jacob, dickinson, pottstown, bonne terre, bunch, georgetown charter, litchfield park, zearing, st . charles, versailles, saint mary-of the woods, piercy, mocksville, #weber, coffeyville, north vernon, golf, sidney, new lisbon, fairlawn, van dyne, delaware city, cresbard, ocala, viburnum, iola, mineral ridge, port royal, arnett, jenkinsville, stansbury park, dupont, williamson, red creek, rubicon, lone tree, stonybrook, duarte, woolwich, baidland, providence, st albert, daphne, urumqi, dover-foxcroft, ballentine, globe, totowa, eastham, reedley, strum, leoni, nichols, claysville, sialkot, mount hope, west hempstead, loudonville, shelton, el cerrito, bengaluru, st . clair, titonka, ellicott city, dry run, los alamitos, athena, downtown kitchener, upper providence township, belfield, oakley, tolono, irving, brashear, new cordell, snook, advance, stearns, comstock, bayboro, kinsale, franktown, altamonte springs, geismar, fostoria, ontonagon, seffner, pocono manor, purlear, dodge, irvine, mound city, winter garden, tyringham, nederland, cairo, grottoes, fort loudon, monson, st . johnsbury, batam, lometa, vitria, chardon, turin, lecanto, barkhamsted, apple river, thiruvananthapuram, stephens, rockford, harpswell, university heights, ventura, graymont, yekaterinburg, romney, caddo mills, lavonia, bates, adamsville, torrance, webster springs, isleton, myrtle beach, maplewood, mayo, fort myers, luck, wisconsin rapids, oildale, hartsdale, bee ridge, andersonville, foster city, pine mountain, watseka, langley, cherryvale, chewelah, league, strawberry point, cynthiana, west pleasant view, rich creek, pottersville, gibbonsville, silver, glen carbon, tangent, braymer, wyncote, maple glen, snowmass, borger, touchet, blainville, macclenny, highland park, middleville, flushing, exira, snohomish, tripp, fort washakie, st inigoes, corrales, coal city, handan, beach haven, joppa, leetsdale, woodbine, west memphis, salunga landisville, belchertown, burnham, randsburg, campbellsville, cut bank, toutle, mcgregor, theodosia, robert lee, rice lake, elk mound, reidsville, singapore, vilas, bainbridge island, sunset hills, hamden, maple falls, lakefield, selden, niangua, bluffton, watsonville, hainesport, vallonia, palm valley, liberty center, franklin township, plover, kenosha, tinton falls, frenchtown, mcconnellsville, yuma, delcambre, notus, saint stephen, jabodetabek, rocky top, wawa, brillion, meshoppen, coral gables, cherry hill, south farmingdale, towner, suring, lower burrell, sprakers, swedesboro, junction, occidental, vintondale, aumsville, east moriches, jasmine estates, cisco, new holstein, homosassa, oshawa, spackenkill, jackson, marquez, east dubuque, soddy-daisy, town n country, st leonard, stuttgart, ferrysburg, daniels, howard, orrington, wanamingo, drayton, holloman air force base, onamia, kano, tiruppur, waipio, hammon, monett, palomar mountain, pittsfield charter, rincon, hama, kosciusko, glen burnie, maple ridge, saint albans, maputo, matteson, flint hill, sebeka, new brockton, orono, shoreview, castalia, minneola, new auburn, lake village, fort lawn, garrett, oldsmar, austin, kahoka, gatewood, blackstone, pedricktown, fork union, hornell, mccoll, cypress gardens, skyline view, darien, new market, cazenovia, st. agatha, cashmere, truckee, charles town, clark, mazeppa, swans island, elmendorf, bussey, avon-by-the-sea, vallejo, edgemere, campbellsport, nesquehoning, buxton, saint pete beach, guttenberg, elberton, haiku-pauwela, st mary-of the woods, westernport, deridder, celestine, purdy, carpinteria, goodells, grand marsh, sayreville, switz city, jackson springs, north bergen, beaver city, riley, middleport, cross city, baraboo, lavaca, kettle falls, keswick, spring arbor, west saint paul, south park, martins ferry, bridgton, exton, st francis, owendale, fort payne, inola, commerce, brades estate, grover beach, boulder creek, phenix city, piedmont, fall creek, waxhaw, glasgow, keaau, rockvale, fukuoka, rome, conway, cadiz, centerville, springer, goodland, perryville, watsontown, medicine lodge, union charter, longville, sargodha, cedaredge, gillett, falfurrias, eolia, halliday, rio rico, six lakes, st bonifacius, zephyr cove, mulvane, islamabad, gassville, halethorpe, kelso, camp springs, pine bluffs, van buren charter township, river edge, national, st ansgar, rough and ready, washington d.c., horseshoe bend, lake odessa, cocoa beach, talbotton, west point, pennington gap, north lake, saint-hyacinthe, alden, prosper, brushy creek, deatsville, sunrise beach, wanatah, peetz, shrub oak, roslyn heights, watertown, gwangju, la quinta, bala cynwyd, el centro, gilsum, new church, holdenville, boykins, hollywood, hubballi, aguascalientes, aquia harbour, alburnett, oaktown, south kensington, indian river, woodway, harbor springs, windham, menifee, fort stewart, port huron, rudyard, pennsburg, pearisburg, limestone, erwinna, barton creek, mcdonald, cooksville, huntington park, rex, rowland heights, fontainebleau, continental, pleasant valley, tishomingo, boling iago, sewickley, redfield, hiawassee, congers, riverhead, prairie du rocher, kalamazoo, edgewater park, beacon falls, gloversville, lenexa, villa grove, meerut, greater sudbury, cunningham, loughman, kihei, edgecomb, novinger, puako, johnsonville, san ardo, franklinville, smithsburg, east granby, fort cobb, ogdensburg, west yellowstone, muskegon, mishicot, waimea, fine, west unity, paisley, union hill novelty hill, gardner, eagle springs, madera, seaside, maunaloa, gambrills, kings mills, overton, kimball, homewood, andalusia, victoria, somerton, mount kisco, milaca, st . james, valley lee, mascoutah, dresden, collingwood, lemont furnace, kirkwood, citrus park, protection, manitowoc, culver city, north kansas, enfield, bunkie, leawood, moretown, caliente, beacon, albert lea, osyka, mcgaheysville, niamey, district heights, bon air, schertz, bishop, nutley, beaver dam, markesan, gulf breeze, st andrews, sunbright, teec nos pos, sonoma, shell knob, montgomery, mohegan lake, wellsville, morse, melvin, makassar, clintwood, vermont city, oriental, benedicta, odenton, st paul park, duncannon, oatfield, liaoyang, sayre, laurinburg, laurel, salix, haviland, methuen, franklin springs, kingdom city, lianyungang, buena ventura lakes, quitman, kenilworth, evarts, roby, hankinson, yuba city, draper, cranbury township, ellicottville, chesterbrook, point pleasant, wilmington, alofi, north versailles, anna maria, elk rapids, boaz, clinton, lanzhou, mount desert, st. mary-of-the woods, steubenville, marylhurst, ogunquit, pikeville, new vienna, palo, garwood, new haven, otsego, moundridge, rancho cucamonga, waterflow, south berwick, marinette, ekalaka, elverta, cramerton, butler, browns valley, ogallala, wyatt, haverstraw, sag harbor, san pablo, compton, atkinson, amanda, maracay, litchfield, rocky point, trinity, coxsackie, amite city, saint matthews, asbury park, elburn, belt, indianapolis, passaic, reston, pigeon forge, towanda, angus, wildwood, frenchburg, windermere, donovan, stagecoach, simpsonville, grayson, knife river, greatwood, green, edgerton, newmarket, southern pines, ellis grove, carnation, champaign, stone ridge, heathrow, rockledge, libby, sarnia, parkland, jakarta, beaver island, nashville, pilot mountain, berthoud, elm, harwood, kitty hawk, st . meinrad, los angeles, brockway, boydton, oracle, lyon, fall rock, lake shore, hapeville, malden, seminole, carrboro, linganore-bartonsville, brant, richgrove, perris, park rapids, valleyford, cape girardeau, williamsfield, mequon, surgoinsville, proctorville, ware, oil, mulino, three lakes, st helena, hemlock, guernsey, riceville, red lake falls, chelsea, standish, windom, kendrick, woburn, aldan, hopkins park, campo, mott, moradabad, granite, kanawha, summitville, quarryville, port saint john, forest acres, manitowish waters, central square, briggsville, east amwell, harveys lake, sarahsville, boca del mar, tunbridge, aguas calientes, keuka park, culver, pecan grove, charlestown, jamul, homedale, east machias, saint jacob, howell, north bay village, thedford, west plains, hill, mercer island, carbondale, cando, st. david, hillsboro, port costa, parmelee, auxvasse, animas, cedar island, east amherst, pryor creek, claverack, north springfield, lees creek, general santos, fairbanks, berwyn, goldthwaite, fuzhou, elk horn, sulphur, republican city, pea ridge, bull run, hueytown, south salt lake, lillington, green brook township, galena, laverne, marshfield, weedsport, good thunder, alcoa, dixie, wathena, roebuck, indian rocks beach, malone, pickerington, dewitt township, saint george, fenton charter, pigeon, fort hunt, galatia, san leandro, libertyville, bethesda, buckhead, nolensville, mackinac island, tuscaloosa, nanty glo, lincolnville, grants, west bend, anderson, gillette, berwick, tyler, taloga, joseph city, due west, nelsonville, west newbury, solana beach, snow hill, la plume, seven mile, saint joe, putnam, woodridge, harriman, floydada, burwell, busby, west rushville, porto-novo, hygiene, maple valley, tullahoma, middlesex, tecumseh, delphos, grand marais, hanska, shawinigan, deptford township, swift, franklin, north hampton, skaneateles, romeoville, hawkinsville, bellair meadowbrook terrace, harrisonburg, swarthmore, geronimo, bentleyville, mahanoy, holton, phenix, orangevale, burdett, godfrey, san miguel, fordville, boons camp, wood, imperial beach, newton grove, hildale, otego, monona, winifred, traer, trabuco canyon, thrissur, chattanooga, meeteetse, hollsopple, grants pass, marfa, north hero, mirrormont, pine hills, roodhouse, kure beach, scott, cullman, cheswick, uxbridge, redland, big sky, jersey village, broadview, emery, hartwick, gold beach, la plata, losantville, port lavaca, pleasant view, konya, chester springs, avocado heights, rowlett, cedarhurst, radium springs, dulce, yanceyville, church rock, mysore, doctor phillips, naselle, point comfort, kenai, fitchburg, graettinger, shidler, lanham-seabrook, travelers rest, langston, willow creek, seal beach, peach lake, farmerville, orange cove, wapello, taylorville, landenberg, ho-ho-kus, middle, tuscola, five forks, lagrangeville, halawa, glenrock, saline, ovid, waseca, ballston spa, lauderdale lakes, perdue hill, lamont, wallington, st. peter, lille, killeen, u.s. air force academy, challis, jermyn, new goshen, la grande, ben lomond, blue ridge, st . croix falls, sioux rapids, retsof, sandborn, st . stephen, leopold, edon, new plymouth, hayward, maple lake, malmstrom air force base, five points, mojave, st. ann, perkinston, discovery bay, plano, castleton-on-hudson, mckean, yucca valley, sebastopol, mountlake terrace, old westbury, walbridge, wittmann, veblen, progress, lebec, kings mountain, grand canyon village, wonewoc, geneseo, ladoga, orford, mbuji mayi, fresno, solen, brecksville, bear river, saint marys city, hilmar, wood buffalo, manchester-by the sea, rye, sturgeon bay, north fairfield, haines falls, bladensburg, frontenac, calcutta, waterford township, macedon, red wing, belle isle, center line, minburn, donaldson, fergus falls, old bethpage, schaller, mount victory, independence charter township, florence, glyndon, ashdown, bottineau, danforth, harwich, perth amboy, lacrosse, ulen, scotch plains, ramona, valley city, crosslake, melcher dallas, arlington, chautauqua, yichang, sacramento, patna, bloemfontein, plaza, gibbon, shenzhen, perth, moncks corner, bellefontaine, crest hill, alfred, senatobia, skidaway island, danielsville, park hill, cottageville, yuci, bay, braslia, mitchellville, charlotte, fox lake, colonial park, stephenville, loch sheldrake, south saint paul, wharton, prunedale, sterling heights, trussville, pershing, cali, saxton, stonewall, yamhill, tawas city, blair, binghamton, bronaugh, loxley, fountaintown, princeton, baku, sault ste. marie, stilwell, buhler, selmer, claysburg, columbia, san fernando, moraga, rainsville, overland, arcade, heritage hills, sturtevant, chickasha, burke, canaan, camino, grant, red rock, raymond, cripple creek, spring church, lihue, brookland, garden valley, carmichaels, wytheville, eagle bend, pemberton, viborg, cal nev ari, autaugaville, mullen, gentry, porter, manhattan beach, oceanside, watkins glen, montgomeryville, gabbs, kemmerer, sangerville, lead, baldwin park, homer glen, elkin, penwell, pleasant grove, laporte, bonifay, scotland neck, cossayuna, dadeville, gladwyne, pflugerville, clare, rumford, elk grove, carterville, evesham township, bosworth, asheville, carrollton, norris city, elwood, flat rock, clyde, dows, turtle lake, phelan, inwood, absarokee, buena vista charter, carter lake, webster city, wright, kazan, badger, timbo, burgin, boyne falls, streator, stoughton, alderson, berkley, waltham, southwick, valmeyer, santiago, east patchogue, house springs, lockeford, alda, smoketown, duck key, port wing, morgan hill, mills river, elyria, nowata, broadalbin, lexington park, crafton, elmer, hermitage, saint cloud, waymart, fair play, kearns, grand rapids, perrysburg, belmond, monroe, dunlap, wedron, tuba city, big stone city, east chatham, santa fe, winthrop harbor, clifton forge, mandalay, navarro, hood river, chapmanville, loup city, parma, breezy point, connoquenessing, andale, cedar rapids, brockton, huber heights, el camino village, clifford, sun prairie, oakmont, duffield, randle, brookwood, dexter, tooele, luxemburg, woodfield, edgar, ponder, burr ridge, eckerty, powers lake, decatur, xiamen, tivoli, shoals, valley grove, wellington, monongahela, eglin air force base, carleton, water valley, le roy, west springfield, sac city, bosque, galeville, curwensville, egypt lake leto, corona, athol, west richland, nantucket, bay minette, mossville, vernal, sioux center, des lacs, jessup, chandigarh, lehigh, waupun, adna, gray, cyril, shijiazhuang, long prairie, roanoke, west stockbridge, canandaigua, mena, tshwane, greybull, riga, mosinee, enterprise, waterman, bordentown, cape charles, los lunas, niagara falls, new cumberland, palo pinto, jabalpur, mchenry, dillsburg, kimberling city, bryantsville, monkton, momence, conneaut lakeshore, intercourse, onsted, foyil, new cassel, fort plain, poland, atqasuk, cooter, vista, rock valley, farmville, atascosa, coppell, dubai, st . pete beach, tonasket, chilhowee, bayou cane, youngstown, shenorock, canton, anson, belleville, north brunswick, bothell, north massapequa, forman, bethany, slippery rock, gujranwala, matador, dongying, somerset, west rancho dominguez, mankato, hayes center, accra, zhengzhou, hunter, fort meade, grand blanc charter, dumont, harold, east windsor, peshtigo, tyner, zhuzhou, portage charter township, accokeek, hinton, lamoure, yolo, coloma charter township, rawson, conroe, dentsville, stanford, dyersville, thomasville, bray, ranger, fort pierre, walnut ridge, south boston, maynardville, ross township, carencro, selbyville, lindon, fallon, southampton, perry hall, sodus point, newbern, seven hills, glenelg, emporium, venus, eden valley, sanfran, mcconnellsburg, cambridge, university place, fort campbell, collingswood, west pawlet, jessieville, kigali, demorest, tontogany, burley, westview, kittery, valencia west, baudette, ruckersville, temple terrace, spanaway, varanasi, limington, deckerville, pennsauken township, hymera, new madison, iota, meredith, polkton, saint petersburg, calvert, viena, almaty, alpaugh, north tustin, plaquemine, san luis potos, ambridge, st. john's, laureldale, holly, dinwiddie, luke afb, hazel park, bogalusa, amesbury, anniston, mifflintown, cetinje, sheboygan falls, san elizario, woodland park, wetherington, north san juan, locust fork, coudersport, south houston, lititz, dora, jamison, grand isle, fontana-on geneva lake, beaver, lowell charter township, surf city, mcneil, golden valley, okemah, higden, chauvin, holt, sacaton, bruneau, hazel green, leeton, st meinrad, south holland, uvalde, neosho, oxon hill glassmanor, glen rose, oakhurst, rumson, heath, baker city, logan township, coushatta, goleta, cross, shattuck, prattville, mitchell, alloy, farmers branch, ririe, brethren, paine field lake stickney, milford center, pismo beach, havana, bethany beach, deale, illiopolis, buna, schulenburg, carson city, fox river grove, bentonville, brandywine, hayneville, zachary, port-au-prince, stanley, steptoe, great bend, syracuse, chicago heights, schofield barracks, benson, tipp city, manton, metro manila, bainbridge, durg bhilai, lake arrowhead, mount union, shenandoah, claremore, taos, barnardsville, kelly, coulterville, trumann, fairview park, leslie, institute, regina, royse, east aurora, palo cedro, michigantown, roanoke rapids, upper saint clair, port elizabeth, paradise, piggott, la fox, godwin, cranbury, lawrenceburg, gwalior, quito, powder springs, calimesa, canal fulton, zhongshan, laconia, rothschild, sao paulo, postville, grundy center, rosemead, isfahan, kremlin, graniteville, carlton, desert hot springs, happy camp, stratham, hilliard, willards, arco, riceboro, central point, tallahassee, manorville, rossford, victorville, rankin, east northport, knightsville, indian springs, weehawken, reserve, algodones, fountain hills, morgantown, orting, baoding, saint john, wyaconda, brookhaven, glen ullin, savage, louviers, mi wuk village, mounds view, beaufort, high ridge, walhalla, guadalupe, vasai-virar, risingsun, corona de tucson, hannibal, bolingbrook, wynona, kamloops, montague, rentz, colesville, dayton, wahoo, ahmedabad, buena, mccamey, viola, rudd, loveland, gilcrest, chamberlain, flora vista, clover, winchendon, suwanee, fridley, tylertown, briggsdale, fort duchesne, nanuet, golden gate, wallkill, montgomery city, warwick, spring house, slater, quantico, waynesboro, apex, bountiful, robbins, hanoverton, fort drum, cranberry, manasquan, la habana, boerne, burdette, hayfork, peach glen, wesley hills, gays mills, laplace, landrum, fairhaven, big beaver, mccook, liberty, palm desert, timberwood park, pettisville, bradleyville, bonsall, arthur, suamico, caledon, clinton township, thurmont, rockwell city, beaverton, sparks glencoe, cusseta, hilbert, barto, delaplane, tittabawassee, whitefish bay, westfield center, leesburg, ballston lake, buellton, leo cedarville, igo, rutherfordton, cochin, clairton, attleboro, suitland silver hill, coshocton, st libory, naco, hurlock, bartow, dade, petaluma, kingfisher, anthony, zoar, garden grove, stottville, burton, west palm beach, loogootee, patch grove, coulee, saint hyacinthe, leon, bryn mawr, kennewick, rahway, palmetto, caledonia, menlo, melstone, council grove, cole camp, springerville, albert, buckland, elizabeth city, yosemite valley, pennsauken, hartly, cropseyville, wise, bishopville, wadesboro, pickens, picayune, stony point, saint martinville, zellwood, almira, royal center, lidgerwood, la valle, del, coalton, tolland, west paris, xian, srinagar, knightsen, mcdavid, dallesport, st lawrence, christiana, maryland city, peachtree city, ilwaco, boxholm, middlebourne, deepwater, mcsherrystown, ullin, brimfield, campobello, henagar, hampton bays, pine village, chamberlayne, macon, new ipswich, newcomerstown, corfu, poneto, holgate, west branch, abbotsford, webb, collegedale, livonia, mukilteo, heber, tichigan, peshawar, lenox, union charter township, pleasant hills, boring, vijayawada, mcclelland, terrytown, dhaka, nanaimo, miamitown, lacygne, milford charter township, lower township, ashton, boylston, navarre, sully, east bridgewater, karnes, crossville, snyder, porto alegre, genesee charter, prairie du sac, gibson city, humphrey, damascus, cicero, maggie valley, council, concordville, redmond, shalimar, st . francis, madison, st . martinville, jeannette, dyess air force base, hampton, siren, sana'a, sedro woolley, tionesta, saint bonifacius, bergen, harbin, de soto, milano, clever, vidal, eddyville, susquehanna trails, lovelaceville, rio dell, dillingham, maricopa, bokoshe, lutherville timonium, east point, setauket- east setauket, jonesboro, kindred, plumerville, albuquerque, alto, zhangjiagang, johor bahru, elba, west fork, truro, ironwood, nixa, smelterville, st. georges, wolf point, washingtonville, charlevoix, graysville, adelaide, worley, glenolden, hanceville, st. bonifacius, hustisford, frostproof, st. edward, santo domingo, new brunswick city, clute, lodi, webster groves, pomfret, new baltimore, avon lake, seabrook, denmark, riegelsville, east lynne, kelowna, vashon, parachute, factoryville, sussex, excelsior springs, champlain, san diego, saratoga springs, maywood, wapato, bunker, gilmanton, industry, treasure island, lynn haven, paso robles, everetts, lewisberry, franklin park, sudan, villa park, harkers island, york haven, maroa, faucett, mountainburg, south wayne, duncansville, stow, donalsonville, lake wales, rancho calaveras, newcastle, lumberton, grantsville, mount airy, wynantskill, new palestine, roseboro, blue point, sheridan, bow, rowe, wewoka, caldwell, odin, hampton manor, zapata, north english, malcolm, auckland, parkesburg, lynn, wading river, ponca, oconee, st . matthews, au gres, kettering, hatchechubbee, winter springs, marysville, hollidaysburg, island park, east riverdale, highlands ranch, swansboro, scotrun, new town, murray, pripyat, gobles, stigler, st. ansgar, diamondville, kathmandu, southgate, wabash, okeechobee, south venice, pequot lakes, alsea, catharpin, ionia, beecher, oradell, port harcourt, brockport, spring valley, ives estates, el monte, bingen, jaffrey, branford, busan, hecla, ridgeland, ridge manor, moberly, vergennes, allenton, sutton, edgefield, cosmos, bertrand, gregory, cypress lake, north bellmore, mechanicsville, haworth, priest river, guilford, loysville, kingsport, willowick, winterhaven, shawneetown, blue lake, blanchard, lovettsville, phillips, commodore, the hague, pine island, st francisville, gunnison, mattituck, san lucas, olympia, estelle, comstock charter, siloam springs, selkirk, lemoore, fort knox, gretna, west des moines, norfork, beale air force base, elko new market, lake park, middlesboro, east bernard, vidalia, natchez, hattieville, golden meadow, white bear lake, clements, roopville, tanque verde, oslo, center point, ketchikan, henning, burlington township, wymore, beardstown, eastport, hamshire, gans, stinnett, blairsburg, mount ephraim, new boston, elberta, del rio, shantou, fairbank, pearl, elverson, st . louis, south euclid, north liberty, shiremanstown, reliance, wellborn, hutto, shady side, planada, shell lake, lucerne, bernard, tbilisi, san bernardino, gasburg, elbow lake, bear mountain, jeffersontown, apple springs, siesta key, cedar springs, frenchtown township, waddell, pablo, middleburgh, rigby, havre, suva, archdale, salamanca, red springs, malappuram, tombstone, bisbee, whitehouse, squaw valley, colo, danbury, colbert, island lake, dodgeville, balsam lake, henrietta, ontario center, baxley, prentiss, lockesburg, sandston, steger, grayslake, flat lick, wiggins, nether providence, ningbo, fayette, huron charter, taylors, kunming, north weeki wachee, ridge, laredo, fall city, texarkana, misenheimer, walcott, heber springs, harmony, dimmitt, carrizozo, lapeer, southchase, montpelier, houston, grissom air force base, rootstown, tekoa, atmore, saint augustine beach, manchester by the sea, saint mary-of-the-woods, holly ridge, terry, meredosia, chagrin falls, palco, cullom, rock hill, surabaya, lyman, cecil-bishop, sedona, dedham, moorpark, somers point, rui an, errol, rittman, norris, andover township, sausalito, la conner, state center, solvay, la pine, st . mary of the woods, runge, colleyville, bedford, pasco, st . henry, mill creek, ehrenberg, conneaut, st albans city, fort gratiot charter township, pomona, hoodsport, sparrows point, tehachapi, de beque, holstein, richardton, helendale, napavine, marblehead, machiasport, jodhpurb, browns summit, camilla, st augustine shores, lakewood township, fairforest, robersonville, phillipsburg, hazlet, farmland, trout lake, fort benton, st . peter, philo, glassport, petal, novosibirsk, evergreen park, gainesboro, truman, wasco, coldspring, edenton, rocky river, kidron, caseville, zhejiang, mclean, gonzales, spring mills, volga, polk city, armada, avon park, andrews, scituate, galva, argyle, beltrami, merriam, healy, chicora, fawn grove, monitor charter township, d iberville, lacon, pryor, long beach, canastota, concordia, warrensburg, new hampton, quemado, atchison, mcguffey, buffalo grove, delta junction, knox city, ambler, parkdale, mackinaw, hooksett, luoyang, newtown grant, upton, pullman, laurel hollow, jilin, jourdanton, plantation, merced, hartford, spruce pine, hayesville, yates center, winter park, quanzhou, mount zion, minoa, anchorage, little silver, broken bow, grady, south padre island, lindsay, brielle, fieldale, spring city, baytown, mcdermott, great barrington, keams canyon, argusville, wittenberg, roachdale, east spencer, collins, manteca, wild rose, west covina, bandera, sleepy eye, ellensburg, queen creek, coloma, iron ridge, rusk, sinclair, post falls, camp hill, renovo, lusaka, hobart, mayetta, saint peter, forrest city, nooksack, jackpot, chokio, dacoma, hopewell township, colon, st. mary-of-the-woods, stewartsville, sarajevo, kailua kona, glen arm, tunis, glenmont, pensacola beach, snowflake, san jose, deerfield, south pittsburg, north babylon, englishtown, monroe township, st john, farson, galeton, colebrook, frackville, olmsted falls, homeland, hampden sydney, hillsborough township, entiat, rancho santa margarita, alamo, cedar park, bolivar, vici, monroe city, springwater, sprague, leitchfield, trois-rivires, milanville, las animas, munising, old saybrook, torren, simpson, toney, victor, danville, aurora, lynchburg, gilbertsville, tijuana, centennial, washougal, milltown, ralston, sawyer, lanham seabrook, st. joe, salina, arcanum, gustavus, harris hill, hunters, tianjin, girard, port aransas, orbisonia, elm mott, interlaken, nicasio, chicopee, sunset, wapwallopen, depue, cecil bishop, tekamah, loyal, kampala, wilmette, south pasadena, liberty hill, sewanee, jersey city, piper, tabernacle, hebo, royal oak, mertztown, big spring, waldron, waldwick, woodhull, barranquilla, peralta, keyser, boys town, sudogwon, maud, levittown, winder, bellair-meadowbrook terrace, santa anna, kent, delano, barnegat township, gibbsboro, veneta, coloma charter, crossnore, braddock, new gloucester, severna park, longueuil, mohnton, san fran, north attleborough, moxee, morrisville, martelle, dilley, excel, daly, flourtown, columbus junction, royal, menomonee falls, scott air force base, glenn dale, lannon, louisville, parsippany-troy hills, coatesville, oak bluffs, traverse city, elkins, greenville, asuncin, st georges, rio vista, sycamore, allahabad, roxbury township, bracey, douala, ojo caliente, modena, orangetree, heart butte, rockmart, fort morgan, andrew, bicknell, mccondy, arabi, alliston, white sulphur springs, taipei, pontiac, staples, goldens bridge, east berlin, chaplin, stateline, bryan, stephens city, tifton, white oak, cranberry lake, mcconnelsville, st elizabeth, russellville, grundy, montecito, milfay, saint francis, worthington, roxborough park, kenwood, neptune city, weatherford, south burlington, diablo, harwood heights, mclouth, carneys point, pleasant plains, brawley, lawton, sea girt, zelienople, twin bridges, st. augustine beach, northglenn, southampton township, wellpinit, elk point, rainier, wilkeson, blue ash, sperry, rio linda, mellenville, myerstown, westhampton, ferris, bartonville, nanchang, dawson, excelsior, allgood, glenwood city, southaven, tarrant, dover plains, parish, cornwall-on hudson, white river, richvale, gradyville, nedrow, ewa villages, north olmsted, brookneal, celebration, winchester, maltby, ridgefield, centuria, stevenson, starkville, saint james, russiaville, newman, egypt lake-leto, benjamin, brownton, endicott, summersville, lake hughes, kinnelon, pollocksville, mandan, longport, eagle grove, linda, sanborn, mellen, rotterdam junction, williamsburg, belvidere, bareilly, borrego springs, south windsor, clarkdale, raynham, blue island, minonk, wake forest, miami springs, tularosa, adamsburg, dillon, jenkins, charlotte amalie, stamford, townsend, pelican, solon, konawa, leoti, blue mounds, bon aqua, davie, herndon, bethpage, olin, wailea makena, corpus christi, bigfork, mabscott, cedar grove, wesley, silver springs, grand meadow, mondamin, selah, ponca city, cressona, west sacramento, slickville, bryn athyn, kimberton, umatilla, wedowee, mcintosh, callaway, montverde, waianae, winnebago, westhope, weldona, highland falls, lead hill, lake geneva, burt, sandalfoot cove, fennville, wishek, waurika, whitmore lake, beulaville, edgemoor, hinesburg, letts, kenbridge, bernardston, summerville, boise, cape canaveral, steilacoom, berlin township, bendersville, newland, pinetops, washington crossing, currituck, refugio, shellsburg, isla vista, nuevo, mountainhome, hightstown, bensalem, pretty prairie, hoven, calmar, dell city, xianyang, blain, guerneville, pemberton township, blooming prairie, woodbridge township, baxter springs, boone, belle chasse, dearing, hazel dell north, conakry, dakar, philmont, leacock-leola-bareville, moffat, herminie, bent mountain, henniker, mississippi state university, white swan, mariemont, datong, charles, ennice, lineville, surf, millwood, parkersburg, topawa, grand coulee, north brunswick township, sparland, success, healdton, ash fork, sandwich, blue bell, tornillo, keego harbor, crystal river, escanaba, north lewisburg, roscommon township, topton, chico, homestead, chaonan, gassaway, lincoln university, east farmingdale, walnut creek, grand rapids charter, east palestine, elmont, laie, tye, miramonte, panola, chipley, hemingford, leesport, westcliffe, south mountain, lewisburg, grand junction, sorrento, saint jean sur richelieu, grey eagle, birdseye, fontana-on-geneva lake, cedar crest, poquoson, druid hills, grant park, many farms, tucson, kneeland, verndale, adona, waddington, tamaqua, asuncion, bushnell, rio verde, bhopal, bonita, grantsboro, luverne, pekanbaru, lanai city, arbutus, marks, oxford, woodstock, palo alto, corning, deshler, camarillo, pella, pond creek, hampstead, upper black eddy, hampden, pierre, sioux, tohatchi, bettsville, rosalia, sanford, newton, east millinocket, travilah, sun city, weed, winter, leacock leola bareville, wonder lake, ndjamena, dover, lacombe, italy, withamsville, miles city, hollansburg, wyoming city, summit township, cottonwood falls, orefield, nags head, monterey, okabena, kerhonkson, st . marys city, yaounde, port jefferson station, los ojos, pawling, manistee, glens falls, olancha, rothsay, plainfield, new vineyard, amritsar, praia, riva, st matthews, golden, carolina forest, oberlin, bridge, hayden, espanola, mexicali, bessemer city, kamas, rock island, birmingham, wauwatosa, seligman, sandy hook, nitro, esko, muncie, quincy, clarkston, wind ridge, woodfin, rapid city, east hanover, grand prairie, skagway, west deptford, wagontown, willow lake, cape vincent, safford, south jordan, huaibei, minnewaukan, st. johns, kenova, king and queen court house, owings, college park, wakefield, webster, jerseyville, black earth, berryville, nampa, clifton, st. bonaventure, washington d . c ., long branch, escondido, morton grove, aberdeen proving ground, west long branch, long beach township, delray beach, hewlett, rancho cordova, rienzi, coalgate, lyles, broken arrow, holden beach, woodmere, raritan, cordova, tupelo, nellis air force base, hominy, schaumburg, east freedom, tisch mills, north redington beach, shinglehouse, oxon hill, brothers, shelbyville, klamath falls, nottawa, queretaro, ulan bator, rock creek, bancroft, saint jrme, crockett, irene, tripoli, guffey, phillipsville, chittenden, medfield, fort huachuca, calera, visakhapatnam, haskell, lyons, estancia, sylvan grove, st. catharines, dallas center, signal hill, upper lake, bonney lake, north stonington, port au prince, crown, beauty, rosendale, erbil, kathleen, duvall, okolona, fork, west liberty, wendover, chazy, yeoman, forest ranch, apple valley, la salle, shickshinny, chapmansboro, experiment, st bonaventure, assaria, lawrenceville, mount olivet, west columbia, twentynine palms, hurleyville, hercules, wycombe, steward, ensley, bridge city, granite city, seoul, ulster park, pana, dracut, maple heights, pagosa springs, bonesteel, tangshan, haxtun, rock port, bucaramanga, avoca, cayucos, ellaville, frederica, redwood, gunpowder, lauderdale-by-the sea, redwood valley, kodiak, stevens point, glen haven, naoma, glennallen, north miami beach, earp, setauket east setauket, edina, mililani, funkstown, cowley, redgranite, mora, swanton, st . anne, mountain grove, pine ridge, shreveport, keota, ajax, mattawan, heppner, beech grove, wakita, glasford, la paz, north baltimore, airway heights, flagstaff, south valley stream, middle island, big island, poteau, beaumont, lake montezuma +$address_country:phraseList +- india, egypt, central african republic, finland, indonesia, peru, croatia, burundi, ukraine, bosnia herzegovina, pakistan, mali, senegal, jamaica, bhutan, honduras, nishoe storeagua, united arab emirates, algeria, tanzania, guinea bissau, zimbabwe, montenegro, malawi, kuwait, marshall islands, turkey, kiribati, panama, nepal, botswana, malta, yemen, canada, italy, kenya, grenada, switzerland, united states of america, serbia, malaysia, saudi arabia, northern mariana islands, st. kitts and nevis, trinidad and tobago, cameroon, south sudan, st kitts and nevis, singapore, mauritania, cote d'ivoire, guam, uk, cuba, timor-leste, liechtenstein, togo, russia, dominican republic, sierra leone, kazakhstan, republic of the congo, burma, spain, iran, lebanon, suriname, abu dhabi, belarus, uzbekistan, turkmenistan, kosovo, morocco, north korea, sri lanka, oman, lithuania, burkina faso, czech republic, iraq, vanuatu, tunisia, luxembourg, chad, portugal, vatican city, benin, niger, colombia, azerbaijan, el salvador, mozambique, turks and caicos, laos, estonia, equatorial guinea, bangladesh, ethiopia, mauritius, thailand, eritrea, tajikistan, chile, australia, gabon, uruguay, philippines, rwanda, nigeria, japan, nauru, bosnia and herzegovina, mexico, barbados, american samoa, usa, china, guinea-bissau, angola, iceland, puerto rico, armenia, taiwan, denmark, cabo verde, germany, new zealand, ghana, haiti, latvia, qatar, sudan, democratic republic of the congo, zambia, comoros, st lucia, solomon islands, congo, dominica, macedonia, slovakia, bulgaria, seychelles, fiji, holy see, guinea, andorra, israel, libya, sao tome and principe, greece, norway, tuvalu, guyana, brunei, swaziland, cyprus, lesotho, cayman islands, paraguay, vietnam, timor leste, ireland, somalia, costa rica, kyrgyzstan, myanmar, ecuador, brunei darussalam, maldives, austria, st. lucia, palau, south africa, tonga, south korea, micronesia, syria, san marino, liberia, papua new guinea, romania, albania, moldova, hungary, belize, antigua and barbuda, slovenia, djibouti, sweden, jordan, uganda, cambodia, bahrain, netherlands, belgium, gambia, palestine, madagascar, poland, monaco, united states, namibia, nicaragua, st. vincent and the grenadines, guatemala, brazil, mongolia, afghanistan, bahamas, united kingdom, st vincent and the grenadines, bolivia, samoa, argentina, georgia, venezuela, france, bosnia +$address_state:phraseList +- virginia, idaho, mi, vt, florida, bc, british columbia, ga, oregon, de, ut, sd, wa, utah, michigan, hi, nova scotia, illinois, ia, arizona, new york, oh, vermont, texas, montana, ks, tx, ab, in, ma, wyoming, md, mo, prince edward island, delaware, kentucky, northwest territories, south dakota, on, maine, newfoundland, ct, me, south carolina, ms, nl, yt, va, manitoba, saskatchewan, wv, alaska, nh, la, west virginia, rhode island, ar, wisconsin, il, connecticut, wi, qc, oklahoma, al, arkansas, ak, alabama, nj, ri, nt, minnesota, quebec, or, nd, yukon, az, co, mississippi, fl, id, nebraska, ne, new mexico, massachusetts, hawaii, pa, tn, nevada, mt, ky, california, louisiana, ny, ca, new jersey, pennsylvania, newfoundland and labrador, sc, maryland, kansas, tennessee, nu, ontario, indiana, georgia, washington, nv, wy, alberta, sk, new hampshire, # canada, iowa, nb, nc, new brunswick, north dakota, north carolina, missouri, nm, pe, mn, nuvanut, ns, mb, ok, colorado, ohio + +> # List entities + +$ROUTE_TYPE:eco= +- economy +- standard +- balanced + +$ROUTE_TYPE:thrilling= +- exciting +- fun + +$ROUTE_TYPE:fastest= +- quickest +- speedy +- high-speed + +$ROUTE_TYPE:shortest= + + + +> # RegEx entities + + diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/restaurant.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/restaurant.lu new file mode 100644 index 0000000000..01df5ee386 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/restaurant.lu @@ -0,0 +1,71 @@ +$PREBUILT:datetimeV2 +$PREBUILT:number +$PREBUILT:geographyV2 + +> # Intent definitions + +## Reservation +- lunch meeting +- book a pasta place tomorrow +- book a tabe on sunday +- book a table at giordano's for tomorrow for 4 people at 2 pm +- book a table at pizza hut for two in redmond at 7 +- book a table at pizza hut for two in redmond at seven +- book a table for tomorrow for 2 people in chicago +- book a table for tomorrow for 4 people at 2 pm +- book a table for two in redmond tomorrow at 7:00 pm +- book a table for two tomorrow at 7 pm +- can you help me out where to have dinner tomorrow night +- can you help me plan dinner for tomorrow +- could you make a reservation for me for tonight +- could you reserve italian tonight +- find food +- get pizza for tomorrow at 10 pm for 4 people +- get taco for tomorrow at 10 pm for 4 people +- i am hungry +- i feel like having italian +- i want pasta at 5pm today +- i want to eat german this weekend +- i want to eat indian +- i want to eat pizza +- i want to make a reservation +- make a dinner reservation for tomorrow at 6:30 pm +- reserve a restaurant tomorrow at 7 pm +- reserve a table for four +- reserve a table tomorrow + +## None + +> # List entities + +$cuisine:mexican= +- tacos +- chilaquiles +- flautas +- burrito + +$cuisine:indian= +- samosas +- curry + +$cuisine:italian= +- pizza +- pasta +- spaghetti +- lasagna + +$cuisine:chinese= +- dumplings +- kung pao +- dim sum +- fried rice + +$cuisine:german= +- bavarian +- schnitzel +- pretzel + +$cuisine:american= +- burger +- bacon +- scrambled eggs \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/todo.lu b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/todo.lu new file mode 100644 index 0000000000..0cec63fdbe --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/Skills/en/todo.lu @@ -0,0 +1,598 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:44 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: stdin + +> ! Source QnA TSV file: Not Specified + +> ! Source QnA Alterations file: Not Specified + + +> # Intent definitions + +## AddToDo +- add a few items to the {ListType=grocery} list +- add a {ListType=grocery} item to {TaskContentML=buy fish} +- add a {ListType=grocery} item to {TaskContentML=buy fruit and vegetables} +- add a {ListType=grocery} item to {TaskContentML=buy vegetables} +- add a new {ListType=shopping} list +- add a {ListType=shopping} item to {TaskContentML=buy dancing dresses} +- add a {ListType=shopping} item to {TaskContentML=buy orange juice} +- add a task for {TaskContentML=anna west bring my swimsuit for my vacation} +- add a task for {TaskContentML=jimmy to play xbox games with me after work} +- add a task for {TaskContentML=li lei to bring my coat from home} +- add a task for {TaskContentML=raghu to bring my chocolates from germany} +- add a task {TaskContentML=pasta sunday march 3rd} +- add a task that {TaskContentML=purchase fruit and vegetables} +- add a task to {TaskContentML=finish driving test this week} +- add a task to {TaskContentML=pick mary up after work} +- add a task to {TaskContentML=shop at gnc after work} +- add a {ListType=to do} that {TaskContentML=purchase a nice sweater} +- add a {ListType=to do} to {TaskContentML=buy shoes} +- add a {ListType=todo} item {TaskContentML=vacuuming by october 3rd} +- add action item for {TaskContentML=khalifa that pack my school supplies} in my list +- add an item to {TaskContentML=buy some snacks} +- add an task of {TaskContentML=chores to do around the house} +- add {TaskContentML=bronwnies} to the {ListType=grocery} list +- add {TaskContentML=buy gum} +- add {TaskContentML=buy milk} to my {ListType=shopping} list +- add {TaskContentML=call my mother} to my {ListType=todo} list +- add {TaskContentML=due date august to peanut butter jelly bread milk} on {ListType=todos} list +- add {TaskContentML=go running} to my {ListType=to dos} +- add {TaskContentML=go to whole foods} in my {ListType=to do} list +- add {ListType=grocery} add {TaskContentML=spinach} my {ListType=groceries} list +- add {ListType=grocery} items {TaskContentML=cream cheese and raisin} to the list +- add {ListType=grocery} items {TaskContentML=dinners and storage bag} to the {ListType=shopping} list +- add {TaskContentML=have a haircut} to my tasks +- add items as i speak +- add {TaskContentML=juicer} {ListType=groceries} list +- add {TaskContentML=melon and sugars and brown sugar} to {ListType=shopping} list +- add more to {ListType=grocery} list +- add {TaskContentML=peanuts} the {ListType=grocery} list +- add {TaskContentML=purchase a cinema ticket} to my list +- add {TaskContentML=purchasing food and drinks} to my {ListType=shopping} list +- add {TaskContentML=reading} to my {ListType=to do} list +- add {TaskContentML=shoes} to the {ListType=shopping} lists +- add some items to that {ListType=shopping} notes +- add some items to the {ListType=grocery} list +- add some {TaskContentML=jeans} on our {ListType=shopping} lists +- add something in this {ListType=grocery} list +- add something to my list +- add {TaskContentML=tapioca starch} on my {ListType=shopping} list +- add {TaskContentML=tapioca starch} on our {ListType=shopping} list +- add task to {TaskContentML=buy a coat} +- add task to {TaskContentML=set up dining room table} +- add this {TaskContentML=my 2017 goals} in my list +- add this on our {ListType=shopping} list +- add this stuff on my {ListType=shopping} list +- add this thing in {ListType=to do} list +- add to my {ListType=grocery} list +- add to my {ListType=to do} list {TaskContentML=pick up clothes} +- add to my {ListType=to do} list {TaskContentML=print papers for 10 copies this afternoon} +- add to my {ListType=todos} list {TaskContentML=mail the insurance forms out by saturday} +- add to note {ListType=shopping} list +- add to {ListType=shopping} list +- add to the {ListType=grocery} note {TaskContentML=buy milk} +- append a {TaskContentML=summer reading} in my list +- append an task of {TaskContentML=guest to invite at the party} +- ask a task for {TaskContentML=kim to bring my coat from home} +- can i add {TaskContentML=shirts} on the {ListType=todos} list +- can i put on {TaskContentML=caramel cheese popcorn} on my {ListType=grocery} list +- could i add {TaskContentML=medicine} to the {ListType=todos} list +- create a task to {TaskContentML=meet my friends} +- create task that {TaskContentML=go to the mall} +- create task that {TaskContentML=meet john after 5:00 p.m.} +- create task to {TaskContentML=cyber shopping on nov. 11} +- create to do that {TaskContentML=read a book tonight} +- create to do to {TaskContentML=go running in the park} +- put {TaskContentML=cheese} on list +- put {TaskContentML=ham} on my {ListType=shopping} list +- put {TaskContentML=hikes} on my {ListType=to do} list +- put {TaskContentML=ice cream} on the {ListType=groceries} list +- put {TaskContentML=milk} on my {ListType=grocery} list +- put {TaskContentML=on caramel cheese popcorn} on my {ListType=grocery shopping} list +- remind me that {TaskContentML=attend the meeting tomorrow} +- remind me to {TaskContentML=buy first aid creams and berries} +- remind me to {TaskContentML=buy milk} +- remind me to {TaskContentML=meet my teacher} +- remind me to shop for {TaskContentML=a new carpet} +- to {ListType=grocery} list add {TaskContentML=milk} +- to my {ListType=shopping} list add {TaskContentML=paper towels} +- to my vacation {ListType=to do} list add {TaskContentML=buy sunblock} +- would you add {TaskContentML=heavy cream} to the {ListType=todos} list +- create a to do to {TaskContentPattern} +- create task to {TaskContentPattern} +- add {TaskContentPattern} to my grocery list +- add a task to {TaskContentPattern} +- add {TaskContentPattern} to my to dos +- add {TaskContentPattern} to my todo list +- add a to do that shop {ShopContent} +- add buy {ShopContent} to my grocery list +- remind me to shop {ShopContent} +- add a task that buy {ShopContent} +- add a task that purchase {ShopContent} +- add to do that {TaskContentPattern} +- add {TaskContentPattern} to my to do list +- add {TaskContentPattern} to my tasks +- add buy {ShopContent} to my shopping list +- create to do to {TaskContentPattern} +- add to do to {TaskContentPattern} +- remind me to purchase {ShopContent} +- create a task to {TaskContentPattern} +- remind me to {TaskContentPattern} +- remind me to buy {ShopContent} +- remind me that {TaskContentPattern} +- add a task that shop {ShopContent} +- add task to {TaskContentPattern} +- add a task to shop {ShopContent} +- add a to do that buy {ShopContent} +- add a to do to {TaskContentPattern} +- add a to do that purchase {ShopContent} + + +## DeleteToDo +- can you delete {TaskContentML=todo1} +- can you delete {TaskContentML=xxx} item +- can you help to remove {ContainsAll=all} tasks +- cancel {TaskContentML=apples} from {ListType=shopping} list +- delete {ContainsAll=all} from my {ListType=grocery} list +- delete {TaskContentML=eggs} from list +- delete off {TaskContentML=pancake mix} on the {ListType=shopping} list +- delete {TaskContentML=shampoo} from {ListType=shopping} list +- delete {TaskContentML=shirts} from list +- delete task {TaskContentML=go fishing} +- delete task {TaskContentML=go to cinema tonight} +- delete the item {TaskContentML=buy socks} from my {ListType=to-do} list +- delete the second task in my {ListType=shopping} list +- delete the task {TaskContentML=house cleanup this weekend} +- delete the task that {TaskContentML=hit the gym every morning} +- delete the to do {TaskContentML=meet my friends tomorrow} +- delete the to do that {TaskContentML=daily practice piano} +- delete the to do that {TaskContentML=meet john when he come here the next friday} +- delete to do {TaskContentML=buy milk} +- delete to do {TaskContentML=go shopping} +- delete to do that {TaskContentML=go hiking tomorrow} +- erase {TaskContentML=bananas} from {ListType=shopping} list +- erase {TaskContentML=peanuts} on the {ListType=shopping} list +- no need to {TaskContentML=buy milk} in {ListType=grocery} list +- omit the {TaskContentML=milk} in the {ListType=grocery} list +- remove {ContainsAll=all} +- remove {ContainsAll=all} tasks +- remove {TaskContentML=asprin} from {ListType=shopping} list +- remove {TaskContentML=black shoes} from {ListType=shopping} list +- remove {TaskContentML=class} from {ListType=todo} list +- remove {TaskContentML=salad vegetables} from {ListType=grocery} list +- remove task {TaskContentML=buy dog food} +- remove task {TaskContentML=go shopping} +- remove task that {TaskContentML=go hiking this weekend} +- remove task that {TaskContentML=lawn mowing} +- remove the item {TaskContentML=paris} from my list +- remove the task that {TaskContentML=go to library after work} +- remove the to do {TaskContentML=physical examination} +- remove the to do that {TaskContentML=pick tom up at six p.m.} +- remove to do {TaskContentML=go to the gym} +- remove to do that {TaskContentML=go to the dentist tomorrow morning} +- {ListType=shopping} list delete {TaskContentML=a} +- {ListType=shopping} list delete {TaskContentML=dog food} +- {ListType=shopping} list delete {TaskContentML=eggs} +- {ListType=shopping} list delete {TaskContentML=milk} +- take {TaskContentML=coffee} off my {ListType=groceries} list +- take {TaskContentML=lemons and onions} off my {ListType=shopping} list +- take {TaskContentML=milk} off {ListType=grocery} list +- take {TaskContentML=socks and shoes} off my {ListType=shopping} list +- {ListType=todo} list delete {TaskContentML=paris vacation} +- delete the task {TaskContentPattern} +- remove to do {TaskContentPattern} +- delete the to do {TaskContentPattern} +- delete task {TaskContentPattern} +- delete to do {TaskContentPattern} +- remove the task {TaskContentPattern} +- delete the to do that {TaskContentPattern} +- remove the to do {TaskContentPattern} + + +## MarkToDo +- {ContainsAll=all} have been done +- {ContainsAll=all} have been purchased in the {ListType=shopping} list +- already complete the {ListType=shopping} items in the list +- check off {TaskContentML=apples} from list +- check off {TaskContentML=bananas} from my {ListType=grocery} list +- check off {TaskContentML=garbage} from {ListType=grocer} list +- check off {TaskContentML=meet john at 8 am} from {ListType=to do} list +- check off {TaskContentML=shampoo} from {ListType=shopping} list as done +- check the box {TaskContentML=shampoo} in my {ListType=shopping} list +- complete {ContainsAll=all} +- complete {TaskContentML=pick up black shoes} in my {ListType=to-do} list +- complete task {TaskContentML=go shopping} +- done with the task {TaskContentML=abc} in our {ListType=shopping} list +- done with the task {TaskContentML=shopping-a} +- done with the task {TaskContentML=tapioca starch} in our {ListType=shopping} list +- finish {TaskContentML=hikes} on my {ListType=to do} list +- finish {TaskContentML=peanuts} on the {ListType=shopping} list +- let me check off the {ListType=groceries} list +- mark {TaskContentML=buy fish} as completed +- mark {TaskContentML=fish} as complete +- mark {TaskContentML=happy} on {ListType=to dos} list +- mark {TaskContentML=lemons and onions} in {ListType=grocery} list +- mark {TaskContentML=meat} complete +- mark {TaskContentML=meat} completed +- mark {TaskContentML=meat} done +- mark {TaskContentML=meat} finished +- mark {TaskContentML=pancake mix} on my {ListType=grocery shopping} list +- mark {TaskContentML=peanuts} on my {ListType=grocery} list as done +- mark {TaskContentML=peanuts} on my {ListType=grocery} {ListType=shopping} list +- mark {TaskContentML=pick mary up} as finished +- mark {TaskContentML=pick up milk} on my {ListType=to-do} list +- mark {TaskContentML=play badminton with tom} as finished +- mark {TaskContentML=salad} on my {ListType=grocery} {ListType=shopping} list +- mark {TaskContentML=salad} on the {ListType=groceries} list +- mark task {TaskContentML=buy a bottle of vinegar} as finished +- mark task {TaskContentML=go running} as finished +- mark task {TaskContentML=read a book} as done +- mark the first task as completed +- mark the item {TaskContentML=garbage} from {ListType=grocer} list +- mark the task {TaskContentML=buy milk} as done +- mark the task {TaskContentML=get some food} as complete +- mark the task go {ListType=shopping} as finished +- mark the task {TaskContentML=reserve a restaurant for tomorrow's dinner} as finished +- mark the task {TaskContentML=visit my grandma} as completed +- set the {ListType=grocery} list as finished +- set the item as finished +- {ListType=shopping} list completed +- {ListType=shopping} list just done +- task {TaskContentML=abx-d} has been done +- task completed {TaskContentML=buy gum} +- the 3rd task finished +- complete the task {TaskContentPattern} +- mark the task {TaskContentPattern} as completed +- complete task {TaskContentPattern} +- mark task {TaskContentPattern} as finished +- mark the task {TaskContentPattern} as finished +- mark {TaskContentPattern} as finished + + +## None + + +## ShowNextPage +- are there any other tasks +- can you show next page in the {ListType=shopping} list +- display the next page +- show more tasks +- show more work +- show next page +- show next sheet +- show next website +- tell more tasks + + +## ShowPreviousPage +- display the previous page +- i need to check previous tasks +- show previous page + + +## ShowToDo +- access my {ListType=shopping} list +- access my {ListType=to do} list +- access the {ListType=groceries} list +- {ContainsAll=all} {ListType=shopping} list +- bring up {ListType=grocery} notes +- bring up {ListType=shopping} note +- browse my {ListType=groceries} +- can you show my {ListType=to do} list +- check my task list +- check my {ListType=to do} list +- display {ContainsAll=all} notes from last month +- display {ListType=groceries} list +- display notes with {ListType=groceries} +- display {ListType=shopping} list +- display tasks note +- display {ListType=todo} list +- do i have a list called {ListType=grocery} list +- do i have any lists +- find list about {ListType=shopping} +- find my {ListType=grocery} items i saved on saturday +- find my {ListType=shopping} list +- find note labeled {ListType=grocery} +- find notes called {ListType=grocery} +- find notes for {ListType=grocery} {ListType=shopping} +- find notes with {ListType=groceries} +- find {ListType=shopping} +- find task list on {ListType=shopping} +- find the list i create for {ListType=shopping} +- find the {ListType=to do list} for me +- get work items on my {ListType=todo} list +- help access my personal list +- help show my {ListType=to do} list +- i have to see my tasks +- i have to see the {ListType=grocery} list i created today +- i want to check my {ListType=shopping} list +- i want to see {ListType=grocery} list +- is there anything on my {ListType=to do} list +- list {ListType=grocery} notes +- look at my {ListType=grocery} list +- pull {ListType=grocery} list +- pull up {ListType=grocer} list +- pull up {ListType=grocery} list +- pull up my {ListType=grocery} list +- pull up my notes +- pull up {ListType=to do} list +- read aloud my {ListType=grocery} list +- read out my tasks +- review {ListType=grocery} list +- {ListType=shopping} list +- show me {ContainsAll=all} tasks +- show my {ListType=to do} list +- show my {ListType=to dos} +- show my {ListType=todos} +- view my {ListType=grocery} list +- view {ListType=shopping} list +- what about {ListType=grocery} list +- what are my notes for the {ListType=grocery} store +- what are my tasks for {ListType=todo} +- what do i have to buy on the {ListType=shopping} list +- what do i need to buy in the {ListType=shopping} list +- what is on my {ListType=shopping} list +- where is the {ListType=grocery} {ListType=shopping} notes i worked on last night +- would you bring up my new {ListType=grocery} notes + + +> # Entity definitions + +$ContainsAll:simple + +$ListType:simple + +$TaskContentML:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:number + +$PREBUILT:ordinal + + +> # Phrase list definitions + + +> # List entities + +$FoodOfGrocery:air freshener= + +$FoodOfGrocery:apple= +- apples + +$FoodOfGrocery:bacon= + +$FoodOfGrocery:bagel= + +$FoodOfGrocery:bagels= + +$FoodOfGrocery:banana= +- bananas + +$FoodOfGrocery:beans= + +$FoodOfGrocery:beverages= + +$FoodOfGrocery:bread= + +$FoodOfGrocery:buns= + +$FoodOfGrocery:burgers= + +$FoodOfGrocery:butter= + +$FoodOfGrocery:carrot= +- carrots + +$FoodOfGrocery:celery= + +$FoodOfGrocery:cereal= + +$FoodOfGrocery:cheese= + +$FoodOfGrocery:chicken= + +$FoodOfGrocery:chili= + +$FoodOfGrocery:chips= + +$FoodOfGrocery:chocolate= +- chocolates + +$FoodOfGrocery:chocolate chip= +- chocoloate chips + +$FoodOfGrocery:chops= + +$FoodOfGrocery:cloves= + +$FoodOfGrocery:coffee= + +$FoodOfGrocery:corn= + +$FoodOfGrocery:crispy= + +$FoodOfGrocery:croissant= +- croissants + +$FoodOfGrocery:cupcakes= + +$FoodOfGrocery:dairy= + +$FoodOfGrocery:dishwashing detergent= + +$FoodOfGrocery:donuts= + +$FoodOfGrocery:drinks= + +$FoodOfGrocery:duck= + +$FoodOfGrocery:egg= +- eggs + +$FoodOfGrocery:flour= + +$FoodOfGrocery:fries= + +$FoodOfGrocery:frozen food= + +$FoodOfGrocery:fruit= +- fruits + +$FoodOfGrocery:garbage bag= +- garbage bags + +$FoodOfGrocery:garlic= + +$FoodOfGrocery:grilled= + +$FoodOfGrocery:ham= + +$FoodOfGrocery:hamburger= + +$FoodOfGrocery:ice cream= + +$FoodOfGrocery:jam= + +$FoodOfGrocery:lamb= + +$FoodOfGrocery:laundry detergent= + +$FoodOfGrocery:lemon= +- lemons + +$FoodOfGrocery:lettuce= + +$FoodOfGrocery:lettuce and salad= +- salad +- salads + +$FoodOfGrocery:lobster= + +$FoodOfGrocery:marinated= + +$FoodOfGrocery:meat= + +$FoodOfGrocery:meatballs= + +$FoodOfGrocery:meatloaf= + +$FoodOfGrocery:milk= + +$FoodOfGrocery:onion= +- onions + +$FoodOfGrocery:oysters= + +$FoodOfGrocery:pancake mix= + +$FoodOfGrocery:pancakes= + +$FoodOfGrocery:pasta= + +$FoodOfGrocery:pastry= +- pastries + +$FoodOfGrocery:pear= +- pears + +$FoodOfGrocery:pepper= + +$FoodOfGrocery:pie= +- pies + +$FoodOfGrocery:pita= + +$FoodOfGrocery:potato= +- potatoes + +$FoodOfGrocery:poultry= + +$FoodOfGrocery:ribs= + +$FoodOfGrocery:rice= + +$FoodOfGrocery:roast= + +$FoodOfGrocery:rolls= + +$FoodOfGrocery:salads= + +$FoodOfGrocery:salmon= + +$FoodOfGrocery:salt= + +$FoodOfGrocery:sandwich= + +$FoodOfGrocery:sauce= + +$FoodOfGrocery:sausage= +- sausages + +$FoodOfGrocery:scones= + +$FoodOfGrocery:shellfish= + +$FoodOfGrocery:shrimp= + +$FoodOfGrocery:snacks= + +$FoodOfGrocery:sour cream= + +$FoodOfGrocery:steak= + +$FoodOfGrocery:strawberries= + +$FoodOfGrocery:sugar= + +$FoodOfGrocery:sushi= + +$FoodOfGrocery:sweets= + +$FoodOfGrocery:tenderloin= + +$FoodOfGrocery:tomato= +- tomatoes + +$FoodOfGrocery:toothpaste= + +$FoodOfGrocery:tortilla= + +$FoodOfGrocery:tuna= + +$FoodOfGrocery:turkey= + +$FoodOfGrocery:veal= + +$FoodOfGrocery:vegetable= +- vegetables + +$FoodOfGrocery:venison= + +$FoodOfGrocery:waffles= + +$FoodOfGrocery:yoghurt= + +$FoodOfGrocery:fish= + + + +$ShopVerb:buy= +- bought +- buys +- buying + +$ShopVerb:purchase= +- purchases + +$ShopVerb:shop= +- shops + + + +> # RegEx entities + + diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/parameters.template.json b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/parameters.template.json new file mode 100644 index 0000000000..099c27f9be --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/parameters.template.json @@ -0,0 +1,22 @@ + +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "appInsightsLocation": { + "value": "westus2" + }, + "contentModeratorLocation": { + "value": "westus" + }, + "luisServiceLocation": { + "value": "westus" + }, + "qnaServiceLocation": { + "value": "westus" + }, + "qnaMakerSearchSku": { + "value": "basic" + } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/template.json b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/template.json new file mode 100644 index 0000000000..13e167cb51 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Resources/template.json @@ -0,0 +1,366 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json", + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "defaultValue": "[resourceGroup().name]" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "microsoftAppId": { + "type": "string" + }, + "microsoftAppPassword": { + "type": "string" + }, + "cosmosDbName": { + "type": "string", + "defaultValue": "[toLower(parameters('name'))]" + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[toLower(parameters('name'))]" + }, + "appServicePlanName": { + "type": "string", + "defaultValue": "[parameters('name')]" + }, + "appServicePlanSku": { + "type": "object", + "defaultValue": { + "tier": "Standard", + "name": "S1" + } + }, + "appInsightsName": { + "type": "string", + "defaultValue": "[parameters('name')]" + }, + "appInsightsLocation": { + "type": "string", + "defaultValue": "westus2" + }, + "botWebAppName": { + "type": "string", + "defaultValue": "[parameters('name')]" + }, + "botServiceName": { + "type": "string", + "defaultValue": "[parameters('name')]" + }, + "botServiceSku": { + "type": "string", + "defaultValue": "S1" + }, + "contentModeratorName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-cm')]" + }, + "contentModeratorSku": { + "type": "string", + "defaultValue": "S0" + }, + "contentModeratorLocation": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "luisServiceName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-luis')]" + }, + "luisServiceSku": { + "type": "string", + "defaultValue": "S0" + }, + "luisServiceLocation": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "qnaMakerServiceName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-qna')]" + }, + "qnaMakerServiceSku": { + "type": "string", + "defaultValue": "S0" + }, + "qnaServiceLocation": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "qnaMakerSearchName": { + "type": "string", + "defaultValue": "[toLower(concat(parameters('name'), '-search'))]" + }, + "qnaMakerSearchSku": { + "type": "string", + "defaultValue": "standard" + }, + "qnaMakerWebAppName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-qnahost')]" + } + }, + "variables": { + "botEndpoint": "[concat('https://', toLower(parameters('botWebAppName')), '.azurewebsites.net/api/messages')]", + "cleanStorageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]" + }, + "resources": [ + { + "apiVersion": "2018-02-01", + "name": "3822b5f4-d098-4b57-9ee6-3bee686aec4c", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "template": { + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "resources": [] + } + } + }, + { + "comments": "CosmosDB for bot state.", + "type": "Microsoft.DocumentDB/databaseAccounts", + "kind": "GlobalDocumentDB", + "apiVersion": "2015-04-08", + "name": "[parameters('cosmosDbName')]", + "location": "[parameters('location')]", + "properties": { + "databaseAccountOfferType": "Standard", + "locations": [ + { + "locationName": "[parameters('location')]", + "failoverPriority": 0 + } + ] + } + }, + { + "comments": "storage account", + "type": "Microsoft.Storage/storageAccounts", + "kind": "StorageV2", + "apiVersion": "2018-07-01", + "name": "[variables('cleanStorageAccountName')]", + "location": "[parameters('location')]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "comments": "app service plan", + "type": "Microsoft.Web/serverFarms", + "apiVersion": "2018-02-01", + "name": "[parameters('appServicePlanName')]", + "location": "[parameters('location')]", + "sku": "[parameters('appServicePlanSku')]", + "properties": {} + }, + { + "comments": "app insights", + "type": "Microsoft.Insights/components", + "kind": "web", + "apiVersion": "2015-05-01", + "name": "[parameters('appInsightsName')]", + "location": "[parameters('appInsightsLocation')]", + "properties": { + "Application_Type": "web" + } + }, + { + "comments": "bot web app", + "type": "Microsoft.Web/sites", + "apiVersion": "2018-02-01", + "name": "[parameters('botWebAppName')]", + "location": "[parameters('location')]", + "properties": { + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]", + "siteConfig": { + "webSocketsEnabled": true, + "appSettings": [ + { + "name": "MicrosoftAppId", + "value": "[parameters('microsoftAppId')]" + }, + { + "name": "MicrosoftAppPassword", + "value": "[parameters('microsoftAppPassword')]" + } + ] + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]" + ] + }, + { + "comments": "bot service", + "type": "Microsoft.BotService/botServices", + "kind": "sdk", + "apiVersion": "2018-07-12", + "name": "[parameters('botServiceName')]", + "location": "global", + "sku": { + "name": "[parameters('botServiceSku')]" + }, + "properties": { + "displayName": "[parameters('botServiceName')]", + "endpoint": "[variables('botEndpoint')]", + "isStreamingSupported": true, + "msaAppId": "[parameters('microsoftAppId')]", + "developerAppInsightKey": "[reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey]", + "developerAppInsightsApplicationId": "[reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).ApplicationId]" + } + }, + { + "comments": "Content Moderator service for detecting PII and racy content.", + "type": "Microsoft.CognitiveServices/accounts", + "kind": "ContentModerator", + "apiVersion": "2017-04-18", + "name": "[parameters('contentModeratorName')]", + "location": "[parameters('contentModeratorLocation')]", + "sku": { + "name": "[parameters('contentModeratorSku')]" + } + }, + { + "comments": "Cognitive service key for all LUIS apps.", + "type": "Microsoft.CognitiveServices/accounts", + "kind": "LUIS", + "apiVersion": "2017-04-18", + "name": "[parameters('luisServiceName')]", + "location": "[parameters('luisServiceLocation')]", + "sku": { + "name": "[parameters('luisServiceSku')]" + } + }, + { + "comments": "Cognitive service key for all QnA Maker knowledgebases.", + "type": "Microsoft.CognitiveServices/accounts", + "kind": "QnAMaker", + "apiVersion": "2017-04-18", + "name": "[parameters('qnaMakerServiceName')]", + "location": "westus", + "sku": { + "name": "[parameters('qnaMakerServiceSku')]" + }, + "properties": { + "apiProperties": { + "qnaRuntimeEndpoint": "[concat('https://',reference(resourceId('Microsoft.Web/sites', parameters('qnaMakerWebAppName'))).hostNames[0])]" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites', parameters('qnaMakerWebAppName'))]", + "[resourceId('Microsoft.Search/searchServices/', parameters('qnaMakerSearchName'))]", + "[resourceId('microsoft.insights/components/', parameters('appInsightsName'))]" + ] + }, + { + "comments": "Search service for QnA Maker service.", + "type": "Microsoft.Search/searchServices", + "apiVersion": "2015-08-19", + "name": "[parameters('qnaMakerSearchName')]", + "location": "[parameters('qnaServiceLocation')]", + "sku": { + "name": "[parameters('qnaMakerSearchSku')]" + }, + "properties": { + "replicaCount": 1, + "partitionCount": 1, + "hostingMode": "default" + } + }, + { + "comments": "Web app for QnA Maker service.", + "type": "Microsoft.Web/sites", + "apiVersion": "2016-08-01", + "name": "[parameters('qnaMakerWebAppName')]", + "location": "[parameters('qnaServiceLocation')]", + "properties": { + "enabled": true, + "name": "[parameters('qnaMakerWebAppName')]", + "hostingEnvironment": "", + "serverFarmId": "[concat('/subscriptions/', subscription().id,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', parameters('appServicePlanName'))]", + "siteConfig": { + "cors": { + "allowedOrigins": [ + "*" + ] + } + } + }, + "dependsOn": [ + "[concat('Microsoft.Web/serverfarms/', parameters('appServicePlanName'))]" + ], + "resources": [ + { + "apiVersion": "2016-08-01", + "name": "appsettings", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites', parameters('qnaMakerWebAppName'))]", + "[resourceId('Microsoft.Insights/components', parameters('appInsightsName'))]", + "[resourceId('Microsoft.Search/searchServices/', parameters('qnaMakerSearchName'))]" + ], + "properties": { + "AzureSearchName": "[parameters('qnaMakerSearchName')]", + "AzureSearchAdminKey": "[listAdminKeys(resourceId('Microsoft.Search/searchServices/', parameters('qnaMakerSearchName')), '2015-08-19').primaryKey]", + "UserAppInsightsKey": "[reference(resourceId('Microsoft.Insights/components/', parameters('appInsightsName')), '2015-05-01').InstrumentationKey]", + "UserAppInsightsName": "[parameters('appInsightsName')]", + "UserAppInsightsAppId": "[reference(resourceId('Microsoft.Insights/components/', parameters('appInsightsName')), '2015-05-01').AppId]", + "PrimaryEndpointKey": "[concat(parameters('qnaMakerWebAppName'), '-PrimaryEndpointKey')]", + "SecondaryEndpointKey": "[concat(parameters('qnaMakerWebAppName'), '-SecondaryEndpointKey')]", + "DefaultAnswer": "No good match found in KB.", + "QNAMAKER_EXTENSION_VERSION": "latest" + } + } + ] + } + ], + "outputs": { + "ApplicationInsights": { + "type": "object", + "value": { + "InstrumentationKey": "[reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey]" + } + }, + "storage": { + "type": "object", + "value": { + "connectionString": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('cleanStorageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('cleanStorageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net')]", + "container": "transcripts" + } + }, + "cosmosDb": { + "type": "object", + "value": { + "cosmosDBEndpoint": "[reference(resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('cosmosDbName'))).documentEndpoint]", + "authkey": "[listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('cosmosDbName')), '2015-04-08').primaryMasterKey]", + "databaseId": "botstate-db", + "collectionId": "botstate-collection" + } + }, + "luis": { + "type": "object", + "value": { + "key": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1]" + } + }, + "qnaMaker": { + "type": "object", + "value": { + "endpoint": "[concat('https://', reference(resourceId('Microsoft.Web/sites', parameters('qnaMakerWebAppName'))).hostNames[0])]", + "key": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('qnaMakerServiceName')),'2017-04-18').key1]" + } + }, + "contentModerator": { + "type": "object", + "value": { + "key": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('contentModeratorName')),'2017-04-18').key1]" + } + } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/add_remote_skill.ps1 b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/add_remote_skill.ps1 new file mode 100644 index 0000000000..0a37b5f55e --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/add_remote_skill.ps1 @@ -0,0 +1,302 @@ +#Requires -Version 6 + +Param( + [string] $botName, + [string] $manifestUrl, + [string] $luisFolder, + [string] $dispatchFolder, + [string] $dispatchName, + [string] $language = "en-us", + [string] $resourceGroup, + [string] $outFolder = $(Get-Location), + [string] $lgOutFolder = $(Join-Path $outFolder Services), + [string] $appSettingsFile = $(Join-Path $outFolder 'appsettings.json'), + [string] $skillsFile = $(Join-Path $outFolder 'skills.json'), + [string] $cognitiveModelsFile = $(Join-Path $outFolder 'cognitivemodels.json'), + [string] $logFile = $(Join-Path $PSScriptRoot .. "add_remote_skill_log.txt") +) + +. $PSScriptRoot\skill_functions.ps1 + +# Reset log file +if (Test-Path $logFile) { + Clear-Content $logFile -Force | Out-Null +} +else { + New-Item -Path $logFile | Out-Null +} + +# Set defaults and validate file paths +$langCode = ($language -split "-")[0] +if (-not $luisFolder) { + $luisFolder = $(Join-Path $PSScriptRoot .. Resources Skills $langCode) +} + +if (-not $botName) { + $botName = Read-Host "? Virtual Assistant Name (used to configure skill authentication)" +} + +if (-not $manifestUrl) { + $manifestUrl = Read-Host "? Skill Manifest URL (i.e. https://calendarskill.azurewebsites.net/api/skill/manifest)" +} + +if (-not $dispatchFolder) { + $dispatchFolder = $(Join-Path $PSScriptRoot .. Resources Dispatch $langCode) +} + +if (-not $dispatchName) { + if (Test-Path $cognitiveModelsFile) { + $cognitiveModels = Get-Content $cognitiveModelsFile | ConvertFrom-Json + $models = $($cognitiveModels.cognitiveModels.PSObject.Properties | Where-Object { $_.Name -eq $langCode } | Select-Object -First 1).Value + $dispatchName = $models.dispatchModel.name + } + else { + Write-Host "! Could not find file: $($cognitiveModelsFile). Please provide a valid path, or the dispatchName and dispatchFolder parameters." -ForegroundColor DarkRed + Break + } +} + +if (-not $resourceGroup) { + $resourceGroup = $botName +} + +if (-not $(Test-Path $appSettingsFile)) { + Write-Host "! Could not find file: $($appSettingsFile)." -ForegroundColor DarkRed + Break +} + +$dispatchPath = $(Join-Path $dispatchFolder "$($dispatchName).dispatch") +if (-not $(Test-Path $dispatchPath)) { + Write-Host "! Could not find file: $($dispatchPath). Please provide the dispatchName and dispatchFolder parameters." -ForegroundColor DarkRed + Break +} + +$dispatchJsonPath = $(Join-Path $dispatchFolder "$($dispatchName).json") +if (-not $(Test-Path $dispatchJsonPath)) { + Write-Host "! Could not find file: $($dispatchPath). LuisGen will not be run." -ForegroundColor DarkRed +} + +# Processing +Write-Host "> Loading skill manifest ..." +$manifest = $(Invoke-WebRequest -Uri $manifestUrl | ConvertFrom-Json) 2>> $logFile + +if (-not $manifest) { + Write-Host "! Could not load manifest from $($manifestUrl). Please check the url and try again." -ForegroundColor DarkRed + Break +} + +Write-Host "> Getting intents for dispatch ..." +$dictionary = @{ } +foreach ($action in $manifest.actions) { + if ($action.definition.triggers.utteranceSources) { + foreach ($source in $action.definition.triggers.utteranceSources) { + foreach ($luisStr in $source.source) { + $luis = $luisStr -Split '#' + if ($dictionary.ContainsKey($luis[0])) { + $intents = $dictionary[$luis[0]] + $intents += $luis[1] + $dictionary[$luis[0]] = $intents + } + else { + $dictionary.Add($luis[0], @($luis[1])) + } + } + } + } +} + +Write-Host "> Adding $($manifest.Id) to dispatch ..." +try { + foreach ($luisApp in $dictionary.Keys) { + $intentName = $manifest.Id + $intents = $dictionary[$luisApp] -Join "," + $luFile = Get-ChildItem -Path $(Join-Path $luisFolder "$($luisApp).lu") ` 2>> $logFile + + if (-not $luFile) { + $luFile = Get-ChildItem -Path $(Join-Path $luisFolder $langCode "$($luisApp).lu") ` 2>> $logFile + + if ($luFile) { + $luisFolder = $(Join-Path $luisFolder $langCode) + } + else { + Write-Host "! Could not find $($manifest.Name) LU file. Please provide the -luisFolder parameter." -ForegroundColor DarkRed + Write-Host "! Checked the following locations:" -ForegroundColor DarkRed + Write-Host " $(Join-Path $luisFolder "$($luisApp).lu")" -ForegroundColor DarkRed + Write-Host " $(Join-Path $luisFolder $langCode "$($luisApp).lu")" -ForegroundColor DarkRed + Throw + } + } + + # Parse LU file + ludown parse toluis ` + --in $luFile ` + --luis_culture $language ` + --out_folder $luisFolder ` + --out "$($luisApp).luis" + + $luisFile = Get-ChildItem ` + -Path $luisFolder ` + -Filter "$($luisApp).luis" ` + -Recurse ` + -Force 2>> $logFile + + if ($luisFile) { + (dispatch add ` + --name $intentName ` + --type file ` + --filePath $luisFile ` + --intentName $intentName ` + --includedIntents $intents ` + --dataFolder $dispatchFolder ` + --dispatch $(Join-Path $dispatchFolder "$($dispatchName).dispatch")) 2>> $logFile | Out-Null + } + else { + Write-Host "! Could not find LUIS file: $(Join-Path $luisFolder "$($luisApp).luis")" -ForegroundColor DarkRed + Break + } + } +} +catch { + Break +} + +Write-Host "> Running dispatch refresh ..." +(dispatch refresh ` + --dispatch $(Join-Path $dispatchFolder "$($dispatchName).dispatch") ` + --dataFolder $dispatchFolder) 2>> $logFile | Out-Null + +if (Test-Path $dispatchJsonPath) { + Write-Host "> Running LuisGen ..." + luisgen $dispatchJsonPath -cs "DispatchLuis" -o $lgOutFolder 2>> $logFile | Out-Null +} + +Write-Host "> Initializing skill.config ..." +if (Test-Path $skillsFile) { + $skillConfig = Get-Content $skillsFile | ConvertFrom-Json + + if ($skillConfig) { + if ($skillConfig.skills) { + if ($skillConfig.skills.Id -eq $manifest.Id) { + Write-Host "! $($manifest.Id) is already registered." -ForegroundColor DarkRed + $alreadyRegistered = $true; + } + else { + Write-Host "> Registering $($manifest.Id) ..." + $skillConfig.skills += $manifest + } + } + else { + Write-Host "> Registering $($manifest.Id) ..." + $skills = @($manifest) + $skillConfig | Add-Member -Type NoteProperty -Force -Name "skills" -Value $skills + } + } +} + +if (-not $alreadyRegistered) { + + if (-not $skillConfig) { + $skillConfig = @{ skills = @($manifest) } + } + + $skillConfig | ConvertTo-Json -depth 100 | Out-File $skillsFile + + # configuring bot auth settings + Write-Host "> Checking for authentication settings ..." + if ($manifest.authenticationConnections) { + if ($manifest.authenticationConnections | Where-Object { $_.serviceProviderId -eq "Azure Active Directory v2" }) + { + Write-Host "> Configuring Azure AD connection ..." + $aadConfig = $manifest.authenticationConnections | Where-Object { $_.serviceProviderId -eq "Azure Active Directory v2" } | Select-Object -First 1 + $connectionName = $aadConfig.Id + $newScopes = $aadConfig.scopes -Split ", " + $scopes = $newScopes + + # check for existing aad connection + $connections = az bot authsetting list ` + -n $botName ` + -g $resourceGroup ` + | ConvertFrom-Json + + if ($connections -and ($connections | Where-Object {$_.properties.serviceProviderDisplayName -eq "Azure Active Directory v2" })) { + $aadConnection = $connections | Where-Object {$_.properties.serviceProviderDisplayName -eq "Azure Active Directory v2" } | Select-Object -First 1 + $settingName = $($aadConnection.name -Split "/")[1] + + # Get current aad auth setting + $botAuthSetting = (az bot authsetting show ` + -n $botName ` + -g $resourceGroup ` + -c $settingName | ConvertFrom-Json) 2>> $logFile + + $existingScopes = $botAuthSetting.properties.scopes -Split " " + $scopes += $existingScopes + $connectionName = $settingName + + # delete current aad auth connection + (az bot authsetting delete -n $botName -g $resourceGroup -c $settingName) 2>> $logFile | Out-Null + } + + # update appsettings.json + Write-Host "> Updating appsettings.json ..." + $appSettings = Get-Content $appSettingsFile | ConvertFrom-Json + + # check for and remove existing aad connections + if ($appSettings.oauthConnections) { + $appSettings.oauthConnections = @($appSettings.oauthConnections | Where-Object -FilterScript { $_.provider -ne "Azure Active Directory v2" }) + } + + # set or add new oauth setting + $oauthSetting = @{ "name" = $connectionName; "provider" = "Azure Active Directory v2" } + if (-not $appSettings.oauthConnections) { + $appSettings | Add-Member -Type NoteProperty -Force -Name 'oauthConnections' -Value @($oauthSetting) + } + else { + $appSettings.oauthConnections += @($oauthSetting) + } + + # update appsettings.json + ConvertTo-Json $appSettings -depth 100 | Out-File $appSettingsFile + + # Remove duplicate scopes + $scopes = $scopes | Select -unique + $scopeManifest = $(CreateScopeManifest($scopes)).Replace("`"", "'") + + # Update MSA scopes + Write-Host "> Configuring MSA app scopes ..." + $errorResult = az ad app update ` + --id "$($appSettings.microsoftAppId)" ` + --required-resource-accesses "`"[$($scopeManifest)]`"" 2>&1 + + # Catch error: Updates to converged applications are not allowed in this version. + if ($errorResult) { + Write-Host "! Could not configure scopes automatically." -ForegroundColor Cyan + $manualScopesRequired = $true + } + + Write-Host "> Updating bot oauth settings ..." + (az bot authsetting create ` + --name $botName ` + --resource-group $resourceGroup ` + --setting-name $connectionName ` + --client-id "`"$($appSettings.microsoftAppId)`"" ` + --client-secret "`"$($appSettings.microsoftAppPassword)`"" ` + --service Aadv2 ` + --parameters clientId="`"$($appSettings.microsoftAppId)`"" clientSecret="`"$($appSettings.microsoftAppPassword)`"" tenantId=common ` + --provider-scope-string "$($scopes)") 2>> $logFile | Out-Null + } + else { + Write-Host "! Could not configure authentication connection automatically." -ForegroundColor Cyan + $manualAuthRequired = $true + } + } + + if ($manualScopesRequired) { + Write-Host "+ Could not configure scopes automatically. You must configure the following scopes in the Azure Portal to use this skill: $($newScopes -Join ', ')" -ForegroundColor Magenta + } + + if ($manualAuthRequired) { + Write-Host "+ Could not configure authentication connection automatically. You must configure one of the following connection types manually in the Azure Portal: $($manifest.authenticationConnections.serviceProviderId -Join ', ')" -ForegroundColor Magenta + } +} + +Write-Host "> Done." \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/deploy.ps1 b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/deploy.ps1 new file mode 100644 index 0000000000..76264dd1fe --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/deploy.ps1 @@ -0,0 +1,235 @@ +#Requires -Version 6 + +Param( + [string] $name, + [string] $resourceGroup, + [string] $location, + [string] $appId, + [string] $appPassword, + [string] $luisAuthoringKey, + [string] $luisAuthoringRegion, + [string] $parametersFile, + [string] $languages = "en-us", + [string] $projDir = $(Get-Location), + [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_log.txt") +) + +# Reset log file +if (Test-Path $logFile) { + Clear-Content $logFile -Force | Out-Null +} +else { + New-Item -Path $logFile | Out-Null +} + +if (-not (Test-Path (Join-Path $projDir 'appsettings.json'))) +{ + Write-Host "! Could not find an 'appsettings.json' file in the current directory." -ForegroundColor DarkRed + Write-Host "+ Please re-run this script from your project directory." -ForegroundColor Magenta + Break +} + +# Get mandatory parameters +if (-not $name) { + $name = Read-Host "? Bot Name (used as default name for resource group and deployed resources)" +} + +if (-not $resourceGroup) { + $resourceGroup = $name +} + +if (-not $location) { + $location = Read-Host "? Azure resource group region" +} + +if (-not $appPassword) { + $appPassword = Read-Host "? Password for MSA app registration (must be at least 16 characters long, contain at least 1 special character, and contain at least 1 numeric character)" +} + +if (-not $luisAuthoringRegion) { + $luisAuthoringRegion = Read-Host "? LUIS Authoring Region (westus, westeurope, or australiaeast)" +} + +if (-not $luisAuthoringKey) { + Switch ($luisAuthoringRegion) { + "westus" { + $luisAuthoringKey = Read-Host "? LUIS Authoring Key (found at https://luis.ai/user/settings)" + Break + } + "westeurope" { + $luisAuthoringKey = Read-Host "? LUIS Authoring Key (found at https://eu.luis.ai/user/settings)" + Break + } + "australiaeast" { + $luisAuthoringKey = Read-Host "? LUIS Authoring Key (found at https://au.luis.ai/user/settings)" + Break + } + default { + Write-Host "! $($luisAuthoringRegion) is not a valid LUIS authoring region." -ForegroundColor DarkRed + Break + } + } + + if (-not $luisAuthoringKey) { + Break + } +} + +if (-not $appId) { + # Create app registration + $app = (az ad app create ` + --display-name $name ` + --password $appPassword ` + --available-to-other-tenants ` + --reply-urls 'https://token.botframework.com/.auth/web/redirect') + + # Retrieve AppId + if ($app) { + $appId = ($app | ConvertFrom-Json) | Select-Object -ExpandProperty appId + } + + if(-not $appId) { + Write-Host "! Could not provision Microsoft App Registration automatically. Review the log for more information." -ForegroundColor DarkRed + Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed + Write-Host "+ Provision an app manually in the Azure Portal, then try again providing the -appId and -appPassword arguments. See https://aka.ms/vamanualappcreation for more information." -ForegroundColor Magenta + Break + } +} + +# Get timestamp +$timestamp = Get-Date -f MMddyyyyHHmmss + +# Create resource group +Write-Host "> Creating resource group ..." +(az group create --name $resourceGroup --location $location) 2>> $logFile | Out-Null + +# Deploy Azure services (deploys LUIS, QnA Maker, Content Moderator, CosmosDB) +if ($parametersFile) { + Write-Host "> Validating Azure deployment ..." + $validation = az group deployment validate ` + --resource-group $resourcegroup ` + --template-file "$(Join-Path $PSScriptRoot '..' 'Resources' 'template.json')" ` + --parameters "@$($parametersFile)" ` + --parameters name=$name microsoftAppId=$appId microsoftAppPassword="`"$($appPassword)`"" + + if ($validation) { + $validation = $validation | ConvertFrom-Json + + if (-not $validation.error) { + Write-Host "> Deploying Azure services (this could take a while)..." -ForegroundColor Yellow + $deployment = az group deployment create ` + --name $timestamp ` + --resource-group $resourceGroup ` + --template-file "$(Join-Path $PSScriptRoot '..' 'Resources' 'template.json')" ` + --parameters "@$($parametersFile)" ` + --parameters name=$name microsoftAppId=$appId microsoftAppPassword="`"$($appPassword)`"" + } + else { + Write-Host "! Template is not valid with provided parameters." -ForegroundColor DarkRed + Write-Host "! Error: $($validation.error.message)" -ForegroundColor DarkRed + Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta + Break + } + } +} +else { + Write-Host "> Validating Azure deployment ..." + $validation = az group deployment validate ` + --resource-group $resourcegroup ` + --template-file "$(Join-Path $PSScriptRoot '..' 'Resources' 'template.json')" ` + --parameters name=$name microsoftAppId=$appId microsoftAppPassword="`"$($appPassword)`"" + + if ($validation) { + $validation = $validation | ConvertFrom-Json + + if (-not $validation.error) { + Write-Host "> Deploying Azure services (this could take a while)..." -ForegroundColor Yellow + $deployment = az group deployment create ` + --name $timestamp ` + --resource-group $resourceGroup ` + --template-file "$(Join-Path $PSScriptRoot '..' 'Resources' 'template.json')" ` + --parameters name=$name microsoftAppId=$appId microsoftAppPassword="`"$($appPassword)`"" + } + else { + Write-Host "! Template is not valid with provided parameters." -ForegroundColor DarkRed + Write-Host "! Error: $($validation.error.message)" -ForegroundColor DarkRed + Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta + Break + } + } +} + +# Get deployment outputs +$outputs = (az group deployment show ` + --name $timestamp ` + --resource-group $resourceGroup ` + --query properties.outputs) 2>> $logFile + +# If it succeeded then we perform the remainder of the steps +if ($outputs) +{ + # Log and convert to JSON + $outputs >> $logFile + $outputs = $outputs | ConvertFrom-Json + + # Update appsettings.json + Write-Host "> Updating appsettings.json ..." + if (Test-Path $(Join-Path $projDir appsettings.json)) { + $settings = Get-Content $(Join-Path $projDir appsettings.json) | ConvertFrom-Json + } + else { + $settings = New-Object PSObject + } + + $settings | Add-Member -Type NoteProperty -Force -Name 'microsoftAppId' -Value $appId + $settings | Add-Member -Type NoteProperty -Force -Name 'microsoftAppPassword' -Value $appPassword + if ($outputs.ApplicationInsights) { $settings | Add-Member -Type NoteProperty -Force -Name 'ApplicationInsights' -Value $outputs.ApplicationInsights.value } + if ($outputs.storage) { $settings | Add-Member -Type NoteProperty -Force -Name 'blobStorage' -Value $outputs.storage.value } + if ($outputs.cosmosDb) { $settings | Add-Member -Type NoteProperty -Force -Name 'cosmosDb' -Value $outputs.cosmosDb.value } + if ($outputs.contentModerator) { $settings | Add-Member -Type NoteProperty -Force -Name 'contentModerator' -Value $outputs.contentModerator.value } + + $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $projDir appsettings.json) + + # Delay to let QnA Maker finish setting up + Start-Sleep -s 30 + + # Deploy cognitive models + Invoke-Expression "$(Join-Path $PSScriptRoot 'deploy_cognitive_models.ps1') -name $($name) -luisAuthoringRegion $($luisAuthoringRegion) -luisAuthoringKey $($luisAuthoringKey) -qnaSubscriptionKey $($outputs.qnaMaker.value.key) -outFolder `"$($projDir)`" -languages `"$($languages)`"" + + # Publish bot + Invoke-Expression "$(Join-Path $PSScriptRoot 'publish.ps1') -name $($name) -resourceGroup $($resourceGroup) -projFolder `"$($projDir)`"" + + Write-Host "> Done." +} +else +{ + # Check for failed deployments + $operations = (az group deployment operation list -g $resourceGroup -n $timestamp) 2>> $logFile | Out-Null + + if ($operations) { + $operations = $operations | ConvertFrom-Json + $failedOperations = $operations | Where { $_.properties.statusmessage.error -ne $null } + if ($failedOperations) { + foreach ($operation in $failedOperations) { + switch ($operation.properties.statusmessage.error.code) { + "MissingRegistrationForLocation" { + Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType). This resource is not avaliable in the location provided." -ForegroundColor DarkRed + Write-Host "+ Update the .\Deployment\Resources\parameters.template.json file with a valid region for this resource and provide the file path in the -parametersFile parameter." -ForegroundColor Magenta + } + default { + Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType)." + Write-Host "! Code: $($operation.properties.statusMessage.error.code)." + Write-Host "! Message: $($operation.properties.statusMessage.error.message)." + } + } + } + } + } + else { + Write-Host "! Deployment failed. Please refer to the log file for more information." -ForegroundColor DarkRed + Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed + } + + Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta + Break +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/deploy_cognitive_models.ps1 b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/deploy_cognitive_models.ps1 new file mode 100644 index 0000000000..2322344cf3 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/deploy_cognitive_models.ps1 @@ -0,0 +1,190 @@ +#Requires -Version 6 + +Param( + [string] $name, + [string] $luisAuthoringRegion, + [string] $luisAuthoringKey, + [string] $qnaSubscriptionKey, + [string] $languages = "en-us", + [string] $outFolder = $(Get-Location), + [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_cognitive_models_log.txt") +) + +. $PSScriptRoot\luis_functions.ps1 +. $PSScriptRoot\qna_functions.ps1 + +# Reset log file +if (Test-Path $logFile) { + Clear-Content $logFile -Force | Out-Null +} +else { + New-Item -Path $logFile | Out-Null +} + +# Get mandatory parameters +if (-not $name) { + $name = Read-Host "? Base name for Cognitive Models" + $resourceGroup = $name +} + +if (-not $luisAuthoringRegion) { + $luisAuthoringRegion = Read-Host "? LUIS Authoring Region (westus, westeurope, or australiaeast)" +} + +if (-not $luisAuthoringKey) { + Switch ($luisAuthoringRegion) { + "westus" { + $luisAuthoringKey = Read-Host "? LUIS Authoring Key (found at https://luis.ai/user/settings)" + Break + } + "westeurope" { + $luisAuthoringKey = Read-Host "? LUIS Authoring Key (found at https://eu.luis.ai/user/settings)" + Break + } + "australiaeast" { + $luisAuthoringKey = Read-Host "? LUIS Authoring Key (found at https://au.luis.ai/user/settings)" + Break + } + default { + Write-Host "! $($luisAuthoringRegion) is not a valid LUIS authoring region." -ForegroundColor DarkRed + Break + } + } + + if (-not $luisAuthoringKey) { + Break + } +} + +if (-not $qnaSubscriptionKey) { + $qnaSubscriptionKey = Read-Host "? QnA Maker Subscription Key" +} + +# Get languages +$languageArr = $languages -split "," + +# Initialize settings obj +$settings = @{ defaultLocale = $languageArr[0]; cognitiveModels = New-Object PSObject } + +# Deploy localized resources +Write-Host "> Deploying cognitive models ..." +foreach ($language in $languageArr) +{ + $langCode = ($language -split "-")[0] + + $config = @{ + dispatchModel = New-Object PSObject + languageModels = @() + knowledgebases = @() + } + + # Initialize Dispatch + Write-Host "> Initializing dispatch model ..." + $dispatchName = "$($name)$($langCode)_Dispatch" + $dataFolder = Join-Path $PSScriptRoot .. Resources Dispatch $langCode + (dispatch init ` + --name $dispatchName ` + --luisAuthoringKey $luisAuthoringKey ` + --luisAuthoringRegion $luisAuthoringRegion ` + --dataFolder $dataFolder) 2>> $logFile | Out-Null + + # Deploy LUIS apps + $luisFiles = Get-ChildItem "$(Join-Path $PSScriptRoot .. 'Resources' 'LU' $langCode)" | Where {$_.extension -eq ".lu"} + foreach ($lu in $luisFiles) + { + # Deploy LUIS model + $luisApp = DeployLUIS -name $name -lu_file $lu -region $luisAuthoringRegion -luisAuthoringKey $luisAuthoringKey -language $language -log $logFile + + if ($luisApp) { + # Add luis app to dispatch + Write-Host "> Adding $($lu.BaseName) app to dispatch model ..." + (dispatch add ` + --type "luis" ` + --name $luisApp.name ` + --id $luisApp.id ` + --intentName "l_$($lu.BaseName)" ` + --dataFolder $dataFolder ` + --dispatch "$(Join-Path $dataFolder "$($dispatchName).dispatch")") 2>> $logFile | Out-Null + + # Add to config + $config.languageModels += @{ + id = $lu.BaseName + name = $luisApp.name + appid = $luisApp.id + authoringkey = $luisauthoringkey + subscriptionkey = $luisauthoringkey + version = $luisApp.activeVersion + region = $luisAuthoringRegion + } + } + else { + Write-Host "! Could not create LUIS app. Skipping dispatch add." -ForegroundColor Cyan + } + } + + # Deploy QnA Maker KBs + $qnaFiles = Get-ChildItem "$(Join-Path $PSScriptRoot .. 'Resources' 'QnA' $langCode)" -Recurse | Where {$_.extension -eq ".lu"} + foreach ($lu in $qnaFiles) + { + # Deploy QnA Knowledgebase + $qnaKb = DeployKB -name $name -lu_file $lu -qnaSubscriptionKey $qnaSubscriptionKey -log $logFile + + if ($qnaKb) { + # Add luis app to dispatch + Write-Host "> Adding $($lu.BaseName) kb to dispatch model ..." + (dispatch add ` + --type "qna" ` + --name $qnaKb.name ` + --id $qnaKb.id ` + --key $qnaSubscriptionKey ` + --intentName "q_$($lu.BaseName)" ` + --dataFolder $dataFolder ` + --dispatch "$(Join-Path $dataFolder "$($dispatchName).dispatch")") 2>> $logFile | Out-Null + + # Add to config + $config.knowledgebases += @{ + id = $lu.BaseName + name = $qnaKb.name + kbId = $qnaKb.kbId + subscriptionKey = $qnaKb.subscriptionKey + endpointKey = $qnaKb.endpointKey + hostname = $qnaKb.hostname + } + } + else { + Write-Host "! Could not create knowledgebase. Skipping dispatch add." -ForegroundColor Cyan + } + } + + # Create dispatch model + Write-Host "> Creating dispatch model..." + $dispatch = (dispatch create ` + --dispatch "$(Join-Path $dataFolder "$($dispatchName).dispatch")" ` + --dataFolder $dataFolder ` + --culture $language) 2>> $logFile + + if (-not $dispatch) { + Write-Host "! Could not create Dispatch app. Review the log for more information." -ForegroundColor DarkRed + Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed + Break + } + else { + $dispatchApp = $dispatch | ConvertFrom-Json + + # Add to config + $config.dispatchModel = @{ + type = "dispatch" + name = $dispatchApp.name + appid = $dispatchApp.appId + authoringkey = $luisauthoringkey + subscriptionkey = $luisauthoringkey + region = $luisAuthoringRegion + } + } + + # Add config to cognitivemodels dictionary + $settings.cognitiveModels | Add-Member -Type NoteProperty -Force -Name $langCode -Value $config +} + +# Write out config to file +$settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $outFolder "cognitivemodels.json" ) \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/luis_functions.ps1 b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/luis_functions.ps1 new file mode 100644 index 0000000000..04907c3754 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/luis_functions.ps1 @@ -0,0 +1,108 @@ +function DeployLUIS ($name, $lu_file, $region, $luisAuthoringKey, $language, $log) +{ + $id = $lu_file.BaseName + $outFile = "$($id).luis" + $outFolder = $lu_file.DirectoryName + $appName = "$($name)$($langCode)_$($id)" + + # Parse LU file + Write-Host "> Parsing $($id) LU file ..." + ludown parse toluis ` + --in $lu_file ` + --luis_culture $language ` + --out_folder $outFolder ` + --out $outFile + + # Create LUIS app + Write-Host "> Deploying $($id) LUIS app ..." + $luisApp = (luis import application ` + --appName $appName ` + --authoringKey $luisAuthoringKey ` + --subscriptionKey $luisAuthoringKey ` + --region $region ` + --in "$(Join-Path $outFolder $outFile)" ` + --wait) 2>> $log | ConvertFrom-Json + + if (-not $luisApp) { + Write-Host "! Could not deploy LUIS model. Review the log for more information." -ForegroundColor DarkRed + Write-Host "! Log: $($log)" -ForegroundColor DarkRed + Return $null + } + else { + # train and publish luis app + $(luis train version --appId $luisApp.id --authoringKey $luisAuthoringKey --versionId $luisApp.activeVersion --wait + & luis publish version --appId $luisApp.id --authoringKey $luisAuthoringKey --versionId $luisApp.activeVersion --wait) 2>> $log | Out-Null + + Return $luisApp + } +} + +function UpdateLUIS ($lu_file, $appId, $version, $authoringKey, $subscriptionKey, $log) +{ + $id = $lu_file.BaseName + $outFile = "$($id).luis" + $outFolder = $lu_file.DirectoryName + + $luisApp = luis get application --appId $appId --authoringKey $authoringKey | ConvertFrom-Json + + # Parse LU file + Write-Host "> Parsing $($id) LU file ..." + ludown parse toluis ` + --in $lu_file ` + --luis_culture $luisApp.culture ` + --out_folder $outFolder ` + --out $outFile + + Write-Host "? Getting current versions ..." + # Get list of current versions + $versions = luis list versions ` + --appId $appId ` + --authoringKey $authoringKey | ConvertFrom-Json + + # If the current version exists + if ($versions | Where { $_.version -eq $version }) + { + # delete any old backups + if ($versions | Where { $_.version -eq "backup" }) + { + Write-Host "> Deleting old backup version ..." + luis delete version ` + --appId $appId ` + --versionId "backup" ` + --authoringKey $authoringKey ` + --force --wait | Out-Null + } + + # rename the active version to backup + Write-Host "> Saving current version as backup ..." + luis rename version ` + --appId $appId ` + --versionId $version ` + --newVersionId backup ` + --authoringKey $authoringKey ` + --subscriptionKey $subscriptionKey ` + --wait | Out-Null + } + + # import the new 0.1 version from the .luis file + Write-Host "> Importing new version ..." + luis import version ` + --appId $appId ` + --versionId $version ` + --authoringKey $authoringKey ` + --subscriptionKey $subscriptionKey ` + --in "$(Join-Path $outFolder $outFile)" ` + --wait | ConvertFrom-Json + + # train and publish luis app + $(luis train version --appId $appId --authoringKey $authoringKey --versionId $version --wait + & luis publish version --appId $appId --authoringKey $authoringKey --versionId $version --wait) 2>&1 | Out-Null +} + +function RunLuisGen($lu_file, $outName, $outFolder) { + $id = $lu_file.BaseName + $luisFolder = $lu_file.DirectoryName + $luisFile = Join-Path $luisFolder "$($id).luis" + + luisgen $luisFile -cs "$($outName)Luis" -o $outFolder +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/publish.ps1 b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/publish.ps1 new file mode 100644 index 0000000000..87d9dce57d --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/publish.ps1 @@ -0,0 +1,44 @@ +#Requires -Version 6 + +Param( + [string] $name, + [string] $resourceGroup, + [string] $projFolder = $(Get-Location), + [string] $logFile = $(Join-Path $PSScriptRoot .. "publish.txt") +) + +# Reset log file +if (Test-Path $logFile) { + Clear-Content $logFile -Force | Out-Null +} +else { + New-Item -Path $logFile | Out-Null +} + +# Check for existing deployment files +if (-not (Test-Path (Join-Path $projFolder '.deployment'))) { + + # Get path to csproj file + $projFile = Get-ChildItem $projFolder ` + | Where-Object {$_.extension -eq ".csproj" } ` + | Select-Object -First 1 + + # Add needed deployment files for az + az bot prepare-deploy --lang Csharp --code-dir $projFolder --proj-file-path $projFile.name +} + +# Delete src zip, if it exists +$zipPath = $(Join-Path $projFolder 'code.zip') +if (Test-Path $zipPath) { + Remove-Item $zipPath -Force | Out-Null +} + +# Compress source code +Get-ChildItem -Path "$($projFolder)" | Compress-Archive -DestinationPath "$($zipPath)" -Force | Out-Null + +# Publish zip to Azure +Write-Host "> Publishing to Azure ..." +(az webapp deployment source config-zip ` + --resource-group $resourceGroup ` + --name $name ` + --src $zipPath) 2>> $logFile | Out-Null \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/qna_functions.ps1 b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/qna_functions.ps1 new file mode 100644 index 0000000000..cac35fae67 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/qna_functions.ps1 @@ -0,0 +1,87 @@ +function DeployKB ($name, $lu_file, $qnaSubscriptionKey, $log) +{ + $id = $lu_file.BaseName + $outFile = "$($id).qna" + $outFolder = $lu_file.DirectoryName + + # Parse LU file + Write-Host "> Parsing $($id) LU file ..." + ludown parse toqna ` + --in $lu_file ` + --out_folder $outFolder ` + --out $outFile + + # Create QnA Maker kb + Write-Host "> Deploying $($id) QnA kb ..." + + # These values pretty much guarantee success. We can decrease them if the QnA backend gets faster + $initialDelaySeconds = 30; + $retryAttemptsRemaining = 3; + $retryDelaySeconds = 15; + $retryDelayIncrease = 30; + + while ($retryAttemptsRemaining -ge 0) { + $qnaKb = (qnamaker create kb ` + --name $id ` + --subscriptionKey $qnaSubscriptionKey ` + --in $(Join-Path $outFolder $outFile) ` + --force ` + --wait ` + --msbot) 2>> $log + + if (-not $qnaKb) { + $retryAttemptsRemaining = $retryAttemptsRemaining - 1 + Write-Host $retryAttemptsRemaining + Start-Sleep -s $retryDelaySeconds + $retryDelaySeconds += $retryDelayIncrease + + if ($retryAttemptsRemaining -lt 0) { + Write-Host "! Unable to create QnA KB." -ForegroundColor Cyan + } + else { + Write-Host "> Retrying ..." + Continue + } + } + else { + Break + } + } + + if (-not $qnaKb) { + Write-Host "! Could not deploy knowledgebase. Review the log for more information." -ForegroundColor DarkRed + Write-Host "! Log: $($log)" -ForegroundColor DarkRed + Return $null + } + else { + $qnaKb = $qnaKb | ConvertFrom-Json + + # Publish QnA Maker knowledgebase + $(qnamaker publish kb --kbId $qnaKb.kbId --subscriptionKey $qnaSubscriptionKey) 2>> $log | Out-Null + + Return $qnaKb + } +} + +function UpdateKB ($lu_file, $kbId, $qnaSubscriptionKey) +{ + $id = $lu_file.BaseName + $outFile = "$($id).qna" + $outFolder = $lu_file.DirectoryName + + # Parse LU file + Write-Host "> Parsing $($id) LU file ..." + ludown parse toqna ` + --in $lu_file ` + --out_folder $outFolder ` + --out $outFile + + Write-Host "> Replacing $($id) QnA kb ..." + qnamaker replace kb ` + --in $(Join-Path $outFolder $outFile) ` + --kbId $kbId ` + --subscriptionKey $qnaSubscriptionKey + + # Publish QnA Maker knowledgebase + $(qnamaker publish kb --kbId $kbId --subscriptionKey $qnaSubscriptionKey) 2>&1 | Out-Null +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/remove_skill.ps1 b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/remove_skill.ps1 new file mode 100644 index 0000000000..df6d06a2da --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/remove_skill.ps1 @@ -0,0 +1,119 @@ +#Requires -Version 6 + +Param( + [string] $manifestUrl, + [string] $luisFolder, + [string] $dispatchFolder, + [string] $dispatchName, + [string] $language = "en-us", + [string] $outFolder = $(Get-Location), + [string] $lgOutFolder = $(Join-Path $outFolder Services), + [string] $skillsFile = $(Join-Path $outFolder 'skills.json'), + [string] $cognitiveModelsFile = $(Join-Path $outFolder 'cognitivemodels.json'), + [string] $logFile = $(Join-Path $PSScriptRoot .. "remove_skill_log.txt") +) + +. $PSScriptRoot\skill_functions.ps1 + +# Reset log file +if (Test-Path $logFile) { + Clear-Content $logFile -Force | Out-Null +} +else { + New-Item -Path $logFile | Out-Null +} + +# Set defaults and validate file paths +$langCode = ($language -split "-")[0] +if (-not $luisFolder) { + $luisFolder = $(Join-Path $PSScriptRoot .. Resources Skills $langCode) +} + +if (-not $manifestUrl) { + $manifestUrl = Read-Host "? Skill Manifest URL (i.e. https://calendarskill.azurewebsites.net/api/skill/manifest)" +} + +if (-not $dispatchFolder) { + $dispatchFolder = $(Join-Path $PSScriptRoot .. Resources Dispatch $langCode) +} + +if (-not $dispatchName) { + if (Test-Path $cognitiveModelsFile) { + $cognitiveModels = Get-Content $cognitiveModelsFile | ConvertFrom-Json + $models = $($cognitiveModels.cognitiveModels.PSObject.Properties | Where-Object { $_.Name -eq $langCode } | Select-Object -First 1).Value + $dispatchName = $models.dispatchModel.name + } + else { + Write-Host "! Could not find file: $($cognitiveModelsFile). Please provide a valid path, or the dispatchName and dispatchFolder parameters." -ForegroundColor DarkRed + Break + } +} + +$dispatchPath = $(Join-Path $dispatchFolder "$($dispatchName).dispatch") +if (-not $(Test-Path $dispatchPath)) { + Write-Host "! Could not find file: $($dispatchPath). Please provide the dispatchName and dispatchFolder parameters." -ForegroundColor DarkRed + Break +} + +$dispatchJsonPath = $(Join-Path $dispatchFolder "$($dispatchName).json") +if (-not $(Test-Path $dispatchJsonPath)) { + Write-Host "! Could not find file: $($dispatchPath). LuisGen will not be run." -ForegroundColor DarkRed +} + +# Processing +Write-Host "> Loading skill manifest ..." +$manifest = $(Invoke-WebRequest -Uri $manifestUrl | ConvertFrom-Json) 2>> $logFile + +if (-not $manifest) { + Write-Host "! Could not load manifest from $($manifestUrl). Please check the url and try again." -ForegroundColor DarkRed + Break +} + +Write-Host "> Removing skill from dispatch ..." +$dispatch = Get-Content $dispatchPath | ConvertFrom-Json +if ($dispatch.services) { + $toRemove = $dispatch.services | Where-Object { $manifest.id -eq $_.name } + $dispatch.services = $dispatch.services | Where-Object -FilterScript { $manifest.id -ne $_.name } + $dispatch.serviceIds = $dispatch.serviceIds | Where-Object -FilterScript { $toRemove.id -notcontains $_ } + + $dispatch | ConvertTo-Json -depth 100 | Out-File $dispatchPath +} +else { + Write-Host "! No services found in file: $($dispatchPath)" -ForegroundColor DarkRed +} + +Write-Host "> Running dispatch refresh ..." +(dispatch refresh ` + --dispatch $(Join-Path $dispatchFolder "$($dispatchName).dispatch") ` + --dataFolder $dispatchFolder) 2>> $logFile | Out-Null + +if (Test-Path $dispatchJsonPath) { + Write-Host "> Running LuisGen ..." + luisgen $dispatchJsonPath -cs "DispatchLuis" -o $lgOutFolder 2>> $logFile | Out-Null +} + +Write-Host "> Getting skill config ..." +if (Test-Path $skillsFile) { + $skillConfig = Get-Content $skillsFile | ConvertFrom-Json + + if ($skillConfig) { + if ($skillConfig.skills) { + if ($skillConfig.skills.Id -eq $manifest.Id) { + Write-Host "> Removing $($manifest.Id) from skill config ..." + $skillConfig.skills = @($skillConfig.skills | Where-Object -FilterScript { $_.Id -ne $manifest.Id}) + $skillConfig | ConvertTo-Json -depth 100 | Out-File $skillsFile + } + else { + Write-Host "! Could not find $($manifest.Id) in skill config." -ForegroundColor Cyan + } + } + else { + Write-Host "! Could not find $($manifest.Id) in skill config." -ForegroundColor Cyan + } + } +} +else { + Write-Host "! Could not find file: $($skillFile)" -ForegroundColor Cyan +} + +Write-Host "> Done." \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/skill_functions.ps1 b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/skill_functions.ps1 new file mode 100644 index 0000000000..23d52ac403 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/skill_functions.ps1 @@ -0,0 +1,74 @@ +$scopeMap = @{ + "Files.Read.Selected" = "5447fe39-cb82-4c1a-b977-520e67e724eb" + "Files.ReadWrite.Selected" = "17dde5bd-8c17-420f-a486-969730c1b827" + "Files.ReadWrite.AppFolder" = "8019c312-3263-48e6-825e-2b833497195b" + "Reports.Read.All" = "02e97553-ed7b-43d0-ab3c-f8bace0d040c" + "Sites.ReadWrite.All" = "89fe6a52-be36-487e-b7d8-d061c450a026" + "Member.Read.Hidden" = "658aa5d8-239f-45c4-aa12-864f4fc7e490" + "Tasks.ReadWrite.Shared" = "c5ddf11b-c114-4886-8558-8a4e557cd52b" + "Tasks.Read.Shared" = "88d21fd4-8e5a-4c32-b5e2-4a1c95f34f72" + "Contacts.ReadWrite.Shared" = "afb6c84b-06be-49af-80bb-8f3f77004eab" + "Contacts.Read.Shared" = "242b9d9e-ed24-4d09-9a52-f43769beb9d4" + "Calendars.ReadWrite.Shared" = "12466101-c9b8-439a-8589-dd09ee67e8e9" + "Calendars.Read.Shared" = "2b9c4092-424d-4249-948d-b43879977640" + "Mail.Send.Shared" = "a367ab51-6b49-43bf-a716-a1fb06d2a174" + "Mail.ReadWrite.Shared" = "5df07973-7d5d-46ed-9847-1271055cbd51" + "Mail.Read.Shared" = "7b9103a5-4610-446b-9670-80643382c1fa" + "User.Read" = "e1fe6dd8-ba31-4d61-89e7-88639da4683d" + "User.ReadWrite" = "b4e74841-8e56-480b-be8b-910348b18b4c" + "User.ReadBasic.All" = "b340eb25-3456-403f-be2f-af7a0d370277" + "User.Read.All" = "a154be20-db9c-4678-8ab7-66f6cc099a59" + "User.ReadWrite.All" = "204e0828-b5ca-4ad8-b9f3-f32a958e7cc4" + "Group.Read.All" = "5f8c59db-677d-491f-a6b8-5f174b11ec1d" + "Group.ReadWrite.All" = "4e46008b-f24c-477d-8fff-7bb4ec7aafe0" + "Directory.Read.All" = "06da0dbc-49e2-44d2-8312-53f166ab848a" + "Directory.ReadWrite.All" = "c5366453-9fb0-48a5-a156-24f0c49a4b84" + "Directory.AccessAsUser.All" = "0e263e50-5827-48a4-b97c-d940288653c7" + "Mail.Read" = "570282fd-fa5c-430d-a7fd-fc8dc98a9dca" + "Mail.ReadWrite" = "024d486e-b451-40bb-833d-3e66d98c5c73" + "Mail.Send" = "e383f46e-2787-4529-855e-0e479a3ffac0" + "Calendars.Read" = "465a38f9-76ea-45b9-9f34-9e8b0d4b0b42" + "Calendars.ReadWrite" = "1ec239c2-d7c9-4623-a91a-a9775856bb36" + "Contacts.Read" = "ff74d97f-43af-4b68-9f2a-b77ee6968c5d" + "Contacts.ReadWrite" = "d56682ec-c09e-4743-aaf4-1a3aac4caa21" + "Files.Read" = "10465720-29dd-4523-a11a-6a75c743c9d9" + "Files.ReadWrite" = "5c28f0bf-8a70-41f1-8ab2-9032436ddb65" + "Files.Read.All" = "df85f4d6-205c-4ac5-a5ea-6bf408dba283" + "Files.ReadWrite.All" = "863451e7-0667-486c-a5d6-d135439485f0" + "Sites.Read.All" = "205e70e5-aba6-4c52-a976-6d2d46c48043" + "openid" = "37f7f235-527c-4136-accd-4a02d197296e" + "offline_access" = "7427e0e9-2fba-42fe-b0c0-848c9e6a8182" + "People.Read" = "ba47897c-39ec-4d83-8086-ee8256fa737d" + "Notes.Create" = "9d822255-d64d-4b7a-afdb-833b9a97ed02" + "Notes.ReadWrite.CreatedByApp" = "ed68249d-017c-4df5-9113-e684c7f8760b" + "Notes.Read" = "371361e4-b9e2-4a3f-8315-2a301a3b0a3d" + "Notes.ReadWrite" = "615e26af-c38a-4150-ae3e-c3b0d4cb1d6a" + "Notes.Read.All" = "dfabfca6-ee36-4db2-8208-7a28381419b3" + "Notes.ReadWrite.All" = "64ac0503-b4fa-45d9-b544-71a463f05da0" + "Tasks.Read" = "f45671fb-e0fe-4b4b-be20-3d3ce43f1bcb" + "Tasks.ReadWrite" = "2219042f-cab5-40cc-b0d2-16b1540b4c5f" + "email" = "64a6cdd6-aab1-4aaf-94b8-3cc8405e90d0" + "profile" = "14dad69e-099b-42c9-810b-d002981feec1" +} + +function GetScopeId ($scope) +{ + Return $scopeMap[$scope] +} + +function CreateScopeManifest($scopes) { + $graphScopes = @{ + resourceAppId = "00000003-0000-0000-c000-000000000000" + resourceAccess = @() + } + + foreach ($s in $scopes) { + $graphScopes.resourceAccess += @{ + id = $(GetScopeId($s)) + type = "Scope" + } + } + + $manifest = @($graphScopes) + return $($manifest | ConvertTo-Json -Compress) +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/update_cognitive_models.ps1 b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/update_cognitive_models.ps1 new file mode 100644 index 0000000000..df89714a58 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Deployment/Scripts/update_cognitive_models.ps1 @@ -0,0 +1,121 @@ +#Requires -Version 6 + +Param( + [string] $configFile = $(Join-Path (Get-Location) 'cognitivemodels.json'), + [switch] $RemoteToLocal, + [string] $dispatchFolder = $(Join-Path $PSScriptRoot '..' 'Resources' 'Dispatch'), + [string] $luisFolder = $(Join-Path $PSScriptRoot '..' 'Resources' 'LU'), + [string] $qnaFolder = $(Join-Path $PSScriptRoot '..' 'Resources' 'QnA'), + [string] $lgOutFolder = $(Join-Path (Get-Location) 'Services'), + [string] $logFile = $(Join-Path $PSScriptRoot .. "update_cognitive_models_log.txt") +) + +. $PSScriptRoot\luis_functions.ps1 +. $PSScriptRoot\qna_functions.ps1 + +# Reset log file +if (Test-Path $logFile) { + Clear-Content $logFile -Force | Out-Null +} +else { + New-Item -Path $logFile | Out-Null +} + +Write-Host "> Getting config file ..." +$languageMap = @{} +$config = Get-Content -Raw -Path $configFile | ConvertFrom-Json +$config.cognitiveModels.PSObject.Properties | Foreach-Object { $languageMap[$_.Name] = $_.Value } + +foreach ($langCode in $languageMap.Keys) { + $models = $languageMap[$langCode] + $dispatch = $models.dispatchModel + + if($RemoteToLocal) + { + # Update local LU files based on hosted models + foreach ($luisApp in $models.languageModels) + { + Write-Host "> Updating local $($luisApp.id).lu file ..." + luis export version ` + --appId $luisApp.appid ` + --versionId $luisApp.version ` + --region $luisApp.region ` + --authoringKey $luisApp.authoringKey | ludown refresh ` + --stdin ` + -n "$($luisApp.id).lu" ` + -o $(Join-Path $luisFolder $langCode) + + # Add the LUIS application to the dispatch model. + # If the LUIS application id already exists within the model no action will be taken + Write-Host "> Adding $($luisApp.id) app to dispatch model ... " + (dispatch add ` + --type "luis" ` + --name $luisApp.name ` + --id $luisApp.appid ` + --intentName "l_$($luisApp.id)" ` + --dispatch $(Join-Path $dispatchFolder $langCode "$($dispatch.name).dispatch") ` + --dataFolder $(Join-Path $dispatchFolder $langCode)) 2>> $logFile | Out-Null + } + + # Update local LU files based on hosted QnA KBs + foreach ($kb in $models.knowledgebases) + { + Write-Host "> Updating local $($kb.id).lu file ..." + qnamaker export kb ` + --environment Prod ` + --kbId $kb.kbId ` + --subscriptionKey $kb.subscriptionKey | ludown refresh ` + --stdin ` + -n "$($kb.id).lu" ` + -o $(Join-Path $qnaFolder $langCode) + + # Add the knowledge base to the dispatch model. + # If the knowledge base id already exists within the model no action will be taken + Write-Host "> Adding $($kb.id) kb to dispatch model ..." + (dispatch add ` + --type "qna" ` + --name $kb.name ` + --id $kb.kbId ` + --key $kb.subscriptionKey ` + --intentName "q_$($kb.id)" ` + --dispatch $(Join-Path $dispatchFolder $langCode "$($dispatch.name).dispatch") ` + --dataFolder $(Join-Path $dispatchFolder $langCode)) 2>> $logFile | Out-Null + } + } + else + { + # Update each luis model based on local LU files + foreach ($luisApp in $models.languageModels) { + Write-Host "> Updating hosted $($luisApp.id) app..." + $lu = Get-Item -Path $(Join-Path $luisFolder $langCode "$($luisApp.id).lu") + UpdateLUIS ` + -lu_file $lu ` + -appId $luisApp.appid ` + -version $luisApp.version ` + -authoringKey $luisApp.authoringKey ` + -subscriptionKey $app.subscriptionKey + } + + # Update each knowledgebase based on local LU files + foreach ($kb in $models.knowledgebases) { + Write-Host "> Updating hosted $($kb.id) kb..." + $lu = Get-Item -Path $(Join-Path $qnaFolder $langCode "$($kb.id).lu") + UpdateKB ` + -lu_file $lu ` + -kbId $kb.kbId ` + -qnaSubscriptionKey $kb.subscriptionKey + } + } +} + +# Update dispatch model +Write-Host "> Updating dispatch model ..." +dispatch refresh ` + --dispatch $(Join-Path $dispatchFolder $langCode "$($dispatch.name).dispatch") ` + --dataFolder $(Join-Path $dispatchFolder $langCode) 2>> $logFile | Out-Null + +# Update dispatch.cs file +Write-Host "> Running LuisGen ..." +luisgen $(Join-Path $dispatchFolder $langCode "$($dispatch.name).json") -cs "DispatchLuis" -o $lgOutFolder 2>> $logFile | Out-Null + +Write-Host "> Done." diff --git a/samples/EnterpriseNotification/VirtualAssistant/Dialogs/CancelDialog.cs b/samples/EnterpriseNotification/VirtualAssistant/Dialogs/CancelDialog.cs new file mode 100644 index 0000000000..eb66525b3c --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Dialogs/CancelDialog.cs @@ -0,0 +1,70 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Bot.Builder.Dialogs; +using VirtualAssistant.Responses.Cancel; + +namespace VirtualAssistant.Dialogs +{ + public class CancelDialog : ComponentDialog + { + private static CancelResponses _responder = new CancelResponses(); + + public CancelDialog() + : base(nameof(CancelDialog)) + { + InitialDialogId = nameof(CancelDialog); + + var cancel = new WaterfallStep[] + { + AskToCancel, + FinishCancelDialog, + }; + + AddDialog(new WaterfallDialog(InitialDialogId, cancel)); + AddDialog(new ConfirmPrompt(DialogIds.CancelPrompt)); + } + + protected override async Task EndComponentAsync(DialogContext outerDc, object result, CancellationToken cancellationToken) + { + var doCancel = (bool)result; + + if (doCancel) + { + // If user chose to cancel + await _responder.ReplyWith(outerDc.Context, CancelResponses.ResponseIds.CancelConfirmedMessage); + + // Cancel all in outer stack of component i.e. the stack the component belongs to + return await outerDc.CancelAllDialogsAsync(); + } + else + { + // else if user chose not to cancel + await _responder.ReplyWith(outerDc.Context, CancelResponses.ResponseIds.CancelDeniedMessage); + + // End this component. Will trigger reprompt/resume on outer stack + return await outerDc.EndDialogAsync(); + } + } + + private async Task AskToCancel(WaterfallStepContext sc, CancellationToken cancellationToken) + { + return await sc.PromptAsync(DialogIds.CancelPrompt, new PromptOptions() + { + Prompt = await _responder.RenderTemplate(sc.Context, sc.Context.Activity.Locale, CancelResponses.ResponseIds.CancelPrompt), + }); + } + + private async Task FinishCancelDialog(WaterfallStepContext sc, CancellationToken cancellationToken) + { + return await sc.EndDialogAsync((bool)sc.Result); + } + + private class DialogIds + { + public const string CancelPrompt = "cancelPrompt"; + } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Dialogs/EscalateDialog.cs b/samples/EnterpriseNotification/VirtualAssistant/Dialogs/EscalateDialog.cs new file mode 100644 index 0000000000..589b86b448 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Dialogs/EscalateDialog.cs @@ -0,0 +1,36 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Dialogs; +using VirtualAssistant.Responses.Escalate; +using VirtualAssistant.Services; + +namespace VirtualAssistant.Dialogs +{ + public class EscalateDialog : ComponentDialog + { + private EscalateResponses _responder = new EscalateResponses(); + + public EscalateDialog(BotServices botServices, IBotTelemetryClient telemetryClient) + : base(nameof(EscalateDialog)) + { + InitialDialogId = nameof(EscalateDialog); + + var escalate = new WaterfallStep[] + { + SendPhone, + }; + + AddDialog(new WaterfallDialog(InitialDialogId, escalate)); + } + + private async Task SendPhone(WaterfallStepContext sc, CancellationToken cancellationToken) + { + await _responder.ReplyWith(sc.Context, EscalateResponses.ResponseIds.SendPhoneMessage); + return await sc.EndDialogAsync(); + } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Dialogs/MainDialog.cs b/samples/EnterpriseNotification/VirtualAssistant/Dialogs/MainDialog.cs new file mode 100644 index 0000000000..9fefaefafc --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Dialogs/MainDialog.cs @@ -0,0 +1,445 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Luis; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Dialogs; +using Microsoft.Bot.Builder.Skills; +using Microsoft.Bot.Builder.Solutions; +using Microsoft.Bot.Builder.Solutions.Dialogs; +using Microsoft.Bot.Builder.Solutions.Proactive; +using Microsoft.Bot.Builder.Solutions.Util; +using Microsoft.Bot.Connector.Authentication; +using Microsoft.Bot.Schema; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using VirtualAssistant.Models; +using VirtualAssistant.Responses.Cancel; +using VirtualAssistant.Responses.Main; +using VirtualAssistant.Services; + +namespace VirtualAssistant.Dialogs +{ + public class MainDialog : RouterDialog + { + private const string Location = "location"; + private const string TimeZone = "timezone"; + private BotSettings _settings; + private BotServices _services; + private MainResponses _responder = new MainResponses(); + private IStatePropertyAccessor _onboardingState; + private IStatePropertyAccessor _skillContextAccessor; + private IStatePropertyAccessor _proactiveStateAccessor; + private MicrosoftAppCredentials _appCredentials; + + public MainDialog( + BotSettings settings, + BotServices services, + OnboardingDialog onboardingDialog, + EscalateDialog escalateDialog, + CancelDialog cancelDialog, + List skillDialogs, + IBotTelemetryClient telemetryClient, + ProactiveState proactiveState, + MicrosoftAppCredentials appCredentials, + UserState userState) + : base(nameof(MainDialog), telemetryClient) + { + _settings = settings; + _services = services; + TelemetryClient = telemetryClient; + _onboardingState = userState.CreateProperty(nameof(OnboardingState)); + _skillContextAccessor = userState.CreateProperty(nameof(SkillContext)); + _proactiveStateAccessor = proactiveState.CreateProperty(nameof(ProactiveModel)); + _appCredentials = appCredentials; + + AddDialog(onboardingDialog); + AddDialog(escalateDialog); + AddDialog(cancelDialog); + + foreach (var skillDialog in skillDialogs) + { + AddDialog(skillDialog); + } + } + + protected override async Task OnStartAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken)) + { + var view = new MainResponses(); + var onboardingState = await _onboardingState.GetAsync(dc.Context, () => new OnboardingState()); + + if (string.IsNullOrEmpty(onboardingState.Name)) + { + await view.ReplyWith(dc.Context, MainResponses.ResponseIds.NewUserGreeting); + } + else + { + await view.ReplyWith(dc.Context, MainResponses.ResponseIds.ReturningUserGreeting); + } + } + + protected override async Task RouteAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken)) + { + // Get cognitive models for locale + var locale = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName; + var cognitiveModels = _services.CognitiveModelSets[locale]; + + // Check dispatch result + var dispatchResult = await cognitiveModels.DispatchService.RecognizeAsync(dc.Context, CancellationToken.None); + var intent = dispatchResult.TopIntent().intent; + + // Identify if the dispatch intent matches any Action within a Skill if so, we pass to the appropriate SkillDialog to hand-off + var identifiedSkill = SkillRouter.IsSkill(_settings.Skills, intent.ToString()); + + if (identifiedSkill != null) + { + // We have identiifed a skill so initialize the skill connection with the target skill + var result = await dc.BeginDialogAsync(identifiedSkill.Id); + + if (result.Status == DialogTurnStatus.Complete) + { + await CompleteAsync(dc); + } + } + else if (intent == DispatchLuis.Intent.l_general) + { + // If dispatch result is general luis model + cognitiveModels.LuisServices.TryGetValue("general", out var luisService); + + if (luisService == null) + { + throw new Exception("The general LUIS Model could not be found in your Bot Services configuration."); + } + else + { + var result = await luisService.RecognizeAsync(dc.Context, CancellationToken.None); + + var generalIntent = result?.TopIntent().intent; + + // switch on general intents + switch (generalIntent) + { + case GeneralLuis.Intent.Escalate: + { + // start escalate dialog + await dc.BeginDialogAsync(nameof(EscalateDialog)); + break; + } + + case GeneralLuis.Intent.None: + default: + { + // No intent was identified, send confused message + await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Confused); + break; + } + } + } + } + else if (intent == DispatchLuis.Intent.q_faq) + { + cognitiveModels.QnAServices.TryGetValue("faq", out var qnaService); + + if (qnaService == null) + { + throw new Exception("The specified QnA Maker Service could not be found in your Bot Services configuration."); + } + else + { + var answers = await qnaService.GetAnswersAsync(dc.Context, null, null); + + if (answers != null && answers.Count() > 0) + { + await dc.Context.SendActivityAsync(answers[0].Answer, speak: answers[0].Answer); + } + else + { + await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Confused); + } + } + } + else if (intent == DispatchLuis.Intent.q_chitchat) + { + cognitiveModels.QnAServices.TryGetValue("chitchat", out var qnaService); + + if (qnaService == null) + { + throw new Exception("The specified QnA Maker Service could not be found in your Bot Services configuration."); + } + else + { + var answers = await qnaService.GetAnswersAsync(dc.Context, null, null); + + if (answers != null && answers.Count() > 0) + { + await dc.Context.SendActivityAsync(answers[0].Answer, speak: answers[0].Answer); + } + else + { + await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Confused); + } + } + } + else + { + // If dispatch intent does not map to configured models, send "confused" response. + // Alternatively as a form of backup you can try QnAMaker for anything not understood by dispatch. + await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Confused); + } + } + + private BotCallbackHandler ContinueConversationCallback(ITurnContext context, string message) + { + return async (turnContext, cancellationToken) => + { + var activity = turnContext.Activity.CreateReply(message); + EnsureActivity(activity); + await turnContext.SendActivityAsync(activity); + }; + } + + // this function is needed for webchat proactive to work + private void EnsureActivity(Activity activity) + { + if (activity != null) + { + if (activity.From != null) + { + activity.From.Name = "User"; + activity.From.Properties["role"] = "user"; + } + + if (activity.Recipient != null) + { + activity.Recipient.Id = "1"; + activity.Recipient.Name = "Bot"; + activity.Recipient.Properties["role"] = "bot"; + } + } + } + + protected override async Task OnEventAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken)) + { + // Check if there was an action submitted from intro card + var value = dc.Context.Activity.Value; + + if (value.GetType() == typeof(JObject)) + { + var submit = JObject.Parse(value.ToString()); + if (value != null && (string)submit["action"] == "startOnboarding") + { + await dc.BeginDialogAsync(nameof(OnboardingDialog)); + return; + } + } + + var forward = true; + var ev = dc.Context.Activity.AsEventActivity(); + if (!string.IsNullOrWhiteSpace(ev.Name)) + { + switch (ev.Name) + { + case "BroadcastEvent": + var eventData = JsonConvert.DeserializeObject(dc.Context.Activity.Value.ToString()); + + var proactiveModel = await _proactiveStateAccessor.GetAsync(dc.Context, () => new ProactiveModel()); + + var conversationReference = proactiveModel[MD5Util.ComputeHash(eventData.UserId)].Conversation; + await dc.Context.Adapter.ContinueConversationAsync(_appCredentials.MicrosoftAppId, conversationReference, ContinueConversationCallback(dc.Context, eventData.Message), cancellationToken); + break; + + case Events.TimezoneEvent: + { + try + { + var timezone = ev.Value.ToString(); + var tz = TimeZoneInfo.FindSystemTimeZoneById(timezone); + var timeZoneObj = new JObject(); + timeZoneObj.Add(TimeZone, JToken.FromObject(tz)); + + var skillContext = await _skillContextAccessor.GetAsync(dc.Context, () => new SkillContext()); + if (skillContext.ContainsKey(TimeZone)) + { + skillContext[TimeZone] = timeZoneObj; + } + else + { + skillContext.Add(TimeZone, timeZoneObj); + } + + await _skillContextAccessor.SetAsync(dc.Context, skillContext); + } + catch + { + await dc.Context.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"Timezone passed could not be mapped to a valid Timezone. Property not set.")); + } + + forward = false; + break; + } + + case Events.LocationEvent: + { + var location = ev.Value.ToString(); + var locationObj = new JObject(); + locationObj.Add(Location, JToken.FromObject(location)); + + var skillContext = await _skillContextAccessor.GetAsync(dc.Context, () => new SkillContext()); + if (skillContext.ContainsKey(Location)) + { + skillContext[Location] = locationObj; + } + else + { + skillContext.Add(Location, locationObj); + } + + await _skillContextAccessor.SetAsync(dc.Context, skillContext); + + forward = false; + break; + } + + case TokenEvents.TokenResponseEventName: + { + forward = true; + break; + } + + default: + { + await dc.Context.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"Unknown Event {ev.Name} was received but not processed.")); + forward = false; + break; + } + } + } + + if (forward) + { + var result = await dc.ContinueDialogAsync(); + + if (result.Status == DialogTurnStatus.Complete) + { + await CompleteAsync(dc); + } + } + } + + protected override async Task CompleteAsync(DialogContext dc, DialogTurnResult result = null, CancellationToken cancellationToken = default(CancellationToken)) + { + // The active dialog's stack ended with a complete status + await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Completed); + } + + protected override async Task OnInterruptDialogAsync(DialogContext dc, CancellationToken cancellationToken) + { + if (dc.Context.Activity.Type == ActivityTypes.Message && !string.IsNullOrWhiteSpace(dc.Context.Activity.Text)) + { + // get current activity locale + var locale = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName; + var cognitiveModels = _services.CognitiveModelSets[locale]; + + // check luis intent + cognitiveModels.LuisServices.TryGetValue("general", out var luisService); + if (luisService == null) + { + throw new Exception("The general LUIS Model could not be found in your Bot Services configuration."); + } + else + { + var luisResult = await luisService.RecognizeAsync(dc.Context, cancellationToken); + var intent = luisResult.TopIntent().intent; + + if (luisResult.TopIntent().score > 0.5) + { + switch (intent) + { + case GeneralLuis.Intent.Cancel: + { + return await OnCancel(dc); + } + + case GeneralLuis.Intent.Help: + { + return await OnHelp(dc); + } + + case GeneralLuis.Intent.Logout: + { + return await OnLogout(dc); + } + } + } + } + } + + return InterruptionAction.NoAction; + } + + private async Task OnCancel(DialogContext dc) + { + if (dc.ActiveDialog != null && dc.ActiveDialog.Id != nameof(CancelDialog)) + { + // Don't start restart cancel dialog + await dc.BeginDialogAsync(nameof(CancelDialog)); + + // Signal that the dialog is waiting on user response + return InterruptionAction.StartedDialog; + } + + var view = new CancelResponses(); + await view.ReplyWith(dc.Context, CancelResponses.ResponseIds.NothingToCancelMessage); + + return InterruptionAction.StartedDialog; + } + + private async Task OnHelp(DialogContext dc) + { + var view = new MainResponses(); + await view.ReplyWith(dc.Context, MainResponses.ResponseIds.Help); + + // Signal the conversation was interrupted and should immediately continue + return InterruptionAction.MessageSentToUser; + } + + private async Task OnLogout(DialogContext dc) + { + IUserTokenProvider tokenProvider; + var supported = dc.Context.Adapter is IUserTokenProvider; + if (!supported) + { + throw new InvalidOperationException("OAuthPrompt.SignOutUser(): not supported by the current adapter"); + } + else + { + tokenProvider = (IUserTokenProvider)dc.Context.Adapter; + } + + await dc.CancelAllDialogsAsync(); + + // Sign out user + var tokens = await tokenProvider.GetTokenStatusAsync(dc.Context, dc.Context.Activity.From.Id); + foreach (var token in tokens) + { + await tokenProvider.SignOutUserAsync(dc.Context, token.ConnectionName); + } + + await dc.Context.SendActivityAsync(MainStrings.LOGOUT); + + return InterruptionAction.StartedDialog; + } + + private class Events + { + public const string TimezoneEvent = "VA.Timezone"; + public const string LocationEvent = "VA.Location"; + } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Dialogs/OnboardingDialog.cs b/samples/EnterpriseNotification/VirtualAssistant/Dialogs/OnboardingDialog.cs new file mode 100644 index 0000000000..10d9ddd739 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Dialogs/OnboardingDialog.cs @@ -0,0 +1,74 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Dialogs; +using VirtualAssistant.Models; +using VirtualAssistant.Responses.Onboarding; +using VirtualAssistant.Services; + +namespace VirtualAssistant.Dialogs +{ + public class OnboardingDialog : ComponentDialog + { + private static OnboardingResponses _responder = new OnboardingResponses(); + private IStatePropertyAccessor _accessor; + private OnboardingState _state; + + public OnboardingDialog( + BotServices botServices, + UserState userState, + IBotTelemetryClient telemetryClient) + : base(nameof(OnboardingDialog)) + { + _accessor = userState.CreateProperty(nameof(OnboardingState)); + InitialDialogId = nameof(OnboardingDialog); + + var onboarding = new WaterfallStep[] + { + AskForName, + FinishOnboardingDialog, + }; + + // To capture built-in waterfall dialog telemetry, set the telemetry client + // to the new waterfall dialog and add it to the component dialog + TelemetryClient = telemetryClient; + AddDialog(new WaterfallDialog(InitialDialogId, onboarding) { TelemetryClient = telemetryClient }); + AddDialog(new TextPrompt(DialogIds.NamePrompt)); + } + + public async Task AskForName(WaterfallStepContext sc, CancellationToken cancellationToken) + { + _state = await _accessor.GetAsync(sc.Context, () => new OnboardingState()); + + if (!string.IsNullOrEmpty(_state.Name)) + { + return await sc.NextAsync(_state.Name); + } + else + { + return await sc.PromptAsync(DialogIds.NamePrompt, new PromptOptions() + { + Prompt = await _responder.RenderTemplate(sc.Context, sc.Context.Activity.Locale, OnboardingResponses.ResponseIds.NamePrompt), + }); + } + } + + public async Task FinishOnboardingDialog(WaterfallStepContext sc, CancellationToken cancellationToken) + { + _state = await _accessor.GetAsync(sc.Context, () => new OnboardingState()); + var name = _state.Name = (string)sc.Result; + await _accessor.SetAsync(sc.Context, _state, cancellationToken); + + await _responder.ReplyWith(sc.Context, OnboardingResponses.ResponseIds.HaveNameMessage, new { name }); + return await sc.EndDialogAsync(); + } + + private class DialogIds + { + public const string NamePrompt = "namePrompt"; + } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Models/EventData.cs b/samples/EnterpriseNotification/VirtualAssistant/Models/EventData.cs new file mode 100644 index 0000000000..5dd5a1f5e5 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Models/EventData.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace VirtualAssistant.Models +{ + public class EventData + { + public string UserId { get; set; } + + public string Message { get; set; } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Models/OnboardingState.cs b/samples/EnterpriseNotification/VirtualAssistant/Models/OnboardingState.cs new file mode 100644 index 0000000000..9480846fc8 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Models/OnboardingState.cs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +namespace VirtualAssistant.Models +{ + public class OnboardingState + { + public string Name { get; set; } + + public string Email { get; set; } + + public string Location { get; set; } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Pipeline/VirtualAssistantSample.yml b/samples/EnterpriseNotification/VirtualAssistant/Pipeline/VirtualAssistantSample.yml new file mode 100644 index 0000000000..36edf8c581 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Pipeline/VirtualAssistantSample.yml @@ -0,0 +1,61 @@ +# specific branch build +trigger: + branches: + include: + - master + - feature/* + +pool: + name: Hosted VS2017 + demands: + - msbuild + - visualstudio + +variables: + buildPlatform: 'Any CPU' + buildConfiguration: 'Release' + +steps: +- task: DotNetCoreInstaller@0 + displayName: 'Use .NET Core sdk 2.2.100' + inputs: + version: 2.2.100 + continueOnError: true + +- task: NuGetToolInstaller@0 + displayName: 'Use NuGet 4.9.1' + inputs: + versionSpec: 4.9.1 + +- task: NuGetCommand@2 + displayName: 'NuGet restore' + inputs: + # if your working directory is not root, you may change the following path + restoreSolution: 'VirtualAssistantSample.sln' + +- task: VSBuild@1 + displayName: 'Build solution VirtualAssistantSample.sln' + inputs: + # if your working directory is not root, you may change the following path + solution: VirtualAssistantSample.sln + vsVersion: '16.0' + platform: '$(buildPlatform)' + configuration: '$(buildConfiguration)' + +- task: DotNetCoreCLI@2 + displayName: 'test results' + inputs: + command: test + # if your working directory is not root, you may change the following path + projects: '$(System.DefaultWorkingDirectory)\VirtualAssistantSample.Tests.csproj' + arguments: '-v n --configuration $(buildConfiguration) --no-build --no-restore --filter TestCategory!=IgnoreInAutomatedBuild /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura' + # if your working directory is not root, you may change the following path + workingDirectory: 'VirtualAssistantSample.Tests' + +- task: PublishCodeCoverageResults@1 + displayName: 'Publish code coverage' + inputs: + codeCoverageTool: Cobertura + # if your working directory is not root, you may change the following path + summaryFileLocation: '$(Build.SourcesDirectory)\VirtualAssistantSample.Tests\coverage.cobertura.xml' + reportDirectory: '$(Build.SourcesDirectory)\VirtualAssistantSample.Tests' \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Program.cs b/samples/EnterpriseNotification/VirtualAssistant/Program.cs new file mode 100644 index 0000000000..7c53514364 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Program.cs @@ -0,0 +1,21 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; + +namespace VirtualAssistant +{ + public class Program + { + public static void Main(string[] args) + { + BuildWebHost(args).Run(); + } + + public static IWebHost BuildWebHost(string[] args) => + WebHost.CreateDefaultBuilder(args) + .UseStartup() // Note: Application Insights is added in Startup. Disabling is also handled there. + .Build(); + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Properties/launchSettings.json b/samples/EnterpriseNotification/VirtualAssistant/Properties/launchSettings.json new file mode 100644 index 0000000000..f89af93682 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:3978/", + "sslPort": 0 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "VirtualAssistantSample": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "http://localhost:1205/" + } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelResponses.cs b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelResponses.cs new file mode 100644 index 0000000000..b48ca6c070 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelResponses.cs @@ -0,0 +1,64 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.TemplateManager; +using Microsoft.Bot.Schema; + +namespace VirtualAssistant.Responses.Cancel +{ + public class CancelResponses : TemplateManager + { + private static LanguageTemplateDictionary _responseTemplates = new LanguageTemplateDictionary + { + ["default"] = new TemplateIdMap + { + { + ResponseIds.CancelConfirmedMessage, + (context, data) => + MessageFactory.Text( + text: CancelStrings.CANCEL_CONFIRMED, + ssml: CancelStrings.CANCEL_CONFIRMED, + inputHint: InputHints.AcceptingInput) + }, + { + ResponseIds.CancelDeniedMessage, + (context, data) => + MessageFactory.Text( + text: CancelStrings.CANCEL_DENIED, + ssml: CancelStrings.CANCEL_DENIED, + inputHint: InputHints.AcceptingInput) + }, + { + ResponseIds.CancelPrompt, + (context, data) => + MessageFactory.Text( + text: CancelStrings.CANCEL_PROMPT, + ssml: CancelStrings.CANCEL_PROMPT, + inputHint: InputHints.ExpectingInput) + }, + { + ResponseIds.NothingToCancelMessage, + (context, data) => + MessageFactory.Text( + text: CancelStrings.NOTHING_TO_CANCEL, + ssml: CancelStrings.NOTHING_TO_CANCEL, + inputHint: InputHints.ExpectingInput) + }, + } + }; + + public CancelResponses() + { + Register(new DictionaryRenderer(_responseTemplates)); + } + + public class ResponseIds + { + public const string CancelPrompt = "cancelPrompt"; + public const string CancelConfirmedMessage = "cancelConfirmed"; + public const string CancelDeniedMessage = "cancelDenied"; + public const string NothingToCancelMessage = "nothingToCancel"; + } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.Designer.cs b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.Designer.cs new file mode 100644 index 0000000000..9832c6529b --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.Designer.cs @@ -0,0 +1,99 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace VirtualAssistant.Responses.Cancel { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class CancelStrings { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal CancelStrings() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VirtualAssistantSample.Responses.Cancel.CancelStrings", typeof(CancelStrings).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Ok, let's start over.. + /// + public static string CANCEL_CONFIRMED { + get { + return ResourceManager.GetString("CANCEL_CONFIRMED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ok, let's keep going.. + /// + public static string CANCEL_DENIED { + get { + return ResourceManager.GetString("CANCEL_DENIED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Are you sure you want to cancel?. + /// + public static string CANCEL_PROMPT { + get { + return ResourceManager.GetString("CANCEL_PROMPT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Looks like there's nothing to cancel! Try saying "help" to get started.. + /// + public static string NOTHING_TO_CANCEL { + get { + return ResourceManager.GetString("NOTHING_TO_CANCEL", resourceCulture); + } + } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.de.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.de.resx new file mode 100644 index 0000000000..17bc10024d --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.de.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Sicher, fangen wir an. + + + Sicher, machen wir weiter. + + + Sind Sie sicher, dass Sie absagen wollen? + + + Es sieht so aus, als gäbe es nichts zu stornieren! + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.es.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.es.resx new file mode 100644 index 0000000000..b1627fef2f --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.es.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bien, empecemos de una vez. + + + Bien, sigamos adelante. + + + ¿Confirma que desea cancelar? + + + ¡ Parece que no hay nada que cancelar! + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.fr.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.fr.resx new file mode 100644 index 0000000000..efb22ddfd7 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.fr.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + D'accord, commençons. + + + D'accord, continuons. + + + Êtes-vous sûr de vouloir annuler? + + + On dirait qu’il n’y a rien à annuler! + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.it.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.it.resx new file mode 100644 index 0000000000..b28d89041b --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.it.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bene, ricominciamo. + + + Bene, andiamo avanti. + + + Sei sicuro di voler cancellare? + + + Sembra che non ci sia niente da cancellare! + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.resx new file mode 100644 index 0000000000..e8d8cebdfa --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ok, let's start over. + + + Ok, let's keep going. + + + Are you sure you want to cancel? + + + Looks like there's nothing to cancel! Try saying "help" to get started. + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.zh.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.zh.resx new file mode 100644 index 0000000000..3df61377da --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.zh.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 好吧, 让我们重新开始。 + + + 好吧, 让我们继续走。 + + + 确实要取消吗? + + + 看来没什么可以取消的! + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateResponses.cs b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateResponses.cs new file mode 100644 index 0000000000..15c84fa2a9 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateResponses.cs @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Collections.Generic; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.TemplateManager; +using Microsoft.Bot.Schema; + +namespace VirtualAssistant.Responses.Escalate +{ + public class EscalateResponses : TemplateManager + { + private LanguageTemplateDictionary _responseTemplates = new LanguageTemplateDictionary + { + ["default"] = new TemplateIdMap + { + { ResponseIds.SendPhoneMessage, (context, data) => BuildEscalateCard(context, data) }, + } + }; + + public EscalateResponses() + { + Register(new DictionaryRenderer(_responseTemplates)); + } + + public static IMessageActivity BuildEscalateCard(ITurnContext turnContext, dynamic data) + { + var attachment = new HeroCard() + { + Text = EscalateStrings.PHONE_INFO, + Buttons = new List() + { + new CardAction(type: ActionTypes.OpenUrl, title: "Call now", value: "tel:18005551234"), + new CardAction(type: ActionTypes.OpenUrl, title: "Open Teams", value: "msteams://") + }, + }.ToAttachment(); + + return MessageFactory.Attachment(attachment, null, EscalateStrings.PHONE_INFO, InputHints.AcceptingInput); + } + + public class ResponseIds + { + public const string SendPhoneMessage = "sendPhoneMessage"; + } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.Designer.cs b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.Designer.cs new file mode 100644 index 0000000000..d1752799ba --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.Designer.cs @@ -0,0 +1,83 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace VirtualAssistant.Responses.Escalate +{ + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class EscalateStrings + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal EscalateStrings() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VirtualAssistantSample.Responses.Escalate.EscalateStrings", typeof(EscalateStrings).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Our agents are available 24/7 at 1(800)555-1234. Or connect with us through Microsoft Teams.. + /// + public static string PHONE_INFO + { + get + { + return ResourceManager.GetString("PHONE_INFO", resourceCulture); + } + } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.de.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.de.resx new file mode 100644 index 0000000000..6f051f9972 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.de.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Unsere Agenten sind 24/7 bei 1 (800) 555-1234 erhältlich. + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.es.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.es.resx new file mode 100644 index 0000000000..4cdfc8b03a --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.es.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Nuestros agentes están disponibles 24/7 en 1 (800) 555-1234. + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.fr.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.fr.resx new file mode 100644 index 0000000000..1701265950 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.fr.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Nos agents sont disponibles 24/7 au 1 (800) 555-1234. + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.it.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.it.resx new file mode 100644 index 0000000000..35a82b9a80 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.it.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + I nostri agenti sono disponibili 24/7 a 1 (800) 555-1234. + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.resx new file mode 100644 index 0000000000..171d383cb9 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Our agents are available 24/7 at 1(800)555-1234. Or connect with us through Microsoft Teams. + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.zh.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.zh.resx new file mode 100644 index 0000000000..72c9e6c574 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.zh.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 我们的代理商在 1 (800) 555-1234 时提供全天候服务。 + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainResponses.cs b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainResponses.cs new file mode 100644 index 0000000000..17716237a6 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainResponses.cs @@ -0,0 +1,139 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Collections.Generic; +using System.IO; +using AdaptiveCards; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.TemplateManager; +using Microsoft.Bot.Schema; + +namespace VirtualAssistant.Responses.Main +{ + public class MainResponses : TemplateManager + { + private static LanguageTemplateDictionary _responseTemplates = new LanguageTemplateDictionary + { + ["default"] = new TemplateIdMap + { + { + ResponseIds.Cancelled, + (context, data) => + MessageFactory.Text( + text: MainStrings.CANCELLED, + ssml: MainStrings.CANCELLED, + inputHint: InputHints.AcceptingInput) + }, + { + ResponseIds.Completed, + (context, data) => + MessageFactory.Text( + text: MainStrings.COMPLETED, + ssml: MainStrings.COMPLETED, + inputHint: InputHints.AcceptingInput) + }, + { + ResponseIds.Confused, + (context, data) => + MessageFactory.Text( + text: MainStrings.CONFUSED, + ssml: MainStrings.CONFUSED, + inputHint: InputHints.AcceptingInput) + }, + { + ResponseIds.Greeting, + (context, data) => + MessageFactory.Text( + text: MainStrings.GREETING, + ssml: MainStrings.GREETING, + inputHint: InputHints.AcceptingInput) + }, + { ResponseIds.Help, (context, data) => BuildHelpCard(context, data) }, + { ResponseIds.NewUserGreeting, (context, data) => BuildNewUserGreetingCard(context, data) }, + { ResponseIds.ReturningUserGreeting, (context, data) => BuildReturningUserGreetingCard(context, data) }, + } + }; + + public MainResponses() + { + Register(new DictionaryRenderer(_responseTemplates)); + } + + public static IMessageActivity BuildNewUserGreetingCard(ITurnContext turnContext, dynamic data) + { + var introCard = File.ReadAllText(MainStrings.INTRO_PATH); + var card = AdaptiveCard.FromJson(introCard).Card; + var attachment = new Attachment(AdaptiveCard.ContentType, content: card); + + var response = MessageFactory.Attachment(attachment, ssml: card.Speak, inputHint: InputHints.AcceptingInput); + + response.SuggestedActions = new SuggestedActions + { + Actions = new List() + { + new CardAction(type: ActionTypes.ImBack, title: MainStrings.HELP_BTN_TEXT_1, value: MainStrings.HELP_BTN_VALUE_1), + new CardAction(type: ActionTypes.ImBack, title: MainStrings.HELP_BTN_TEXT_2, value: MainStrings.HELP_BTN_VALUE_2), + new CardAction(type: ActionTypes.OpenUrl, title: MainStrings.HELP_BTN_TEXT_3, value: MainStrings.HELP_BTN_VALUE_3), + }, + }; + + return response; + } + + public static IMessageActivity BuildReturningUserGreetingCard(ITurnContext turnContext, dynamic data) + { + var introCard = File.ReadAllText(MainStrings.INTRO_RETURNING); + var card = AdaptiveCard.FromJson(introCard).Card; + var attachment = new Attachment(AdaptiveCard.ContentType, content: card); + + var response = MessageFactory.Attachment(attachment, ssml: card.Speak, inputHint: InputHints.AcceptingInput); + + response.SuggestedActions = new SuggestedActions + { + Actions = new List() + { + new CardAction(type: ActionTypes.ImBack, title: MainStrings.HELP_BTN_TEXT_1, value: MainStrings.HELP_BTN_VALUE_1), + new CardAction(type: ActionTypes.ImBack, title: MainStrings.HELP_BTN_TEXT_2, value: MainStrings.HELP_BTN_VALUE_2), + new CardAction(type: ActionTypes.OpenUrl, title: MainStrings.HELP_BTN_TEXT_3, value: MainStrings.HELP_BTN_VALUE_3), + }, + }; + + return response; + } + + public static IMessageActivity BuildHelpCard(ITurnContext turnContext, dynamic data) + { + var attachment = new HeroCard() + { + Title = MainStrings.HELP_TITLE, + Text = MainStrings.HELP_TEXT, + }.ToAttachment(); + + var response = MessageFactory.Attachment(attachment, ssml: MainStrings.HELP_TEXT, inputHint: InputHints.AcceptingInput); + + response.SuggestedActions = new SuggestedActions + { + Actions = new List() + { + new CardAction(type: ActionTypes.ImBack, title: MainStrings.HELP_BTN_TEXT_1, value: MainStrings.HELP_BTN_VALUE_1), + new CardAction(type: ActionTypes.ImBack, title: MainStrings.HELP_BTN_TEXT_2, value: MainStrings.HELP_BTN_VALUE_2), + new CardAction(type: ActionTypes.OpenUrl, title: MainStrings.HELP_BTN_TEXT_3, value: MainStrings.HELP_BTN_VALUE_3), + }, + }; + + return response; + } + + public class ResponseIds + { + // Constants + public const string Cancelled = "cancelled"; + public const string Completed = "completed"; + public const string Confused = "confused"; + public const string Greeting = "greeting"; + public const string Help = "help"; + public const string NewUserGreeting = "newUser"; + public const string ReturningUserGreeting = "returningUser"; + } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.Designer.cs b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.Designer.cs new file mode 100644 index 0000000000..156d9e1aed --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.Designer.cs @@ -0,0 +1,216 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace VirtualAssistant.Responses.Main { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class MainStrings { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal MainStrings() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VirtualAssistantSample.Responses.Main.MainStrings", typeof(MainStrings).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Ok, let's start over.. + /// + public static string CANCELLED { + get { + return ResourceManager.GetString("CANCELLED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to What else can I help you with?. + /// + public static string COMPLETED { + get { + return ResourceManager.GetString("COMPLETED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to I'm sorry, I'm not able to help with that.. + /// + public static string CONFUSED { + get { + return ResourceManager.GetString("CONFUSED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Sorry, it looks like something went wrong.. + /// + public static string ERROR { + get { + return ResourceManager.GetString("ERROR", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hi there!. + /// + public static string GREETING { + get { + return ResourceManager.GetString("GREETING", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hey, {0}!. + /// + public static string GREETING_WITH_NAME { + get { + return ResourceManager.GetString("GREETING_WITH_NAME", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test LUIS. + /// + public static string HELP_BTN_TEXT_1 { + get { + return ResourceManager.GetString("HELP_BTN_TEXT_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test QnA Maker. + /// + public static string HELP_BTN_TEXT_2 { + get { + return ResourceManager.GetString("HELP_BTN_TEXT_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Learn more. + /// + public static string HELP_BTN_TEXT_3 { + get { + return ResourceManager.GetString("HELP_BTN_TEXT_3", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Talk to a human. + /// + public static string HELP_BTN_VALUE_1 { + get { + return ResourceManager.GetString("HELP_BTN_VALUE_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to What is a Virtual Assistant?. + /// + public static string HELP_BTN_VALUE_2 { + get { + return ResourceManager.GetString("HELP_BTN_VALUE_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0. + /// + public static string HELP_BTN_VALUE_3 { + get { + return ResourceManager.GetString("HELP_BTN_VALUE_3", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to This card can be used to display information to help your user interact with your bot. The buttons below can be used for sample queries or links to external sites.. + /// + public static string HELP_TEXT { + get { + return ResourceManager.GetString("HELP_TEXT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to HELP. + /// + public static string HELP_TITLE { + get { + return ResourceManager.GetString("HELP_TITLE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ./Content/NewUserGreeting.json. + /// + public static string INTRO_PATH { + get { + return ResourceManager.GetString("INTRO_PATH", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ./Content/ReturningUserGreeting.json. + /// + public static string INTRO_RETURNING { + get { + return ResourceManager.GetString("INTRO_RETURNING", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ok, you're signed out.. + /// + public static string LOGOUT { + get { + return ResourceManager.GetString("LOGOUT", resourceCulture); + } + } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.de.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.de.resx new file mode 100644 index 0000000000..c66cfd8b1c --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.de.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + OK, fangen wir an + + + Was kann ich Ihnen noch helfen? + + + Es tut mir leid, ich bin nicht in der Lage, damit zu helfen. + + + Sorry, es sieht so aus, als ob etwas schief gelaufen ist. + + + Hallo! + + + Hallo {0}! + + + Test LUIS + + + Test QnA Maker + + + Weitere Informationen + + + Kann ich mit einer Person sprechen + + + Was ist die Enterprise Bot Template? + + + https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0 + + + Ich bin Ihr virtueller Assistent! Ich kann durch meine vernetzten Fähigkeiten eine Reihe von Aufgaben erledigen. Im Moment kann ich Ihnen mit Kalender, E-Mail, Aufgabe und Punkt von Interesse Fragen helfen. Oder Sie können mir helfen, mehr zu tun, indem Sie Ihre eigenen! + + + Hilfe für Enterprise Bot + + + ./Content/NewUserGreeting.de.json + + + ./Content/ReturningUserGreeting.de.json + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.es.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.es.resx new file mode 100644 index 0000000000..bcf9444467 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.es.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bien, empecemos de una vez. + + + ¿En qué más puedo ayudarte? + + + Lo siento, no soy capaz de ayudar con eso. + + + Lo siento, parece que algo salió mal. + + + ¡Hola! + + + Hola {0} + + + Prueba LUIS + + + Prueba QnA Maker + + + Aprende más + + + Puedo hablar con una persona + + + ¿Qué es el Enterprise bot template? + + + https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0 + + + ¡ Soy tu asistente virtual! Puedo realizar una serie de tareas a través de mis habilidades conectadas. En este momento puedo ayudarle con el calendario, correo electrónico, tarea y preguntas de punto de interés. ¡ O usted puede ayudarme a hacer más creando su propio! + + + Ayuda para el asistente virtual + + + ./Content/NewUserGreeting.es.json + + + ./Content/ReturningUserGreeting.es.json + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.fr.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.fr.resx new file mode 100644 index 0000000000..6d24b423b7 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.fr.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + OK, recommençons. + + + Quoi d'autre puis-je vous aider? + + + Je suis désolé, je ne suis pas en mesure d'aider avec ça. + + + Désolé, on dirait que quelque chose a mal tourné. + + + Salut! + + + Hé, {0}! + + + Test LUIS + + + Test QnA Maker + + + Pour en savoir plus + + + Puis-je parler à une personne + + + Qu'est-ce que le modèle Enterprise bot? + + + https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0 + + + Je suis ton assistante virtuelle! Je peux effectuer un certain nombre de tâches à travers mes compétences connectées. En ce moment je peux vous aider avec le calendrier, email, la tâche et le point d'intérêt des questions. Ou vous pouvez m'aider à faire plus en créant votre propre! + + + Aide pour Virtual Assistant + + + ./Content/NewUserGreeting.fr.json + + + ./Content/ReturningUserGreeting.fr.json + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.it.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.it.resx new file mode 100644 index 0000000000..f1d4dd6188 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.it.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ok, ricominciamo da qui. + + + Che altro posso aiutarvi? + + + Mi dispiace, non sono in grado di aiutarti. + + + Mi dispiace, sembra che qualcosa sia andato storto. + + + Ehilà! + + + Ehilà! {0}! + + + Prova LUIS + + + Prova QnA Maker + + + Ulteriori informazioni + + + Posso parlare con una persona + + + Che cos'è il modello Enterprise bot? + + + https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0 + + + Sono il tuo assistente virtuale! Posso effettuare un certo numero di mansioni con le mie abilità collegate. In questo momento posso aiutarvi con calendario, e-mail, compito e punto di domande di interesse. Oppure puoi aiutarmi a fare di più creando il tuo! + + + Aiuto per assistente virtuale + + + ./Content/NewUserGreeting.it.json + + + ./Content/ReturningUserGreeting.it.json + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.resx new file mode 100644 index 0000000000..c177d896c5 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ok, let's start over. + + + What else can I help you with? + + + I'm sorry, I'm not able to help with that. + + + Sorry, it looks like something went wrong. + + + Hi there! + + + Hey, {0}! + + + Test LUIS + + + Test QnA Maker + + + Learn more + + + Talk to a human + + + What is a Virtual Assistant? + + + https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0 + + + This card can be used to display information to help your user interact with your bot. The buttons below can be used for sample queries or links to external sites. + + + HELP + + + ./Content/NewUserGreeting.json + + + ./Content/ReturningUserGreeting.json + + + Ok, you're signed out. + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.zh.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.zh.resx new file mode 100644 index 0000000000..831c9cec30 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.zh.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 好的,我们从头再来。 + + + 我还能帮你什么? + + + 对不起,我帮不了。 + + + 对不起, 看起来出了问题。 + + + 您好! + + + 您好!, {0} + + + 测试 LUIS + + + 测试 QnA Maker + + + 了解更多信息 + + + 我能和一个人交谈吗? + + + 这个模板是什么? + + + https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0 + + + 我是您的智能助理!我有不少技能,可以帮您完成很多任务。现在我可以帮您管理您的日历, 电子邮件, 任务和查找地图兴趣点。或者, 您可以教我更多的技能! + + + 智能助手的帮助 + + + ./Content/NewUserGreeting.zh.json + + + ./Content/ReturningUserGreeting.zh.json + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingResponses.cs b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingResponses.cs new file mode 100644 index 0000000000..f45ef45331 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingResponses.cs @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.TemplateManager; +using Microsoft.Bot.Schema; + +namespace VirtualAssistant.Responses.Onboarding +{ + public class OnboardingResponses : TemplateManager + { + private static LanguageTemplateDictionary _responseTemplates = new LanguageTemplateDictionary + { + ["default"] = new TemplateIdMap + { + { + ResponseIds.EmailPrompt, + (context, data) => + MessageFactory.Text( + text: OnboardingStrings.EMAIL_PROMPT, + ssml: OnboardingStrings.EMAIL_PROMPT, + inputHint: InputHints.ExpectingInput) + }, + { + ResponseIds.HaveEmailMessage, + (context, data) => + MessageFactory.Text( + text: string.Format(OnboardingStrings.HAVE_EMAIL, data.email), + ssml: string.Format(OnboardingStrings.HAVE_EMAIL, data.email), + inputHint: InputHints.IgnoringInput) + }, + { + ResponseIds.HaveLocationMessage, + (context, data) => + MessageFactory.Text( + text: string.Format(OnboardingStrings.HAVE_LOCATION, data.Name, data.Location), + ssml: string.Format(OnboardingStrings.HAVE_LOCATION, data.Name, data.Location), + inputHint: InputHints.IgnoringInput) + }, + { + ResponseIds.HaveNameMessage, + (context, data) => + MessageFactory.Text( + text: string.Format(OnboardingStrings.HAVE_NAME, data.name), + ssml: string.Format(OnboardingStrings.HAVE_NAME, data.name), + inputHint: InputHints.IgnoringInput) + }, + { + ResponseIds.NamePrompt, + (context, data) => + MessageFactory.Text( + text: OnboardingStrings.NAME_PROMPT, + ssml: OnboardingStrings.NAME_PROMPT, + inputHint: InputHints.ExpectingInput) + }, + { + ResponseIds.LocationPrompt, + (context, data) => + MessageFactory.Text( + text: OnboardingStrings.LOCATION_PROMPT, + ssml: OnboardingStrings.LOCATION_PROMPT, + inputHint: InputHints.ExpectingInput) + } + } + }; + + public OnboardingResponses() + { + Register(new DictionaryRenderer(_responseTemplates)); + } + + public class ResponseIds + { + public const string EmailPrompt = "emailPrompt"; + public const string HaveEmailMessage = "haveEmail"; + public const string HaveNameMessage = "haveName"; + public const string HaveLocationMessage = "haveLocation"; + public const string LocationPrompt = "locationPrompt"; + public const string NamePrompt = "namePrompt"; + } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.Designer.cs b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.Designer.cs new file mode 100644 index 0000000000..c0e567f858 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.Designer.cs @@ -0,0 +1,138 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace VirtualAssistant.Responses.Onboarding +{ + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class OnboardingStrings + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal OnboardingStrings() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VirtualAssistantSample.Responses.Onboarding.OnboardingStrings", typeof(OnboardingStrings).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to What is your email?. + /// + public static string EMAIL_PROMPT + { + get + { + return ResourceManager.GetString("EMAIL_PROMPT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Got it. I've added {0} as your primary contact address.. + /// + public static string HAVE_EMAIL + { + get + { + return ResourceManager.GetString("HAVE_EMAIL", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Thanks, {0}. I've added {1} as your primary location. You're all set up!. + /// + public static string HAVE_LOCATION + { + get + { + return ResourceManager.GetString("HAVE_LOCATION", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hi, {0}!. + /// + public static string HAVE_NAME + { + get + { + return ResourceManager.GetString("HAVE_NAME", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Finally, where are you located?. + /// + public static string LOCATION_PROMPT + { + get + { + return ResourceManager.GetString("LOCATION_PROMPT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to What is your name?. + /// + public static string NAME_PROMPT + { + get + { + return ResourceManager.GetString("NAME_PROMPT", resourceCulture); + } + } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.de.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.de.resx new file mode 100644 index 0000000000..35dc814e32 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.de.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Was ist Ihre E-Mail? + + + Ich hab es. Ich habe {0} als primäre Kontaktadresse hinzugefügt. + + + Dank, {0}. Ich habe {1} als primären Standort hinzugefügt. Ihr seid alle eingerichtet! + + + Hallo, {0}! + + + Endlich, wo sind Sie? + + + Wie heißen Sie? + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.es.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.es.resx new file mode 100644 index 0000000000..a40847af5c --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.es.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ¿Cuál es su correo electrónico? + + + Entiendo. He agregado {0} como su dirección de contacto principal. + + + Gracias, {0}. He agregado {1} como su ubicación principal. ¡Ya está todo listo! + + + ¡Hola, {0}! + + + Finalmente, ¿dónde están ubicados? + + + ¿Cómo te llamas? + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.fr.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.fr.resx new file mode 100644 index 0000000000..f260c11414 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.fr.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Quel est votre courriel? + + + Je l'ai. J'ai ajouté {0} comme adresse de contact principale. + + + Merci, {0}. J'ai ajouté {1} comme emplacement principal. Vous êtes tous mis en place! + + + Bonjour, {0}! + + + Enfin, où êtes-vous situé? + + + Comment vous appelez-vous? + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.it.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.it.resx new file mode 100644 index 0000000000..a05db7f8c2 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.it.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Qual è la tua email? + + + Capito. Ho aggiunto {0} come indirizzo di contatto principale. + + + Grazie, {0}. Ho aggiunto {1} come posizione primaria. Sei tutto a posto! + + + Ciao, {0}! + + + Infine, dove si trova? + + + Come ti chiami? + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.resx new file mode 100644 index 0000000000..8699ab485c --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + What is your email? + + + Got it. I've added {0} as your primary contact address. + + + Thanks, {0}. I've added {1} as your primary location. You're all set up! + + + Hi, {0}! + + + Finally, where are you located? + + + What is your name? + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.zh.resx b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.zh.resx new file mode 100644 index 0000000000..dff2d5bc75 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.zh.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 您的电子邮件是什么? + + + 明白了。我已将 {0} 添加为您的主要联系地址。 + + + 谢谢, {0}。我已将 {1} 添加为您的主要位置。你们都准备好了! + + + 你好, {0}! + + + 最后, 你在哪里? + + + 您叫什么名字? + + \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Services/BotServices.cs b/samples/EnterpriseNotification/VirtualAssistant/Services/BotServices.cs new file mode 100644 index 0000000000..685c3ac21a --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Services/BotServices.cs @@ -0,0 +1,65 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Collections.Generic; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.AI.Luis; +using Microsoft.Bot.Builder.AI.QnA; +using Microsoft.Bot.Builder.Solutions; + +namespace VirtualAssistant.Services +{ + public class BotServices + { + public BotServices() + { + } + + public BotServices(BotSettings settings, IBotTelemetryClient client) + { + foreach (var pair in settings.CognitiveModels) + { + var set = new CognitiveModelSet(); + var language = pair.Key; + var config = pair.Value; + + var telemetryClient = client; + var luisOptions = new LuisPredictionOptions() + { + TelemetryClient = telemetryClient, + LogPersonalInformation = true, + }; + + var dispatchApp = new LuisApplication(config.DispatchModel.AppId, config.DispatchModel.SubscriptionKey, config.DispatchModel.GetEndpoint()); + + set.DispatchService = new LuisRecognizer(dispatchApp, luisOptions); + + if (config.LanguageModels != null) + { + foreach (var model in config.LanguageModels) + { + var luisApp = new LuisApplication(model.AppId, model.SubscriptionKey, model.GetEndpoint()); + set.LuisServices.Add(model.Id, new LuisRecognizer(luisApp, luisOptions)); + } + } + + foreach (var kb in config.Knowledgebases) + { + var qnaEndpoint = new QnAMakerEndpoint() + { + KnowledgeBaseId = kb.KbId, + EndpointKey = kb.EndpointKey, + Host = kb.Hostname, + }; + + var qnaMaker = new QnAMaker(qnaEndpoint, null, null, telemetryClient: telemetryClient, logPersonalInformation: true); + set.QnAServices.Add(kb.Id, qnaMaker); + } + + CognitiveModelSets.Add(language, set); + } + } + + public Dictionary CognitiveModelSets { get; set; } = new Dictionary(); + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Services/BotSettings.cs b/samples/EnterpriseNotification/VirtualAssistant/Services/BotSettings.cs new file mode 100644 index 0000000000..2604f348e5 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Services/BotSettings.cs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Collections.Generic; +using Microsoft.Bot.Builder.Skills.Models.Manifest; +using Microsoft.Bot.Builder.Solutions; + +namespace VirtualAssistant.Services +{ + public class BotSettings : BotSettingsBase + { + public List Skills { get; set; } = new List(); + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Services/DispatchLuis.cs b/samples/EnterpriseNotification/VirtualAssistant/Services/DispatchLuis.cs new file mode 100644 index 0000000000..1a16febc31 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Services/DispatchLuis.cs @@ -0,0 +1,69 @@ +// +// Code generated by LUISGen +// Tool github: https://github.com/microsoft/botbuilder-tools +// Changes may cause incorrect behavior and will be lost if the code is +// regenerated. +// +using Newtonsoft.Json; +using System.Collections.Generic; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.AI.Luis; +namespace Luis +{ + public class DispatchLuis : IRecognizerConvert + { + public string Text; + public string AlteredText; + public enum Intent + { + calendarSkill, + pointOfInterestSkill, + l_general, + q_chitchat, + q_faq, + None, + toDoSkill + }; + public Dictionary Intents; + + public class _Entities + { + + // Instance + public class _Instance + { + } + [JsonProperty("$instance")] + public _Instance _instance; + } + public _Entities Entities; + + [JsonExtensionData(ReadData = true, WriteData = true)] + public IDictionary Properties { get; set; } + + public void Convert(dynamic result) + { + var app = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(result)); + Text = app.Text; + AlteredText = app.AlteredText; + Intents = app.Intents; + Entities = app.Entities; + Properties = app.Properties; + } + + public (Intent intent, double score) TopIntent() + { + Intent maxIntent = Intent.None; + var max = 0.0; + foreach (var entry in Intents) + { + if (entry.Value.Score > max) + { + maxIntent = entry.Key; + max = entry.Value.Score.Value; + } + } + return (maxIntent, max); + } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Services/GeneralLuis.cs b/samples/EnterpriseNotification/VirtualAssistant/Services/GeneralLuis.cs new file mode 100644 index 0000000000..b1a8d5da2f --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Services/GeneralLuis.cs @@ -0,0 +1,90 @@ +// +// Code generated by LUISGen +// Tool github: https://github.com/microsoft/botbuilder-tools +// Changes may cause incorrect behavior and will be lost if the code is +// regenerated. +// + +using Newtonsoft.Json; +using System.Collections.Generic; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.AI.Luis; +namespace Luis +{ + public class GeneralLuis : IRecognizerConvert + { + public string Text; + public string AlteredText; + public enum Intent + { + Cancel, + Confirm, + Escalate, + FinishTask, + GoBack, + Help, + Logout, + None, + ReadAloud, + Reject, + Repeat, + SelectAny, + SelectItem, + SelectNone, + ShowNext, + ShowPrevious, + StartOver, + Stop + }; + public Dictionary Intents; + + public class _Entities + { + // Simple entities + public string[] DirectionalReference; + + // Built-in entities + public double[] number; + public double[] ordinal; + + // Instance + public class _Instance + { + public InstanceData[] DirectionalReference; + public InstanceData[] number; + public InstanceData[] ordinal; + } + [JsonProperty("$instance")] + public _Instance _instance; + } + public _Entities Entities; + + [JsonExtensionData(ReadData = true, WriteData = true)] + public IDictionary Properties { get; set; } + + public void Convert(dynamic result) + { + var app = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(result)); + Text = app.Text; + AlteredText = app.AlteredText; + Intents = app.Intents; + Entities = app.Entities; + Properties = app.Properties; + } + + public (Intent intent, double score) TopIntent() + { + Intent maxIntent = Intent.None; + var max = 0.0; + foreach (var entry in Intents) + { + if (entry.Value.Score > max) + { + maxIntent = entry.Key; + max = entry.Value.Score.Value; + } + } + return (maxIntent, max); + } + } +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/Startup.cs b/samples/EnterpriseNotification/VirtualAssistant/Startup.cs new file mode 100644 index 0000000000..ccb2d38c2f --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Startup.cs @@ -0,0 +1,163 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.ApplicationInsights; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.ApplicationInsights; +using Microsoft.Bot.Builder.Azure; +using Microsoft.Bot.Builder.BotFramework; +using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; +using Microsoft.Bot.Builder.Integration.AspNet.Core; +using Microsoft.Bot.Builder.Skills; +using Microsoft.Bot.Builder.Skills.Auth; +using Microsoft.Bot.Builder.Skills.Models.Manifest; +using Microsoft.Bot.Builder.Solutions.Authentication; +using Microsoft.Bot.Builder.Solutions.Proactive; +using Microsoft.Bot.Configuration; +using Microsoft.Bot.Connector.Authentication; +using Microsoft.Bot.Protocol.StreamingExtensions.NetCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using VirtualAssistant.Adapters; +using VirtualAssistant.Bots; +using VirtualAssistant.Dialogs; +using VirtualAssistant.Services; + +namespace VirtualAssistant +{ + public class Startup + { + public Startup(IHostingEnvironment env, ILoggerFactory loggerFactory) + { + var builder = new ConfigurationBuilder() + .SetBasePath(env.ContentRootPath) + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) + .AddJsonFile("cognitivemodels.json", optional: true) + .AddJsonFile($"cognitivemodels.{env.EnvironmentName}.json", optional: true) + .AddJsonFile("skills.json", optional: true) + .AddJsonFile($"skills.{env.EnvironmentName}.json", optional: true) + .AddEnvironmentVariables(); + + Configuration = builder.Build(); + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); + + var provider = services.BuildServiceProvider(); + + // Load settings + var settings = new BotSettings(); + Configuration.Bind(settings); + services.AddSingleton(settings); + + // Configure credentials + services.AddSingleton(); + + var appCredentials = new MicrosoftAppCredentials(settings.MicrosoftAppId, settings.MicrosoftAppPassword); + services.AddSingleton(appCredentials); + + // Configure telemetry + services.AddApplicationInsightsTelemetry(); + var telemetryClient = new BotTelemetryClient(new TelemetryClient()); + services.AddSingleton(telemetryClient); + services.AddBotApplicationInsights(telemetryClient); + + // Configure bot services + services.AddSingleton(); + + // Configure storage + services.AddSingleton(new CosmosDbStorage(settings.CosmosDb)); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(sp => + { + var userState = sp.GetService(); + var conversationState = sp.GetService(); + return new BotStateSet(userState, conversationState); + }); + + // Register dialogs + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + + // Register skill dialogs + services.AddTransient(sp => + { + var userState = sp.GetService(); + var skillDialogs = new List(); + + foreach (var skill in settings.Skills) + { + var authDialog = BuildAuthDialog(skill, settings, appCredentials); + var credentials = new MicrosoftAppCredentialsEx(settings.MicrosoftAppId, settings.MicrosoftAppPassword, skill.MSAappId); + skillDialogs.Add(new SkillDialog(skill, credentials, telemetryClient, userState, authDialog)); + } + + return skillDialogs; + }); + + // Configure adapters + // DefaultAdapter is for all regular channels that use Http transport + services.AddSingleton(); + + // DefaultWebSocketAdapter is for directline speech channel + // This adapter implementation is currently a workaround as + // later on we'll have a WebSocketEnabledHttpAdapter implementation that handles + // both Http for regular channels and websocket for directline speech channel + services.AddSingleton(); + + // Configure bot + services.AddTransient>(); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IHostingEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.UseBotApplicationInsights() + .UseDefaultFiles() + .UseStaticFiles() + .UseWebSockets() + .UseMvc(); + } + + // This method creates a MultiProviderAuthDialog based on a skill manifest. + private MultiProviderAuthDialog BuildAuthDialog(SkillManifest skill, BotSettings settings, MicrosoftAppCredentials appCredentials) + { + if (skill.AuthenticationConnections?.Count() > 0) + { + if (settings.OAuthConnections.Any() && settings.OAuthConnections.Any(o => skill.AuthenticationConnections.Any(s => s.ServiceProviderId == o.Provider))) + { + var oauthConnections = settings.OAuthConnections.Where(o => skill.AuthenticationConnections.Any(s => s.ServiceProviderId == o.Provider)).ToList(); + return new MultiProviderAuthDialog(oauthConnections, appCredentials); + } + else + { + throw new Exception($"You must configure at least one supported OAuth connection to use this skill: {skill.Name}."); + } + } + + return null; + } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj b/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj new file mode 100644 index 0000000000..499eaec568 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj @@ -0,0 +1,121 @@ + + + + netcoreapp2.2 + NU1701 + + https://botbuilder.myget.org/F/experimental/api/v3/index.json; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PublicResXFileCodeGenerator + CancelStrings.Designer.cs + + + PublicResXFileCodeGenerator + EscalateStrings.Designer.cs + + + PublicResXFileCodeGenerator + MainStrings.Designer.cs + + + PublicResXFileCodeGenerator + OnboardingStrings.Designer.cs + + + + + + True + True + CancelStrings.resx + + + True + True + EscalateStrings.resx + + + True + True + MainStrings.resx + + + True + True + OnboardingStrings.resx + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + + diff --git a/samples/EnterpriseNotification/VirtualAssistant/appsettings.json b/samples/EnterpriseNotification/VirtualAssistant/appsettings.json new file mode 100644 index 0000000000..fff013fa75 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/appsettings.json @@ -0,0 +1,21 @@ +{ + "microsoftAppId": "", + "microsoftAppPassword": "", + "oauthConnections": [], + "ApplicationInsights": { + "InstrumentationKey": "" + }, + "blobStorage": { + "connectionString": "", + "container": "transcripts" + }, + "cosmosDb": { + "collectionId": "botstate-collection", + "databaseId": "botstate-db", + "cosmosDBEndpoint": "", + "authKey": "" + }, + "contentModerator": { + "key": "" + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/cognitivemodels.json b/samples/EnterpriseNotification/VirtualAssistant/cognitivemodels.json new file mode 100644 index 0000000000..7f40f7e181 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/cognitivemodels.json @@ -0,0 +1,37 @@ +{ + "cognitiveModels": { + "en": { + "dispatchModel": { + "authoringkey": "", + "appid": "", + "name": "", + "subscriptionkey": "", + "region": "", + "authoringRegion": "" + }, + "languageModels": [ + { + "subscriptionkey": "", + "appid": "", + "id": "", + "version": "", + "region": "", + "name": "", + "authoringkey": "", + "authoringRegion": "" + } + ], + "knowledgebases": [ + { + "endpointKey": "", + "kbId": "", + "hostname": "", + "subscriptionKey": "", + "name": "", + "id": "" + } + ] + } + }, + "defaultLocale": "en-us" +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/readme.md b/samples/EnterpriseNotification/VirtualAssistant/readme.md new file mode 100644 index 0000000000..09997eb1a3 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/readme.md @@ -0,0 +1 @@ +Please refer to the [Virtual Assistant Template documentation](http://aka.ms/virtualassistantdocs) for deployment and customization instructions. \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/skills.json b/samples/EnterpriseNotification/VirtualAssistant/skills.json new file mode 100644 index 0000000000..7a73a41bfd --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/skills.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/wwwroot/default.htm b/samples/EnterpriseNotification/VirtualAssistant/wwwroot/default.htm new file mode 100644 index 0000000000..b90135e884 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/wwwroot/default.htm @@ -0,0 +1,422 @@ + + + + + + + Virtual Assistant Template + + + + + +
+
+
+
Virtual Assistant Template
+
+
+
+
+
Your Virtual Assistant is ready!
+
+ You can test your assistant in the Bot Framework Emulator
+ by opening the Emulator and providing the Endpoint shown below along with the Microsoft AppId and Password which you can find in appsettings.json. +
+ +
+ Your Virtual Assistant's endpoint URL typically looks + like this: +
+
https://your_bots_hostname/api/messages
+
+
+
+
+ +
+ + + \ No newline at end of file From 39e4b5111e683333f7d91360526d5dcc04a5c856 Mon Sep 17 00:00:00 2001 From: ted Li Date: Fri, 19 Jul 2019 10:57:34 -0700 Subject: [PATCH 02/10] add architecture image and improve the doc --- ...ample-notification-system-architecture.png | Bin 0 -> 335377 bytes samples/EnterpriseNotification/README.md | 24 +++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 docs/media/sample-notification-system-architecture.png diff --git a/docs/media/sample-notification-system-architecture.png b/docs/media/sample-notification-system-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..b57590bc9a67ec5e44ac4baac50543d12f34cf8c GIT binary patch literal 335377 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%0Ayxz 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

Ox@ur@wjMy`S@GkW1v~;C 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�=$G*j0&pzVk`Qq9xm) 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 literal 0 HcmV?d00001 diff --git a/samples/EnterpriseNotification/README.md b/samples/EnterpriseNotification/README.md index 66137a633d..f0726b4ca9 100644 --- a/samples/EnterpriseNotification/README.md +++ b/samples/EnterpriseNotification/README.md @@ -4,6 +4,8 @@ In Enterprise world, there is often the need of notifying employees for various # Prerequisites: +In order for this sample to work, you'll need the following azure services: + Azure Event Hub (https://azure.microsoft.com/en-us/services/event-hubs/) Azure Function (https://azure.microsoft.com/en-us/services/functions/) Azure Notification Hub (https://azure.microsoft.com/en-us/services/notification-hubs/) @@ -11,15 +13,23 @@ Azure Cosmos DB (https://azure.microsoft.com/en-us/services/cosmos-db/) # Flow: +![Enterprise Notification System Architecture](/docs/media/sample-notification-system-architecture.png) + +> Azure Function - (looking for situation) + +This is the service that collects various types of events from existing system and reformat them before sending over to the Event Hub for centralized handling. In this sample, we simulate this functionality by using the console application located under: + +/samples/EnterpriseNotification/EventProducer + > Azure Event Hub -In this sample, Azure Event Hub is the centralized service that manages events gathered from different parts of the system. If we want any event to reach user eventually, it has to flow into the Azure Event Hub first. In this sample, we demonstrate how to achieve it by creating a console application that sends an event to the Azure Event Hub under: +In this sample, Azure Event Hub is the centralized service that manages events gathered from different parts of the system and sent through the Azure Function aforementioned. If we want any event to reach user eventually, it has to flow into the Azure Event Hub first. In this sample, we demonstrate how to achieve it by creating a console application that sends an event to the Azure Event Hub under: /samples/EnterpriseNotification/EventProducer In Program.cs, we simply use Azure EventHub library (Microsoft.Azure.EventHubs) to post an event to an Azure Event Hub service. -> Azure Function +> Azure Function - Notification Handler After an event is posted to the Azure Event Hub, we use an Azure Function service to handle events. The reason we use Azure Function is as follows: - Azure Function can easily setup triggers against different Azure services as sources, Event Hub trigger is one of those. @@ -59,6 +69,10 @@ Once you add them into the AppSettings of the Azure Function the sample will wor The message the Event Handler is sending to the bot is an event, with the name 'BroadcastEvent' and value as the event it receives from the Event Hub. +> Notification Hub + +This is the service that the Event Handler uses to send out a notification to user's devices. (https://azure.microsoft.com/en-us/services/notification-hubs/). Please refer to the link above (and here: https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-aspnet-backend-ios-apple-apns-notification) for additional work needed to get it working. + > Virtual Assistant This is the bot that will send the message it receives from the Event Handler back to the user. The code is under: @@ -86,4 +100,8 @@ Use(new ProactiveStateMiddleware(proactiveState)); This middleware will save user's conversation reference objects into the state so it can be used later to send message to user proactively. -With all this code in place when an event is being sent to a user through the bot the user will get the message in the ongoing conversation in a channel. Not all channels support proactive message at this moment. Webchat, directline and emulator are the ones we are certain that proactive messages can be supported. If you user other channels, it'll be up to the channel setting to determine whether that channel will route the message back to the user properly \ No newline at end of file +With all this code in place when an event is being sent to a user through the bot the user will get the message in the ongoing conversation in a channel. Not all channels support proactive message at this moment. Webchat, directline and emulator are the ones we are certain that proactive messages can be supported. If you user other channels, it'll be up to the channel setting to determine whether that channel will route the message back to the user properly + +> Adaptive Cards, Web Widget and Web Dashboards + +When Notification Handler handles events emitted from Azure Event Hub, it can persist the events into a user data store. This will enable user/system administrator to look at the events later on from a Web Dashboard and we can use AdaptiveCards and Web Widget components to render them to provide a better and close to conversational experience. This part is not included in the sample implementation but should be easy to extend. \ No newline at end of file From 61f0a080e8b5c4add879a51c90015deb74a445c9 Mon Sep 17 00:00:00 2001 From: Darren Jefford Date: Tue, 23 Jul 2019 10:34:39 -0700 Subject: [PATCH 03/10] Documentation updates and testing --- docs/media/emulator-userid.png | Bin 0 -> 200917 bytes docs/media/enterprisenotification-demo.png | Bin 0 -> 307569 bytes .../EnterpriseNotification/Configuration.md | 110 +++++++++++++++++ .../EventHandler/Function1.cs | 2 +- .../EventProducer/Program.cs | 4 +- samples/EnterpriseNotification/README.md | 113 +++++++----------- 6 files changed, 156 insertions(+), 73 deletions(-) create mode 100644 docs/media/emulator-userid.png create mode 100644 docs/media/enterprisenotification-demo.png create mode 100644 samples/EnterpriseNotification/Configuration.md diff --git a/docs/media/emulator-userid.png b/docs/media/emulator-userid.png new file mode 100644 index 0000000000000000000000000000000000000000..b9aa858b6b910c452e666fec9333fa9ffcf0dc51 GIT binary patch literal 200917 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 H3%C9UJFxkK literal 0 HcmV?d00001 diff --git a/docs/media/enterprisenotification-demo.png b/docs/media/enterprisenotification-demo.png new file mode 100644 index 0000000000000000000000000000000000000000..29d611a3fedfe850a8901b321520186d68147aad GIT binary patch literal 307569 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

@qhk1!#wf|4zS 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

Iy#< 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 z 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
f$k_{Ff6CD_-Q zJ(=x#AMoI`FjL=imB!iA`kh7Uz6K_!$GYZCeUDtN6V1x)+PY&(BR6fzxFeFqihRT3 zrsWn5aIo0!H7bkp{WSpHg1e8CJ17SvPZ zErj^q-WY`buTWLe&Fl?EMbaebufT& zqk)<2;V9RBwuklcq^XBYA1@GTE>%3dp+2CBNTHqkE@g>3*8BAVUMPbFzB-3ug=hi& zoJ0rdqIg)Ik&@ivbbVXMRKmfO@`lN`?=%}`4g20KoDD+e?df}SucY}!<)<01TQRX3 zYS+YrjBSVbidr{RY$vDr+B?6A>DdSEl}s&lM7ku$(@AvecYn zeN~RH9(o!l+$#7cO0O_oY%T4R7}e#ANva&9LY-_k!h1ZKb^q*>wE>)XBYuO;S+SVB zNi}N+r!wrJs+G=)!MCP3_wF}OQB-nkWBQcKjX?#f@Q{vV$J#qWtxC+R^*He(MOPO_ z@vYM)boZWXc|+g<^*GU7DTUaA#+wUk^`gzwsXijYDfXse!L7bVCKx&SPHt2&J=bvA zoU)^_zv5(R)hOpc-J;BPA`p)(Wh&qS-pBq04*)+HF;nCQlZcoAad2@&L6^;HfT-%V zs>#vz?|RtXviwM14GX`5nV4bzZ%cYj$*z5LiyZi-tSgD96;7rZDWpWnxhV3ZYK*+; zqO)_`?PE_Y_M{+JGA3Bqq=$p=Y~A&~JH9TOK|$ru zvKTX{Fd8mdHM{#@*wQGpso4_aW_(7C-rXlXis>41vX8a=(L6_SnNh}2QH?PsBY7*# zxUDB9D>HenGnLY<^O)v_ZH%~aikY|mL^f}#J>uY#3Cw5pq{(?6N-Fs)6o*{AK<1X>w+3{^{XF}1*vTGLUG9#IkBl%$z_uq=snwE`{oBTPH)(z z3!-fc>Z-2z&%71fOEH}Wk2ln)nOYuASrg$c6oJR^O$A(`wB+ijqx&XO@O?IR*tp$| zQr)*S*R(10=(B)@ZDj<}NUw2=XF&e~QB*3c>{L)7Ji$Qp3taiZy&oF# z*qA{0?``by#h+TeSAl!dJe6p_RN1?>qMm=G_Snj*re{uK2STzTS*c>c6r&ggqkfZQofFSGG zT4*^hk_O#HK8lN;&C!L@CsdfijMo)7*uooL60FS19olPy*r+Py+o8-aGQOz33e<6! zn&6&nVhP~K7NdBPw9?o>?qxdY*^;q$Uib#6i-zXK03~n@$GLo_wEGe0Qb#E&pS9WZ^ee8?0<%YZ0~aWeU#4-u_XSxg-1JlDBmW^XP45>mbm$HV=VZ zqHS6A^8yzDCUufP8#VDcj~g6>$}I;@o-BRl)0$w$&aBTjbdC|KUWHhn-yDwRUxjW>NX@OfB|G62+b0O41BoNPc0+tC>du`E zjmN|tM`)+*@S!1fXD4FjwR4^Hcf)*hbLbT*ru#hkdmQW|Q8DQ(sWyrwW!2gGk|$L^ z24Pk0%L7aT32D^G{0gJy5GY%BZ6Lk9>#O^S&0)TNv3m%CLZ<8(4Ly+I%|Ow)@65ZL zIse|po~y9x_=smv&Kku4M*%=zg9*{eShU!FI91^O18OwI)P2JQeftbD37D$m!d8|r z2OE0yOWZ4tMOA$z4zD$7W5e?bDFcjhD%<+?$GzMB1^yj+-=Dd=*C}iaOiX~@ z8!~jB$dGoy1^MPeVhgnc{Sf`GZYq;sw1-k`2_<%R`H#0~@yG=sY!Thog5smg4zLrB ztprztkt}}PMzLy~_83S5jCFYinK-- zvOp%kxo(DinP<7#ZHrG550J644G`;Jra_f!1dy>Z_xo-o+<4J%B<(PQ zB&TCI=M6pRIxn&jLq^k@>7}~46cZz;WXHbH=G>b;7?qMT@hXF>?W2yv>a2S2GoI^_ z2=B>zL?sB12@tdFmuTCH3#TzPaM9AAEPzG~@>XqYf#y%EAMQK0(erI&@nVKl6sQ_)Cs!kFj`ePwpWY@{b*G|(-*Rm7T62>g* zkp)JvQphj3PX*XS)oX_xfaKOm_U$Bm-I^-r@8!-mNA*Jak;OBdPF|h6Hw~~O6a!^h zGO> z3vk(b48j;-vHZF~4gjoOe?AsKe8f}^@z`&`-=2AgGvh0gRzu&Qq=r>kFJbl827!4>+4m%YW*3l0fo&~p^%T$RmtxJp10 zw$9+DT@^kkXoo{A2vUYAuZ%ef8+b~|yWegQdI7J@-xc`hg8Q zd#5`Tca^+Gxe-BRxGEMYm4OKV|>QAIa-)&kn`zKl?3KVdNPS`Jj zf}qd+w!MXK%82ee4EX!)W#6Fe zk@9KxFIJj|e2Y{>r|ke&8wI*bgH%{CU~3uk4$=}B5uS}#k$!t|suGxM?~cYf4# zfzoM0FHSRBI_I*arH^Sy;4r(kyv7H3!TP}^-_@e=W`WuHBiQ8jcN4r?K*UScLrsO!+{cShDM-@7I$X zDK`6$qx4>3w_XuO%)Dr774jCE0uE-vLZXF>oo7|Os0t-&3v}F7-L6|aDmQu&lgabc z>(&T)e``p;8)c=Wx|XK~(}i2qMXm?$|NV^w ztc0rCKuSUx-y4aB%`*KFuFOk1iG22*rP|51LozQ`8BsdSpTkgc?YBRvX&pe@rb~xo z$^$vSUFpm4@OL-NuD06^t@ zcoaC1g7z}nmD4*$14A3Ujb&MVwJY1|dq;uJCGtFCJ*65Ca@oHfasaUp!&NHtmA zQE0QXY@|y{)u_Hr>j-3IgN4Tmo1cJJH`EM-FW4P68}J{I=Xv#v@P%&AVSPpVLrubl zJjeP=g$*kDSVfI)ofUo2_U4w$Ip{OC(V3^n%$wN2V}-nA+tw%IHgOx)O4Z*0PYUo) zC3-hSz8aB-7C-)vdFU_R3jDrAX>9QyOXFWUJ3Nz_=pGaKC({@}ae#OIcLol)jd?uL z0B|_;PX>U5sCaHYm*<5$ueQbCZ_Gc6o>-A(i*8|I!L;<*#)g-IJ@^y;S}!L6Jl3!te z-zY(2TbhRc-%1JS9Anhqq6d`iSQGl#)D$vug_!SF0%~;UJ?36PfH|!qe;l@R!u=pU zV8$CIlc-753D)h!mAvn-oZ)}|;v)J1iM!+e7CoS1%liLF^lWdz0LRfMm7uqc{9pbU zo+iox?-fH|O1sNUt)a)onZjgWlO(J2gg*ic`dZ-_iER}wvAv+7|Fob%7!z{f04XEV z;@(Y+ONr4k)P8MA-Jxd!@-ZjM0%nnQ5)giHFMA^Q>N~{pixqC)!LL!+Tmx?%AbpFN zE3me>8lJ3~T`djLPxcyBKqO)@}@vtWQ#^JsmCO4kv;({wvu zBSI?-pfx)+@Qa`SxZ5Ut8iwbaCti`z{w}h4BJq<-#N8C>X}jP+AM9Lw-E6V#vH8Wn zwT=-R#%?>EAi)+?#jhI7O!{~0;cLH`&yTxHVgR&C`c@J|^5iOmG0`w&woyNn`U~Tx z1#N=6UmhXp%qC$QHi=oyRu+$vqN71?+b{5wh`WjJ0zen(SYC{kcR8hb4)uw13WM%KxFpH z0IM3^&K4dl2+cCFeOzu8A0=T~8k@wZEy42>3klw8L7)rpbOvtO2N!-Vp6xpx;`AK4 z({^a*S9ZazwlRGH{{~G@+O$eR!%%D4O1k;G^XB%1+HA~!`%E&>bmAHWyJ1TicAD() zblz>qI@d2aNs`b9O{O5k#01KmupK4)CFdX}q1za^`IT`W^>2^2hXd*(gVi)xgfYr6 zxw4lOKP;3)HQ=lWaiUDu22Tp?oc3L0hrqml+!c~d0!j~vlJg{ZE;ma7Zt>JoYv&+< z-+>-*i)u-%9kXFj0?E6&LUUll4c?hwoT*jhpEwjGl%Bz^d>Z+36%9hpzax+5DrMFB zgplty@a0lCxZL^c=TGe;M(q;hJZ}#v8Si*|7hITS6%>Kod`S!sQTj}YI1u1 z73u1WqVoc0k#2ngOxBtFpExZsdq8$7SBX#lFM!{GgUBB0KY0J|Idv$YQx6B0f2C)F z4Zg~Mr)PSB`np?mAgc4P^D2^OcDz zaB=W|rwU9|C~}PcUWt+4S~dH3C^7%P(GD=cK!*10-%di9{QAd#yH&EyPAsAg|5ito z-wm1P%q`&)==Ire|mjIeZhw-1(i z`F(FgV!NEjy)j|D^U!|6=Pg+Yq9cBc+n7*$Mj^pRdUCLxHPbLf6YA;(*$+#~yf{gNR^b_@E zUyz8?m985<+&a$1z;UXx3h({O*V+%%9~|+gv5|T5BxQLnkTdf&`y}R0$h1E-AAZ!u zfHM)~mH}`elH0~o_J77$O5Ft?FNo@W={|zp2+TJ3vkf(j^vmjUFmbiPkmrfa9ne3s97fCFK~=S_d}?WKi?5siN_>IJ zRiS@4D0fo`8VpVoT8gNRUVf>!ZYz8u=V(vezJjQfHbu(KtC`yFl9O5;deZd{rirMo z2GK40vK~!xjA%g(B;UD_oRdFQTzo9)Ndp~-wIdFXjm|s2XhC*Px)#2)pdKeuT+T5w{m+v~a{r1;0`-2Ye<_lf&~23rHFA?J#Tmzl@Gq?R-v z8Q>3)K=?Izt{=iW^%6WKs3o5mVGa72rqiS*hlpJ2Nq;2qF%3GA%L`?@S!f<;c-B04 z^BiB^k{|M9$?~vUSBWBwUD_kq8;?Kl+gGsH9_9(dbttsFsUbSu+{WKWz!o0AwQhCD znU3k*Y zG(_>!(X2+ZaCF_)Fv7QztJfKuSbZIWcaU;v{;(eH;)o=}YpyUF6P14gS z>E1iP0BpCs?C~0!G)xoNeoZvTw2-@4s08&ZRy`=Ff<5P$Ni|mJbs(vr6+&^_Es)TC z9-Cj!O0I?;`f#57ONaxYLAs5f5){1B4E&x*3X>MhxIfb6&dux6aIVmk9I zvnPhQ73P<(aof!)+^-sw)6c@8mwWPFy228f?*#_^fV);m9Gt4+OLq6}-MqLqr1Mvfr`$uA~~*k&Z1$}etTDY!oE*uwSHSQdB6Xl zBaKx2d)>{D8k#Sd?HD8A*&M*~8`2QlE>}bu_DiGtahIA7n$suZzf^4hpI%fQx7IY3 zD^$;$Gyg!-8J4l0woDv#jY8r~9FCW7B^|CQMv3J<#kCX=nN+k^&)~>pxn94_%yFwfut#)T z46uXCf0Ua8L6A|XRm?jyC0-v3t56M7c5A*oo#i$?MBYEYamJI7QM%QjS|*i?HDH41 z)7&pU?$HZ7gzklLf@=2W_;n0rRSuHYV{St&N>l9Q9TXr*q8N&p<@2YPlab1Ozhd?D zT$}FqsGjROVFe>X^n1^_T3Fh)SJ*GOa{X8eOvJ>Ml40hrK<)Ue*JNkxfC&gdOPo+{ z%7Dlvu2Ne(2i7~553pRhSd`UE@2z$+ypz_^T?jS8xzx~Ulyd>d-D?FZrO-h(jn%4;NaNe?c68&xM-x1e+Z*M~s)KUQ8zHC^#h!nc&Vn;jm_z3U0ew7^e+1!Y{{ zHs8TjT3C>F>RoDH$P`GYSsy*H3q9Wn@&F%HP9ZPR=%pZ+u3^OQ=p|k8Pf%E@?ph8r z3{GdH@FwnB126%iCDw&}Pt2`2Suyfowl)N>L4=kS0Jp0=V;U9OV4UA59aF84ZhRFa zaA;;kb{kf!&qW_#6EG;NQA1774j-=?AfN+nu@Yg|jJ{U;sm*kT-Nv$Wx2oB{Wr}kQ zl3dF4O=NB0IX`y}BuW#_sfU_i3CFG9{wEawuBi(un$*R;m9+SFBUZxwWe!_7wk$!y z;YP}Stlk%`X4y@e2jj7Num?vE%b%ti{Bf65Zj{b|R>?8zfj0v$$qX8V5p8w>?1hfCr zs*TibyX`k~Ci>0(Hcq4g5@%i_NS(dA;1Vn!TU%FxJ~lTSwkuhT;At7mM_^yykSK&U zFMwKc*zJ9(0g1P_5e#rHG-%-7WR?(h-1VPK`xjFsW{@3idR2oNlYU8 zb54m8{2l;p+|YydPhfv|A>k7HiJ+N;%0nvt5~SGPoJISQfh1V3@g3M70ED}V_p;e` z_Q!(-P3Bn6uU;fL%|E{#y~tceI6d0|7}!Lk2QUy?wP|pU1mug`;Tw(Xi6T!(f^UA1 zyP!=#?DCWCw6kAq!4Gn2`#b1*_#f85FC=Vl0){Ri9dD2T&?CAXB|-W=IP1G}=HL?` zQifQ^nPrm%ka(y7Izg0Uwfp2B2Jo*w4*}3VJ`8F3_2kFh1rSLDYIQGvpb=?PEinQj z@2RZ(%QZ~AORf7cpEe_L$C)NA6F%*OuxYGCuiCWymErU#UWo3agUoWb6Ayg=+ zY|zc$Zjc}`Uz^y~{u@>%;D{ci$GoXOxi0?cms*maU18SHKmbh)Y<-V7%+4Cl2#0@` z=dB=N3}E{iQ)&m8`V#XNG7<^{E*c`Qy-4r;m#v9ifXJ$2*qulS33PA?2)%H!nlRGA zX(~HS)fMmBa#6$wD ziA<`)4y3GX7yL6Zo;CA6gY@fKltj3`h&t~5OUr4{(mD0O=`2Z0=M8|BqKYho13Ll! z$AksyExX$+eYwqgqIFYjFizzI@jF#!opMsm}VHz5SYflO?c0An$ zPuS1IHkLNyRseeZ^?USNGBR?*-a9d>e|+qZCK+A8w+=8nOj=>Y;O(M>Z?e@xcTZ(PdA;BH}WfQ;_8PCl@?t*#&6Mk)v51qb36>dj-P28LE#$`Snp7!yGr*BuL zZu`pZe&DYD(POn2z`*yX9`KzAaEYsaLrFCQYA5I!nt&2KHDsJCY*tL*Ek0$QSMVTi zpAw(hR*>gmDms+;=WsYr03<){PXa#opR+`~L8uaebMJT6shk5DAh@nwzQpG0Mb=du zVH0;RAOjSxTdcb7uJUu{(R`qzx-X17Ne}%Lz{=Spa`>Vj2+$n^WZ}L3IsWIDl!*@x zi{Sr6_jUt34Xm>lhuw8}A%2inu(%el>6BmpqhClYphWf{g&olPK~(4f*_szyf!!Ju z$zgyJ7RRr;pZ^0kwovfEs&MM+PgsA@S+X)%<~DtXkpPc!021_R!)fK8%K--9hH-5D zq^>_8{vBH{R0yG=M~|z0>~rAN~IC02^TSdB#AZ zF*44r*V+P9UKNN11*yn5+fT?g$IBLTcuwV6fF~#P?Mp3E&SXsX-s!lm64|M(pEXsC z^Z8!1SvHw16m4|Rx)gY2Gvw z)igjgQOJW*Q_u9ebhHGoBo4F9<3J>6`_1$D8yA7NXRw zwN;Q`V{EfefHF81J>aD#I-yK-SDjA95Q{~?9!Y_E4(DswNl?4S=j>GO`^KaYQN6C4 zW}*2Y`>ku#7U#VpGV49-*~E@ptwV0|Pli3683F$rm(JDDH?im#oYZZ;6K{QVF6m%p z>VvE&pmrQ>`7t=0_O+|&PcfiE4;a47iWP~tPX&w*aOL&abBTnt#F3B3!h{tzzA!e) zOlG#b<-Dh)GWs5adCuSn3Y<1rfV$W@^#;D1OBU(mR{K3L<2Uq72=LNqrWMlJ~NK0u1g-Nxe44fL)9j+wAiI$FC3YZE5W$1M6@;)?v zzAD!5E9LF&J@P@!=S~l(sM^G@u-34Jk$va&#*--f8xsi|qxpSKO-sc+Vic?wfLKy| zKBe?iT8XoQIm}Bv`(US#xRwos#6c=5zLkCBGZ~?0KFW8*%dL;SwrCP576!GueAniJ z6wY;sYA*L$%~~`bo~SY81wszm|2FTZB*`YKsOdAGZ|)e{*mdx|TV&)Yu!*pVH`?Ha z&*r3YG)U9PHP?W(t4fLJ+vQ!e z6G!kSR5_2fi1bK}R)9Kdja2M*8kPm9#kXQ2O~M7&2tMj7R~ttXUAuHg0>!*;$<}$4cK7lc7PX1J)e7oMt4D>1 zmZcgvH%pATqwt2h7Lm}#I(7#GWUo!eGs!)DEoc9~=DstksVr(63`T)~ii3iJpn^zI zB8Ui5?TCVdfCADKh;&4dPK+pyjwKel5LA#NMd>|3X9Nilr1zkRH0ix0`SwL|jO%^Z zdVhYi<_GJVd+xdW?7h$4&w1|Ny-!px< zJzK3?n6|UcrO>Hs^!j_dm06}q!*1>IBXd_kBbj6-sGQT&8mLH z42nb>>o04J6ip<1 zCjS{n>VAUrO59bpI9sNf=3EFKMYlC#&_?Ah)GW@ggo<8??<%0a*nsEw-Sgl`rmo~p zHJXJLPq)4@7F6kvdt71am};ci7Nn1j97z+A#bVFZ(0>Luyt-fx);g+dmhJJo6@>2x zCEdCLr8!%=rb0?%?6zun7-zpprdJSt^ucFB9DHsV8*MO>I@jZ3vkEiKBW zAcW zUGyw#h|Wyqw|IF^xKi)jR_!}n5(XKXsBqo_MiqVWl<3ZT?*=Vq3LbGHKK->CbGBQF zi>TcOl-MNx=7b?sZksE)xM-$$BsHkTG3CusK3$2*wN03cEmxbZJ!5lKzEV(YQgWp0 zNO;{{*@mKt)m>u|xEK>JYOFK*uZyH>$IkpI-osd*23d{dKp=eL=475@1>QH+*}Ho) zz4`o0Cg>vBqy#LofiY1O7a*KfJU{SC_xjo-%xkcPY|)8_5B%f!jeAvvUsp{KIeRP_ z181l57p8N`=Fq~p*tha}J9VLRrexFIa;*i5bC!$BKHBM+cz=Gq{hw~Q&-W*UK?|2e zR*3>7MtgDl{r%6;m(Uijd35qb^vDzF1y+PUJl_6A*g?aLTOux6Y`*4}gV+`*-`t?s zRGIk{du&)Xn9dmX>gDBVhvK1AnGN2(5hpH54OM1{TFzCR9q6^TYTKRHb$uKt+hkKI zw?_*)n+0sjGx(uTLepSoi^yZ#WXDLL*AOY|04YI^_mS42n0H+6<0is+>d>F8=aj4O z83ty@+9wr)`Fd|9?aitm25u?3d$=_wrzbFm@eOx2!JquagtiCD4|=q?6b?DW_FN$? zv{Q5&H8xjyo#oeiEotX-U&?_xb2Nu5cqw^X+G&fCgyKNJklu1av82$kf3Gynw2`uP z z5UY|IQ^lGE)6$zcP0-h2xPY|^EIOyj4AnR__2Ry2^3c?SfNvM4ro2ifq61QS1e`~r zFTWQKNNt%7NcZoNg_mw+j06lhTD~gFLc>5o?-=O`#i@iZCB~jX^C_4dk$wwP!9V6r zIfHVp+-n$uh#+Oi@#b0wyb|qlU5s(wa}8Q*1#dtqp)1F6-vWl&(mtWd?AB~#o**kN z{PUG~h(C!GE${yceo{I*7nA>3Un4(9x=gvO2lr~=h^6D#087WUWcf}MUAGXr2hds@ zjg|gp&X_i+4`j9_OVlX87FEd+AeRMjQ)*F7YyxlG}>{=Zv=|^ z4?3<4owoo*Z|WT|AMrigws3K7xI+C)V7F$Ci#4m$pQT^HYROx@>^Zf{R-X@?>j{{{ z{T2-Z5yZ;WNT~c<+rtyBYbrf$(B5_-cq^bhKH;TdW-4tophFn7%Vb!E2_f6jxf$?% zs&y)g_cG((YT1q9lCD=8xbiWZnxa_tb~|#>dwZiqqXP^sXeth~K8Z1(RUdb`zj?U# zv>;l8IrgAQcrfV_)-YnCl0r)vC?c6O>F37Fv7lt{S=3mjRp(GWoMsr>+j8R1ob_Jk?mciI|pI+>P~4x+Ai2MoyZz zprbSAgj5k{wD7pslY&^iR7rczHDKn!cZb zr1%i+F6--+nyf2{q*FHuhTi)@4ccTpY*>{sGy{$n1MclqZcKY^+1&Y_mg2;0xg(jj zbmQ{a>C1K)Nv0t%gG3J573*(Fc#5Ydomv4o%aaD9-mRVH-Ae1?pmdErCF= zi^cYoD_&Bs4^<&>0=X1x(w3rTt zPbDu>$&(}dYQ-14Q7GwWB=JLNe=|Xm`E-@hup2xI`=dE~F>8A}74k@>U3S;}yO?vu zKKzQaPu<6=_SF_+_%V0OQn@h_Hy)lYKixLhOR_Z0WDI6-^+zSNMN%kky_MIzVjdv* zkY}m?kzWwoo27d@A()OsZ;MH|Gb_9e7u#jxSQ7F#n;qzc_v{;xV z+EkFQ0>1646ALbn^$krd$2ld^aMxwHi?Wh0I4Bl#a7eAwIjn8?puVmr^J)BAevR3# z91RigR4#6J&AA7OCXw4{M@!CTEFKHB6>?d4z?yxqDNsmA=u%9?$3U;1O%MWm71QKw zv42KUD2G3&E`v|8nE)KC7UHw+vu6#5txQ*ou@gqV`NBnkKgh z0jqy=olT9R;7Wz&Fp!E(jms!z7K63pI1m(S@+vSdH9|T7zEo=RY`fJapT0&==u(J$ zx*(5&TXfCAS1EHu#m-}@BiBp92vwCgsyVKrkDn2?*3QAKPT=_mdWK@Z4ZHfawGBj$ zXfpcs2Q|iK6Y$XRQF#8H=u-l%QcDwp!FexXdtyKlfxsnf5MUiw+QAH#>ynSqjv>r8 zK3ePf(&yFQK-Rxg#k)O{qJ@6B>MZrrrYj9bXB$dKZ|n%>)!4i66}MjK(ykYK zoCJv*OGa-_hoZ4 z0Sle*?Whs`v!2@(=gwT-ZiE>x$_ZrLOi6wFlBSF{%pPF6h7<7g@gDb}ckGq*U?pp9I zN#Nb^W%d~qq*pKd>I)sd&Y9T9hg3lKCF4l#=3XdDeUWFaO{2#NMuLt1unJ3|IloeY zTA$JPf)Df0J{0+#bCR(eWKm5rTrE*uuGhm@}#3)-j8^q>|Zx<PS7@aQ+Eqa9UGo`gNz#UgGOG?b zYPgRYOqBMTo7`hcKOBpO%O!C zpYI59{6|7pKm-E)cjoTx>AaY`Q8nDlNV7SDl!tV@{P;69LH?+@2n(8Ok{w|kl^PN7 zv@~;N3lyL)e^mM&b9jdw(d1K5uACWBcq(E{(@=V%bOA?ki#x&9f(PzxCskp^#`A94 zqWf7>>3DO2!{wm_I)1hjWRrnc9lEjy-Rrq$e1TD?`StZr#bcA z=Eq2IJktKk#c5alv}LbrImvzm!UR^m_N?89pxZo{fAURUXk^wO%aq(nOy=fJkPspE zIy0u4(t~OSQ*$joEJWmM#vm57Ljj956ukd_H-Yd3HcjTUoE=zVuV09fanjanhQ@!H zi;!H}tZ#`r#1rhuH#o-6GrmY^N+*RAdk)3;4kY=e$>E73L8Zt(WvscL`=dm2E#?Mp z?t108Sf0r7vjJGDG0mQ18kAOUw57zw$Oo$5dN=pp;`GS zueoctSsF_e7!dBORJj#(Q!Ucbmi}-BDu@_Z!63^6a-u@|6PM(Ov z3d$S25&uLi)eZUbRE*JgOgDM|UhtGh6h=wC+XPX;Z3Yi7Kz`@^3X5$VNjtyYXq$l0 zrR!&w1PR)FjP?`y85RT?c9zt+v&&HQy9^Cc<&;VJz_GtGzGYDP7yhu>;dWvQCpzY| zeI2}nEh@PT4y#o!UUyAm%@7s?Z?R)Vclmv;BEfgtE&1BtD-7UCQ zA&&(aV{!F`Ee@ow*>=084)LqRi9ixtMRnGUavxnUDl`k&iG_e^`N^TPE%j zZw(s41K|k76|8EY(+x?yv5pZz?$D$7Rd!X8O7&ZNmg1|`mmyGTWN6gPTYSK2HmnVP z6-Ycy0l@O3n9%W_YhjQ`Bj{U-?q!V6v&O#>q=&lhn8?QsLPCRHXVV^@kg)H*&UHK3 zv97LoH+IzHV5ig%SoWko2)@51efSRBcKtF8PObpvyS`$?yX?RK2WxZZXz*4))u3Au zRZq2xZ*XMX`$MR_>*7HUVQh8m=hJ5BkQwlW1u;H$`{m#KBXDS_k=5Eo(Q3Rz)9Qwl zP}50eCM7Yu`l+A(H7 zg?jD>$c(y#u{aiTyMO5fmoW-}QlUTi*>u6RpH=HaSz4huX{w}+v3KB(y+n>u0M zOVh8#KE-oB@A#DK7xWXmpnHXL)DRsrfV2PWJicpRrzE#Q15y?(eXvt1oS5Ce%Ed<$ z)oQZg^IgU2ow8|p7Xs2Ujxs2{xUM}B>M_|vim^{mpxT@=PqEszcjzXcv-#?e&W&#4_yiIe>B_+tM`=>~%h(+MRQ(yz$0y1zAmovUeerKcYfk#&$7^ zj<^(6KPCTbq@=DoMsRZW?Z%SRU_~UwGnz(wc0=0c4uRnkOgbc>uRdjn92YpA7H2$l z5Jk}5j$Y6|c{l?(7NK&*Zioe~h4NU`=vXjN7Zf+%x3J}(Ms)*D35bGtw8RrpL(Sp<3qc}yHO2IWu(QuXFAMu@^ z0)=I;MBzH5QHQ8^W$XgDXY*AunI3PE3}BU*Vpjxbzo79s>%22fO=s?PT|@Ej6n3f- zKu5eGwbUxp{jcau5h??jfI*wd3d)tte(s44;!n1|RT`8XB(Km&(UQUX_Z-9o2%0;pE7~xfN0z6&)t(+(8Kwng;EZ zj800yKyr^VdG6G%&3I@N*GNiIc(^O`lj7^mxi=1F$Y~GD2Skp~Am=oE55D;599X}< z84~TmHxNLdhEs(C&ol55X_7cG_IPOAalu<^n~|t7VBZoXIQs8xshD$(Cb;NSk)`l0y2Y7*xn zg7Xd2<&HdxJ(%q21mLzL9p$sTWI8*&p;yUhwZI=0Gdiu&0U139cGBt*?7pD#cq>s{ zJCwiK?H!+Emo*$ZM9X8bp(AN>Hy`!x(RGkmz4!l`?|_M)wi4foP#Hu;DmhHi=25#8 zn*pWGZPb2GprX}48_JNTlb+WYPp?!?vzbhjk#>Sb}a?a8+V!QD|WK_*#?uR--3}zddGB1ElsoEbT!~0geAE_v77;B~D1p zjv=sXft1rnC*d1RIL0||!5j}$mTw@vnXgaKFj^J0s^lSOccm{4GbIwH-3yGrz1les zhixHmxH9|^S=8A4GQ&~WlQ0!)+H+vXbZ@r46#}J1@Lg0%?MSYZ0$f6~!ZbaV9jNJ3 z=VDc`))8`bW4AOHpZO#)pDH;T^EF5$J|@iAL2tBfhyAg_az8R1a)|Zb z+%@3O7DH=Ued0a&H-+*RH#aD(SWXiD45vn^ibO?Xp|~K&Q3rjr6gU~h$BNz%S7K~XKU<&4sWE{<`E<5!hDXm+eSFXLQM z5)`&qD33*znuW$&+R|Fp`A-b6a+->V9Oy$_y>XIZqM5{p!H>XWrSja z2(Ys}lO7rhH3P`LBSV^Zs(l5DH>B>v&-4oc)RoNRpRuV<%{!2kdi$IUl=!P&fBaIH ztmWK^xle2G=eEFB!$jNNz79%H_W!(|l&HBt@4Ifvg)WGFymy&A1~j)7sP)$dp0JIo zWwjNNn9b<~*kveh*Lp9Gl~JKtjwy2Zn1R3taAuhxS3FtE+g<-Ske@)%k@C|15lL$u zL&Ser`4ZP}0{Ii9eRzv2LUy8f13L3ww$FR{9xsHygd^K4vE4Hn3bCK-RBj;vc9b}n z(n-~P-et0s>Os(k?FHJ~mnHQ56)1nf8*Lx=evB-`ds!e@S!kCn8(_g1xaYvasaNc$ z61i}~?fZ({0o;179f(rYelRC4BNppmJkgJQo3xj;^Scrq1y-BT!?GyksaOjz>oFeH znB{w-;hv5bS5tP9V=;36Y{nRJfv02p;U|yvhOhq+JmLOYNJ##2saegIkceZSgBty% z)`_StJOY?cXKTim?-_DeIk4T+w+m*|IpFFAF#|ydn3CZh?i-g?-{S^|^q5D` z(Pa+Wcj*z4pj*&GZTX%9Fo%LndKSVZ z{PBwLhc6s}#^%nqb-=<~)xuA9M7OV8UO&;TAkuXmvFrZ(Ju*3~!ytlnK1Djnnsq~} zCzKxBy?jpx0%SxpUN*4ZQ)33RDQ=(-hr%t7fqIGU|FV0TU)r}C#=GB#zPIeie@JgT zvLNN%r;zCirGp5(SBfrkLHqRJp5brGscgJQLMOsGNM&Blg4C5X%RFud|GcvF z2f=!Ye9HME|4MJ84C-CZ`_0HoVu!d4jO>61kW6@E?{&rHuVpQ=ItNm=wlDh4fK`to zbIb3(fnH|D^6-09ZjVKXvEf1lu9cyt4oOIE%*}fe^Ct7B+c5=od{KC;`{%na{h=io zUQgk;@{8Ugmt&O?&+>xQA^EFDulC4A3~Gkd$YxL+g!_m+m%Du2$v({g%wE*8vIa*h zhdI*wn^LYvoZg#~YCZO~@C8 zSqDM{{^hCRrtr|DDK98F{L5AG*WxQg*9nC~BA5?I(h?VErF~|= zuRlTNz>lo@D1WUQ``tAHeSc99_~*|wGIKryQf2*12}`UZB<%#|%)$+evJY&sx~7#5 z+xX=C`YtBh_1Mi^zB1U+K}%MFu|hMD2n(LMW-SLPKNig+6%?fDYIHE0?rE*zK3Pbi z04K=^p`mOobc3@Kptxt0Z~GhLGh8Zv-;Q2dHXp?ST2 zJwW=FM+)R26t=H}w-9<$PYW&ZstKHP4EjO0Ik)_QYJzsWJHxc7H1`fbpS=w{j0-?X}QrK$qftvA{$6rn$gxR-A|ghuPB z^gPKZMQ^U>oaExtJ1~@`;5YpZ;bqkm<`A6l{M8oQDLpTMy~h#6({DIGp&g*do=(4! zRMf1`1Ry>Zh3~JCBljWHP3gIS?t98e`)(A@RrOt36Bc!$O^`p^M%aeh zTTCy7djILHM+&TM+0}c&z#jj_#}EPuX=^YxU-9Ts_~?L=25TN^kL*3F{<6hgwt zbmT*)yJ)8zj88{Edgk7GtGUW6lCIbsc^YY0xpWRo;r z4;KtJo>-9(Eki;iZw< zwiCvDLMdRqwlD7O8^Bk|v$+SY*vAlWspflS-D5YOMI&T-P#@4ng)v#DYd4OIxQ;_Q}%xIwvYXZ~hDf z2)K!;^%ezo?*CyN1uBXFpYc3Mo#?sh{*}LZ%p}AFTNPX3bC6#hG?R>cyOIVVf;(b| z@a$ohC4&`MxHwMLwd=>d56JoEHJslY`UyR#7|TR>!TgOZI*3+6&5fo$^JFlcTmmQW z_??K)@@dSBF`|7qR7Fq#2U72H&^wq`=&jI7^EbvUDG8#=C8=9_EKEN+_ z7u?l;%aydRrYMZ#E#fG1=z$CFZ@HzOAVkaEnKk%>DLh10Ln^$Wr ze9M4vcnQ_zV`bIp$s$m03xXgHLSe>BqE>WJEXNiW;Q+3Nbw@U>Zw)5y2@9b^gSSs0 z6gJQmui#-nv4tHW6>k|Z)sX$D6h>8~mjqdQ7s#wag-P@c4$2Bo>KiScp9JZ{3xAp+ zvjSSY=m861%H?~wH6(Vrjs3f^sY@%=pnMt_Tu(;utOZHx#zi<)N-eAMGLZlM%{IV> z-BtZ@FT47U;#WX`Up^H$8YEUvE%_{%z66{5AQbMWDpv-s`P$VfD}KwYLyVER*sIwj zP67J1xdJ5+4oySloJSGvaIeNpe)d}mKmle!tD!OapGbFUhirlf9vE;>5N5GcLH|p} zvmg<_{`jy^C^PdS<@H-0+lNOsd`LUw@`4-lg)6@k*{j+n0YraoGpad6yM~vMjVqwQ z;Z4WY)ElC(#pNhKJ^&y|VOH_RSB5*v)g=wBegnNbBp{PJRUDuCpECe$t$DTL@g||; zlGk{5=f$>z6m3Cx@=Ltey9=1tuCR+a2O!@rG;p$zt!%gMXo4mqDHsEkvO-lX$*nYa zv&*>$`3PkjYGNAWz9OV7Tljca>F(>X_nX5O9dj@g790a7QN_Nrx_ZCc9L&decORDM z_@zW(#ql<9HzsY5C3$k7l7vG2BW{EZ_i)Ql# zt395>?j<#SXWwtT*HwZJA7*cu-py-($HxMz_yvE8Jj4xEW)lqm*-y6yAEAW#AKixDu_WHN6Eszj9dy5yDU5@uw zoDmS}JG#@EErSL7*>E00)zZ{&zd7QUC*X4O7xQJZ$B*6jn^U{mIO?haNR zgV#`DhQ;j*!@r5;BoU;-RjP_0TEEEg90HE+Ns~19bk3cbd z1Rwq7pZZi`hG~Ned~9k#*n%XlrFve}Uw;cw%yR^?F>Rh>e|yR-Tz>D`hhhKqHHtV4 zt}V{|Es+!j+^B{S{alCr=do=tN7)Z>gjXxW#ZAx3J&b$VEu8 zgiw)(etE|wp*)1ak4}&Mo*8q&4E6d}I{(nL<-6)mg2qL9Cbn&5i#qKAZNlyf?@y9~1Z@Zh}LMp+!FZ>~X83eoW#@Sn~Ry~Ak-t*-w+JvEu! literal 0 HcmV?d00001 diff --git a/samples/EnterpriseNotification/Configuration.md b/samples/EnterpriseNotification/Configuration.md new file mode 100644 index 0000000000..8ff63fce68 --- /dev/null +++ b/samples/EnterpriseNotification/Configuration.md @@ -0,0 +1,110 @@ +# Enterprise Notifications Configuration + +Follow the steps below to configure the Enterprise Notifications sample introduced [here](./readme.md) +## Prerequisites + +1. A deployed Virtual Assistant. Follow the [Create your Virtual Assistant tutorial](https://github.com/microsoft/botframework-solutions/tree/master/docs#tutorials) to complete this step which will create the core Azure services required. You can use this [sample project](/samples/EnterpriseNotification/VirtualAssistant) if preferred which has the extensions applied for you, otherwise the steps are included below. + +2. In addition to the core Virtual Assistant Azure services, you'll need to manually create the following Azure services: + + - [Azure Event Hub](https://azure.microsoft.com/en-us/services/event-hubs/) - Create [Here](https://ms.portal.azure.com/#create/Microsoft.EventHub) + - [Azure Function](https://azure.microsoft.com/en-us/services/functions/) - Create [Here](https://ms.portal.azure.com/#create/Microsoft.FunctionApp) + - [Azure Notification Hub](https://azure.microsoft.com/en-us/services/notification-hubs/) - Create [Here](https://ms.portal.azure.com/#create/Microsoft.NotificationHub) + - [Azure Cosmos DB](https://azure.microsoft.com/en-us/services/cosmos-db/) - Create [Here]() + +## Event Producer + +This sample includes an example [Event Producer](/samples/EnterpriseNotification/EventProducer) console application that sends an Event to the Event Hub for processing simulating creation of a notification. + +- Update `appSettings.json` with the `EventHubName` and `EventHubConnectionString` which you can find by going to your EventHub resource, creating an instance and then a `Shared Access Policy` + +### Azure Function - Event Handler + +This sample includes an example [EventHandler Azure Function](/samples/EnterpriseNotification/EventHandler) which is triggered by Event delivery and handles Event processing. + +1. Update [Function1.cs](/samples/EnterpriseNotification/EventHandler/Function1.cs) and change the `EventHubTrigger` to reflect your Event Hub name. + ```csharp + public static async Task Run([EventHubTrigger("YourEventHubName", Connection = "EventHubConnection")] EventData[] events, ILogger log)` + ``` +2. The Azure Functions blade in the Azure Portal provides a wide range of routes to deploy the provided code to your newly created Azure Function including Visual Studio and VSCode. Follow this to deploy the sample EventHandler project. +3. Once deployed, go to the Azure Function in Azure and choose Configuration. +4. Create a new `ConnectionString` called `EventHubConnection` property and provide the same EventHub connection string as in the previous section. +5. In the `Application Settings` section create the following settings which are used bvy the Event Handler. + - `DirectLineSecret` - Located within the Channels section of your Azure Bot Service registration. Required to communicate with your assistant and send events. + - `DocumentDbEndpointUrl` - Located within the CosmoDB Azure Portal blade. Required to access the User Preference store. + - `DocumentDbPrimaryKey`- Located within the CosmoDB Azure Portal blade. + +## Virtual Assistant + +### ProactiveState Middleware + +In order to be able to deliver messages to a conversation the end user must already have had an interaction with the assistant. As part of this interaction a `ConversationReference` needs to be persisted and used to resume the conversation. + +We provide a middleware component to perform this ConversationReference storage which can be found in the Bot.Builder.Solutions package. + +1. Add this line to your `Startup.cs` to register the proactive state. +```csharp + services.AddSingleton(); +``` +2. Within your `DefaultAdapter.cs` add this line to the constructor +```csharp + ProactiveState proactiveState +``` +3. Within your `DefaultAdapter.cs` add this line: +```csharp + Use(new ProactiveStateMiddleware(proactiveState)); +``` + +### Event Handling + +The following code handles the `BroadcastEvent` event type sent by the Azure function and is added to the Event Handling code. Within Virtual Assistant this is handled by `OnEventAsync` within MainDialog.cs. + +The `_proactiveStateAccessor` is the state that contains a mapping between UserId and previously persisted conversation. It retrieves the proactive state from a store previously saved by enabling the `ProactiveStateMiddleware`. + +Within `MainDialog.cs` add the following changes: + +1. Add this variable to your `MainDialog` class. + ```csharp + private IStatePropertyAccessor _proactiveStateAccessor; + ``` +2. Add this line to the constructor + ```csharp + ProactiveState proactiveState + ``` + and initialise the state in the constructor + ```csharp + _proactiveStateAccessor = proactiveState.CreateProperty(nameof(ProactiveModel)); + ``` +3. Add this event handler to your `OnEventAsync` handler to handle the `BroadcastEvent` + + ```csharp + case "BroadcastEvent": + var eventData = JsonConvert.DeserializeObject(dc.Context.Activity.Value.ToString()); + + var proactiveModel = await _proactiveStateAccessor.GetAsync(dc.Context, () => new ProactiveModel()); + + var conversationReference = proactiveModel[MD5Util.ComputeHash(eventData.UserId)].Conversation; + await dc.Context.Adapter.ContinueConversationAsync(_appCredentials.MicrosoftAppId, conversationReference, ContinueConversationCallback(dc.Context, eventData.Message), cancellationToken); + break; + ``` + +## Testing + +With these changes in place, when an event is being sent to a user through the bot the user will get the message in the ongoing conversation in a channel. Follow the instructions below to test the end to end flow. + +### Bot Framework Emulator + +Event generation must generate Events with the same `UserId` as the Emulator is using so the existing conversation can be matched and notifications can be delivered. + +1. Using the [Bot Framework Emulator](https://github.com/Microsoft/BotFramework-Emulator) navigate to the Settings section and provide a Guid to represent your simulated UserId. This will ensure any conversations with your Assistant will use this UserId + + ![UserId Settings](/docs/media/emulator-userid.png) +2. Start a conversation with your assistant which will ensure a proactive state record is persisted for future use. + +## Event Producer + +Update `SendMessagesToEventHub` within `Program.cs` of the example [EventProducer](/samples/EnterpriseNotification/EventProducer) project to change the UserId to the one created in the previous step. This will ensure any notifications sent are routed to your active conversation. + +Run the Event Producer to generate a message and observe that the message is shown within your Emulator session. + +![Enterprise Notification Demo](/docs/media/enterprisenotification-demo.png) \ No newline at end of file diff --git a/samples/EnterpriseNotification/EventHandler/Function1.cs b/samples/EnterpriseNotification/EventHandler/Function1.cs index 2d3a5efbcd..b34c023f68 100644 --- a/samples/EnterpriseNotification/EventHandler/Function1.cs +++ b/samples/EnterpriseNotification/EventHandler/Function1.cs @@ -17,7 +17,7 @@ public static class Function1 private static DocumentClient documentDbclient = new DocumentClient(new Uri(Environment.GetEnvironmentVariable("DocumentDbEndpointUrl")), Environment.GetEnvironmentVariable("DocumentDbPrimaryKey")); [FunctionName("EventHubTrigger")] - public static async Task Run([EventHubTrigger("bfvatestted-testhub", Connection = "EventHubConnection")] EventData[] events, ILogger log) + public static async Task Run([EventHubTrigger("YOUR_EVENT_HUB_NAME", Connection = "EventHubConnection")] EventData[] events, ILogger log) { foreach (EventData eventData in events) { diff --git a/samples/EnterpriseNotification/EventProducer/Program.cs b/samples/EnterpriseNotification/EventProducer/Program.cs index b3ca291ea0..b75548ad90 100644 --- a/samples/EnterpriseNotification/EventProducer/Program.cs +++ b/samples/EnterpriseNotification/EventProducer/Program.cs @@ -43,7 +43,7 @@ private static async Task SendMessagesToEventHub() { try { - var message = "{'userid':'c7879ddc-9b7a-4ffb-b934-abc1b34a41ba','message':'heres an event'}"; + var message = "{'userid':'c7879ddc-9b7a-4ffb-b934-abc1b34a41ba','message':'Here is a notification message!'}"; Console.WriteLine($"Sending message: {message}"); await eventHubClient.SendAsync(new EventData(Encoding.UTF8.GetBytes(message))); } @@ -52,7 +52,7 @@ private static async Task SendMessagesToEventHub() Console.WriteLine($"{DateTime.Now} > Exception: {ex.Message}"); } - Console.WriteLine("message sent."); + Console.WriteLine("Message sent."); } } } \ No newline at end of file diff --git a/samples/EnterpriseNotification/README.md b/samples/EnterpriseNotification/README.md index f0726b4ca9..4118cd2ce9 100644 --- a/samples/EnterpriseNotification/README.md +++ b/samples/EnterpriseNotification/README.md @@ -1,107 +1,80 @@ ![Bot Framework Solutions](/docs/media/bot_framework_solutions_header.png) -In Enterprise world, there is often the need of notifying employees for various things, on various channels. With the bots as part of the system, there's often the need of an approach to be able to broadcast notifications to employees through ongoing conversational channels such as Teams, as well as sending notifications directly onto employees' mobile devices. This sample is an MVP (minimum viable product) that demonstrates how to build the notification/broadcasting scenario with Virtual Assistant and various Azure resources. +# Enterprise Notifications -# Prerequisites: +## Overview -In order for this sample to work, you'll need the following azure services: +A common scenario for Enterprise Assistant scenarios is the need to push proactive notifications or messages to employees as part of a more advanced conversational experience. -Azure Event Hub (https://azure.microsoft.com/en-us/services/event-hubs/) -Azure Function (https://azure.microsoft.com/en-us/services/functions/) -Azure Notification Hub (https://azure.microsoft.com/en-us/services/notification-hubs/) -Azure Cosmos DB (https://azure.microsoft.com/en-us/services/cosmos-db/) +These messages can be delivered to end-users through a range of channels and customised by each employee. It's important to consider the range of channels you wish to offer to customers and whether they provide a persistent conversation over time and the channel itself supports proactive message delivery. Microsoft Teams is an example of a persistent channel enabling conversations to occur over a longer period of time and across a range of devices. This contrasts with WebChat which is only available for the life of the browser window. -# Flow: +In addition to conversational canvases mobile devices are another key end user channel and these same notifications/messages should be delivered as appropriate to these devices. -![Enterprise Notification System Architecture](/docs/media/sample-notification-system-architecture.png) - -> Azure Function - (looking for situation) - -This is the service that collects various types of events from existing system and reformat them before sending over to the Event Hub for centralized handling. In this sample, we simulate this functionality by using the console application located under: +Typically, each customer scenario varies significantly hence we provide this as an MVP (minimum viable product) which demonstrates how to build the notification/broadcasting scenario with Virtual Assistant and various supporting Azure resources. -/samples/EnterpriseNotification/EventProducer +## Sample Capabilities -> Azure Event Hub +This sample demonstrates the following capabilities: -In this sample, Azure Event Hub is the centralized service that manages events gathered from different parts of the system and sent through the Azure Function aforementioned. If we want any event to reach user eventually, it has to flow into the Azure Event Hub first. In this sample, we demonstrate how to achieve it by creating a console application that sends an event to the Azure Event Hub under: +1. A console application that shows how a supporting system can create an event for a specific event and send for processing. +2. An Azure function that handles events and routes them to a User via a Bot (Virtual Assistant). In this same handler mobile application push notification can be added as additional custom steps. +3. A User Preference store that enables user preferences for notification delivery to be stored and is used by the Azure Function. +3. The extensions to a Bot required to display an event to a user and also store ConversationReference objects enabling proactive message delivery. -/samples/EnterpriseNotification/EventProducer +## Sample Configuration -In Program.cs, we simply use Azure EventHub library (Microsoft.Azure.EventHubs) to post an event to an Azure Event Hub service. +Configuration of the sample is covered in this [configuration page](Configuration.md) and covers how to configure all of the components detailed below. -> Azure Function - Notification Handler +## Flow -After an event is posted to the Azure Event Hub, we use an Azure Function service to handle events. The reason we use Azure Function is as follows: -- Azure Function can easily setup triggers against different Azure services as sources, Event Hub trigger is one of those. -- Azure Function is easy to scale against Event Hub services by managing locks on partitions of the Azure Event Hub internally as part of the framework +The following diagram depicts the proposed notification Architecture which is used by this sample: -The Event Handler code is under: - -/samples/EnterpriseNotification/EventHandler +![Enterprise Notification System Architecture](/docs/media/sample-notification-system-architecture.png) -The function we created is within Function1.cs, under the static method 'Run'. In there we can specify EventTrigger info using: +### Event Producer -```csharp -public static async Task Run([EventHubTrigger("bfvatestted-testhub", Connection = "EventHubConnection")] EventData[] events, ILogger log)` -``` +Azure Functions are used to collect events from upstream systems and convert them into a canonical event schema before handing over to the Event Hub for centralized handling. In this sample, we simulate this event generation functionality for ease of testing by using the console application located [here](/samples/EnterpriseNotification/EventProducer). -The 'Connection' property is configured in AppSettings of the Azure Function. +### Azure Event Hub -Once an event is posted into the Event Hub, an instance of the Azure Function will be created with the list of events being passed. Then the 'Run' function will launch. +In this sample, the Azure Event Hub is the centralized service that manages events gathered from different parts of the system and sent through the Azure Function aforementioned. For any event to reach an end user, it has to flow into the Azure Event Hub first. -This function performs the following tasks: -- Unpack the event -- Read from a UserPreference store to check user's profile settings -- If the user has 'SendNotificationToMobileDevice' flag to be true, then send a notification to user's mobile device with the event content. -- If the user has 'SendNotificationToConversation' flag to be true, then send a message to the bot with the event content. +### Azure Functions - Event Handler -We're using Cosmos DB as UserPreference store. The code will check if there's a record for the particular user existing. If yes then just read from the store, and if no then add a record with both settings to be true by default. +After an event is posted to the Azure Event Hub, an Azure Function service is triggered to process them. The background to the use of Azure Functions is as follows: -When sending a notification to user's mobile device, this sample doesn't include the implementation for that because it requires a lot of configuration. You can check documentation // https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-aspnet-backend-ios-apple-apns-notification for reference. +- Azure Functions natively support triggers against a variety of Azure services, Event Hub trigger is one of these. +- Azure Functions scales against Event Hub services by managing locks on partitions of the Azure Event Hub internally as part of the framework. -When sending a message to the bot to trigger a message sent to the user, the Azure Function requires a few more AppSettings to work: +#### Notification Handler (Trigger) -"DirectLineSecret" -"DocumentDbEndpointUrl" -"DocumentDbPrimaryKey" +The triggering element of the Azure function is handled as part of the [EventHandler](/samples/EnterpriseNotification/EventHandler). The `Run` method within [Function1.cs](/samples/EnterpriseNotification/EventHandler/Function1.cs) is automatically invoked once an event is available. -Once you add them into the AppSettings of the Azure Function the sample will work properly. +#### Notification Handler (Run) -The message the Event Handler is sending to the bot is an event, with the name 'BroadcastEvent' and value as the event it receives from the Event Hub. +Following the trigger the following steps are performed as part of the same [EventHandler](/samples/EnterpriseNotification/EventHandler) example: -> Notification Hub - -This is the service that the Event Handler uses to send out a notification to user's devices. (https://azure.microsoft.com/en-us/services/notification-hubs/). Please refer to the link above (and here: https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-aspnet-backend-ios-apple-apns-notification) for additional work needed to get it working. - -> Virtual Assistant - -This is the bot that will send the message it receives from the Event Handler back to the user. The code is under: - -/samples/EnterpriseNotification/VirtualAssistant +- Unpack the event +- Read from a UserPreference store to check user's profile settings +- If the user has 'SendNotificationToMobileDevice' flag to be true, then send a notification to user's mobile device with the event content. +- If the user has 'SendNotificationToConversation' flag to be true, then send a message to the bot with the event content. -This is the code that handles 'BroadcastEvent' event type: +This sample uses CosmosDB as the UserPreference store but can be modified to reflect an existing store you may already have in place. The code will check if there's a record for the particular user. If not, it will then add a record with default settings of both destinations set to true. -``` csharp -case "BroadcastEvent": - var eventData = JsonConvert.DeserializeObject(dc.Context.Activity.Value.ToString()); +This sample doesn't include the implementation for sending a notification to mobile devices as this requires additional configuration. You can refer to [this documentation](https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-aspnet-backend-ios-apple-apns-notification) for more information. - var proactiveModel = await _proactiveStateAccessor.GetAsync(dc.Context, () => new ProactiveModel()); +The message the Event Handler sends to the bot is an Activity of type `event`, with the name `BroadcastEvent` and value is set to the data received rom the Event Hub. - var conversationReference = proactiveModel[MD5Util.ComputeHash(eventData.UserId)].Conversation; - await dc.Context.Adapter.ContinueConversationAsync(_appCredentials.MicrosoftAppId, conversationReference, ContinueConversationCallback(dc.Context, eventData.Message), cancellationToken); - break; -``` +### Notification Hub -The '_proactiveStateAccessor' is the state that contains a mapping between user id and previously saved user conversation. It retrieves the proactive state from a store that was previously saved by enabling ProactiveStateMiddleware in DefaultAdapter.cs: +[Notification Hubs](https://azure.microsoft.com/en-us/services/notification-hubs) provide the capability to delivery notifications to end user devices. Please refer to [this documentation](https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-aspnet-backend-ios-apple-apns-notification) for additional steps to perform this integration as needed. -``` csharp -Use(new ProactiveStateMiddleware(proactiveState)); -``` +### Virtual Assistant -This middleware will save user's conversation reference objects into the state so it can be used later to send message to user proactively. +The assistant is responsible for surfacing the message received from the Event Handler back to the user. An example project is located [here](/samples/EnterpriseNotification/VirtualAssistant) which has a small number of extensions compared to a normal Virtual Assistant. -With all this code in place when an event is being sent to a user through the bot the user will get the message in the ongoing conversation in a channel. Not all channels support proactive message at this moment. Webchat, directline and emulator are the ones we are certain that proactive messages can be supported. If you user other channels, it'll be up to the channel setting to determine whether that channel will route the message back to the user properly +### Adaptive Cards and Web Dashboards -> Adaptive Cards, Web Widget and Web Dashboards +When Notification Handler handles events emitted from Azure Event Hub, it can persist the events into a user data store. -When Notification Handler handles events emitted from Azure Event Hub, it can persist the events into a user data store. This will enable user/system administrator to look at the events later on from a Web Dashboard and we can use AdaptiveCards and Web Widget components to render them to provide a better and close to conversational experience. This part is not included in the sample implementation but should be easy to extend. \ No newline at end of file +This would enable user/system administrator to look at the events later on from a Web Dashboard where AdaptiveCards and other Web components can be used to render them to provide companion experiences to the assistant. This part is not included in the sample implementation at the time. \ No newline at end of file From 2266c43881937982e42429eaff8387e05fa57848 Mon Sep 17 00:00:00 2001 From: lzc850612 Date: Wed, 24 Jul 2019 14:25:08 -0700 Subject: [PATCH 04/10] add proactive implementation into VirtualAssistant of the sample --- .../EnterpriseNotification.sln | 14 ++++++ .../Adapters/DefaultAdapter.cs | 4 +- .../Adapters/DefaultWebSocketAdapter.cs | 4 +- .../VirtualAssistant/Bots/DialogBot.cs | 33 ++++++------- .../VirtualAssistant/Dialogs/MainDialog.cs | 44 +++++++++++++---- .../Proactive/ProactiveModel.cs | 12 +++++ .../Proactive/ProactiveState.cs | 32 +++++++++++++ .../Proactive/ProactiveStateMiddleware.cs | 42 +++++++++++++++++ .../Properties/launchSettings.json | 2 +- .../Cancel/CancelStrings.Designer.cs | 2 +- .../Escalate/EscalateStrings.Designer.cs | 2 +- .../Responses/Main/MainStrings.Designer.cs | 2 +- .../Onboarding/OnboardingStrings.Designer.cs | 2 +- .../VirtualAssistant/Services/BotSettings.cs | 10 ++++ .../VirtualAssistant/Startup.cs | 10 +--- .../VirtualAssistant/VirtualAssistant.csproj | 26 +++++----- .../VirtualAssistant/appsettings.json | 34 +++++++++----- .../VirtualAssistant/cognitivemodels.json | 47 +++++++++++-------- 18 files changed, 231 insertions(+), 91 deletions(-) create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveModel.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveState.cs create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveStateMiddleware.cs diff --git a/samples/EnterpriseNotification/EnterpriseNotification.sln b/samples/EnterpriseNotification/EnterpriseNotification.sln index af28928433..300e97f65c 100644 --- a/samples/EnterpriseNotification/EnterpriseNotification.sln +++ b/samples/EnterpriseNotification/EnterpriseNotification.sln @@ -11,20 +11,34 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventProducer", "EventProdu EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug - NuGet Packages|Any CPU = Debug - NuGet Packages|Any CPU Debug|Any CPU = Debug|Any CPU + Documentation|Any CPU = Documentation|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CC6E0387-FED1-4D72-A089-6B2B81011A23}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {CC6E0387-FED1-4D72-A089-6B2B81011A23}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU {CC6E0387-FED1-4D72-A089-6B2B81011A23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CC6E0387-FED1-4D72-A089-6B2B81011A23}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CC6E0387-FED1-4D72-A089-6B2B81011A23}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {CC6E0387-FED1-4D72-A089-6B2B81011A23}.Documentation|Any CPU.Build.0 = Debug|Any CPU {CC6E0387-FED1-4D72-A089-6B2B81011A23}.Release|Any CPU.ActiveCfg = Release|Any CPU {CC6E0387-FED1-4D72-A089-6B2B81011A23}.Release|Any CPU.Build.0 = Release|Any CPU + {E0A0D813-0D6A-45D8-BF09-4F0AC0269FE3}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {E0A0D813-0D6A-45D8-BF09-4F0AC0269FE3}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU {E0A0D813-0D6A-45D8-BF09-4F0AC0269FE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E0A0D813-0D6A-45D8-BF09-4F0AC0269FE3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E0A0D813-0D6A-45D8-BF09-4F0AC0269FE3}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {E0A0D813-0D6A-45D8-BF09-4F0AC0269FE3}.Documentation|Any CPU.Build.0 = Debug|Any CPU {E0A0D813-0D6A-45D8-BF09-4F0AC0269FE3}.Release|Any CPU.ActiveCfg = Release|Any CPU {E0A0D813-0D6A-45D8-BF09-4F0AC0269FE3}.Release|Any CPU.Build.0 = Release|Any CPU + {843204E6-EA50-4DFF-8B8B-E6814D8E6642}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {843204E6-EA50-4DFF-8B8B-E6814D8E6642}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU {843204E6-EA50-4DFF-8B8B-E6814D8E6642}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {843204E6-EA50-4DFF-8B8B-E6814D8E6642}.Debug|Any CPU.Build.0 = Debug|Any CPU + {843204E6-EA50-4DFF-8B8B-E6814D8E6642}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {843204E6-EA50-4DFF-8B8B-E6814D8E6642}.Documentation|Any CPU.Build.0 = Debug|Any CPU {843204E6-EA50-4DFF-8B8B-E6814D8E6642}.Release|Any CPU.ActiveCfg = Release|Any CPU {843204E6-EA50-4DFF-8B8B-E6814D8E6642}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection diff --git a/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultAdapter.cs b/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultAdapter.cs index a7912b2643..5cdaeda1da 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultAdapter.cs +++ b/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultAdapter.cs @@ -5,9 +5,9 @@ using Microsoft.Bot.Builder.Azure; using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Bot.Builder.Solutions.Middleware; -using Microsoft.Bot.Builder.Solutions.Proactive; using Microsoft.Bot.Connector.Authentication; using Microsoft.Bot.Schema; +using VirtualAssistant.Proactive; using VirtualAssistant.Responses.Main; using VirtualAssistant.Services; @@ -19,7 +19,6 @@ public DefaultAdapter( BotSettings settings, ICredentialProvider credentialProvider, IBotTelemetryClient telemetryClient, - BotStateSet botStateSet, ProactiveState proactiveState) : base(credentialProvider) { @@ -36,7 +35,6 @@ public DefaultAdapter( Use(new ShowTypingMiddleware()); Use(new SetLocaleMiddleware(settings.DefaultLocale ?? "en-us")); Use(new EventDebuggerMiddleware()); - Use(new AutoSaveStateMiddleware(botStateSet)); Use(new ProactiveStateMiddleware(proactiveState)); } } diff --git a/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultWebSocketAdapter.cs b/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultWebSocketAdapter.cs index 6a39c4be76..9ded85b65c 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultWebSocketAdapter.cs +++ b/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultWebSocketAdapter.cs @@ -19,8 +19,7 @@ public DefaultWebSocketAdapter( IConfiguration config, BotSettings settings, ICredentialProvider credentialProvider, - IBotTelemetryClient telemetryClient, - BotStateSet botStateSet) + IBotTelemetryClient telemetryClient) : base(config, credentialProvider) { OnTurnError = async (turnContext, exception) => @@ -36,7 +35,6 @@ public DefaultWebSocketAdapter( Use(new ShowTypingMiddleware()); Use(new SetLocaleMiddleware(settings.DefaultLocale ?? "en-us")); Use(new EventDebuggerMiddleware()); - Use(new AutoSaveStateMiddleware(botStateSet)); Use(new SetSpeakMiddleware(settings.DefaultLocale ?? "en-us")); } } diff --git a/samples/EnterpriseNotification/VirtualAssistant/Bots/DialogBot.cs b/samples/EnterpriseNotification/VirtualAssistant/Bots/DialogBot.cs index 8583f76735..006473aabc 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Bots/DialogBot.cs +++ b/samples/EnterpriseNotification/VirtualAssistant/Bots/DialogBot.cs @@ -11,23 +11,23 @@ namespace VirtualAssistant.Bots { - public class DialogBot : ActivityHandler + public class DialogBot : IBot where T : Dialog { + private readonly Dialog _dialog; + private readonly BotState _conversationState; + private readonly BotState _userState; private readonly IBotTelemetryClient _telemetryClient; - private DialogSet _dialogs; public DialogBot(IServiceProvider serviceProvider, T dialog) { - var conversationState = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(ConversationState)); - _telemetryClient = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(IBotTelemetryClient)); - - var dialogState = conversationState.CreateProperty(nameof(VirtualAssistant)); - _dialogs = new DialogSet(dialogState); - _dialogs.Add(dialog); + _dialog = dialog; + _conversationState = serviceProvider.GetService(); + _userState = serviceProvider.GetService(); + _telemetryClient = serviceProvider.GetService(); } - public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken) + public async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) { // Client notifying this bot took to long to respond (timed out) if (turnContext.Activity.Code == EndOfConversationCodes.BotTimedOut) @@ -36,16 +36,11 @@ public override async Task OnTurnAsync(ITurnContext turnContext, CancellationTok return; } - var dc = await _dialogs.CreateContextAsync(turnContext); + await _dialog.RunAsync(turnContext, _conversationState.CreateProperty(nameof(DialogState)), cancellationToken); - if (dc.ActiveDialog != null) - { - var result = await dc.ContinueDialogAsync(); - } - else - { - await dc.BeginDialogAsync(typeof(T).Name); - } + // Save any state changes that might have occured during the turn. + await _conversationState.SaveChangesAsync(turnContext, false, cancellationToken); + await _userState.SaveChangesAsync(turnContext, false, cancellationToken); } } -} +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Dialogs/MainDialog.cs b/samples/EnterpriseNotification/VirtualAssistant/Dialogs/MainDialog.cs index 9fefaefafc..b5c0670d96 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Dialogs/MainDialog.cs +++ b/samples/EnterpriseNotification/VirtualAssistant/Dialogs/MainDialog.cs @@ -8,18 +8,19 @@ using System.Threading; using System.Threading.Tasks; using Luis; +using Microsoft.Azure.Documents; +using Microsoft.Azure.Documents.Client; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Skills; using Microsoft.Bot.Builder.Solutions; using Microsoft.Bot.Builder.Solutions.Dialogs; -using Microsoft.Bot.Builder.Solutions.Proactive; -using Microsoft.Bot.Builder.Solutions.Util; using Microsoft.Bot.Connector.Authentication; using Microsoft.Bot.Schema; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using VirtualAssistant.Models; +using VirtualAssistant.Proactive; using VirtualAssistant.Responses.Cancel; using VirtualAssistant.Responses.Main; using VirtualAssistant.Services; @@ -35,7 +36,6 @@ public class MainDialog : RouterDialog private MainResponses _responder = new MainResponses(); private IStatePropertyAccessor _onboardingState; private IStatePropertyAccessor _skillContextAccessor; - private IStatePropertyAccessor _proactiveStateAccessor; private MicrosoftAppCredentials _appCredentials; public MainDialog( @@ -46,7 +46,6 @@ public MainDialog( CancelDialog cancelDialog, List skillDialogs, IBotTelemetryClient telemetryClient, - ProactiveState proactiveState, MicrosoftAppCredentials appCredentials, UserState userState) : base(nameof(MainDialog), telemetryClient) @@ -56,7 +55,6 @@ public MainDialog( TelemetryClient = telemetryClient; _onboardingState = userState.CreateProperty(nameof(OnboardingState)); _skillContextAccessor = userState.CreateProperty(nameof(SkillContext)); - _proactiveStateAccessor = proactiveState.CreateProperty(nameof(ProactiveModel)); _appCredentials = appCredentials; AddDialog(onboardingDialog); @@ -246,12 +244,42 @@ private void EnsureActivity(Activity activity) switch (ev.Name) { case "BroadcastEvent": + // connect to the cosmosdb used for proactive state + var documentDbclient = new DocumentClient(_settings.CosmosDbProactive.CosmosDBEndpoint, _settings.CosmosDbProactive.AuthKey); + + await documentDbclient.CreateDatabaseIfNotExistsAsync( + new Database { Id = _settings.CosmosDbProactive.DatabaseId }) + .ConfigureAwait(false); + + var documentCollection = new DocumentCollection + { + Id = _settings.CosmosDbProactive.CollectionId, + }; + + var response = await documentDbclient.CreateDocumentCollectionIfNotExistsAsync( + UriFactory.CreateDatabaseUri(_settings.CosmosDbProactive.DatabaseId), + documentCollection) + .ConfigureAwait(false); + + var collectionLink = response.Resource.SelfLink; + var eventData = JsonConvert.DeserializeObject(dc.Context.Activity.Value.ToString()); - var proactiveModel = await _proactiveStateAccessor.GetAsync(dc.Context, () => new ProactiveModel()); + var proactiveConversations = documentDbclient.CreateDocumentQuery(collectionLink, $"SELECT * FROM c WHERE Contains(c.id, {eventData.UserId})"); + + // send the event data to all saved conversations for the user + if (proactiveConversations != null && proactiveConversations.Count() > 0) + { + foreach (var proactiveConversation in proactiveConversations) + { + await dc.Context.Adapter.ContinueConversationAsync(_appCredentials.MicrosoftAppId, proactiveConversation.Conversation, ContinueConversationCallback(dc.Context, eventData.Message), cancellationToken); + } + } + else + { + TelemetryClient.TrackEvent("BoradcastEventWithInvalidUserId", new Dictionary { { "userId", eventData.UserId } }); + } - var conversationReference = proactiveModel[MD5Util.ComputeHash(eventData.UserId)].Conversation; - await dc.Context.Adapter.ContinueConversationAsync(_appCredentials.MicrosoftAppId, conversationReference, ContinueConversationCallback(dc.Context, eventData.Message), cancellationToken); break; case Events.TimezoneEvent: diff --git a/samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveModel.cs b/samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveModel.cs new file mode 100644 index 0000000000..1e030070ce --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveModel.cs @@ -0,0 +1,12 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Bot.Schema; + +namespace VirtualAssistant.Proactive +{ + public class ProactiveModel + { + public ConversationReference Conversation { get; set; } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveState.cs b/samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveState.cs new file mode 100644 index 0000000000..32d3b77ef2 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveState.cs @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Azure; +using System; +using VirtualAssistant.Services; + +namespace VirtualAssistant.Proactive +{ + public class ProactiveState : BotState + { + ///

+ /// Initializes a new instance of the class. + /// The storage provider to use. + public ProactiveState(BotSettings botSettings) + : base(new CosmosDbStorage(botSettings.CosmosDbProactive), nameof(ProactiveState)) + { + } + + /// Gets the storage key for caching state information. + /// A containing all the data needed + /// for processing this conversation turn. + /// The storage key. + protected override string GetStorageKey(ITurnContext turnContext) + { + var channelId = turnContext.Activity.ChannelId ?? throw new ArgumentNullException("invalid activity-missing channelId"); + var userId = turnContext.Activity.From?.Id ?? throw new ArgumentNullException("invalid activity-missing From.Id"); + return $"proactive/{channelId}/users/{userId}"; + } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveStateMiddleware.cs b/samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveStateMiddleware.cs new file mode 100644 index 0000000000..ff149ad480 --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveStateMiddleware.cs @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Bot.Builder; +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace VirtualAssistant.Proactive +{ + /// + /// A Middleware for saving the proactive model data + /// This middleware will refresh user's latest conversation reference and save it to state. + /// + public class ProactiveStateMiddleware : IMiddleware + { + private ProactiveState _proactiveState; + private IStatePropertyAccessor _proactiveStateAccessor; + + public ProactiveStateMiddleware(ProactiveState proactiveState) + { + _proactiveState = proactiveState; + _proactiveStateAccessor = _proactiveState.CreateProperty(nameof(ProactiveModel)); + } + + public async Task OnTurnAsync(ITurnContext turnContext, NextDelegate next, CancellationToken cancellationToken = default(CancellationToken)) + { + var activity = turnContext.Activity; + + if (activity.From.Properties["role"].ToString().Equals("user", StringComparison.InvariantCultureIgnoreCase)) + { + var proactiveState = await _proactiveStateAccessor.GetAsync(turnContext, () => new ProactiveModel()).ConfigureAwait(false); + var conversationReference = turnContext.Activity.GetConversationReference(); + proactiveState.Conversation = conversationReference; + await _proactiveStateAccessor.SetAsync(turnContext, proactiveState).ConfigureAwait(false); + await _proactiveState.SaveChangesAsync(turnContext).ConfigureAwait(false); + } + + await next(cancellationToken).ConfigureAwait(false); + } + } +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Properties/launchSettings.json b/samples/EnterpriseNotification/VirtualAssistant/Properties/launchSettings.json index f89af93682..ac3afde2d8 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Properties/launchSettings.json +++ b/samples/EnterpriseNotification/VirtualAssistant/Properties/launchSettings.json @@ -15,7 +15,7 @@ "ASPNETCORE_ENVIRONMENT": "Development" } }, - "VirtualAssistantSample": { + "VirtualAssistant": { "commandName": "Project", "launchBrowser": true, "environmentVariables": { diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.Designer.cs b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.Designer.cs index 9832c6529b..397bd64443 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.Designer.cs +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Cancel/CancelStrings.Designer.cs @@ -39,7 +39,7 @@ internal CancelStrings() { public static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VirtualAssistantSample.Responses.Cancel.CancelStrings", typeof(CancelStrings).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VirtualAssistant.Responses.Cancel.CancelStrings", typeof(CancelStrings).Assembly); resourceMan = temp; } return resourceMan; diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.Designer.cs b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.Designer.cs index d1752799ba..e1f994b707 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.Designer.cs +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Escalate/EscalateStrings.Designer.cs @@ -45,7 +45,7 @@ internal EscalateStrings() { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VirtualAssistantSample.Responses.Escalate.EscalateStrings", typeof(EscalateStrings).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VirtualAssistant.Responses.Escalate.EscalateStrings", typeof(EscalateStrings).Assembly); resourceMan = temp; } return resourceMan; diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.Designer.cs b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.Designer.cs index 156d9e1aed..e2bc5aa3e3 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.Designer.cs +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Main/MainStrings.Designer.cs @@ -39,7 +39,7 @@ internal MainStrings() { public static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VirtualAssistantSample.Responses.Main.MainStrings", typeof(MainStrings).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VirtualAssistant.Responses.Main.MainStrings", typeof(MainStrings).Assembly); resourceMan = temp; } return resourceMan; diff --git a/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.Designer.cs b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.Designer.cs index c0e567f858..0f228efd51 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.Designer.cs +++ b/samples/EnterpriseNotification/VirtualAssistant/Responses/Onboarding/OnboardingStrings.Designer.cs @@ -45,7 +45,7 @@ internal OnboardingStrings() { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VirtualAssistantSample.Responses.Onboarding.OnboardingStrings", typeof(OnboardingStrings).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VirtualAssistant.Responses.Onboarding.OnboardingStrings", typeof(OnboardingStrings).Assembly); resourceMan = temp; } return resourceMan; diff --git a/samples/EnterpriseNotification/VirtualAssistant/Services/BotSettings.cs b/samples/EnterpriseNotification/VirtualAssistant/Services/BotSettings.cs index 2604f348e5..74e3b471d9 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Services/BotSettings.cs +++ b/samples/EnterpriseNotification/VirtualAssistant/Services/BotSettings.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System.Collections.Generic; +using Microsoft.Bot.Builder.Azure; using Microsoft.Bot.Builder.Skills.Models.Manifest; using Microsoft.Bot.Builder.Solutions; @@ -10,5 +11,14 @@ namespace VirtualAssistant.Services public class BotSettings : BotSettingsBase { public List Skills { get; set; } = new List(); + + /// + /// Gets or sets the CosmosDB Configuration for maintaining the conversation reference objects + /// for proactively sending messages to users + /// + /// + /// The CosmosDB Configuration for the bot. + /// + public CosmosDbStorageOptions CosmosDbProactive { get; set; } } } \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Startup.cs b/samples/EnterpriseNotification/VirtualAssistant/Startup.cs index ccb2d38c2f..4d56396d96 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Startup.cs +++ b/samples/EnterpriseNotification/VirtualAssistant/Startup.cs @@ -18,16 +18,16 @@ using Microsoft.Bot.Builder.Skills.Auth; using Microsoft.Bot.Builder.Skills.Models.Manifest; using Microsoft.Bot.Builder.Solutions.Authentication; -using Microsoft.Bot.Builder.Solutions.Proactive; -using Microsoft.Bot.Configuration; using Microsoft.Bot.Connector.Authentication; using Microsoft.Bot.Protocol.StreamingExtensions.NetCore; +using Microsoft.Bot.Protocol.WebSockets; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using VirtualAssistant.Adapters; using VirtualAssistant.Bots; using VirtualAssistant.Dialogs; +using VirtualAssistant.Proactive; using VirtualAssistant.Services; namespace VirtualAssistant @@ -83,12 +83,6 @@ public void ConfigureServices(IServiceCollection services) services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(sp => - { - var userState = sp.GetService(); - var conversationState = sp.GetService(); - return new BotStateSet(userState, conversationState); - }); // Register dialogs services.AddTransient(); diff --git a/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj b/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj index 499eaec568..960e8c2ec6 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj +++ b/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj @@ -17,21 +17,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + - + diff --git a/samples/EnterpriseNotification/VirtualAssistant/appsettings.json b/samples/EnterpriseNotification/VirtualAssistant/appsettings.json index fff013fa75..8cc016c444 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/appsettings.json +++ b/samples/EnterpriseNotification/VirtualAssistant/appsettings.json @@ -1,21 +1,33 @@ { - "microsoftAppId": "", - "microsoftAppPassword": "", - "oauthConnections": [], - "ApplicationInsights": { - "InstrumentationKey": "" + "oauthConnections": [ + { + "name": "Outlook", + "provider": "Azure Active Directory v2" + } + ], + "microsoftAppId": "6be61bcf-eb61-4d6d-abd2-f3c087dbcfe8", + "microsoftAppPassword": "lzc!850612850612", + "appInsights": { + "appId": "9a203d57-4257-4c96-83b3-0105ae518c8f", + "instrumentationKey": "f20016fe-c546-4c8b-9e85-7b67b969dfa7" }, "blobStorage": { - "connectionString": "", + "connectionString": "DefaultEndpointsProtocol=https;AccountName=bfvatestted;AccountKey=sSIx3XUC0Y5jrcaVlzpU8FcwlHL5glZNyDZKoJ3LT2GJzovBIbYwgT0nyIhMTt/ToDaYoLbHb+0xI5Pt1yhgeg==;EndpointSuffix=core.windows.net", "container": "transcripts" }, "cosmosDb": { + "authkey": "CiEnKk7AchtG8GGlXsMGWWTCfcauG2SL37ft2s7CyRxCvz4UY809tgOzvAcplZvX0YRaxltKV5K9pj490Qmtrw==", "collectionId": "botstate-collection", - "databaseId": "botstate-db", - "cosmosDBEndpoint": "", - "authKey": "" + "cosmosDBEndpoint": "https://bfvatestted.documents.azure.com:443/", + "databaseId": "botstate-db" + }, + "cosmosDbProactive": { + "authkey": "CiEnKk7AchtG8GGlXsMGWWTCfcauG2SL37ft2s7CyRxCvz4UY809tgOzvAcplZvX0YRaxltKV5K9pj490Qmtrw==", + "collectionId": "proactive-collection", + "cosmosDBEndpoint": "https://bfvatestted.documents.azure.com:443/", + "databaseId": "botstate-db" }, "contentModerator": { - "key": "" + "key": "c82e4e17e0a9489ab13bd071d4d16040" } -} \ No newline at end of file +} diff --git a/samples/EnterpriseNotification/VirtualAssistant/cognitivemodels.json b/samples/EnterpriseNotification/VirtualAssistant/cognitivemodels.json index 7f40f7e181..eb52c0387f 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/cognitivemodels.json +++ b/samples/EnterpriseNotification/VirtualAssistant/cognitivemodels.json @@ -2,33 +2,40 @@ "cognitiveModels": { "en": { "dispatchModel": { - "authoringkey": "", - "appid": "", - "name": "", - "subscriptionkey": "", - "region": "", - "authoringRegion": "" + "authoringkey": "2db3136b285d4695932f8248e69ca0cb", + "type": "dispatch", + "appid": "70c26829-c582-4812-8998-53156e289527", + "subscriptionkey": "2db3136b285d4695932f8248e69ca0cb", + "region": "westus", + "name": "bfvatestteden_Dispatch" }, "languageModels": [ { - "subscriptionkey": "", - "appid": "", - "id": "", - "version": "", - "region": "", - "name": "", - "authoringkey": "", - "authoringRegion": "" + "id": "general", + "authoringkey": "2db3136b285d4695932f8248e69ca0cb", + "subscriptionkey": "2db3136b285d4695932f8248e69ca0cb", + "appid": "17248c3e-311b-4db4-bb4d-c944720e712a", + "region": "westus", + "version": "0.1", + "name": "bfvatestteden_general" } ], "knowledgebases": [ { - "endpointKey": "", - "kbId": "", - "hostname": "", - "subscriptionKey": "", - "name": "", - "id": "" + "id": "chitchat", + "endpointKey": "9da39bd2-b6e8-474f-aaa5-c3c873fe4834", + "subscriptionKey": "0f4151fc9fd5434b941402baea586165", + "hostname": "https://bfvatestted-qnahost.azurewebsites.net", + "kbId": "2c49bc11-56ea-40da-8859-bc22413bb2d2", + "name": "chitchat" + }, + { + "id": "faq", + "endpointKey": "9da39bd2-b6e8-474f-aaa5-c3c873fe4834", + "subscriptionKey": "0f4151fc9fd5434b941402baea586165", + "hostname": "https://bfvatestted-qnahost.azurewebsites.net", + "kbId": "cd8c3140-9c58-4eec-8eb9-f7e57b175f90", + "name": "faq" } ] } From 25b5596d0b0111132918069097f1559f8ba266f9 Mon Sep 17 00:00:00 2001 From: lzc850612 Date: Thu, 25 Jul 2019 11:00:34 -0700 Subject: [PATCH 05/10] updates --- .../EventProducer/appsettings.json | 4 +- .../Adapters/DefaultWebSocketAdapter.cs | 2 +- .../Controllers/BotController.cs | 2 +- .../VirtualAssistant/Startup.cs | 3 +- .../VirtualAssistant/VirtualAssistant.csproj | 4 +- .../VirtualAssistant/appsettings.json | 34 +++++--------- .../VirtualAssistant/cognitivemodels.json | 47 ++++++++----------- 7 files changed, 39 insertions(+), 57 deletions(-) diff --git a/samples/EnterpriseNotification/EventProducer/appsettings.json b/samples/EnterpriseNotification/EventProducer/appsettings.json index 653a95eaad..8aea81a473 100644 --- a/samples/EnterpriseNotification/EventProducer/appsettings.json +++ b/samples/EnterpriseNotification/EventProducer/appsettings.json @@ -1,4 +1,4 @@ { - "EventHubName": "", - "EventHubConnectionString": "" + "EventHubName": "bfvatestted-testhub", + "EventHubConnectionString": "Endpoint=sb://bfvatestted.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=KEZUyvxAO0xX3O3nnM1+CREK5rJSGHb9O1NybDwLmwI=" } \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultWebSocketAdapter.cs b/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultWebSocketAdapter.cs index 9ded85b65c..53c926e89c 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultWebSocketAdapter.cs +++ b/samples/EnterpriseNotification/VirtualAssistant/Adapters/DefaultWebSocketAdapter.cs @@ -4,8 +4,8 @@ using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Azure; using Microsoft.Bot.Builder.Solutions.Middleware; +using Microsoft.Bot.Builder.StreamingExtensions; using Microsoft.Bot.Connector.Authentication; -using Microsoft.Bot.Protocol.StreamingExtensions.NetCore; using Microsoft.Bot.Schema; using Microsoft.Extensions.Configuration; using VirtualAssistant.Responses.Main; diff --git a/samples/EnterpriseNotification/VirtualAssistant/Controllers/BotController.cs b/samples/EnterpriseNotification/VirtualAssistant/Controllers/BotController.cs index 88b2443a54..6715d76ffd 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Controllers/BotController.cs +++ b/samples/EnterpriseNotification/VirtualAssistant/Controllers/BotController.cs @@ -5,7 +5,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Protocol.StreamingExtensions.NetCore; +using Microsoft.Bot.Builder.StreamingExtensions; namespace VirtualAssistant.Controllers { diff --git a/samples/EnterpriseNotification/VirtualAssistant/Startup.cs b/samples/EnterpriseNotification/VirtualAssistant/Startup.cs index 4d56396d96..d01f2cfaa0 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Startup.cs +++ b/samples/EnterpriseNotification/VirtualAssistant/Startup.cs @@ -18,9 +18,8 @@ using Microsoft.Bot.Builder.Skills.Auth; using Microsoft.Bot.Builder.Skills.Models.Manifest; using Microsoft.Bot.Builder.Solutions.Authentication; +using Microsoft.Bot.Builder.StreamingExtensions; using Microsoft.Bot.Connector.Authentication; -using Microsoft.Bot.Protocol.StreamingExtensions.NetCore; -using Microsoft.Bot.Protocol.WebSockets; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; diff --git a/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj b/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj index 960e8c2ec6..d8f1fa09a2 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj +++ b/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj @@ -25,10 +25,12 @@ + + + - diff --git a/samples/EnterpriseNotification/VirtualAssistant/appsettings.json b/samples/EnterpriseNotification/VirtualAssistant/appsettings.json index 8cc016c444..fff013fa75 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/appsettings.json +++ b/samples/EnterpriseNotification/VirtualAssistant/appsettings.json @@ -1,33 +1,21 @@ { - "oauthConnections": [ - { - "name": "Outlook", - "provider": "Azure Active Directory v2" - } - ], - "microsoftAppId": "6be61bcf-eb61-4d6d-abd2-f3c087dbcfe8", - "microsoftAppPassword": "lzc!850612850612", - "appInsights": { - "appId": "9a203d57-4257-4c96-83b3-0105ae518c8f", - "instrumentationKey": "f20016fe-c546-4c8b-9e85-7b67b969dfa7" + "microsoftAppId": "", + "microsoftAppPassword": "", + "oauthConnections": [], + "ApplicationInsights": { + "InstrumentationKey": "" }, "blobStorage": { - "connectionString": "DefaultEndpointsProtocol=https;AccountName=bfvatestted;AccountKey=sSIx3XUC0Y5jrcaVlzpU8FcwlHL5glZNyDZKoJ3LT2GJzovBIbYwgT0nyIhMTt/ToDaYoLbHb+0xI5Pt1yhgeg==;EndpointSuffix=core.windows.net", + "connectionString": "", "container": "transcripts" }, "cosmosDb": { - "authkey": "CiEnKk7AchtG8GGlXsMGWWTCfcauG2SL37ft2s7CyRxCvz4UY809tgOzvAcplZvX0YRaxltKV5K9pj490Qmtrw==", "collectionId": "botstate-collection", - "cosmosDBEndpoint": "https://bfvatestted.documents.azure.com:443/", - "databaseId": "botstate-db" - }, - "cosmosDbProactive": { - "authkey": "CiEnKk7AchtG8GGlXsMGWWTCfcauG2SL37ft2s7CyRxCvz4UY809tgOzvAcplZvX0YRaxltKV5K9pj490Qmtrw==", - "collectionId": "proactive-collection", - "cosmosDBEndpoint": "https://bfvatestted.documents.azure.com:443/", - "databaseId": "botstate-db" + "databaseId": "botstate-db", + "cosmosDBEndpoint": "", + "authKey": "" }, "contentModerator": { - "key": "c82e4e17e0a9489ab13bd071d4d16040" + "key": "" } -} +} \ No newline at end of file diff --git a/samples/EnterpriseNotification/VirtualAssistant/cognitivemodels.json b/samples/EnterpriseNotification/VirtualAssistant/cognitivemodels.json index eb52c0387f..7f40f7e181 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/cognitivemodels.json +++ b/samples/EnterpriseNotification/VirtualAssistant/cognitivemodels.json @@ -2,40 +2,33 @@ "cognitiveModels": { "en": { "dispatchModel": { - "authoringkey": "2db3136b285d4695932f8248e69ca0cb", - "type": "dispatch", - "appid": "70c26829-c582-4812-8998-53156e289527", - "subscriptionkey": "2db3136b285d4695932f8248e69ca0cb", - "region": "westus", - "name": "bfvatestteden_Dispatch" + "authoringkey": "", + "appid": "", + "name": "", + "subscriptionkey": "", + "region": "", + "authoringRegion": "" }, "languageModels": [ { - "id": "general", - "authoringkey": "2db3136b285d4695932f8248e69ca0cb", - "subscriptionkey": "2db3136b285d4695932f8248e69ca0cb", - "appid": "17248c3e-311b-4db4-bb4d-c944720e712a", - "region": "westus", - "version": "0.1", - "name": "bfvatestteden_general" + "subscriptionkey": "", + "appid": "", + "id": "", + "version": "", + "region": "", + "name": "", + "authoringkey": "", + "authoringRegion": "" } ], "knowledgebases": [ { - "id": "chitchat", - "endpointKey": "9da39bd2-b6e8-474f-aaa5-c3c873fe4834", - "subscriptionKey": "0f4151fc9fd5434b941402baea586165", - "hostname": "https://bfvatestted-qnahost.azurewebsites.net", - "kbId": "2c49bc11-56ea-40da-8859-bc22413bb2d2", - "name": "chitchat" - }, - { - "id": "faq", - "endpointKey": "9da39bd2-b6e8-474f-aaa5-c3c873fe4834", - "subscriptionKey": "0f4151fc9fd5434b941402baea586165", - "hostname": "https://bfvatestted-qnahost.azurewebsites.net", - "kbId": "cd8c3140-9c58-4eec-8eb9-f7e57b175f90", - "name": "faq" + "endpointKey": "", + "kbId": "", + "hostname": "", + "subscriptionKey": "", + "name": "", + "id": "" } ] } From 73f1c2a8577fd1bc4cc992a13fa77e98738289da Mon Sep 17 00:00:00 2001 From: lzc850612 Date: Thu, 25 Jul 2019 11:09:28 -0700 Subject: [PATCH 06/10] add cosmosdbproactive node --- .../VirtualAssistant/appsettings.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/samples/EnterpriseNotification/VirtualAssistant/appsettings.json b/samples/EnterpriseNotification/VirtualAssistant/appsettings.json index fff013fa75..4ddc1b9530 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/appsettings.json +++ b/samples/EnterpriseNotification/VirtualAssistant/appsettings.json @@ -15,6 +15,12 @@ "cosmosDBEndpoint": "", "authKey": "" }, + "cosmosDbProactive": { + "authkey": "", + "collectionId": "", + "cosmosDBEndpoint": "", + "databaseId": "" + }, "contentModerator": { "key": "" } From 6e007255c0c39bcb2442c1708d11fb934bfeeca5 Mon Sep 17 00:00:00 2001 From: lzc850612 Date: Thu, 25 Jul 2019 11:36:05 -0700 Subject: [PATCH 07/10] update --- samples/EnterpriseNotification/EventProducer/appsettings.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/EnterpriseNotification/EventProducer/appsettings.json b/samples/EnterpriseNotification/EventProducer/appsettings.json index 8aea81a473..653a95eaad 100644 --- a/samples/EnterpriseNotification/EventProducer/appsettings.json +++ b/samples/EnterpriseNotification/EventProducer/appsettings.json @@ -1,4 +1,4 @@ { - "EventHubName": "bfvatestted-testhub", - "EventHubConnectionString": "Endpoint=sb://bfvatestted.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=KEZUyvxAO0xX3O3nnM1+CREK5rJSGHb9O1NybDwLmwI=" + "EventHubName": "", + "EventHubConnectionString": "" } \ No newline at end of file From ee7676ae583c2a626015dd492d3e928a99adf709 Mon Sep 17 00:00:00 2001 From: lzc850612 Date: Thu, 25 Jul 2019 11:37:49 -0700 Subject: [PATCH 08/10] update --- .../VirtualAssistant/appsettings.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/EnterpriseNotification/VirtualAssistant/appsettings.json b/samples/EnterpriseNotification/VirtualAssistant/appsettings.json index 4ddc1b9530..2c942f2569 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/appsettings.json +++ b/samples/EnterpriseNotification/VirtualAssistant/appsettings.json @@ -16,10 +16,10 @@ "authKey": "" }, "cosmosDbProactive": { - "authkey": "", - "collectionId": "", + "collectionId": "proactivestate-collection", + "databaseId": "botstate-db", "cosmosDBEndpoint": "", - "databaseId": "" + "authKey": "" }, "contentModerator": { "key": "" From 20f4acba231acb9dcdba3fe6b36969e300349f50 Mon Sep 17 00:00:00 2001 From: lzc850612 Date: Thu, 25 Jul 2019 13:55:20 -0700 Subject: [PATCH 09/10] update skills package version --- .../VirtualAssistant/VirtualAssistant.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj b/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj index d8f1fa09a2..f4ed1e0a55 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj +++ b/samples/EnterpriseNotification/VirtualAssistant/VirtualAssistant.csproj @@ -26,8 +26,8 @@ - - + + From 7f2c7d910ff78bce9185e6b49bcfbf6cc6f8c169 Mon Sep 17 00:00:00 2001 From: lzc850612 Date: Thu, 25 Jul 2019 17:29:58 -0700 Subject: [PATCH 10/10] update --- .../VirtualAssistant/Dialogs/MainDialog.cs | 7 ++-- .../ProactiveModelWithStateProperties.cs | 42 +++++++++++++++++++ 2 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveModelWithStateProperties.cs diff --git a/samples/EnterpriseNotification/VirtualAssistant/Dialogs/MainDialog.cs b/samples/EnterpriseNotification/VirtualAssistant/Dialogs/MainDialog.cs index b5c0670d96..d031f45d36 100644 --- a/samples/EnterpriseNotification/VirtualAssistant/Dialogs/MainDialog.cs +++ b/samples/EnterpriseNotification/VirtualAssistant/Dialogs/MainDialog.cs @@ -265,14 +265,15 @@ await documentDbclient.CreateDatabaseIfNotExistsAsync( var eventData = JsonConvert.DeserializeObject(dc.Context.Activity.Value.ToString()); - var proactiveConversations = documentDbclient.CreateDocumentQuery(collectionLink, $"SELECT * FROM c WHERE Contains(c.id, {eventData.UserId})"); + var proactiveConversations = documentDbclient.CreateDocumentQuery(collectionLink, $"SELECT * FROM c WHERE Contains(c.id, '{eventData.UserId}')"); // send the event data to all saved conversations for the user - if (proactiveConversations != null && proactiveConversations.Count() > 0) + if (proactiveConversations != null) { foreach (var proactiveConversation in proactiveConversations) { - await dc.Context.Adapter.ContinueConversationAsync(_appCredentials.MicrosoftAppId, proactiveConversation.Conversation, ContinueConversationCallback(dc.Context, eventData.Message), cancellationToken); + var conversation = JsonConvert.DeserializeObject(proactiveConversation.Document["ProactiveModel"].ToString()); + await dc.Context.Adapter.ContinueConversationAsync(_appCredentials.MicrosoftAppId, conversation.Conversation, ContinueConversationCallback(dc.Context, eventData.Message), cancellationToken); } } else diff --git a/samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveModelWithStateProperties.cs b/samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveModelWithStateProperties.cs new file mode 100644 index 0000000000..ed6d7cbbbe --- /dev/null +++ b/samples/EnterpriseNotification/VirtualAssistant/Proactive/ProactiveModelWithStateProperties.cs @@ -0,0 +1,42 @@ +using Microsoft.Bot.Schema; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace VirtualAssistant.Proactive +{ + public class ProactiveModelWithStateProperties + { + /// + /// Gets or sets the sanitized Id/Key used as PrimaryKey. + /// + [JsonProperty("id")] + public string Id { get; set; } + + /// + /// Gets or sets the un-sanitized Id/Key. + /// + /// + /// Note: There is a Typo in the property name ("ReadlId"), that can't be changed due to compatability concerns. The + /// Json is correct due to the JsonProperty field, but the Typo needs to stay. + /// + // DO NOT FIX THE TYPO BELOW (See Remarks above). + [JsonProperty("realId")] + public string RealId { get; internal set; } + + /// + /// Gets or sets the persisted object. + /// + [JsonProperty("document")] + public JObject Document { get; set; } + + /// + /// Gets or sets the ETag information for handling optimistic concurrency updates. + /// + [JsonProperty("_etag")] + public string ETag { get; set; } + } +} \ No newline at end of file