From 662156f368e7f6d6cf180faf130a47d3e983dd89 Mon Sep 17 00:00:00 2001 From: lauren-mills Date: Sat, 6 Apr 2019 02:59:24 -0700 Subject: [PATCH] [4.4] Email skill folder restructure + config (#1061) * removed old deployment scripts * email skill started * va template cleanup * more todo cleanup * poi cleanup * todo stylecop * email folder restructure and config --- .../emailskill/Adapters/DefaultAdapter.cs | 41 ++ .../emailskill/Adapters/EmailSkillAdapter.cs | 41 ++ .../emailskill/emailskill/Bots/DialogBot.cs | 51 ++ .../CognitiveModels/LUIS/de/email.lu | 678 ----------------- .../CognitiveModels/LUIS/en/email.lu | 691 ------------------ .../CognitiveModels/LUIS/es/email.lu | 687 ----------------- .../CognitiveModels/LUIS/fr/email.lu | 678 ----------------- .../CognitiveModels/LUIS/it/email.lu | 689 ----------------- .../CognitiveModels/LUIS/zh/email.lu | 623 ---------------- .../Cards => Content}/EmailCard.json | 0 .../EmailContentPreview.json | 0 .../Cards => Content}/EmailDetailCard.json | 0 .../EmailWithOutButtonCard.json | 0 .../emailskill/DeploymentScripts/bot.recipe | 40 - .../DeploymentScripts/de/bot.recipe | 15 - .../DeploymentScripts/deploy_bot.ps1 | 50 -- .../DeploymentScripts/en/bot.recipe | 15 - .../DeploymentScripts/es/bot.recipe | 15 - .../DeploymentScripts/fr/bot.recipe | 15 - .../generate_deployment_scripts.ps1 | 29 - .../DeploymentScripts/it/bot.recipe | 15 - .../update_published_models.ps1 | 40 - .../DeploymentScripts/zh/bot.recipe | 15 - .../emailskill/Dialogs/AuthDialog.cs | 184 +++++ .../{DeleteEmail => }/DeleteEmailDialog.cs | 22 +- ...SkillDialog.cs => EmailSkillDialogBase.cs} | 113 +-- .../{FindContact => }/FindContactDialog.cs | 25 +- .../{ForwardEmail => }/ForwardEmailDialog.cs | 22 +- .../Dialogs/{Main => }/MainDialog.cs | 105 ++- .../{ReplyEmail => }/ReplyEmailDialog.cs | 19 +- .../{SendEmail => }/SendEmailDialog.cs | 29 +- .../{ShowEmail => }/ShowEmailDialog.cs | 44 +- .../emailskill/emailskill/EmailSkill.cs | 104 --- .../emailskill/emailskill/EmailSkill.csproj | 164 +++-- .../emailskill/Model/SendEmailStateModel.cs | 28 - .../Cards => Models}/EmailCardData.cs | 2 +- .../EmailCardDataNoButtons.cs | 2 +- .../EmailSkillDialogOptions.cs | 4 +- .../{ => Models}/EmailSkillState.cs | 7 +- .../{Model => Models}/MailSource.cs | 2 +- .../emailskill/Models/OAuthConnection.cs | 9 + .../emailskill/Models/SendEmailStateModel.cs | 25 + .../UpdateUserDialogOptions.cs | 2 +- .../Prompts/GetRecreateInfoPrompt.cs | 8 +- .../DeleteEmail}/DeleteEmailResponses.cs | 4 +- .../DeleteEmail}/DeleteEmailResponses.de.json | Bin .../DeleteEmail}/DeleteEmailResponses.es.json | Bin .../DeleteEmail}/DeleteEmailResponses.fr.json | Bin .../DeleteEmail}/DeleteEmailResponses.it.json | Bin .../DeleteEmail}/DeleteEmailResponses.json | 0 .../DeleteEmail}/DeleteEmailResponses.tt | 2 +- .../DeleteEmail}/DeleteEmailResponses.zh.json | Bin .../FindContact}/FindContactResponses.cs | 4 +- .../FindContact}/FindContactResponses.de.json | Bin .../FindContact}/FindContactResponses.es.json | Bin .../FindContact}/FindContactResponses.fr.json | Bin .../FindContact}/FindContactResponses.it.json | Bin .../FindContact}/FindContactResponses.json | 0 .../FindContact}/FindContactResponses.tt | 2 +- .../FindContact}/FindContactResponses.zh.json | Bin .../ForwardEmail}/ForwardEmailResponses.cs | 4 +- .../ForwardEmailResponses.de.json | Bin .../ForwardEmailResponses.es.json | Bin .../ForwardEmailResponses.fr.json | Bin .../ForwardEmailResponses.it.json | Bin .../ForwardEmail}/ForwardEmailResponses.json | 0 .../ForwardEmail}/ForwardEmailResponses.tt | 2 +- .../ForwardEmailResponses.zh.json | Bin .../Main}/EmailMainResponses.cs | 4 +- .../Main}/EmailMainResponses.de.json | Bin .../Main}/EmailMainResponses.es.json | Bin .../Main}/EmailMainResponses.fr.json | Bin .../Main}/EmailMainResponses.it.json | Bin .../Main}/EmailMainResponses.json | 0 .../Main}/EmailMainResponses.tt | 2 +- .../Main}/EmailMainResponses.zh.json | Bin .../ReplyEmail}/ReplyEmailResponses.cs | 4 +- .../ReplyEmail}/ReplyEmailResponses.de.json | Bin .../ReplyEmail}/ReplyEmailResponses.es.json | Bin .../ReplyEmail}/ReplyEmailResponses.fr.json | Bin .../ReplyEmail}/ReplyEmailResponses.it.json | Bin .../ReplyEmail}/ReplyEmailResponses.json | 0 .../ReplyEmail}/ReplyEmailResponses.tt | 2 +- .../ReplyEmail}/ReplyEmailResponses.zh.json | Bin .../SendEmail}/SendEmailResponses.cs | 4 +- .../SendEmail}/SendEmailResponses.de.json | Bin .../SendEmail}/SendEmailResponses.es.json | Bin .../SendEmail}/SendEmailResponses.fr.json | Bin .../SendEmail}/SendEmailResponses.it.json | Bin .../SendEmail}/SendEmailResponses.json | 0 .../SendEmail}/SendEmailResponses.tt | 2 +- .../SendEmail}/SendEmailResponses.zh.json | Bin .../Shared}/EmailCommonStrings.Designer.cs | 4 +- .../Shared}/EmailCommonStrings.de.resx | 0 .../Shared}/EmailCommonStrings.es.resx | 0 .../Shared}/EmailCommonStrings.fr.resx | 0 .../Shared}/EmailCommonStrings.it.resx | 0 .../Shared}/EmailCommonStrings.resx | 0 .../Shared}/EmailCommonStrings.zh.resx | 0 .../Shared}/EmailSharedResponses.cs | 2 +- .../Shared}/EmailSharedResponses.de.json | Bin .../Shared}/EmailSharedResponses.es.json | Bin .../Shared}/EmailSharedResponses.fr.json | Bin .../Shared}/EmailSharedResponses.it.json | Bin .../Shared}/EmailSharedResponses.json | 0 .../Shared}/EmailSharedResponses.tt | 2 +- .../Shared}/EmailSharedResponses.zh.json | Bin .../Shared}/ResponseIdCollection.t4 | 0 .../ShowEmail}/ShowEmailResponses.cs | 4 +- .../ShowEmail}/ShowEmailResponses.de.json | Bin .../ShowEmail}/ShowEmailResponses.es.json | Bin .../ShowEmail}/ShowEmailResponses.fr.json | Bin .../ShowEmail}/ShowEmailResponses.it.json | Bin .../ShowEmail}/ShowEmailResponses.json | 0 .../ShowEmail}/ShowEmailResponses.tt | 2 +- .../ShowEmail}/ShowEmailResponses.zh.json | Bin .../emailskill/Services/BotServices.cs | 58 ++ .../emailskill/Services/BotSettings.cs | 52 ++ .../EmailLU.cs => Services/EmailLuis.cs} | 4 +- .../GoogleAPI/GMailService.cs | 22 +- .../GoogleAPI/GoogleClient.cs | 23 +- .../GoogleAPI/GooglePeopleService.cs | 0 .../IMailService.cs | 0 .../IServiceManager.cs | 2 +- .../IUserService.cs | 0 .../MSGraphAPI/GraphClient.cs | 0 .../MSGraphAPI/MSGraphMailAPI.cs | 0 .../MSGraphAPI/MSGraphUserService.cs | 0 .../ServiceManager.cs | 14 +- .../skills/emailskill/emailskill/Startup.cs | 208 ++---- .../{Dialogs/Shared => Utilities}/Actions.cs | 2 +- .../{Util => Utilities}/DisplayHelper.cs | 18 +- .../EmailCommonPhrase.cs | 3 +- .../{Util => Utilities}/SpeakHelper.cs | 38 +- .../emailskill/emailskill/appsettings.json | 40 +- .../emailskill/cognitivemodels.json | 27 + .../Bots/{DefaultBot.cs => DialogBot.cs} | 7 +- .../Dialogs/CancelRouteDialog.cs | 4 +- .../Dialogs/FindParkingDialog.cs | 3 +- .../Dialogs/FindPointOfInterestDialog.cs | 4 +- ...Dialog.cs => PointOfInterestDialogBase.cs} | 28 +- .../Dialogs/RouteDialog.cs | 8 +- .../pointofinterestskill/Startup.cs | 6 +- .../{Dialogs => Utilities}/Actions.cs | 2 +- .../Bots/{DefaultBot.cs => DialogBot.cs} | 10 +- .../todoskill/Dialogs/AddToDoItemDialog.cs | 38 +- .../todoskill/Dialogs/DeleteToDoItemDialog.cs | 40 +- .../todoskill/todoskill/Dialogs/MainDialog.cs | 3 +- .../todoskill/Dialogs/MarkToDoItemDialog.cs | 34 +- .../todoskill/Dialogs/ShowToDoItemDialog.cs | 54 +- .../todoskill/Dialogs/ToDoSkillDialogBase.cs | 8 +- .../todoskill/Services/IMailService.cs | 2 +- .../todoskill/Services/IServiceManager.cs | 3 +- .../todoskill/Services/ITaskService.cs | 4 +- .../todoskill/Services/MailService.cs | 2 +- .../todoskill/Services/OneNoteService.cs | 9 +- .../todoskill/Services/OutlookService.cs | 9 +- .../todoskill/Services/ServiceHelper.cs | 4 +- .../todoskill/Services/ServiceManager.cs | 3 +- .../skills/todoskill/todoskill/Startup.cs | 8 +- .../Action.cs => Utilities/Actions.cs} | 4 +- .../{Common => Utilities}/ToDoCommonUtil.cs | 2 +- .../{Bots => Adapters}/DefaultAdapter.cs | 0 .../Bots/{DefaultBot.cs => DialogBot.cs} | 7 +- .../VirtualAssistantTemplate/Startup.cs | 2 +- 165 files changed, 1063 insertions(+), 5154 deletions(-) create mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Adapters/DefaultAdapter.cs create mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Adapters/EmailSkillAdapter.cs create mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Bots/DialogBot.cs delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/de/email.lu delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/en/email.lu delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/es/email.lu delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/fr/email.lu delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/it/email.lu delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/zh/email.lu rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/Cards => Content}/EmailCard.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/Cards => Content}/EmailContentPreview.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/Cards => Content}/EmailDetailCard.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/Cards => Content}/EmailWithOutButtonCard.json (100%) delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/bot.recipe delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/de/bot.recipe delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/deploy_bot.ps1 delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/en/bot.recipe delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/es/bot.recipe delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/fr/bot.recipe delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/generate_deployment_scripts.ps1 delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/it/bot.recipe delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/update_published_models.ps1 delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/zh/bot.recipe create mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/AuthDialog.cs rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/{DeleteEmail => }/DeleteEmailDialog.cs (89%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/{Shared/EmailSkillDialog.cs => EmailSkillDialogBase.cs} (92%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/{FindContact => }/FindContactDialog.cs (97%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/{ForwardEmail => }/ForwardEmailDialog.cs (87%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/{Main => }/MainDialog.cs (76%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/{ReplyEmail => }/ReplyEmailDialog.cs (89%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/{SendEmail => }/SendEmailDialog.cs (95%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/{ShowEmail => }/ShowEmailDialog.cs (92%) delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/EmailSkill.cs delete mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Model/SendEmailStateModel.cs rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/Cards => Models}/EmailCardData.cs (89%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/Cards => Models}/EmailCardDataNoButtons.cs (89%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/DialogOptions => Models}/EmailSkillDialogOptions.cs (53%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{ => Models}/EmailSkillState.cs (97%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Model => Models}/MailSource.cs (94%) create mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/OAuthConnection.cs create mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/SendEmailStateModel.cs rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/DialogOptions => Models}/UpdateUserDialogOptions.cs (94%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/SendEmail => }/Prompts/GetRecreateInfoPrompt.cs (93%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/DeleteEmail/Resources => Responses/DeleteEmail}/DeleteEmailResponses.cs (91%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/DeleteEmail/Resources => Responses/DeleteEmail}/DeleteEmailResponses.de.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/DeleteEmail/Resources => Responses/DeleteEmail}/DeleteEmailResponses.es.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/DeleteEmail/Resources => Responses/DeleteEmail}/DeleteEmailResponses.fr.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/DeleteEmail/Resources => Responses/DeleteEmail}/DeleteEmailResponses.it.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/DeleteEmail/Resources => Responses/DeleteEmail}/DeleteEmailResponses.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/DeleteEmail/Resources => Responses/DeleteEmail}/DeleteEmailResponses.tt (58%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/DeleteEmail/Resources => Responses/DeleteEmail}/DeleteEmailResponses.zh.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/FindContact/Resources => Responses/FindContact}/FindContactResponses.cs (95%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/FindContact/Resources => Responses/FindContact}/FindContactResponses.de.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/FindContact/Resources => Responses/FindContact}/FindContactResponses.es.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/FindContact/Resources => Responses/FindContact}/FindContactResponses.fr.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/FindContact/Resources => Responses/FindContact}/FindContactResponses.it.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/FindContact/Resources => Responses/FindContact}/FindContactResponses.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/FindContact/Resources => Responses/FindContact}/FindContactResponses.tt (58%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/FindContact/Resources => Responses/FindContact}/FindContactResponses.zh.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ForwardEmail/Resources => Responses/ForwardEmail}/ForwardEmailResponses.cs (88%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ForwardEmail/Resources => Responses/ForwardEmail}/ForwardEmailResponses.de.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ForwardEmail/Resources => Responses/ForwardEmail}/ForwardEmailResponses.es.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ForwardEmail/Resources => Responses/ForwardEmail}/ForwardEmailResponses.fr.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ForwardEmail/Resources => Responses/ForwardEmail}/ForwardEmailResponses.it.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ForwardEmail/Resources => Responses/ForwardEmail}/ForwardEmailResponses.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ForwardEmail/Resources => Responses/ForwardEmail}/ForwardEmailResponses.tt (58%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ForwardEmail/Resources => Responses/ForwardEmail}/ForwardEmailResponses.zh.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Main/Resources => Responses/Main}/EmailMainResponses.cs (94%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Main/Resources => Responses/Main}/EmailMainResponses.de.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Main/Resources => Responses/Main}/EmailMainResponses.es.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Main/Resources => Responses/Main}/EmailMainResponses.fr.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Main/Resources => Responses/Main}/EmailMainResponses.it.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Main/Resources => Responses/Main}/EmailMainResponses.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Main/Resources => Responses/Main}/EmailMainResponses.tt (58%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Main/Resources => Responses/Main}/EmailMainResponses.zh.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ReplyEmail/Resources => Responses/ReplyEmail}/ReplyEmailResponses.cs (88%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ReplyEmail/Resources => Responses/ReplyEmail}/ReplyEmailResponses.de.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ReplyEmail/Resources => Responses/ReplyEmail}/ReplyEmailResponses.es.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ReplyEmail/Resources => Responses/ReplyEmail}/ReplyEmailResponses.fr.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ReplyEmail/Resources => Responses/ReplyEmail}/ReplyEmailResponses.it.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ReplyEmail/Resources => Responses/ReplyEmail}/ReplyEmailResponses.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ReplyEmail/Resources => Responses/ReplyEmail}/ReplyEmailResponses.tt (58%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ReplyEmail/Resources => Responses/ReplyEmail}/ReplyEmailResponses.zh.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/SendEmail/Resources => Responses/SendEmail}/SendEmailResponses.cs (95%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/SendEmail/Resources => Responses/SendEmail}/SendEmailResponses.de.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/SendEmail/Resources => Responses/SendEmail}/SendEmailResponses.es.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/SendEmail/Resources => Responses/SendEmail}/SendEmailResponses.fr.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/SendEmail/Resources => Responses/SendEmail}/SendEmailResponses.it.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/SendEmail/Resources => Responses/SendEmail}/SendEmailResponses.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/SendEmail/Resources => Responses/SendEmail}/SendEmailResponses.tt (58%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/SendEmail/Resources => Responses/SendEmail}/SendEmailResponses.zh.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/Strings => Responses/Shared}/EmailCommonStrings.Designer.cs (98%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/Strings => Responses/Shared}/EmailCommonStrings.de.resx (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/Strings => Responses/Shared}/EmailCommonStrings.es.resx (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/Strings => Responses/Shared}/EmailCommonStrings.fr.resx (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/Strings => Responses/Shared}/EmailCommonStrings.it.resx (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/Strings => Responses/Shared}/EmailCommonStrings.resx (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/Strings => Responses/Shared}/EmailCommonStrings.zh.resx (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources => Responses/Shared}/EmailSharedResponses.cs (97%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources => Responses/Shared}/EmailSharedResponses.de.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources => Responses/Shared}/EmailSharedResponses.es.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources => Responses/Shared}/EmailSharedResponses.fr.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources => Responses/Shared}/EmailSharedResponses.it.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources => Responses/Shared}/EmailSharedResponses.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources => Responses/Shared}/EmailSharedResponses.tt (58%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources => Responses/Shared}/EmailSharedResponses.zh.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources => Responses/Shared}/ResponseIdCollection.t4 (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ShowEmail/Resources => Responses/ShowEmail}/ShowEmailResponses.cs (93%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ShowEmail/Resources => Responses/ShowEmail}/ShowEmailResponses.de.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ShowEmail/Resources => Responses/ShowEmail}/ShowEmailResponses.es.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ShowEmail/Resources => Responses/ShowEmail}/ShowEmailResponses.fr.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ShowEmail/Resources => Responses/ShowEmail}/ShowEmailResponses.it.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ShowEmail/Resources => Responses/ShowEmail}/ShowEmailResponses.json (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ShowEmail/Resources => Responses/ShowEmail}/ShowEmailResponses.tt (58%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/ShowEmail/Resources => Responses/ShowEmail}/ShowEmailResponses.zh.json (100%) create mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/BotServices.cs create mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/BotSettings.cs rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/EmailLU.cs => Services/EmailLuis.cs} (96%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{ServiceClients => Services}/GoogleAPI/GMailService.cs (97%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{ServiceClients => Services}/GoogleAPI/GoogleClient.cs (59%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{ServiceClients => Services}/GoogleAPI/GooglePeopleService.cs (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{ServiceClients => Services}/IMailService.cs (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{ServiceClients => Services}/IServiceManager.cs (94%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{ServiceClients => Services}/IUserService.cs (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{ServiceClients => Services}/MSGraphAPI/GraphClient.cs (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{ServiceClients => Services}/MSGraphAPI/MSGraphMailAPI.cs (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{ServiceClients => Services}/MSGraphAPI/MSGraphUserService.cs (100%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{ServiceClients => Services}/ServiceManager.cs (88%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared => Utilities}/Actions.cs (97%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Util => Utilities}/DisplayHelper.cs (88%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Dialogs/Shared/Resources/Strings => Utilities}/EmailCommonPhrase.cs (89%) rename solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/{Util => Utilities}/SpeakHelper.cs (69%) create mode 100644 solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/cognitivemodels.json rename solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Bots/{DefaultBot.cs => DialogBot.cs} (81%) rename solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/{PointOfInterestBaseDialog.cs => PointOfInterestDialogBase.cs} (94%) rename solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/{Dialogs => Utilities}/Actions.cs (95%) rename solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Bots/{DefaultBot.cs => DialogBot.cs} (79%) rename solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/{Dialogs/Action.cs => Utilities/Actions.cs} (96%) rename solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/{Common => Utilities}/ToDoCommonUtil.cs (74%) rename templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/{Bots => Adapters}/DefaultAdapter.cs (100%) rename templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Bots/{DefaultBot.cs => DialogBot.cs} (80%) diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Adapters/DefaultAdapter.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Adapters/DefaultAdapter.cs new file mode 100644 index 0000000000..b034209db8 --- /dev/null +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Adapters/DefaultAdapter.cs @@ -0,0 +1,41 @@ +using System.Globalization; +using EmailSkill.Responses.Shared; +using EmailSkill.Services; +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.Responses; +using Microsoft.Bot.Builder.Solutions.Telemetry; +using Microsoft.Bot.Connector.Authentication; +using Microsoft.Bot.Schema; + +namespace EmailSkill.Adapters +{ + public class DefaultAdapter : BotFrameworkHttpAdapter + { + public DefaultAdapter( + BotSettings settings, + ICredentialProvider credentialProvider, + BotStateSet botStateSet, + IBotTelemetryClient telemetryClient, + ResponseManager responseManager) + : base(credentialProvider) + { + OnTurnError = async (context, exception) => + { + CultureInfo.CurrentUICulture = new CultureInfo(context.Activity.Locale); + await context.SendActivityAsync(responseManager.GetResponse(EmailSharedResponses.EmailErrorMessage)); + await context.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"Email Skill Error: {exception.Message} | {exception.StackTrace}")); + telemetryClient.TrackExceptionEx(exception, context.Activity); + }; + + 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)); + } + } +} diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Adapters/EmailSkillAdapter.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Adapters/EmailSkillAdapter.cs new file mode 100644 index 0000000000..7decec7db7 --- /dev/null +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Adapters/EmailSkillAdapter.cs @@ -0,0 +1,41 @@ +using System.Globalization; +using EmailSkill.Responses.Shared; +using EmailSkill.Services; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Azure; +using Microsoft.Bot.Builder.Skills; +using Microsoft.Bot.Builder.Solutions.Middleware; +using Microsoft.Bot.Builder.Solutions.Responses; +using Microsoft.Bot.Builder.Solutions.Telemetry; +using Microsoft.Bot.Connector.Authentication; +using Microsoft.Bot.Schema; + +namespace EmailSkill.Adapters +{ + public class EmailSkillAdapter : SkillAdapter + { + public EmailSkillAdapter( + BotSettings settings, + ICredentialProvider credentialProvider, + BotStateSet botStateSet, + ResponseManager responseManager, + IBotTelemetryClient telemetryClient) + : base(credentialProvider) + { + OnTurnError = async (context, exception) => + { + CultureInfo.CurrentUICulture = new CultureInfo(context.Activity.Locale); + await context.SendActivityAsync(responseManager.GetResponse(EmailSharedResponses.EmailErrorMessage)); + await context.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"Email Skill Error: {exception.Message} | {exception.StackTrace}")); + telemetryClient.TrackExceptionEx(exception, context.Activity); + }; + + 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)); + } + } +} diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Bots/DialogBot.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Bots/DialogBot.cs new file mode 100644 index 0000000000..137e712039 --- /dev/null +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/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 EmailSkill.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(EmailSkill)); + _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); + } + } + } +} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/de/email.lu b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/de/email.lu deleted file mode 100644 index be8ad41943..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/de/email.lu +++ /dev/null @@ -1,678 +0,0 @@ -> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Thu Feb 28 2019 16:37:09 GMT+0800 (China Standard Time) - -> ! Source LUIS JSON file: email.json - -> ! Source QnA TSV file: Not Specified - -> ! Source QnA Alterations file: Not Specified - - -> # Intent definitions - -## AddFlag -- Eine Fahne hinzufügen -- Bitte eine Fahne hinzufügen -- Eine Fahne zum {OrderReference=letzte} E-Mail -- Fügen Sie eine Fahne zu dieser E-Mail -- Fahne hinzufügen -- Fahne in die E-Mail einfügen {SenderName=John} Gerade zu mir geschickt -- Hinzufügen {Category=Flag} E-Mail an diese E-Mail -- Fahne zu dieser Nachricht hinzufügen -- Flag -- Flagge -- Flagge auf -- Flagge die aktuelle E-Mail -- Flagge die E-Mail -- Flagge die E-Mail von {SenderName=Davis} -- Flagge diese Email -- Flagge diese E-Mail als {Category=Wichtig} für mich -- Ich möchte eine Fahne hinzufügen -- Ich möchte eine Fahne auf dieser E-Mail hinzufügen -- Machen Sie es markiert -- Marke als Flagge -- Die E-Mail markieren {Category=Gekennzeichnet} -- Eine Fahne setzen -- Eine Flagge auf die neue E-Mail setzen -- Die Email von {SenderName=Thomas} sollte markiert werden -- Die Email an {ContactName=Ruth} muss markiert werden -- Diese E-Mail muss markiert werden -- Diese E-Mail sollte markiert sein -- Flagge einschalten - - -## AddMore -- Fügen Sie eine {Attachment=Datei} Zur Email -- Fügen Sie eine {Attachment=Bild} -- Ein Thema hinzufügen -- Fügen Sie der Nachricht eine weitere Zeile hinzu -- Hinzufügen {Message=Sie haben das gesamte Programm genossen} -- Hinzufügen {Attachment=Datei} E-Mail -- Weitere -- Weitere hinzufügen und die Nachricht ändern -- Weitere Details hinzufügen -- Weitere {Message=Nicht vergessen, Bier mitzubringen} -- Weitere Meldung -- Weitere Informationen bitte -- Weitere Texte hinzufügen -- Fügen Sie bitte weitere Texte hinzu -- Weitere E-Mails -- Mehr in den E-Mail-Körper -- Weitere Informationen hinzufügen -- Mehr dazu {ContactName=Roy} E-Mail -- Weitere Informationen zum Text -- Weitere Informationen zur E-Mail -- Mehr zu den {OrderReference=letzte} E-Mail -- Weitere Informationen -- Hinzufügen {Attachment=Foto} -- Etwas hinzufügen -- Fügen Sie zu einer E-Mail -- Fügen Sie übrigens hinzu, was der Plan des nächsten Schrittes ist -- Hinzufügen: {Message=Rufen Sie mich heute Abend nach der Arbeit an} -- Ein {Attachment=Anhang} E-Mail an diese E-Mail -- Anfügen {Attachment=Datei} -- Kann ich der E-Mail noch mehr hinzufügen -- Kann ich der Nachricht noch mehr hinzufügen -- E-Mail bearbeiten, damit ich eine zusätzliche Nachricht eingeben kann -- Ich bin noch nicht fertig. Ich muss noch ein paar Details hinzufügen -- Ich habe vergessen, einen wichtigen Teil dieser E-Mail an {ContactName=James} . Bitte richten Sie es auf -- Ich muss zusätzliche Zeilen hinzufügen -- Ich muss weitere Inhalte hinzufügen -- Ich muss mehr Nachricht hinzufügen -- Ich muss mehr Text hinzufügen -- Ich muss mehr in die E-Mail hinzufügen -- Ich muss mehr zu der E-Mail-Nachricht hinzufügen, die ich an {ContactName=Vincent} -- Ich muss meiner E-Mail noch etwas hinzufügen, um {ContactName=Cheryl} -- Ich muss dieser E-Mail noch etwas hinzufügen, um {ContactName=Frau} Bevor es gesendet wird -- Ich möchte mehr die E-Mail hinzufügen -- Ich möchte noch mehr zur Nachricht hinzufügen -- Ich möchte mehr in die E-Mail hinzufügen -- Ich möchte mehr zur E-Mail-Nachricht hinzufügen -- Ich möchte eine neue Linie eröffnen -- Ich möchte noch ein bisschen mehr in die E-Mail einfügen. -- Ich möchte der Nachricht noch ein bisschen mehr hinzufügen -- Fügen Sie bitte weitere Linien für mich ein -- Fügen Sie mehr Text in meine E-Mail ein -- Ist es in Ordnung, wenn ich mehr in die E-Mail einfüge? -- Es ist nicht vollständig, brauchen mehr Inhalt -- Mehr Text -- Sie müssen Informationen zu den {OrderReference=Vorherigen} E-Mail -- OK, ich muss noch ein paar Dinge hinzufügen -- Bitte hinzufügen {Message=Es war schrecklich} -- Bitte mehr hinzufügen -- Bitte hinzufügen, {Message=Bitte lassen Sie mich wissen, was ich mitbringen kann. Ich würde mich freuen, eine Beilage oder ein Dessert zu machen} -- Einige zusätzliche Zeilen zu dieser Botschaft -- Warten, ich muss mehr schreiben -- Schreiben Sie mehr - - -## CancelMessages -- Abort-Löscharbeiten -- Können Sie es absagen -- E-Mail stornieren -- E-Mail stornieren {ContactName=Natalie} -- Absage -- Meine E-Mail stornieren {ContactName=Jane} -- Die Suche nach den Nachrichten wird abgesagt -- Die E-Mail an meine {RelationshipName=Schwester} -- Die Mail abbrechen -- Nachricht abbrechen -- Diese E-Mail löschen -- Diese Nachricht abbrechen -- Diesen Sendeprozess abbrechen -- Don ' t read -- Don ' t read it -- Senden Sie die E-Mail nicht -- Keine E-Mail -- E-Mail an sie -- Lesen Sie die E-Mail nicht -- Lesen Sie die Nachricht nicht -- Nicht senden -- Schicken Sie es nicht -- Nicht aussenden -- Senden Sie diese E-Mail nicht -- Don ' t show me -- Ausfahrt -- Die E-Mail vergessen -- Ich möchte, dass Sie die E-Mail stornieren -- keiner von ihnen -- Egal, dass Sie die Mail abbrechen -- Egal, dass Sie die Nachricht abbrechen -- Egal, vergessen Sie die Mail -- Nevermind cancel -- Kein Abbrechen, ich möchte die Mail nicht versenden -- No don ' t send -- E-Mail nicht einfach abbrechen -- Nein, ich möchte diese Nachricht nicht senden -- Nein, nein, die Lesung abbrechen -- Okay abbrechen Sie das Versenden der E-Mail -- Der Versand -- Stopp-Nachricht -- Lesen aufhören - - -## CheckMessages -- jegliche {Category=Neu} E-Mail -- jegliche {Category=Neu} Email verfügbar -- jegliche {Category=Neu} E-Mail {Time=jetzt} -- jegliche {Category=Neu} Nachricht {Time=jetzt} -- E-Mail prüfen -- Bitte per E-Mail -- Schauen Sie bitte meine E-Mail an -- Meine E-Mails prüfen -- Schaut ich an, meine {Line=Google mail} -- Mein Posteingang -- Checken Sie mein Postfach -- Überprüfen Sie meine Nachricht -- prüfen {EmailPlatform=Outlook} Bitte -- Nachrichten prüfen -- Könnten Sie bitte meine E-Mails überprüfen -- Könnten Sie bitte meinen Posteingang ankreuzen -- Könnten Sie bitte meine Nachrichten überprüfen -- Ich bekomme neue E-Mail -- Ich habe welche {Category=Neu} Mail -- Ich habe {Category=Neu} E-Mail -- Ich habe {Category=Neu} E-Mail {Time=jetzt} -- Ich habe {Category=Neu} Nachricht -- Erhalte ich {Category=Neu} E-Mail -- Erhalte ich {Category=Neu} Post in {EmailPlatform=Outlook} ? -- Erhalte ich {Category=Neu} Nachricht -- Schickt mir jemand gerade dann eine E-Mail -- Sendet mir jemand eine Nachricht {Time=Nur dann} -- Mis my {EmailPlatform=Outlook} Hsa {Category=Neu} E-Mail -- Ich möchte meine E-Mails überprüfen -- Ich möchte meinen Posteingang überprüfen -- Ich würde gerne meinen Posteingang überprüfen -- Gibt es neue Email -- Bitte checken Sie meine E-Mails -- Bitte checken Sie meinen Posteingang -- Bitte prüfen Sie: {EmailPlatform=Outlook} -- Zeigen {OrderReference=Neuesten} E-mails -- Meine E-Mails anzeigen -- Ob ich {Category=Neu} E-Mail -- Ob ich {Category=Neu} Nachricht -- Ob ich neue E-Mail bekomme - - -## ConfirmMessages -- "Okay, send it" -- "Sicher, geht vor" -- "Ja, du kannst" -- Gut, senden Sie einfach die Botschaft -- Richtig, bitte senden Sie es. -- Ich bestätige, dass ich diese E-Mail senden möchte -- Kein Problem, gehen Sie die Mail -- Natürlich einfach die Mail löschen -- OK schicken Sie die Mail an {ContactName=Kann} -- OK, gut zu mir, senden Sie es bitte -- OK, gut, einfach nur schicken -- Okay -- Okay senden -- Okay, senden Sie es jetzt -- Perfektes Dankeschön -- Richtig, bitte senden Sie es -- Ja recht, senden Sie an {ContactName=Alex} -- Ja, es ist richtig -- Ja, das stimmt -- Ja, send it - - -## Delete -- Können Sie mir helfen, es zu löschen -- klaren Sie meinen Posteingang -- Alle erhaltenen E-Mails löschen {Time=Heute abend} -- Löschen Sie die E-Mail aus meinem {Line=Hotmail} Konto -- Löschen der {PositionReference=Ersten} E-Mail für mich -- Löschen der {OrderReference=letzte} Eine -- Löschen der {Category=Rot} Die einen -- Die zweite Mail löschen -- Löschen der {PositionReference=Zweite} Eine -- Löschen der {Category=Ungelesene} E-mails -- Löschen Sie diese E-Mail -- Diese Nachricht dauerhaft löschen -- Löschen Sie, was ich gerade geschrieben habe -- Der E-Mail-Posteingang leer -- In den Papierkorb stecken -- Die E-Mail in den Papierkorb legen -- Die E-Mails aus diesem Aktenordner in den Papierkorb legen -- E-Mails entfernen mit {Category=Rot} Flaggen -- Entfernen Sie es aus meinem Posteingang -- Die E-Mail entfernen {SenderName=heiraten} -- Entfernen Sie die erhaltenen E-Mails {Date=Gestern} - - -## Forward -- Könnten Sie diese Botschaft an {ContactName=Ronald} Und {ContactName=Roy} -- Könnten Sie bitte diese E-Mail an meine {RelationshipName=Schwester} -- Alle weiterleiten {Attachment=Dateien} Von {SenderName=Sally} An {ContactName=Austin} -- Vorwärts, indem {Message=Wenn Sie Interesse haben} An {ContactName=Rebecca} -- Email vorwärts -- E-Mail an {RelationshipName=Freundin} -- E-Mails an {ContactName=Gabriel} -- Botschaft an {RelationshipName=Freundin} -- Die E-Mail von {SenderName=John @ @} An {ContactName=Michelle} indem {Message=Fyi} -- Die E-Mail von {SenderName=Melissa} An {ContactName=Peter} -- Die E-Mail an {RelationshipName=Vater} -- Weiterleiten der {OrderReference=letzte} Email an {ContactName=Susan} -- Weiterleiten Sie diese E-Mail -- Diese E-Mail an {ContactName=Eugene} Mit Tippen {Message=Was denkst du} -- Diese E-Mail an {ContactName=Magenbraun} Bitte -- Diese E-Mail an {ContactName=Joseph} -- leiten Sie diese E-Mail an partone dot parttwo at gmail dot com weiter -- Diese E-Mail an {ContactName=Patricia} -- Vorwärts {ContactName=Alan} {Time=Heute abend} -- Vorwärts {ContactName=Brian Potter} {Time=Heute abend} -- Vorwärts {ContactName=Deborah} Mit einer Botschaft, die besagt, dass {Message=Ich will das nicht} -- Vorwärts {ContactName=Dorothy} Mit Tippen {Message=Ich bin damit einverstanden} -- Vorwärts {RelationshipName=Mutter} -- Vorwärts zu meinen {RelationshipName=Chef} Und die {Attachment=Schedual file} -- Vorwärts partoneparttwo@gmail.com {Date=Nächster Montag} -- Vorwärts {ContactName=Thomas} Bitte -- Vorwärts {RelationshipName=Frau} indem {Message=ich liebe Sie} -- Bitte leiten Sie diese E-Mail an {ContactName=Albert} Mit Tippen {Message=Alles geht gut} -- Bitte leiten Sie diese E-Mail an partoneparttwo@163.com -- Bitte leiten Sie diese E-Mail an partoneparttwo@outlook.com -- Bitte leiten Sie diese Botschaft weiter -- Bitte weiterleiten an {ContactName=Benjamin} - - -## None -- 1 -- 2 -- 3 -- das {PositionReference=Ersten} Eine -- das {PositionReference=Zweite} Eine -- das {PositionReference=Dritte} Eine - - -## QueryLastText -- Können Sie mir sagen, {OrderReference=letzte} E-Mail erhalten -- Kommen Sie zum {OrderReference=letzte} -- Gehen Sie zum {OrderReference=letzte} Eine -- Ich möchte die {OrderReference=letzte} E-Mail -- {OrderReference=letzte} E-Mail -- Öffnen Sie die {OrderReference=letzte} E-Mail -- Öffnen Sie die {OrderReference=Neuesten} E-Mail bekam ich -- Bitte sagen Sie mir, wer mir eine E-Mail geschickt hat {OrderReference=letzte} -- Zeigt mir die {OrderReference=Neuesten} E-Mail -- Zeigen Sie die {OrderReference=letzte} E-Mail -- das {OrderReference=letzte} E-Mail -- Was hat {RelationshipName=Mutter} Nur sagen -- Was {ContactName=Eric watson} Nur gesagt -- Was {SenderName=Harry} {OrderReference=letzte} E-Mail gesagt -- Was {ContactName=Henry} Nur gesagt -- Was ist das {OrderReference=letzte} E-Mail erhalten {Date=Heute} -- Was ist das {OrderReference=Neuesten} E-Mail, die ich von {FromRelationshipName=Vater} -- Was war das {OrderReference=letzte} E-Mail -- Was war das {OrderReference=letzte} E-Mail, die ich bekommen habe {FromRelationshipName=Vater} -- Was war das {OrderReference=letzte} E-Mail, die ich bekommen habe {SenderName=Helen nach oben} -- Wer mailen mich {Time=Gerade jetzt} -- Wer hat mir eine E-Mail geschickt -- Der mir gerade eine E-Mail geschickt hat -- Wer hat mir eine E-Mail geschickt {OrderReference=letzte} -- Wer hat mir vor kurzem eine E-Mail geschickt -- Wer schickte mir die E-Mail schließlich {Date=Gestern} -- Wer hat mir gerade die Mail geschickt -- Wer mich textete -- Wer mich textete {Time=Gerade jetzt} -- Deser E-Mail gerade dann? -- Deser E-Mail {Time=jetzt} ? - - -## ReadAloud -- Können Sie meine E-Mails lesen -- Können Sie meine lesen {OrderReference=letzte} E-Mail -- Könnten Sie die E-Mail auf {EmailSubject=Wie man das neue Werkzeug benutzt} ? -- Lesen Sie bitte: {OrderReference=letzte} E-Mail -- Vorlesen Sie laut meine {Category=Neu} E-Mail -- Vorlesen Sie laut {EmailSubject=Weihnachtsfeier} E-Mail -- Lesen {SenderName=Darren} ' s mail on {EmailSubject=der Film} -- E-Mail lesen -- E-Mail lesen von {SenderName=Morgendämmerung} -- E-Mail lesen von {SenderName=Kat} -- E-Mail lesen von {FromRelationshipName=Mutter} -- E-Mail an mich lesen -- E-Mails lesen -- E-Mails lesen {SenderName=Ton} -- Lesen {PositionReference=Ersten} E-Mail in Link Box -- Lesen {PositionReference=Ersten} E-Mail im verlinkten Posteingang -- Lesen {Line=Google} Mail -- Lesen Sie es -- Lesen {OrderReference=letzte} E-Mail erhalten -- Lesen {OrderReference=letzte} E-Mails eintreffen -- Lesen {OrderReference=letzte} Mail -- Lesen {OrderReference=Neuesten} E-Mail -- Lesen {SenderName=Die Gnade der Erste Gnade verduguez} E-Mail -- Ich gelesen {SenderName=Dylan} E-Mail an {Date=Gestern} -- Ich gelesen {SenderName=Jessica} E-Mails auf {EmailSubject=Kleiderordnung für die Party} -- Ich lese mich {OrderReference=letzte} {Line=Hotmail} E-Mail -- Ich lese mich {OrderReference=Neuesten} E-mails -- Lesen Sie mir die Email -- Lesen Sie mir die E-Mail am {EmailSubject=Apple} -- Lesen Sie mir die E-Mail am {EmailSubject=Danksagung} -- Lesen Sie mir die E-Mail, die Sie an {Date=Danksagung} -- Lesen Sie mir die E-Mail mit dem Titel {EmailSubject=Frohes neues Jahr} -- Lesen Sie mir die E-Mails von {SenderName=Agatha} -- Lesen Sie mir die {OrderReference=letzte} E-Mail {SenderName=Claude} gesandt -- Lesen Sie mir die {OrderReference=letzte} E-Mails der {Time=Fünf Minute} -- Lesen Sie mir die {OrderReference=Neuesten} E-Mail -- Lesen Sie mir die {OrderReference=aktuell} E-Mail titelte {EmailSubject=Abcd} Von {SenderName=Jessica} -- Die meisten lesen {OrderReference=aktuell} E-Mail -- Lesen Sie meine E-Mail von {SenderName=Baby} -- Lesen Sie meine E-Mail von {SenderName=Hubby} -- Lesen Sie meine E-Mail von {SenderName=Tyler moffett} -- Lesen Sie meine E-Mail-Nachrichten -- Lesen Sie bitte meine E-Mail -- Lesen Sie meine E-Mail an mich -- Lesen Sie meine E-Mails -- Lesen Sie meine E-Mails von {SenderName=Fetthaltige} -- Lesen Sie meinen Posteingang -- Lesen Sie meine {OrderReference=letzte} E-Mail -- Lesen Sie meine {OrderReference=letzte} E-Mail an mich -- Lesen Sie meine {OrderReference=Neuesten} E-Mail -- Lesen Sie meine {Category=Neu} E-Mail -- Lesen Sie meine {Category=Neu} E-mails -- Lesen Sie meine Benachrichtigung -- Lesen Sie meine {EmailPlatform=Outlook} E-Mail -- Lesen Sie meine {OrderReference=aktuell} E-Mail -- Lesen Sie meine {OrderReference=aktuell} E-Mail bitte -- Lesen Sie meine {OrderReference=aktuell} E-Mail-Nachrichten -- Lesen Sie meine {OrderReference=aktuell} E-Mail an mich -- Lesen Sie meine {PositionReference=Zweite} E-Mail -- Lesen {Category=Neu} E-Mail -- Lesen {Category=Neu} E-Mail von {SenderName=David aber} -- Lesen {Category=Neu} Nachricht -- Lesen Sie {SenderName=Darren} ' S mail -- Lesen Sie die E-Mail von {SenderName=Liu} Über {EmailSubject=Transfer} -- Lesen Sie {SenderName=Münze} E-Mail über {EmailSubject=Apfelnachrichten} -- Lesen Sie bitte -- Lesen {OrderReference=aktuell} E-Mail -- Lesen Sie die Email -- Lesen Sie die Email {EmailSubject=Autoreparatur} -- Lesen Sie die {PositionReference=Ersten} E-Mail -- Lesen Sie die {PositionReference=Ersten} E-Mail in {Line=Hotmail} -- Lesen Sie die {OrderReference=letzte} E-Mail -- Lesen Sie die {OrderReference=letzte} E-Mail-Nachricht -- Lesen Sie die {OrderReference=Neuesten} E-Mail von {FromRelationshipName=Mutter} -- Lesen Sie die {OrderReference=Neuesten} E-Mail von {SenderName=Stähle Lippe} -- Lesen Sie die {OrderReference=Neuesten} E-Mail, die ich geschickt habe -- Lesen {Date=Heutigen} Mail -- Lesen {Date=Heute} ' S mail -- Lesen {Category=Ungelesene} E-Mail -- Lesen {Category=Ungelesene} Nachricht - - -## Reply -- Erstellen Sie eine Antwort auf die E-Mail, indem Sie sagen, {Message=Ps schicken mir das Bild wieder} -- E-Mail zurück -- E-Mail zurück {Message=Ich rufe dich zurück} -- Wie man auf eine E-Mail antwortet -- Eine Antwort mit {Message=Vielen Dank} -- Antwort -- Antwort per E-Mail {Message=Vielen Dank an die beste Grüße jun} -- Antwort mit {Message=ich liebe Sie} -- Antwort mit {Message=Ja} -- Antwort durch Tippen {Message=Hallo} -- Antwort {Message=Erforderlich} E-Mail -- Antwort, dass {Message=Ich bin beschäftigt} -- Antwort auf {ContactName=Edward} -- Antwort per E-Mail {Message=Ich bin jetzt beschäftigt} -- Antwort auf meine {OrderReference=letzte} E-Mail -- Antwort auf {ContactName=Susan} -- Antwort auf die E-Mail -- Antwort auf die {PositionReference=Ersten} Eine -- Antwort {Message=Wir sehen uns später} -- Antwort mit {Message=Hallo} -- Antwort {Message=Yee ha} -- Antwort {ContactName=Yee} {Message=Hallo} -- Antwort {Message=Ja Chef.} -- Reagieren {Message=I ' m sick i can ' t do it} -- Reaktion auf {ContactName=Lore Hund} -- Reaktion auf {ContactName=Nathan} -- Auf die E-Mail antworten, indem Sie sagen {Message=Ich bin heute beschäftigt} -- Rückgabe {ContactName=Barbara} Auf {Line=mobil} -- Rückgabe {ContactName=Die sibirischen Huskies} {Line=mobil} -- E-Mail zurücksenden -- Senden Sie die Antwort mit {Message=Ich weiß schon} - - -## SearchMessages -- Können Sie meine E-Mails durchsuchen -- E-Mails erkennen {SenderName=Betty} -- Die E-Mail mit Schlüsselwörtern erkennen {SearchTexts=Schönheit} -- Die E-Mail erkennen {SenderName=Lisa} -- Ich habe eine E-Mail von {SenderName=Tom} -- Ich habe E-Mails von {SenderName=Tom} -- Ich habe die E-Mail mit Stichwort {SearchTexts=Mittagessen} -- E-Mail von {SenderName=Neun} -- E-Mails enthalten {SearchTexts=Bank} -- Die E-Mails mit {SearchTexts=Algroithm} -- Hier finden Sie eine E-Mail über {EmailSubject=Neujahrsplanung} -- Hier finden Sie eine E-Mail von abc123@outlook.com -- Hier finden Sie eine E-Mail von {SenderName=Angela} -- Hier finden Sie eine E-Mail von {SenderName=Jay} Das enthält {SearchTexts=Halloween} -- Finden Sie eine E-Mail auf der {EmailSubject=Abendessen Reservierung} -- E-Mail finden mit dem Titel {EmailSubject=Neues Design} -- E-Mail mit Titel finden {EmailSubject=Produktionswerkzeuge} -- E-Mails von {FromRelationshipName=Mutter} -- E-Mails finden, die {SearchTexts=Malta} -- Finden Sie E-Mails mit {SearchTexts=Fortsetzen} -- Mails finden {EmailSubject=Empfohlenes Kursen} -- Liste der E-Mails {SearchTexts=Lustige Bilder} -- Suche nach einer E-Mail mit {SearchTexts=Hallo} -- E-Mails abfragen mit {SearchTexts=Rechnung} -- Suchen Sie eine E-Mail mit Betreff {EmailSubject=Hintergrundscreening} -- Suche {SearchTexts=Blah blah} In meinen E-Mails -- Suche E-Mail enthalten {SearchTexts=Outlook} -- E-Mail mit Schlüsselwörtern suchen {SearchTexts=Mittagessen} -- Suche nach E-Mails über {EmailSubject=Bootfahren} -- Suchmails enthalten {SearchTexts=Arbeitsgegenstände} -- Suche E-Mails enthält {SearchTexts=Coupons} -- Suche nach E-Mails von {SenderName=Mike} -- Suche {SenderName=Jensen} E-Mails -- Suchbegriffe {SearchTexts=Keywordone keywordtwo} In meinen E-Mails -- Suche {SearchTexts=Keywordsone keywordstwo} Aus dem Posteingang -- Meine E-Mails durchsuchen -- Suchtext mit Wörtern {SearchTexts=Mittagessen zusammen} -- Suchen Sie die E-Mail mit Stichworten {SearchTexts=Hallo} -- Suche in den E-Mails {SearchTexts=Microsoft} -- Suche in den E-Mails {SearchTexts=Geld} -- E-Mails enthalten Wörter " {SearchTexts=Zukunftsplan} " -- E-Mails anzeigen mit " {SearchTexts=Kreditkarte} " -- Zeigen Sie mir E-Mails von {FromRelationshipName=Freundin} -- Zeigen Sie mir E-Mails von {SenderName=Kelly chan} -- Zeigen Sie mir die E-Mail über {EmailSubject=Frühlingsfest} -- Zeigen Sie mir die E-Mail von {SenderName=Tom} Und filtert mit Wort {SearchTexts=Mittagessen} -- Zeigen Sie mir die E-Mail von {FromRelationshipName=Mutter} -- Sagen Sie mir die E-Mail von {SenderName=lucas wong} -- Sagen Sie mir die E-Mail mit Betreff {EmailSubject=Wochenbericht} - - -## SendEmail -- Neue E-Mails über {EmailSubject=Spanische Hausaufgaben} -- Neue Mail mit dem Titel erstellen {EmailSubject=Informationen zur Dringlichkeitssitzung} An {ContactName=Jonathan} -- E-Mail mit der Nachricht "fine, ok" -- E-Mail an meine {RelationshipName=Bruder} -- E-Mail an meine {Attachment=Präsentation} -- E-Mail an die {Attachment=Datei} An {ContactName=Henry mathew} -- Email an {ContactName=Alex cooper} Über {EmailSubject=Haha} Sagen {Message=Hallo} -- Email an {ContactName=Hartbeine} Und {ContactName=Hermine Granger} -- Email an {ContactName=Kim weiß} Über {EmailSubject=Die Blume} Sagen {Message=Schön} -- Email an {ContactName=Lawrence} Über {EmailSubject=Eröffnungsthema} -- Email an {ContactName=Nebelwasser} : {Message=Das Abendessen in der vergangenen Woche war großartig.} -- E-Mail an partoneparttwo@gmail.com -- Ich muss eine E-Mail über die {EmailSubject=Worte zum Lied} -- Eine neue E-Mail über {EmailSubject=Wettervorhersage} -- E-Mail für {Category=Zur Nachverfolgung} Und an {ContactName=Arthur} -- Neue E-Mail über {EmailSubject=Richtig gutes Gespräch} An {ContactName=Michelle} -- Neue E-Mail über {EmailSubject=Dokumente schreiben} -- Neue Email an {ContactName=Kimberly} Über {EmailSubject=Wingman} -- Senden Sie eine E-Mail an {ContactName=Leder wong} Über die {EmailSubject=Klavierkonzert} Sagen {Message=Es ist wunderbar} -- Senden Sie eine Mail an {ContactName=Daniel} -- Senden Sie eine neue E-Mail über {EmailSubject=Facebook} -- Senden Sie eine neue E-Mail über die {EmailSubject=Hockey Turnier} An {ContactName=Marie jane} , {ContactName=Joseph} Und {ContactName=John} -- Senden Sie eine neue E-Mail über die {EmailSubject=Problemlösung} An {ContactName=Andrea} , {ContactName=Angela} Und {ContactName=Ron} -- Senden Sie eine neue Email an {ContactName=Larry} Mit einem {Attachment=Datei} Angefügt -- Senden Sie eine neue Email an {ContactName=Nicholas} Und {ContactName=Jesse} Über {EmailSubject=Coupons} -- Senden Sie eine neue E-Mail an partonepartwopartthree@yahoo.com -- Senden Sie eine neue {Category=Hohe Bedeutung} Email an {ContactName=Jordanien} -- Senden Sie eine {Category=Lesebeleg} Email an {ContactName=Samuel} -- Senden {ContactName=Alexander} Eine {Category=Rottweil} E-Mail -- Senden Sie eine E-Mail -- Senden Sie eine E-Mail über {EmailSubject=Schwimmteampraxis} -- Senden Sie eine E-Mail über {EmailSubject=Testzustand} An {ContactName=Mark} -- Senden Sie eine E-Mail über die {EmailSubject=Fenster, das kaputt ist} -- Schicken Sie mir eine E-Mail -- Senden Sie eine E-Mail mit der Aufschrift {Category=Zur Nachverfolgung} An {ContactName=Jerry} -- Senden Sie eine E-Mail mit der Aufschrift {Category=Zur Nachverfolgung} An {ContactName=Christian} -- Senden Sie eine E-Mail mit einem {Category=Bang} An {ContactName=Amy} -- Senden Sie eine E-Mail an {ContactName=a.j.ron} Als {Category=Wichtig} -- Senden Sie eine E-Mail an {ContactName=Tischlerei} Über die {EmailSubject=Wanderreise} -- Senden Sie eine E-Mail an {ContactName=Harold} Und {ContactName=paul kappus} Über {EmailSubject=Teamessen} Sagen {Message=Das gleiche Team Mittagessen am Dienstag} -- Senden Sie eine E-Mail an {ContactName=Hartbeine} -- Senden Sie eine E-Mail an {ContactName=Jacqueline} Und {ContactName=Tianyu} Über die {EmailSubject=Testergebnis} -- Senden Sie eine E-Mail an {ContactName=Jesse klein} Sagen {Message=So lautet die Botschaft über Wochenendpläne} -- Senden Sie eine E-Mail an {ContactName=Larry} , {ContactName=Joseph} Und {ContactName=Billy larkson} -- Senden Sie eine E-Mail an {ContactName=Lilien-roth} Und abc123@microsoft.com -- Senden Sie eine E-Mail an lily@gmail.com -- Senden Sie eine E-Mail an {ContactName=Lesen} , {ContactName=Yue} Und {ContactName=Qiong} Über {EmailSubject=Finanzierung} -- Senden Sie eine E-Mail an {RelationshipName=Mutter} -- Senden Sie eine E-Mail an meine {RelationshipName=Bruder} -- Senden Sie eine E-Mail an {ContactName=Nathan} Mit einem {Category=Rottweil} -- Senden Sie eine E-Mail an partone_parttwo@microsoft.com -- Senden Sie eine E-Mail an {ContactName=Sean} Über {EmailSubject=Wochenendpläne} -- Senden Sie eine E-Mail an {ContactName=Zachary} Über {EmailSubject=Wir können die Dinge planen, gehen wir wandern} -- Senden Sie eine E-Mail {Date=Heute} -- Senden Sie eine E-Mail mit {Category=Lesebeleg} An {ContactName=Peter} -- Senden Sie eine {Category=Wichtig} Email an {ContactName=Olivia} -- Senden Sie eine {Category=Dringende} E-Mail -- Senden Sie eine {Category=Dringende} E-Mail von meiner {Line=Arbeitskonto} An {ContactName=Christian} -- Senden Sie eine {Category=Dringende} E-Mail von meiner {Line=Arbeit} Email an {ContactName=Jack} -- Senden und E-Mail über {EmailSubject=Schwimmteampraxis} -- Senden {ContactName=Angela} Ein E-Mail, der als {Category=Hohe Priorität} -- Senden {ContactName=Billy} Eine E-Mail mit einem {Category=Rottweil} -- E-Mail über {EmailSubject=Hausaufgabenplan} An {ContactName=Raymond} Und {ContactName=Philip} -- E-Mail gekennzeichnet {Category=Priorität} An {ContactName=Yun-sim} Und {ContactName=Essen} -- E-Mail an {ContactName=Eine} Und {ContactName=Tian} -- E-Mail an {ContactName=Hannah} Sagen {Message=Test} -- E-Mail an {ContactName=Heather} Über {EmailSubject=Auto} -- E-Mail an {ContactName=Jiayi} {Date=Heute} -- E-Mail an {ContactName=Kai Xu} , {ContactName=Vermischung} Und meine {RelationshipName=Mutter} -- E-Mail an {ContactName=Louis} Und markieren {Category=Wichtig} -- E-Mail an partone.parttwo@outlook.com senden -- Senden {Category=Wichtig} Email an {ContactName=Evelyn} Und {ContactName=Gary} -- Senden {ContactName=Jacqueline} E-Mail mit {Category=Geringste Priorität} -- Senden {Attachment=Große Dateien} Per E-Mail -- Senden {ContactName=Lori} Eine neue {Category=Gekennzeichnet} E-Mail -- Mail an {ContactName=Dorothy} -- Senden Sie meine {Attachment=Haushälterin doc} An {ContactName=Jeffrey} -- Senden Sie meine {Attachment=Zahlung visio Diagramm} An {ContactName=Ronald} -- Neue E-Mail an {ContactName=Christian} Und markieren {Category=Hohe Bedeutung} -- E-Mail senden -- E-Mail senden {Time=jetzt} -- Schicken Sie das {Attachment=Dokument} E-Mail -- Senden {ContactName=Thomas} Email -- E-Mail setzen {Date=Heute} -- Starte eine neue E-Mail über {EmailSubject=Heiratsberater-Termine} -- Starten Sie eine neue E-Mail von {SenderName=Tracy} Sagen {Message=Hier ist mein Lebenslauf} -- Beginnen Sie eine neue E-Mail, in der es heißt {Message=Gehen Sie in den Park} -- Starte eine neue E-Mail an {ContactName=Aaron} Über {EmailSubject=Schlafen heute Abend} -- Starter Sie eine E-Mail an {ContactName=Jason} Über {EmailSubject=Sprechen} -- Neue E-Mail starten {EmailSubject=Taco blog} An {ContactName=Nicole} Und {ContactName=Emily} -- Neue E-Mail starten {RelationshipName=Freunde} Über die {EmailSubject=Club} -- Neue Mail-Betreff {EmailSubject=Niganischer Prinz} -- Starte eine neue E-Mail an {ContactName=Michelle} Über {EmailSubject=Baseball anschauen} -- Die neue E-Mail ist {Category=Hohe Priorität} Das wird an {ContactName=Jacob} -- Senden Sie eine markierte {Category=Nicht dringend} Email an {ContactName=James} -- Schreiben Sie eine E-Mail über die {EmailSubject=Spendenaktion} -- Schreiben Sie eine E-Mail, welcher Titel ist {EmailSubject=Hallo} Und Kontext ist {Message=Treffen wir uns} -- Schreiben Sie an {Category=Dringende} Email an {ContactName=Bobby} -- Schreiben Sie Email -- E-Mail an {RelationshipName=Mutter} Thema ist {EmailSubject=Babysitten} - - -## ShowNext -- Gibt es eine {Category=Ungelesene} Nachrichten? Zeigen {OrderReference=nächster} -- Weiter, mir mehr Mails zeigen -- Gehe zu {OrderReference=nächster} Mail -- Gehen Sie zum {OrderReference=nächster} Seite -- Vorankommen -- Weiter gehen {OrderReference=nächster} Mail per Jason -- {OrderReference=nächster} E-Mail -- {OrderReference=nächster} {Category=Ungelesene} E-Mail -- {OrderReference=nächster} {Category=Ungelesene} Eine -- Zeigt mir die {OrderReference=nächster} -- Zeigt mir die {OrderReference=nächster} Fünf Mails -- Zeigen {OrderReference=nächster} E-Mail -- Zeigen {OrderReference=nächster} {Category=Ungelesene} -- Zeigen Sie die {OrderReference=nächster} E-Mail von meiner {FromRelationshipName=Chef} -- Zeigen Sie die {OrderReference=nächster} E-Mails von wong -- Zeigen Sie die {OrderReference=nächster} Nachrichten -- das {OrderReference=nächster} E-Mail -- das {OrderReference=nächster} {Category=Wichtig} Nachricht - - -## ShowPrevious -- Zurück zum {OrderReference=letzte} Eine von {SenderName=Apple} -- Bringen Sie die {OrderReference=Vorherigen} Einer, ich will es noch einmal lesen -- Gehe zu {OrderReference=Vorherigen} Mails -- {OrderReference=Vorherigen} E-Mail -- {OrderReference=Vorherigen} Einer bitte -- Demo {OrderReference=Vorherigen} E-Mail von {SenderName=Jack} -- Zeigt mir die {OrderReference=letzte} Drei Mails -- Zeigt mir die {OrderReference=Vorherigen} E-Mail -- Zeigen {OrderReference=Vorherigen} In {Category=Rot} Kategorie -- Zeigen {OrderReference=Vorherigen} Eine im Posteingang -- Zeigen Sie die {OrderReference=Vorherigen} E-Mail von meiner {SenderName=Mentor} -- Zeigen Sie die {OrderReference=Vorherigen} Eine -- das {OrderReference=Vorherigen} E-Mail -- Was ist das {OrderReference=Vorherigen} E-Mail - - -> # Entity definitions - -$Attachment:simple - -$Category:simple - -$ContactName:simple - -$Date:simple - -$EmailPlatform: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:number - -$PREBUILT:ordinal - - -> # Phrase list definitions - - -> # List entities - - diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/en/email.lu b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/en/email.lu deleted file mode 100644 index 756ea5d67e..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/en/email.lu +++ /dev/null @@ -1,691 +0,0 @@ -> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Thu Feb 28 2019 16:37:09 GMT+0800 (China Standard Time) - -> ! Source LUIS JSON file: email.json - -> ! Source QnA TSV file: Not Specified - -> ! Source QnA Alterations file: Not Specified - - -> # 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 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 - - -## 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 {EmailPlatform=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 {EmailPlatform=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 {EmailPlatform=outlook} has {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 {EmailPlatform=outlook} -- show {OrderReference=latest} emails -- show my emails -- 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 - - -## 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 -- 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 received {Time=tonight} -- delete the email from my {Line=hotmail} account -- delete the {PositionReference=first} email for me -- delete the {OrderReference=last} one -- 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 with {Category=red} flags -- remove it from my inbox -- remove the email from {SenderName=mary} -- remove the emails received {Date=yesterday} - - -## 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=schedual 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=helen 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 verduguez} 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 moffett} -- read my email messages -- read my email please -- read my email to me -- read my emails -- read my emails from {SenderName=fatty} -- 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 {EmailPlatform=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 - - -## 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} - - -## 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=tisa} -- 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 {FromRelationshipName=girlfriend} -- show me emails from {SenderName=kelly chan} -- 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=lucas wong} -- tell me the email with subject {EmailSubject=weekly report} - - -## 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=alex cooper} about {EmailSubject=haha} saying {Message=hello} -- email to {ContactName=harry potter} and {ContactName=hermione granger} -- email to {ContactName=kim white} about {EmailSubject=that flower} saying {Message=beautiful} -- 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 -- 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=paul kappus} about {EmailSubject=team lunch} saying {Message=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=jesse 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 lily@gmail.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_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 new mail subject of {EmailSubject=nigerian prince} -- 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} - - -## ShowNext -- are there any {Category=unread} messages? show {OrderReference=next} -- 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 -- {OrderReference=next} email -- {OrderReference=next} {Category=unread} email -- {OrderReference=next} {Category=unread} one -- 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 - - -## 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 -- {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 {OrderReference=previous} email -- show {OrderReference=previous} in {Category=red} category -- show {OrderReference=previous} one in inbox -- show the {OrderReference=previous} email from my {SenderName=mentor} -- show the {OrderReference=previous} one -- the {OrderReference=previous} email -- what is the {OrderReference=previous} email - - -> # Entity definitions - -$Attachment:simple - -$Category:simple - -$ContactName:simple - -$Date:simple - -$EmailPlatform: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:number - -$PREBUILT:ordinal - - -> # Phrase list definitions - - -> # List entities - diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/es/email.lu b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/es/email.lu deleted file mode 100644 index 9ac4b1f2a7..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/es/email.lu +++ /dev/null @@ -1,687 +0,0 @@ -> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Thu Feb 28 2019 16:37:09 GMT+0800 (China Standard Time) - -> ! Source LUIS JSON file: email.json - -> ! Source QnA TSV file: Not Specified - -> ! Source QnA Alterations file: Not Specified - - -> # Intent definitions - -## AddFlag -- Añadir una bandera -- Añadir una bandera por favor -- agregar una marca a la {OrderReference=Última} Correo electrónico -- agregar una marca a este correo electrónico -- Añadir bandera -- Añadir bandera en él -- Añadir bandera a ella -- Añadir bandera al correo electrónico {SenderName=John} acaba de enviar a mí -- Añadir {Category=Bandera} a este correo electrónico -- Agregar indicador a este mensaje -- Bandera -- bandera que -- bandera en -- marcar el correo electrónico actual -- marcar el correo electrónico -- marcar el correo electrónico desde {SenderName=Davis} -- marcar este correo electrónico -- marcar este correo electrónico como {Category=Importante} para mí -- Quiero añadir una bandera -- Quiero añadir una bandera en este correo electrónico -- hacerlo marcado -- marcar como bandera -- marcar el correo electrónico {Category=Marcado} -- poner una bandera -- poner una bandera en el nuevo correo electrónico -- el correo electrónico de {SenderName=Thomas} debe ser marcada -- el correo electrónico a {ContactName=Ruth} debe ser marcada -- Este correo electrónico necesita ser marcado -- Este correo electrónico debe ser marcado -- Gire la bandera en - - -## AddMore -- Agregar un {Attachment=Archivo} al correo electrónico -- Agregar un {Attachment=Imagen} -- Añadir un asunto -- agregar otra línea al mensaje -- Añadir {Message=¿disfrutaste todo el programa} -- Añadir {Attachment=Archivo} a correo electrónico -- Añadir más -- Añadir más y cambiar el mensaje -- agregar más detalles a él -- Añadir más {Message=no te olvides de traer cerveza} -- agregar más mensaje -- Añadir más por favor -- Añadir más texto -- Añadir más texto por favor -- Añadir más al correo electrónico -- agregar más al cuerpo del correo electrónico -- Añadir más a ella -- Añadir más al mensaje -- Añadir más a {ContactName=Roy} correo electrónico -- Añadir más al texto -- Añadir más a la {OrderReference=Última} Correo electrónico -- Añadir {Attachment=Foto} -- Añadir un poco más -- Añadir algo -- agregar al cuerpo del correo electrónico -- Añadir, por cierto, cuál es el plan de paso siguiente -- Añadir: {Message=Llámame esta noche después del trabajo} -- anexar un {Attachment=archivo adjunto} a este correo electrónico -- adjuntar {Attachment=Archivo} -- Puedo añadir más al correo electrónico -- Puedo añadir más al mensaje -- Editar correo electrónico para que pueda escribir un mensaje adicional -- no he terminado todavía. necesito añadir más detalles -- me olvidé de agregar una parte importante a ese correo electrónico a {ContactName=James} . por favor, configurar para editar -- necesito añadir líneas adicionales -- necesito añadir más contenido -- necesito agregar más mensaje -- necesito añadir más texto -- necesito añadir más al correo electrónico -- necesito añadir más al mensaje de correo electrónico que estoy enviando a {ContactName=Vincent} -- necesito agregar algo más a mi correo electrónico {ContactName=Cheryl} -- necesito agregar algo más a ese correo electrónico {ContactName=Mujer} antes de que se envíe -- Quiero añadir más el correo electrónico -- deseo añadir más al mensaje -- me gustaría añadir más al correo electrónico -- me gustaría añadir más al mensaje de correo electrónico -- me gustaría abrir una nueva línea -- me gustaría añadir un poco más al correo electrónico. -- me gustaría añadir un poco más al mensaje -- insertar más líneas para mí por favor -- insertar más texto en mi correo electrónico -- ¿está bien si agrego más al correo electrónico? -- no está completo, necesita más contenido -- más texto -- necesidad de añadir información {OrderReference=Anterior} Correo electrónico -- OK, necesito añadir algunas cosas a ese -- por favor agregue {Message=fue terrible} -- por favor agregue más -- por favor agregue, {Message=por favor, háme saber lo que puedo traer. yo estaría encantado de hacer un plato de acompañamiento o postre} -- poner algunas líneas adicionales a este mensaje -- espera, necesito escribir más -- escribir más - - -## CancelMessages -- cancelar eliminación -- puede cancelarlo -- cancelar correo electrónico -- cancelar correo electrónico a {ContactName=Natalie} -- Cancelar mensaje -- cancelar mi correo electrónico a {ContactName=Jane} -- cancelar la búsqueda de los mensajes -- cancelar el correo electrónico -- cancelar el correo electrónico a mi {RelationshipName=Hermana} -- cancelar el correo -- cancelar el mensaje -- cancelar este correo electrónico -- cancelar este mensaje -- cancelar este proceso de envío -- Don ' t leer -- Don ' t leerlo -- Don ' t enviar el correo electrónico -- no correo electrónico -- no correo electrónico a su -- no leas el email -- no leas el mensaje -- no enviar -- no enviarlo -- no enviar ese correo electrónico -- no enviar este correo electrónico -- no me muestres -- Salida -- olvidar el correo electrónico -- Quiero que cancele el correo electrónico -- ninguno de ellos -- no importa cancelar el correo -- no importa cancelar el mensaje -- no importa, olvídate del correo -- Nevermind cancelar -- no cancelarlo, no quiero enviar el correo -- no no enviar -- no no lo envíe -- no sólo cancelar el correo electrónico -- no, no quiero enviar este mensaje -- no, no, cancela la lectura -- bien cancelar el envío del correo -- salir del envío -- detener mensaje -- dejar de leer - - -## CheckMessages -- Cualquier {Category=Nuevo} Correo electrónico -- Cualquier {Category=Nuevo} correo electrónico disponible -- Cualquier {Category=Nuevo} Correo electrónico {Time=Ahora} -- Cualquier {Category=Nuevo} Mensaje {Time=Ahora} -- Comprobar correo electrónico -- cheque correo electrónico por favor -- revisar mi correo electrónico por favor -- revisar mis emails -- comprobar mi {Line=Gmail} -- comprobar mi bandeja de entrada -- comprobar mi buzón de correo -- comprobar mi mensaje -- Comprobar {EmailPlatform=Outlook} Por favor -- consultar correo electrónico -- Comprobar mensajes -- ¿podría por favor comprobar mis correos electrónicos -- podría por favor comprobar mi bandeja de entrada -- ¿podría por favor comprobar mis mensajes -- puedo obtener nuevo correo electrónico -- ¿tengo alguna {Category=Nuevo} Correo -- ¿tengo {Category=Nuevo} Correo electrónico -- ¿tengo {Category=Nuevo} Correo electrónico {Time=Ahora} -- ¿tengo {Category=Nuevo} Mensaje -- ¿recibo {Category=Nuevo} Correo electrónico -- ¿recibo {Category=Nuevo} correo en {EmailPlatform=Outlook} ? -- ¿recibo {Category=Nuevo} Mensaje -- ¿alguien me envía correo electrónico a mí sólo entonces -- ¿alguien me envía un mensaje {Time=sólo entonces} -- hace mi {EmailPlatform=Outlook} tiene {Category=Nuevo} Correo electrónico -- Quiero comprobar mis correos electrónicos -- Quiero comprobar mi bandeja de entrada -- me gustaría comprobar mi bandeja de entrada -- ¿hay nuevo correo electrónico -- por favor revisa mis emails -- por favor revise mi bandeja de entrada -- por favor revise mi {EmailPlatform=Outlook} -- Mostrar {OrderReference=Últimos} Correos electrónicos -- Mostrar mis emails -- si consigo {Category=Nuevo} Correo electrónico -- si consigo {Category=Nuevo} Mensaje -- Si tengo {Category=Nuevo} Correo electrónico -- Si tengo {Category=Nuevo} Mensaje -- Si recibo nuevo correo electrónico - - -## ConfirmMessages -- "bien, envíalo" -- "claro, adelante" -- "sí, puedes" -- bien, solo manda el mensaje -- correcto, por favor envíalo. -- Confirmo que quiero enviar este correo electrónico -- no hay problema, adelante enviar el correo -- por supuesto, simplemente elimine el correo -- OK enviar el correo a {ContactName=Puede} -- OK, bueno para mí, envíalo por favor -- OK, bien, solo envíalo -- Bien -- bien enviarlo -- bien, envíalo ahora -- perfecto gracias -- derecho, envíalo por favor -- sí a la derecha, enviar a {ContactName=Alex} -- sí, es correcto -- sí que es correcto -- sí, envíalo - - -## Delete -- puede ayudarme a eliminarlo -- borrar mi bandeja de entrada -- eliminar todos los correos electrónicos recibidos {Time=Esta noche} -- eliminar el correo electrónico de mi {Line=Hotmail} Cuenta -- eliminar el {PositionReference=Primero} correo electrónico para mí -- eliminar el {OrderReference=Última} Una -- eliminar el {Category=Rojo} los -- eliminar el segundo correo -- eliminar el {PositionReference=Segundo} Una -- eliminar el {Category=no leídos} Correos electrónicos -- eliminar este correo electrónico -- eliminar este mensaje permanentemente -- eliminar lo que acabo de escribir -- vaciar la bandeja de entrada de correo electrónico -- ponerlo en la papelera de reciclaje -- poner el correo electrónico en la papelera de reciclaje -- poner el correo electrónico a la papelera -- poner los correos electrónicos de esta carpeta de archivos a la papelera -- eliminar correos electrónicos con {Category=Rojo} Banderas -- eliminarlo de mi bandeja de entrada -- eliminar el correo electrónico de {SenderName=María} -- eliminar los correos electrónicos recibidos {Date=Ayer} - - -## Forward -- podría reenviar este mensaje a {ContactName=Ronald} Y {ContactName=Roy} -- podría por favor reenviar este correo electrónico a mi {RelationshipName=Hermana} -- reenviar todos los {Attachment=Archivos} De {SenderName=Sally} Para {ContactName=Austin} -- adelante diciendo {Message=Si usted interesa} Para {ContactName=Rebecca} -- reenviar correo electrónico -- reenviar correo electrónico a {RelationshipName=Novia} -- reenviar correos electrónicos a {ContactName=Gabriel} -- reenviar mensaje a {RelationshipName=Novia} -- reenviar el correo electrónico desde {SenderName=John Smith} Para {ContactName=Michelle} diciendo {Message=Fyi} -- reenviar el correo electrónico desde {SenderName=Melissa} Para {ContactName=Peter} -- reenviar el correo electrónico a {RelationshipName=Papá} -- reenviar el {OrderReference=Última} correo electrónico a {ContactName=Susan} -- reenviar este correo electrónico -- reenviar este correo electrónico a {ContactName=Eugene} escribiendo {Message=Qué te parece} -- reenviar este correo electrónico a {ContactName=Gary Brown} Por favor -- reenviar este correo electrónico a {ContactName=joseph} -- reenviar este correo electrónico a partone DOT parttwo en gmail dot com -- reenviar este correo electrónico a {ContactName=Patricia} -- reenviar a {ContactName=Alan} {Time=Esta noche} -- reenviar a {ContactName=Brian Potter} {Time=Esta noche} -- reenviar a {ContactName=Deborah} con un mensaje diciendo que {Message=no quiero que} -- reenviar a {ContactName=Dorothy} escribiendo {Message=Estoy de acuerdo con lo} -- reenviar a {RelationshipName=Mamá} -- adelante a mi {RelationshipName=Jefe} y fije el {Attachment=archivo horario} -- reenviar a partoneparttwo@gmail.com {Date=el próximo lunes} -- reenviar a {ContactName=Thomas} Por favor -- reenviar a {RelationshipName=Esposa} diciendo {Message=Te quiero} -- Envíe este correo electrónico a {ContactName=Albert} escribiendo {Message=todo va bien} -- Envíe por favor este email a partoneparttwo@163.com -- Envíe por favor este email a partoneparttwo@outlook.com -- Envíe por favor este mensaje -- por favor remita a {ContactName=Benjamin} - - -## None -- 1 -- 2 -- 3 -- el {PositionReference=Primero} Una -- el {PositionReference=Segundo} Una -- el {PositionReference=Tercero} Una - - -## QueryLastText -- ¿me puede decir la {OrderReference=Última} correo electrónico que recibí -- llegar a la {OrderReference=Última} -- ir a la {OrderReference=Última} Una -- quiero ver el {OrderReference=Última} Correo electrónico -- {OrderReference=Última} Correo electrónico -- abrir el {OrderReference=Última} Correo electrónico -- abrir el {OrderReference=Última} correo electrónico que tengo -- por favor dígame quién me envió un correo electrónico {OrderReference=Última} -- Muéstrame el {OrderReference=Última} Correo electrónico -- Muéstrame el {OrderReference=Nuevo} Correo electrónico -- Mostrar el {OrderReference=Última} Correo electrónico -- el {OrderReference=Última} Correo electrónico -- lo que hizo {RelationshipName=Mamá} sólo decir -- Qué {ContactName=Eric Watson} acaba de decir -- Qué {SenderName=Harry} {OrderReference=Última} correo electrónico, dijo -- Qué {ContactName=Henry} acaba de decir -- ¿Cuál es el {OrderReference=Última} correo electrónico que recibí {Date=Hoy} -- ¿Cuál es el {OrderReference=Última} correo electrónico que recibí de {FromRelationshipName=Papá} -- lo que era el {OrderReference=Última} Correo electrónico -- lo que era el {OrderReference=Última} correo electrónico que recibí de {FromRelationshipName=Papá} -- lo que era el {OrderReference=Última} correo electrónico que recibí de {SenderName=Helen Edwards} -- que me envíe un correo electrónico {Time=justo ahora} -- que me envió un correo electrónico -- que me envió un correo electrónico justo ahora -- que me envió un correo electrónico {OrderReference=Última} -- que recientemente me envió un correo electrónico -- que me envió el correo electrónico por último {Date=Ayer} -- que me envió el correo justo ahora -- que me mandaron un mensaje -- que me mandaron un mensaje {Time=justo ahora} -- cuyo correo electrónico justo entonces? -- cuyo correo electrónico {Time=Ahora} ? - - -## ReadAloud -- puede leer mis correos electrónicos -- ¿Puedes leer mi {OrderReference=Última} Correo electrónico -- podría leer el correo electrónico en {EmailSubject=Cómo utilizar la nueva herramienta} ? -- por favor lea mi {OrderReference=Última} Correo electrónico -- leer en voz alta mi {Category=Nuevo} Correo electrónico -- leer en voz alta el {EmailSubject=Fiesta de Navidad} Correo electrónico -- Leer {SenderName=Darren} correo de {EmailSubject=la película} -- leer correo electrónico -- leer el correo electrónico de {SenderName=Amanecer} -- leer el correo electrónico de {SenderName=Kat} -- leer el correo electrónico de {FromRelationshipName=Mamá} -- leer correo electrónico a mí -- leer correos electrónicos -- leer correos electrónicos de {SenderName=Arcilla} -- Leer {PositionReference=Primero} correo electrónico en el cuadro de enlace -- Leer {PositionReference=Primero} correo electrónico en la bandeja de entrada vinculada -- Leer {Line=Google} Correo -- Léelo -- Leer {OrderReference=Última} correo electrónico recibido -- Leer {OrderReference=Última} correos electrónicos entrantes -- Leer {OrderReference=Última} Correo -- Leer {OrderReference=Últimos} Correo electrónico -- Leer {SenderName=Maria Grace Verduguez} Correo electrónico -- Read Me {SenderName=Dylan} correo electrónico enviado en {Date=Ayer} -- Read Me {SenderName=Jessica} correo electrónico en {EmailSubject=código de vestimenta para la fiesta} -- Léeme mi {OrderReference=Última} {Line=Hotmail} Correo electrónico -- Léeme mi {OrderReference=Últimos} Correos electrónicos -- Léeme el correo electrónico -- Léeme el correo electrónico en {EmailSubject=manzana} -- Léeme el correo electrónico en {EmailSubject=día de acción de gracias} -- leer me el correo electrónico enviado en {Date=día de acción de gracias} -- Léeme el email titulado {EmailSubject=Feliz Año Nuevo} -- leer me los correos electrónicos de {SenderName=Agatha} -- Léeme el {OrderReference=Última} Correo electrónico {SenderName=Claude} Enviado -- Léeme el {OrderReference=Última} correos electrónicos de la {Time=Cinco minutos} -- Léeme el {OrderReference=Nuevo} Correo electrónico -- Léeme el {OrderReference=Reciente} correo electrónico titulado {EmailSubject=Abcd} De {SenderName=Jessica} -- leer más {OrderReference=Reciente} Correo electrónico -- leer mi correo electrónico de {SenderName=Bebé} -- leer mi correo electrónico de {SenderName=Marido} -- leer mi correo electrónico de {SenderName=Tyler Moffett} -- leer mis mensajes de correo electrónico -- leer mi correo electrónico por favor -- leer mi correo electrónico a mí -- leer mis emails -- leer mis emails de {SenderName=Grasos} -- leer mi bandeja de entrada -- leer mi {OrderReference=Última} Correo electrónico -- leer mi {OrderReference=Última} correo electrónico a mí -- leer mi {OrderReference=más reciente} Correo electrónico -- leer mi {Category=Nuevo} Correo electrónico -- leer mi {Category=Nuevo} Correos electrónicos -- leer mi notificación -- leer mi {EmailPlatform=Outlook} Correo electrónico -- leer mi {OrderReference=Reciente} Correo electrónico -- leer mi {OrderReference=Reciente} mensaje de correo electrónico por favor -- leer mi {OrderReference=Reciente} mensajes de correo electrónico -- leer mi {OrderReference=Reciente} correo electrónico a mí -- leer mi {PositionReference=Segundo} Correo electrónico -- Leer {Category=Nuevo} Correo electrónico -- Leer {Category=Nuevo} correo electrónico de {SenderName=David, pero} -- Leer {Category=Nuevo} Mensaje -- leer {SenderName=Darren} correo de -- leer el correo electrónico de {SenderName=Liu} acerca de {EmailSubject=Transferencia} -- leer {SenderName=Moneda} correo electrónico sobre {EmailSubject=Noticias de Apple} -- leer por favor -- Leer {OrderReference=Reciente} Correo electrónico -- leer el correo electrónico -- leer el correo electrónico en {EmailSubject=reparación de automóviles} -- leer el {PositionReference=Primero} Correo electrónico -- leer el {PositionReference=Primero} correo electrónico en {Line=Hotmail} -- leer el {OrderReference=Última} Correo electrónico -- leer el {OrderReference=Última} mensaje de correo electrónico -- leer el {OrderReference=Últimos} correo electrónico de {FromRelationshipName=Mamá} -- leer el {OrderReference=Últimos} correo electrónico de {SenderName=Steve labio} -- leer el {OrderReference=Últimos} correo electrónico que envié -- Leer {Date=Hoy} Correo -- Leer {Date=Hoy} correo de -- Leer {Category=no leídos} Correo electrónico -- Leer {Category=no leídos} Mensaje - - -## Reply -- crear una respuesta al correo electrónico diciendo {Message=pls me envían el cuadro otra vez} -- correo electrónico de nuevo -- correo electrónico de nuevo {Message=Te vuelvo a marcar} -- Cómo responder a un correo electrónico -- hacer una respuesta con {Message=Muchas gracias} -- Respuesta -- responder por correo electrónico {Message=Gracias mucho mejor saludos Jun} -- responder diciendo {Message=Te quiero} -- responder diciendo {Message=Sí} -- responder escribiendo {Message=Hola} -- Respuesta {Message=Obligatorio} a un correo electrónico -- responder que {Message=estoy ocupado} -- responder a {ContactName=Edward} -- responder a correo electrónico {Message=estoy ocupado ahora} -- responder a mi {OrderReference=Última} Correo electrónico -- responder a {ContactName=Susan} -- responder al correo electrónico -- responder a la {PositionReference=Primero} Una -- Respuesta {Message=nos vemos más tarde} -- responder con {Message=Hola} -- Respuesta {Message=Yee ha} -- Respuesta {ContactName=Yee} {Message=Hola} -- Respuesta {Message=sí, jefe.} -- Responder {Message=i ' m enfermo no puedo hacerlo} -- responder a {ContactName=Lore Hound} -- responder a {ContactName=Nathan} -- responder al correo electrónico diciendo {Message=estoy ocupado hoy} -- devolución {ContactName=Barbara} En {Line=Móvil} -- devolución {ContactName=Huskies siberianos} {Line=Móvil} -- enviar correo electrónico de nuevo -- enviar la respuesta con {Message=Yo ya sé} - - -## SearchMessages -- puede buscar mis correos electrónicos -- detectar correos electrónicos de {SenderName=Betty} -- detectar el correo electrónico que contiene la palabra clave {SearchTexts=Belleza} -- detectar el correo electrónico de {SenderName=Lisa} -- ¿me llegó cualquier correo electrónico de {SenderName=Tom} -- me hizo recibir correos electrónicos de {SenderName=Tom} -- ¿me llegó el correo electrónico que contiene la palabra clave {SearchTexts=Almuerzo} -- correo electrónico enviado desde {SenderName=Nueve} -- correos electrónicos contiene {SearchTexts=Banco} -- enumerar los correos electrónicos con {SearchTexts=algroithm} -- encontrar un correo electrónico sobre {EmailSubject=Planificación de año nuevo} -- encontrar un correo electrónico de ABC123@outlook.com -- encontrar un correo electrónico de {SenderName=Angela} -- encontrar un correo electrónico de {SenderName=Jay} que contiene {SearchTexts=Víspera de Todos los Santos} -- encontrar un correo electrónico en el {EmailSubject=reservación de la cena} -- Buscar correo electrónico titulado {EmailSubject=nuevo diseño} -- Buscar correo electrónico con el título {EmailSubject=herramientas de producción} -- encontrar correos electrónicos de {FromRelationshipName=Mamá} -- encontrar correos electrónicos que contengan {SearchTexts=Malta} -- encontrar correos electrónicos con {SearchTexts=Reanudar} -- encontrar mails titulados {EmailSubject=cursos recomendados} -- lista de los correos electrónicos contienen {SearchTexts=imagen divertida} -- buscando un correo electrónico con {SearchTexts=Hola} -- consultar correos electrónicos con {SearchTexts=factura} -- buscar un correo electrónico con el asunto {EmailSubject=selección de antecedentes} -- Búsqueda {SearchTexts=bla bla} en mis emails -- correo electrónico de búsqueda contienen {SearchTexts=Outlook} -- Buscar correo electrónico con palabras clave {SearchTexts=Almuerzo} -- buscar correos electrónicos sobre {EmailSubject=Navegación} -- los correos electrónicos de búsqueda contienen {SearchTexts=elementos de trabajo} -- correos electrónicos de búsqueda contiene {SearchTexts=Cupones} -- buscar correos electrónicos desde {SenderName=Mike} -- Búsqueda {SenderName=Jensen} correos electrónicos de -- buscar palabras clave {SearchTexts=keywordone keywordtwo} en mis emails -- Búsqueda {SearchTexts=keywordsone keywordstwo} de la bandeja de entrada -- buscar mis emails -- buscar texto con palabras {SearchTexts=almuerzo juntos} -- buscar el correo electrónico con palabras clave {SearchTexts=Hola} -- buscar los correos electrónicos contiene {SearchTexts=Microsoft} -- buscar los correos electrónicos contiene {SearchTexts=Dinero} -- Mostrar correos electrónicos contienen palabras " {SearchTexts=Plan futuro} " -- Mostrar correos electrónicos con " {SearchTexts=tarjeta de crédito} " -- mostrarme emails de {FromRelationshipName=Novia} -- mostrarme emails de {SenderName=Kelly Chan} -- Muéstrame el correo electrónico sobre {EmailSubject=Festival de primavera} -- Muéstrame el correo electrónico de {SenderName=Tom} y filtrar con palabra {SearchTexts=Almuerzo} -- mostrarme el email enviado desde {FromRelationshipName=Mamá} -- dime el correo electrónico de {SenderName=Lucas Wong} -- dime el correo con el tema {EmailSubject=Informe semanal} - - -## SendEmail -- redactar nuevo correo electrónico sobre {EmailSubject=deberes en Español} -- crear nuevo correo titulado {EmailSubject=información urgente de la reunión} Para {ContactName=Jonathan} -- enviar por correo electrónico el mensaje "bien, OK" -- correo electrónico a mi {RelationshipName=Hermano} -- correo electrónico a mi {Attachment=Presentación} -- enviar por correo electrónico el {Attachment=Archivo} Para {ContactName=Henry Mathew} -- correo electrónico a {ContactName=Alex Cooper} acerca de {EmailSubject=Jaja} Diciendo {Message=Hola} -- correo electrónico a {ContactName=Harry Potter} Y {ContactName=Hermione Granger} -- correo electrónico a {ContactName=Kim blanco} acerca de {EmailSubject=esa flor} Diciendo {Message=Hermosa} -- correo electrónico a {ContactName=Lawrence} acerca de {EmailSubject=tema de apertura} -- correo electrónico a {ContactName=Mike Waters} : {Message=Mike, que la cena de la semana pasada fue espléndido.} -- correo electrónico a partoneparttwo@gmail.com -- Necesito enviar un correo electrónico sobre el {EmailSubject=palabras a una canción} -- hacer un nuevo correo electrónico sobre {EmailSubject=pronóstico del tiempo} -- marcar correo electrónico para {Category=Sigue} y enviar a {ContactName=Arthur} -- nuevo correo electrónico sobre {EmailSubject=muy buena charla} Para {ContactName=Michelle} -- nuevo correo electrónico sobre {EmailSubject=escribir documentos} -- nuevo correo electrónico a {ContactName=Kimberly} acerca de {EmailSubject=Wingman} -- Enviar un correo electrónico a {ContactName=Leehom Wong} sobre el {EmailSubject=Concierto de piano} Diciendo {Message=Es maravilloso} -- Enviar un correo a {ContactName=Daniel} -- Enviar un nuevo correo electrónico sobre {EmailSubject=Facebook} -- Enviar un nuevo correo electrónico sobre el {EmailSubject=Torneo de hockey} Para {ContactName=Marie Jane} , {ContactName=joseph} Y {ContactName=John} -- Enviar un nuevo correo electrónico sobre el {EmailSubject=resolución de problemas} Para {ContactName=Andrea} , {ContactName=Angela} Y {ContactName=Ron} -- Enviar un nuevo correo electrónico a {ContactName=Larry} con un {Attachment=Archivo} adjunto -- Enviar un nuevo correo electrónico a {ContactName=Nicholas} Y {ContactName=Jesse} acerca de {EmailSubject=Cupones} -- Enviar un nuevo correo electrónico a partonepartwopartthree@yahoo.com -- Enviar un nuevo {Category=gran importancia} correo electrónico a {ContactName=Jordania} -- Enviar un {Category=leer recibo} correo electrónico a {ContactName=Samuel} -- Enviar {ContactName=Alexander} Un {Category=red Bang} Correo electrónico -- Enviar un correo electrónico -- Enviar un correo electrónico sobre {EmailSubject=práctica del equipo de natación} -- Enviar un correo electrónico sobre {EmailSubject=Estado de la prueba} Para {ContactName=Marca} -- Enviar un correo electrónico sobre el {EmailSubject=ventana que está rota} -- Enviar un correo electrónico para mí -- Enviar un correo electrónico marcado {Category=Sigue} Para {ContactName=Jerry} -- Enviar un correo electrónico marcado para {Category=Sigue} Para {ContactName=Cristiano} -- Enviar un correo electrónico marcado con un {Category=Explosión} Para {ContactName=Amy} -- Enviar un correo electrónico a {ContactName=a. j. Ron} marcados como {Category=Importante} -- Enviar un correo electrónico a {ContactName=Christopher Carpenter} sobre el {EmailSubject=Excursión de senderismo} -- Enviar un correo electrónico a {ContactName=Harold} Y {ContactName=Paul Kappus} acerca de {EmailSubject=almuerzo del equipo} Diciendo {Message=almuerzo mismo equipo este martes} -- Enviar un correo electrónico a {ContactName=Harry Potter} -- Enviar un correo electrónico a {ContactName=Jacqueline} Y {ContactName=Tianyu} sobre el {EmailSubject=resultado de la prueba} -- Enviar un correo electrónico a {ContactName=Jesse Klein} Diciendo {Message=Este es el mensaje sobre los planes de fin de semana} -- Enviar un correo electrónico a {ContactName=Larry} , {ContactName=joseph} Y {ContactName=Billy larkson} -- Enviar un correo electrónico a {ContactName=Lily Roth} y ABC123@microsoft.com -- Enviar un correo electrónico a Lily@gmail.com -- Enviar un correo electrónico a {ContactName=Leer} , {ContactName=Yue} Y {ContactName=Qiong} acerca de {EmailSubject=Financiación} -- Enviar un correo electrónico a {RelationshipName=Mamá} -- Enviar un correo electrónico a mi {RelationshipName=Hermano} -- Enviar un correo electrónico a {ContactName=Nathan} con un {Category=red Bang} -- Enviar un correo electrónico a partone_parttwo@microsoft.com -- Enviar un correo electrónico a {ContactName=sean} acerca de {EmailSubject=planes de fin de semana} -- Enviar un correo electrónico a {ContactName=Zachary} acerca de {EmailSubject=podemos planear las cosas vamos a ir de excursión} -- Enviar un correo electrónico {Date=Hoy} -- Enviar un correo electrónico con {Category=leer recibo} Para {ContactName=Peter} -- Enviar un {Category=Importante} correo electrónico a {ContactName=Olivia} -- Enviar un {Category=Urgente} Correo electrónico -- Enviar un {Category=Urgente} correo electrónico de mi {Line=cuenta de trabajo} Para {ContactName=Cristiano} -- Enviar un {Category=Urgente} correo electrónico de mi {Line=Trabajo} correo electrónico a {ContactName=Jack} -- enviar y correo electrónico sobre {EmailSubject=práctica del equipo de natación} -- Enviar {ContactName=Angela} un correo electrónico marcado como {Category=alta prioridad} -- Enviar {ContactName=Billy} un correo electrónico con un {Category=red Bang} -- enviar correo electrónico sobre {EmailSubject=Plan de tareas} Para {ContactName=Raymond} Y {ContactName=Felipe} -- enviar correo electrónico marcado {Category=Prioridad} Para {ContactName=Yun-SIM} Y {ContactName=Comer} -- enviar correo electrónico a {ContactName=Un} Y {ContactName=Tian} -- enviar correo electrónico a {ContactName=Hannah} Diciendo {Message=Prueba} -- enviar correo electrónico a {ContactName=Brezo} acerca de {EmailSubject=Coche} -- enviar correo electrónico a {ContactName=Jiayi} {Date=Hoy} -- enviar correo electrónico a {ContactName=Kai Xu} , {ContactName=mingming} y mi {RelationshipName=Madre} -- enviar correo electrónico a {ContactName=Louis} y marcarlo {Category=Importante} -- enviar correo electrónico a partone.parttwo@outlook.com -- Enviar {Category=Importante} correo electrónico a {ContactName=Evelyn} Y {ContactName=Gary} -- Enviar {ContactName=Jacqueline} un correo electrónico con {Category=prioridad baja} -- Enviar {Attachment=archivos de gran tamaño} por correo electrónico -- Enviar {ContactName=Lori} un nuevo {Category=Marcado} Correo electrónico -- enviar correo a {ContactName=Dorothy} -- enviar mi {Attachment=limpieza doc} Para {ContactName=Jeffrey} -- enviar mi {Attachment=diagrama de Visio de pago} Para {ContactName=Ronald} -- enviar nuevo correo electrónico a {ContactName=Cristiano} y marcarlo {Category=gran importancia} -- enviar el correo electrónico -- enviar el correo electrónico {Time=Ahora} -- enviar este {Attachment=Documento} a un correo electrónico -- Enviar {ContactName=Thomas} un correo electrónico -- establecer un correo electrónico {Date=Hoy} -- iniciar un nuevo correo electrónico sobre {EmailSubject=nombramientos de consejero matrimonial} -- iniciar un nuevo correo electrónico desde {SenderName=Tracy} Diciendo {Message=Aquí está mi curriculum vitae} -- iniciar un nuevo correo electrónico diciendo {Message=vamos al parque} -- iniciar un nuevo correo electrónico a {ContactName=Aaron} acerca de {EmailSubject=durmiendo esta noche} -- iniciar un correo electrónico a {ContactName=Jason} acerca de {EmailSubject=hablando} -- Iniciar nuevo correo electrónico sobre {EmailSubject=blog de taco} Para {ContactName=Nicole} Y {ContactName=Emily} -- Iniciar nuevo correo electrónico a {RelationshipName=Amigos} sobre el {EmailSubject=Club} -- Iniciar nuevo tema de correo de {EmailSubject=Príncipe nigeriano} -- iniciar un nuevo correo electrónico para {ContactName=Michelle} acerca de {EmailSubject=Ver béisbol} -- el nuevo correo electrónico es {Category=alta prioridad} que se está enviando a {ContactName=Jacob} -- enviará un marcado {Category=No urgente} correo electrónico a {ContactName=James} -- escribir un correo electrónico sobre el {EmailSubject=Recaudación} -- escribir un correo electrónico cuyo título es {EmailSubject=Hola} y el contexto es {Message=vamos a reunirnos juntos} -- escribir un {Category=Urgente} correo electrónico a {ContactName=Bobby} -- escribir correo electrónico -- escribir correo electrónico a {RelationshipName=Mamá} tema es {EmailSubject=Cuidar} - - -## ShowNext -- ¿Hay alguna {Category=no leídos} ¿Mensajes? Mostrar {OrderReference=próximo} -- Vamos, muéstrame más mails -- Vete a {OrderReference=próximo} Correo -- ir a la {OrderReference=próximo} Página -- Avanzar -- seguir adelante {OrderReference=próximo} correo por Jason -- {OrderReference=próximo} Correo electrónico -- {OrderReference=próximo} {Category=no leídos} Correo electrónico -- {OrderReference=próximo} {Category=no leídos} Una -- Muéstrame el {OrderReference=próximo} -- Muéstrame el {OrderReference=próximo} cinco mails -- Mostrar {OrderReference=próximo} Correo electrónico -- Mostrar {OrderReference=próximo} {Category=no leídos} -- Mostrar el {OrderReference=próximo} correo electrónico de mi {FromRelationshipName=Jefe} -- Mostrar el {OrderReference=próximo} correos electrónicos por Wong -- Mostrar el {OrderReference=próximo} Mensajes -- el {OrderReference=próximo} Correo electrónico -- el {OrderReference=próximo} {Category=Importante} Mensaje - - -## ShowPrevious -- volver a la {OrderReference=Última} uno de {SenderName=manzana} -- traer el {OrderReference=Anterior} uno, quiero leerlo de nuevo -- Vete a {OrderReference=Anterior} Correos -- {OrderReference=Anterior} Correo electrónico -- {OrderReference=Anterior} uno por favor -- A ver {OrderReference=Anterior} correo electrónico de {SenderName=Jack} -- Muéstrame el {OrderReference=Última} tres mails -- Muéstrame el {OrderReference=Anterior} Correo electrónico -- Mostrar {OrderReference=Anterior} En {Category=Rojo} Categoría -- Mostrar {OrderReference=Anterior} uno en la bandeja de entrada -- Mostrar el {OrderReference=Anterior} correo electrónico de mi {SenderName=Mentor} -- Mostrar el {OrderReference=Anterior} Una -- el {OrderReference=Anterior} Correo electrónico -- ¿Cuál es el {OrderReference=Anterior} Correo electrónico - - -> # Entity definitions - -$Attachment:simple - -$Category:simple - -$ContactName:simple - -$Date:simple - -$EmailPlatform: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:number - -$PREBUILT:ordinal - - -> # Phrase list definitions - - -> # List entities - - diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/fr/email.lu b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/fr/email.lu deleted file mode 100644 index efb01e1675..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/fr/email.lu +++ /dev/null @@ -1,678 +0,0 @@ -> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Thu Feb 28 2019 16:37:09 GMT+0800 (China Standard Time) - -> ! Source LUIS JSON file: email.json - -> ! Source QnA TSV file: Not Specified - -> ! Source QnA Alterations file: Not Specified - - -> # Intent definitions - -## AddFlag -- Ajouter un drapeau -- Ajouter un drapeau s'il vous plaît -- Ajouter un drapeau à la {OrderReference=Dernière} email -- Ajouter un drapeau à cet e-mail -- Ajouter un drapeau sur elle -- Ajouter un drapeau à elle -- Ajouter un indicateur à l'e-mail {SenderName=John} juste envoyé à moi -- Ajouter {Category=Drapeau} à cet e-mail -- Ajouter un indicateur à ce message -- Drapeau -- Flag il -- Flag sur -- Flag l'e-mail actuel -- Flag l'email -- Flag l'email de {SenderName=Davis} -- Flag cet email -- Flag cet email comme {Category=Important} Pour moi -- Je veux ajouter un drapeau -- Je veux ajouter un drapeau sur cet email -- le faire marquer -- marquer comme indicateur -- marquer l'email {Category=Signalé} -- mettre un drapeau -- mettre un drapeau sur le nouvel e-mail -- l'e-mail de {SenderName=Thomas} doit être signalée -- l'e-mail à {ContactName=Ruth} doit être signalée -- cet e-mail doit être signalé -- allumer le drapeau - - -## AddMore -- Ajouter un {Attachment=Fichier} à l'e-mail -- Ajouter un {Attachment=image} -- Ajouter un sujet -- Ajouter une autre ligne au message -- Ajouter {Message=avez-vous profiter de l'ensemble du programme} -- Ajouter {Attachment=Fichier} à l'email -- Ajouter plus -- Ajouter plus et changer le message -- Ajouter plus de détails à elle -- Ajouter plus {Message=n'oubliez pas d'apporter de la bière} -- Ajouter plus de message -- Ajouter plus s'il vous plaît -- Ajouter plus de texte -- Ajouter plus de texte s'il vous plaît -- Ajouter plus à l'email -- Ajouter plus au corps de l'email -- Ajouter plus à elle -- Ajouter plus au message -- Ajouter plus à {ContactName=Roy} email de -- Ajouter plus à l'e-mail -- Ajouter plus à la {OrderReference=Dernière} email -- Ajouter {Attachment=Photo} -- Ajouter un peu plus -- ajouter quelque chose -- Ajouter au corps de l'email -- Ajouter, en passant, quel est le plan de la prochaine étape -- Ajouter: {Message=Appelez-moi ce soir après le travail} -- Ajouter un {Attachment=Attachement} à cet e-mail -- joindre {Attachment=Fichier} -- puis-je ajouter plus à l'e-mail -- puis-je ajouter plus au message -- modifier e-mail afin que je puisse taper un message supplémentaire -- Je ne suis pas encore fini. J'ai besoin d'ajouter quelques détails -- J'ai oublié d'ajouter une partie importante de cet e-mail à {ContactName=James} . s'il vous plaît mettre en place pour éditer -- J'ai besoin d'ajouter des lignes supplémentaires -- J'ai besoin d'ajouter d'autres contenus -- J'ai besoin d'ajouter plus de message -- J'ai besoin d'ajouter plus de texte -- J'ai besoin d'ajouter plus à l'e-mail -- J'ai besoin d'ajouter plus au message électronique que j'envoie à {ContactName=Vincent} -- J'ai besoin d'ajouter quelque chose d'autre à mon e-mail à {ContactName=Cheryl} -- J'ai besoin d'ajouter quelque chose d'autre à ce courriel à {ContactName=Femme} avant qu'il ne soit envoyé -- Je veux ajouter plus de l'e-mail -- Je souhaite ajouter plus au message -- Je voudrais ajouter plus à l'e-mail -- Je voudrais ajouter plus au message électronique -- Je voudrais ouvrir une nouvelle ligne -- Je voudrais ajouter un peu plus à l'e-mail. -- Je voudrais ajouter un peu plus au message -- insérer plus de lignes pour moi s'il vous plaît -- insérer plus de texte dans mon email -- est-il OK si je ajouter plus à l'e-mail? -- Il n'est pas complet, besoin de plus de contenu -- plus de texte -- besoin d'ajouter des informations {OrderReference=Précédente} email -- OK, j'ai besoin d'ajouter quelques choses à cette -- s'il vous plaît ajouter {Message=C'était terrible} -- s'il vous plaît ajouter plus -- s'il vous plaît ajouter, {Message=s'il vous plaît laissez-moi savoir ce que je peux apporter. Je serais heureux de faire un plat latéral ou un dessert} -- mettre quelques lignes supplémentaires à ce message -- Attendez, j'ai besoin d'écrire plus -- écrire plus - - -## CancelMessages -- annuler la suppression -- pouvez-vous l'annuler -- annuler l'e-mail -- annuler l'e-mail à {ContactName=Natalie} -- annuler le message -- annuler mon e-mail à {ContactName=Jane} -- annuler la recherche des messages -- annuler l'e-mail à mon {RelationshipName=Sœur} -- annuler le courrier -- annuler cet e-mail -- annuler ce message -- annuler ce processus d'envoi -- Don't lire -- ne pas le lire -- ne pas envoyer l'email -- ne pas email -- ne pas envoyer un courriel à son -- ne pas lire l'e-mail -- ne pas lire le message -- ne pas envoyer -- ne pas l'Envoyer -- ne pas envoyer cet e-mail -- ne me montrez pas -- Sortie -- oublier l'email -- Je veux que vous annulez l'e-mail -- aucun d'entre eux -- jamais l'esprit d'annuler le courrier -- jamais l'esprit annuler le message -- jamais l'esprit, oublier le courrier -- Nevermind annuler -- pas l'annuler, je ne veux pas envoyer le courrier -- non ne pas l'Envoyer -- non seulement annuler l'e-mail -- non, je ne veux pas envoyer ce message -- non, non, annuler la lecture -- OK Annuler l'envoi du courrier -- Quittez l'envoi -- message d'arrêt -- arrêter la lecture - - -## CheckMessages -- Tout {Category=Nouveau} email -- Tout {Category=Nouveau} email disponible -- Tout {Category=Nouveau} email {Time=Maintenant} -- Tout {Category=Nouveau} Message {Time=Maintenant} -- vérifier e-mail -- vérifier e-mail s'il vous plaît -- vérifier mon email s'il vous plaît -- vérifier mes e-mails -- vérifier mon {Line=Gmail} -- vérifier ma boîte de réception -- vérifier ma boîte aux lettres -- vérifier mon message -- Vérifier {EmailPlatform=Outlook} S'il vous plaît -- vérifier les messages -- pourriez-vous s'il vous plaît vérifier mes e-mails -- pourriez-vous s'il vous plaît vérifier ma boîte de réception -- pourriez-vous s'il vous plaît vérifier mes messages -- puis-je obtenir de nouveaux e-mails -- dois-je avoir tout {Category=Nouveau} courrier -- dois-je {Category=Nouveau} email -- dois-je {Category=Nouveau} email {Time=Maintenant} -- dois-je {Category=Nouveau} Message -- dois-je recevoir {Category=Nouveau} email -- dois-je recevoir {Category=Nouveau} courrier dans {EmailPlatform=Outlook} ? -- dois-je recevoir {Category=Nouveau} Message -- quelqu'un envoie-t-il un email à moi juste alors -- quelqu'un envoie-t-il un message à moi {Time=juste alors} -- fait mon {EmailPlatform=Outlook} Hsa {Category=Nouveau} email -- Je veux vérifier mes e-mails -- Je veux vérifier ma boîte de réception -- Je voudrais vérifier ma boîte de réception -- y at-il de nouveaux e-mails -- s'il vous plaît vérifier mes e-mails -- s'il vous plaît vérifier ma boîte de réception -- s'il vous plaît vérifier mon {EmailPlatform=Outlook} -- Montrer {OrderReference=Dernière} E-mails -- afficher mes e-mails -- Si je reçois {Category=Nouveau} email -- Si je reçois {Category=Nouveau} Message -- Si j'ai {Category=Nouveau} email -- Si j'ai {Category=Nouveau} Message -- Si je reçois de nouveaux e-mails - - -## ConfirmMessages -- "OK, envoie-le" -- "bien sûr, allez-y" -- "Oui, vous pouvez" -- bien, il suffit d'envoyer le message -- correct, veuillez l'envoyer. -- Je confirme que je veux envoyer cet email -- pas de problème, aller de l'avant envoyer le courrier -- bien sûr, il suffit de supprimer le courrier -- OK envoyer le courrier à {ContactName=Peut} -- OK, bon pour moi, envoyez-le s'il vous plaît -- OK, bon, il suffit de l'envoyer -- d'accord -- OK l'Envoyer -- OK, envoyez-le maintenant -- parfait Merci -- à droite, envoyez-le svp -- Oui, à droite, envoyer à {ContactName=Alex} -- Ouais c'est vrai -- Oui, envoie-le. - - -## Delete -- pouvez-vous m'aider à le supprimer -- effacer ma boîte de réception -- supprimer tous les e-mails reçus {Time=Soir} -- supprimer l'e-mail de mon {Line=Hotmail} Compte -- supprimer le {PositionReference=Première} email pour moi -- supprimer le {OrderReference=Dernière} Un -- supprimer le {Category=Rouge} Ceux -- supprimer le deuxième courrier -- supprimer le {PositionReference=Deuxième} Un -- supprimer le {Category=non lus} E-mails -- supprimer cet e-mail -- supprimer ce message définitivement -- supprimer ce que je viens d'écrire -- vider la boîte e-mail -- le mettre dans la corbeille -- mettre l'e-mail dans la corbeille -- mettre l'email à la poubelle -- mettre les e-mails de ce dossier de fichiers à la poubelle -- supprimer les e-mails avec {Category=Rouge} Drapeaux -- Retirez-le de ma boîte de réception -- supprimer l'e-mail de {SenderName=Mary} -- supprimer les e-mails reçus {Date=Hier} - - -## Forward -- pourriez-vous transmettre ce message à {ContactName=Ronald} Et {ContactName=Roy} -- pourriez-vous s'il vous plaît transmettre cet e-mail à mon {RelationshipName=Sœur} -- avant tout {Attachment=Fichiers} De {SenderName=Sally} À {ContactName=Austin} -- en avant en disant {Message=Si vous l'intérêt} À {ContactName=Rebecca} -- Envoyer un e-mail -- Envoyer un e-mail à {RelationshipName=Petite amie} -- transmettre des e-mails à {ContactName=Gabriel} -- transmettre le message à {RelationshipName=Petite amie} -- transférer l'e-mail de {SenderName=John Smith} À {ContactName=Michelle} en disant {Message=Fyi} -- transférer l'e-mail de {SenderName=Melissa} À {ContactName=Peter} -- transmettre l'e-mail à {RelationshipName=Papa} -- transférer la {OrderReference=Dernière} email à {ContactName=Susan} -- transférer cet e-mail -- transmettre cet e-mail à {ContactName=Eugene} en tapant {Message=Qu'en penses-tu} -- transmettre cet e-mail à {ContactName=Olivier brun} S'il vous plaît -- transmettre cet e-mail à {ContactName=Joseph} -- transférer cet e-mail à PartOne dot PartTwo à gmail dot com -- transmettre cet e-mail à {ContactName=Patricia} -- avant de {ContactName=Alan} {Time=Soir} -- avant de {ContactName=Jean-Claude Potter} {Time=Soir} -- avant de {ContactName=Deborah} avec un message disant que {Message=Je ne veux pas que} -- avant de {ContactName=Dorothy} en tapant {Message=Je suis d'accord avec elle} -- avant de {RelationshipName=Maman} -- en avant à mon {RelationshipName=Patron} et fixez le {Attachment=fichier programmé} -- en avant à partoneparttwo@gmail.com {Date=lundi prochain} -- avant de {ContactName=Thomas} S'il vous plaît -- avant de {RelationshipName=Femme} en disant {Message=Je t'aime} -- Veuillez transmettre ce courriel à {ContactName=Albert} en tapant {Message=tout va bien} -- Veuillez transmettre ce courriel à partoneparttwo@163.com -- Veuillez transmettre ce courriel à partoneparttwo@outlook.com -- Veuillez transmettre ce message -- Veuillez transmettre à {ContactName=Benjamin} - - -## None -- 1 -- 2 -- 3 -- Lla {PositionReference=Première} Un -- Lla {PositionReference=Deuxième} Un -- Lla {PositionReference=Troisième} Un - - -## QueryLastText -- pouvez-vous me dire le {OrderReference=Dernière} courriel que j'ai reçu -- venir à la {OrderReference=Dernière} -- aller à la {OrderReference=Dernière} Un -- Je veux voir le {OrderReference=Dernière} email -- {OrderReference=Dernière} email -- ouvrir le {OrderReference=Dernière} email -- ouvrir le {OrderReference=Dernière} email i got -- s'il vous plaît me dire qui m'a envoyé {OrderReference=Dernière} -- Montrez-moi le {OrderReference=Dernière} email -- Montrez-moi le {OrderReference=Nouveau} email -- montrer le {OrderReference=Dernière} email -- Lla {OrderReference=Dernière} email -- qu'est-ce que {RelationshipName=Maman} juste dire -- Quel {ContactName=Eric Watson} juste dit -- Quel {SenderName=Harry} {OrderReference=Dernière} Courriel dit -- Quel {ContactName=Henry} juste dit -- Quel est le {OrderReference=Dernière} courriel que j'ai reçu {Date=Aujourd'hui} -- Quel est le {OrderReference=Dernière} courriel que j'ai reçu de {FromRelationshipName=Papa} -- Quel était le {OrderReference=Dernière} email -- Quel était le {OrderReference=Dernière} e-mail que j'ai obtenu de {FromRelationshipName=Papa} -- Quel était le {OrderReference=Dernière} e-mail que j'ai obtenu de {SenderName=Alain Edwards} -- qui m'envoyer un courriel {Time=Tout à l'heure} -- qui m'a envoyé un courriel -- qui m'a envoyé tout à l'heure -- qui m'a envoyé un courriel {OrderReference=Dernière} -- qui m'a récemment envoyé -- qui m'a envoyé l'email enfin {Date=Hier} -- qui m'a envoyé le mail tout à l'heure -- qui m'a envoyé un texto -- qui m'a envoyé un texto {Time=Tout à l'heure} -- dont l'email à ce moment-là? -- dont le courriel {Time=Maintenant} ? - - -## ReadAloud -- pouvez-vous lire mes e-mails -- pouvez-vous lire mon {OrderReference=Dernière} email -- pourriez-vous lire l'e-mail sur {EmailSubject=Comment utiliser le nouvel outil} ? -- s'il vous plaît lire mon {OrderReference=Dernière} email -- lire à haute voix mon {Category=Nouveau} email -- lire à haute voix le {EmailSubject=fête de Noël} email -- Lire {SenderName=Darren} mail sur {EmailSubject=le film} -- lire l'email -- lire le courriel de {SenderName=Aube} -- lire le courriel de {SenderName=Kat} -- lire le courriel de {FromRelationshipName=Maman} -- lire l'email pour moi -- lire les emails -- lire les e-mails de {SenderName=Argile} -- Lire {PositionReference=Première} email dans la boîte de lien -- Lire {PositionReference=Première} e-mail dans la boîte de réception liée -- Lire {Line=Google} courrier -- le lire -- Lire {OrderReference=Dernière} courriel reçu -- Lire {OrderReference=Dernière} e-mails entrants -- Lire {OrderReference=Dernière} courrier -- Lire {OrderReference=Dernière} email -- Lire {SenderName=verduguez Grace Marie} email -- me lire {SenderName=Dylan} e-mail envoyé sur {Date=Hier} -- me lire {SenderName=Jessica} e-mail sur {EmailSubject=code vestimentaire pour la partie} -- me lire mon {OrderReference=Dernière} {Line=Hotmail} email -- me lire mon {OrderReference=Dernière} E-mails -- Lisez-moi l'email -- Lisez-moi l'email sur {EmailSubject=pomme} -- Lisez-moi l'email sur {EmailSubject=jour de Thanksgiving} -- Lisez-moi l'email envoyé sur {Date=jour de Thanksgiving} -- Lisez-moi l'email intitulé {EmailSubject=Bonne année} -- Lisez-moi les e-mails de {SenderName=Agatha} -- Lisez-moi le {OrderReference=Dernière} email {SenderName=claude} Envoyé -- Lisez-moi le {OrderReference=Dernière} e-mails de la {Time=Cinq minutes} -- Lisez-moi le {OrderReference=Nouveau} email -- Lisez-moi le {OrderReference=Récente} courriel intitulé {EmailSubject=Abcd} De {SenderName=Jessica} -- lire la plupart {OrderReference=Récente} email -- lire mon email de {SenderName=Bébé} -- lire mon email de {SenderName=Mari} -- lire mon email de {SenderName=(la)} -- lire mes e-mails -- lire mon email s'il vous plaît -- lire mon email pour moi -- lire mes emails -- lire mes e-mails de {SenderName=Gras} -- lire ma boîte de réception -- lire mon {OrderReference=Dernière} email -- lire mon {OrderReference=Dernière} email à moi -- lire mon {Category=Nouveau} email -- lire mon {Category=Nouveau} E-mails -- lire ma notification -- lire mon {EmailPlatform=Outlook} email -- lire mon {OrderReference=Récente} email -- lire mon {OrderReference=Récente} message électronique s'il vous plaît -- lire mon {OrderReference=Récente} messages électroniques -- lire mon {OrderReference=Récente} email à moi -- lire mon {PositionReference=Deuxième} email -- Lire {Category=Nouveau} email -- Lire {Category=Nouveau} Courriel de {SenderName=David, mais} -- Lire {Category=Nouveau} Message -- lire {SenderName=Darren} mail -- lire l'e-mail de {SenderName=Liu} Sur {EmailSubject=Transfert} -- lire {SenderName=Pièce} e-mail à propos de {EmailSubject=Apple nouvelles} -- lire s'il vous plaît -- Lire {OrderReference=Récente} email -- lire l'e-mail -- lire l'e-mail sur {EmailSubject=réparation automatique} -- lire le {PositionReference=Première} email -- lire le {PositionReference=Première} email dans {Line=Hotmail} -- lire le {OrderReference=Dernière} email -- lire le {OrderReference=Dernière} message électronique -- lire le {OrderReference=Dernière} Courriel de {FromRelationshipName=Maman} -- lire le {OrderReference=Dernière} Courriel de {SenderName=Jean-Pierre Labelle} -- lire le {OrderReference=Dernière} email j'ai envoyé -- Lire {Date=Aujourd'hui} courrier -- Lire {Date=Aujourd'hui} mail -- Lire {Category=non lus} email -- Lire {Category=non lus} Message - - -## Reply -- créer une réponse à l'e-mail en disant {Message=pls m'envoient l'image à nouveau} -- email retour -- email retour {Message=Je vais vous rappeler} -- Comment répondre à un e-mail -- faire une réponse avec {Message=Merci beaucoup} -- Réponse -- réponse par email {Message=Merci beaucoup plus cordialement Jun} -- réponse en disant {Message=Je t'aime} -- réponse en disant {Message=Oui} -- réponse en tapant {Message=Bonjour} -- Réponse {Message=Obligatoire} à un e-mail -- réponse que {Message=Je suis occupé} -- répondre à {ContactName=Edward} -- répondre à l'e-mail {Message=Je suis occupé maintenant} -- répondre à mon {OrderReference=Dernière} email -- répondre à {ContactName=Susan} -- répondre à l'e-mail -- répondre à la {PositionReference=Première} Un -- Réponse {Message=On se verra plus tard.} -- répondre avec {Message=Bonjour} -- Réponse {Message=(La)} -- Réponse {ContactName=Yee} {Message=Bonjour} -- Réponse {Message=Oui, patron.} -- Répondre {Message=i'm malade je ne peux pas le faire} -- répondre aux {ContactName=chien Lore} -- répondre aux {ContactName=Nathan} -- répondre à l'e-mail en disant {Message=Je suis occupé aujourd'hui} -- Retour {ContactName=Barbara} Sur {Line=Mobile} -- Retour {ContactName=Huskies sibériens} {Line=Mobile} -- renvoyer le courriel -- Envoyer la réponse avec {Message=Je sais déjà} - - -## SearchMessages -- pouvez-vous rechercher mes e-mails -- détecter les e-mails de {SenderName=Betty} -- détecter l'e-mail contenant le mot-clé {SearchTexts=Beauté} -- détecter l'e-mail de {SenderName=Lisa} -- ai-je obtenir un e-mail de {SenderName=Tom} -- ai-je obtenir des e-mails de {SenderName=Tom} -- ai-je obtenir l'email contenant le mot clé {SearchTexts=Déjeuner} -- e-mail envoyé par {SenderName=Neuf} -- e-mails contient {SearchTexts=Banque} -- énumérer les e-mails avec {SearchTexts=algroithm} -- trouver un email sur {EmailSubject=planification de la nouvelle année} -- trouver un email de ABC123@outlook.com -- trouver un email de {SenderName=Angela} -- trouver un email de {SenderName=Jay} qui contient {SearchTexts=Halloween} -- trouver un email sur le {EmailSubject=Réservation de dîner} -- trouver un email intitulé {EmailSubject=nouveau design} -- trouver un email avec le titre {EmailSubject=outils de production} -- trouver des e-mails de {FromRelationshipName=Maman} -- trouver des e-mails contenant {SearchTexts=Malte} -- trouver des e-mails avec {SearchTexts=Reprendre} -- trouver des mails intitulés {EmailSubject=cours recommandés} -- Liste des e-mails contiennent {SearchTexts=photo drôle} -- à la recherche d'un email avec {SearchTexts=Bonjour} -- interroger des e-mails avec {SearchTexts=facture} -- Rechercher un e-mail avec le sujet {EmailSubject=dépistage de fond} -- rechercher {SearchTexts=(la houche)} dans mes e-mails -- e-mail de recherche contiennent {SearchTexts=Outlook} -- Rechercher un e-mail avec des mots clés {SearchTexts=Déjeuner} -- Rechercher des e-mails sur {EmailSubject=Nautique} -- les e-mails de recherche contiennent {SearchTexts=éléments de travail} -- e-mails de recherche contient {SearchTexts=Coupons} -- Rechercher des e-mails à partir de {SenderName=Mike} -- rechercher {SenderName=Jensen} e-mails de -- Mots clés de recherche {SearchTexts=keywordone keywordtwo} dans mes e-mails -- rechercher {SearchTexts=Mots clés keywordstwo} à partir de Inbox -- Rechercher mes e-mails -- texte de recherche avec des mots {SearchTexts=déjeuner ensemble} -- Rechercher l'e-mail avec des mots-clés {SearchTexts=Bonjour} -- Rechercher les e-mails contient {SearchTexts=Microsoft} -- Rechercher les e-mails contient {SearchTexts=Argent} -- afficher les e-mails contiennent des mots " {SearchTexts=plan futur} " -- afficher les e-mails avec " {SearchTexts=carte de crédit} " -- Montrez-moi les e-mails de {FromRelationshipName=Petite amie} -- Montrez-moi les e-mails de {SenderName=Patrick Chan} -- Montrez-moi l'email sur {EmailSubject=Festival de printemps} -- Montrez-moi l'email de {SenderName=Tom} et filtrage avec mot {SearchTexts=Déjeuner} -- Montrez-moi l'email envoyé de {FromRelationshipName=Maman} -- me dire l'e-mail de {SenderName=Lucas Wong} -- me dire l'email avec le sujet {EmailSubject=rapport hebdomadaire} - - -## SendEmail -- composer un nouvel email sur {EmailSubject=devoirs espagnols} -- créer un nouveau courrier intitulé {EmailSubject=informations de réunion urgentes} À {ContactName=Jonathan} -- Envoyez-lui le message "amende, OK" -- Envoyer mon {RelationshipName=Frère} -- Envoyer mon {Attachment=Présentation} -- Envoyer le {Attachment=Fichier} À {ContactName=Henri Mathieu} -- email à {ContactName=Alex Cooper} Sur {EmailSubject=Haha} Dire {Message=Bonjour} -- email à {ContactName=Harry Potter} Et {ContactName=Isabelle Granger} -- email à {ContactName=Kim blanc} Sur {EmailSubject=Cette fleur} Dire {Message=Belle} -- email à {ContactName=Lawrence} Sur {EmailSubject=question d'ouverture} -- email à {ContactName=Mike Waters} : {Message=Mike, le dîner de la semaine dernière était splendide.} -- courriel à partoneparttwo@gmail.com -- J'ai besoin d'envoyer un email au sujet de la {EmailSubject=Mots à une chanson} -- faire un nouvel email sur {EmailSubject=Prévisions météo} -- marquer un email pour {Category=Suivi} et envoyer à {ContactName=Arthur} -- nouvel email sur {EmailSubject=très bonne conversation} À {ContactName=Michelle} -- nouvel email sur {EmailSubject=rédaction de documents} -- nouveau courriel à {ContactName=Kimberly} Sur {EmailSubject=Wingman} -- Envoyer un e-mail à {ContactName=leehom Wong} sur le {EmailSubject=concert de piano} Dire {Message=C'est merveilleux} -- Envoyer un mail à {ContactName=Daniel} -- Envoyer un nouvel email à propos de {EmailSubject=Facebook} -- Envoyer un nouvel email sur le {EmailSubject=tournoi de hockey} À {ContactName=Marie-Jeanne} , {ContactName=Joseph} Et {ContactName=John} -- Envoyer un nouvel email sur le {EmailSubject=résolution de problèmes} À {ContactName=Andrea} , {ContactName=Angela} Et {ContactName=Ron} -- Envoyer un nouvel e-mail à {ContactName=Larry} avec un {Attachment=Fichier} Attaché -- Envoyer un nouvel e-mail à {ContactName=Nicholas} Et {ContactName=Jesse} Sur {EmailSubject=Coupons} -- Envoyer un nouvel email à partonepartwopartthree@yahoo.com -- Envoyer un nouveau {Category=grande importance} email à {ContactName=Jordanie} -- Envoyer un {Category=lire le reçu} email à {ContactName=Samuel} -- Envoyer {ContactName=Alexander} Un {Category=Red Bang} email -- Envoyer un email -- Envoyer un email sur {EmailSubject=pratique de l'équipe de natation} -- Envoyer un email sur {EmailSubject=État du test} À {ContactName=Marque} -- Envoyer un email sur le {EmailSubject=fenêtre qui est cassée} -- Envoyer un email pour moi -- Envoyer un email marqué {Category=Suivi} À {ContactName=Jerry} -- Envoyer un email marqué pour {Category=Suivi} À {ContactName=Chrétienne} -- Envoyer un e-mail marqué d'un {Category=Bang} À {ContactName=Amy} -- Envoyer un e-mail à {ContactName=a. j. Ron} marqué comme {Category=Important} -- Envoyer un e-mail à {ContactName=Christophe charpentier} sur le {EmailSubject=voyage de randonnée} -- Envoyer un e-mail à {ContactName=Harold} Et {ContactName=Paul Kappus} Sur {EmailSubject=déjeuner d'équipe} Dire {Message=même déjeuner équipe ce mardi} -- Envoyer un e-mail à {ContactName=Harry Potter} -- Envoyer un e-mail à {ContactName=Jacqueline} Et {ContactName=Tianyu} sur le {EmailSubject=résultat du test} -- Envoyer un e-mail à {ContactName=Nicolas Klein} Dire {Message=C'est le message sur les plans de week-end} -- Envoyer un e-mail à {ContactName=Larry} , {ContactName=Joseph} Et {ContactName=(la)} -- Envoyer un e-mail à {ContactName=lili Roth} et ABC123@microsoft.com -- Envoyer un email à Lily@gmail.com -- Envoyer un e-mail à {ContactName=lu} , {ContactName=Yue} Et {ContactName=Qiong} Sur {EmailSubject=Financement} -- Envoyer un e-mail à {RelationshipName=Maman} -- Envoyer un email à mon {RelationshipName=Frère} -- Envoyer un e-mail à {ContactName=Nathan} avec un {Category=Red Bang} -- Envoyer un email à partone_parttwo@microsoft.com -- Envoyer un e-mail à {ContactName=Sean} Sur {EmailSubject=plans week-end} -- Envoyer un e-mail à {ContactName=Zachary} Sur {EmailSubject=Nous pouvons planifier les choses allons faire de la randonnée} -- Envoyer un email {Date=Aujourd'hui} -- Envoyer un e-mail avec {Category=lire le reçu} À {ContactName=Peter} -- Envoyer un {Category=Important} email à {ContactName=Olivia} -- Envoyer un {Category=urgent} email -- Envoyer un {Category=urgent} e-mail de mon {Line=compte de travail} À {ContactName=Chrétienne} -- Envoyer un {Category=urgent} e-mail de mon {Line=Travail} email à {ContactName=Jack} -- Envoyer et email à propos {EmailSubject=pratique de l'équipe de natation} -- Envoyer {ContactName=Angela} un e-mail marqué comme {Category=priorité élevée} -- Envoyer {ContactName=Billy} un e-mail avec un {Category=Red Bang} -- Envoyer un email à propos {EmailSubject=plan de devoirs} À {ContactName=Raymond} Et {ContactName=Philip} -- Envoyer un email marqué {Category=Priorité} À {ContactName=Yun-SIM} Et {ContactName=Manger} -- Envoyer un e-mail à {ContactName=Un} Et {ContactName=Tian} -- Envoyer un e-mail à {ContactName=Hannah} Dire {Message=Test} -- Envoyer un e-mail à {ContactName=Heather} Sur {EmailSubject=Voiture} -- Envoyer un e-mail à {ContactName=jiayi} {Date=Aujourd'hui} -- Envoyer un e-mail à {ContactName=Kai Xu} , {ContactName=mingming} et mon {RelationshipName=Mère} -- Envoyer un e-mail à {ContactName=Louis} et le marquer {Category=Important} -- Envoyer un email à PartOne.PartTwo@outlook.com -- Envoyer {Category=Important} email à {ContactName=Evelyn} Et {ContactName=Gary} -- Envoyer {ContactName=Jacqueline} un e-mail avec {Category=faible priorité} -- Envoyer {Attachment=fichiers volumineux} par e-mail -- Envoyer {ContactName=Lori} une nouvelle {Category=Signalé} email -- Envoyer du courrier à {ContactName=Dorothy} -- Envoyer mon {Attachment=ménage doc} À {ContactName=Jeffrey} -- Envoyer mon {Attachment=diagramme Visio de paiement} À {ContactName=Ronald} -- Envoyer un nouvel e-mail à {ContactName=Chrétienne} et le marquer {Category=grande importance} -- Envoyer l'email -- Envoyer l'email {Time=Maintenant} -- Envoyer ce {Attachment=Document} à un e-mail -- Envoyer {ContactName=Thomas} un email -- définir un e-mail {Date=Aujourd'hui} -- commencer un nouvel e-mail sur {EmailSubject=nominations conseiller mariage} -- commencer un nouvel e-mail à partir de {SenderName=Tracy} Dire {Message=Voici mon curriculum vitae} -- commencer un nouvel e-mail en disant {Message=permet d'aller au parc} -- commencer un nouvel e-mail à {ContactName=Aaron} Sur {EmailSubject=dormir ce soir} -- Démarrez un e-mail pour {ContactName=Jason} Sur {EmailSubject=parler jusqu'à} -- commencer un nouvel e-mail à propos {EmailSubject=Taco blog} À {ContactName=Nicole} Et {ContactName=Emily} -- démarrer un nouvel e-mail pour {RelationshipName=Amis} sur le {EmailSubject=Club} -- commencer un nouveau sujet de courrier {EmailSubject=Prince nigérian} -- Démarrez un nouvel e-mail {ContactName=Michelle} Sur {EmailSubject=regarder le baseball} -- le nouvel e-mail est {Category=priorité élevée} qui est envoyé à {ContactName=Jacob} -- allez-vous envoyer un marqué {Category=non urgent} email à {ContactName=James} -- écrire un email sur le {EmailSubject=Collecte} -- écrire un email dont le titre est {EmailSubject=Bonjour} et le contexte est {Message=Nous allons avoir réunion ensemble} -- écrire un {Category=urgent} email à {ContactName=Bobby} -- écrire un email -- écrire un e-mail à {RelationshipName=Maman} sujet est {EmailSubject=Garder} - - -## ShowNext -- y at-il {Category=non lus} Messages? Montrer {OrderReference=prochain} -- allez, montrez-moi plus de mails -- Atteindre {OrderReference=prochain} courrier -- aller à la {OrderReference=prochain} Page -- Avancer -- se déplacer sur {OrderReference=prochain} mail par Jason -- {OrderReference=prochain} email -- {OrderReference=prochain} {Category=non lus} email -- {OrderReference=prochain} {Category=non lus} Un -- Montrez-moi le {OrderReference=prochain} -- Montrez-moi le {OrderReference=prochain} cinq mails -- Montrer {OrderReference=prochain} email -- Montrer {OrderReference=prochain} {Category=non lus} -- montrer le {OrderReference=prochain} e-mail de mon {FromRelationshipName=Patron} -- montrer le {OrderReference=prochain} e-mails par Wong -- montrer le {OrderReference=prochain} Messages -- Lla {OrderReference=prochain} email -- Lla {OrderReference=prochain} {Category=Important} Message - - -## ShowPrevious -- Retour à la {OrderReference=Dernière} un de {SenderName=pomme} -- apporter le {OrderReference=Précédente} un, je veux le lire à nouveau -- Atteindre {OrderReference=Précédente} Mails -- {OrderReference=Précédente} email -- {OrderReference=Précédente} un s'il vous plaît -- Montre-moi {OrderReference=Précédente} Courriel de {SenderName=Jack} -- Montrez-moi le {OrderReference=Dernière} trois mails -- Montrez-moi le {OrderReference=Précédente} email -- Montrer {OrderReference=Précédente} Dans {Category=Rouge} Catégorie -- Montrer {OrderReference=Précédente} un dans la boîte de réception -- montrer le {OrderReference=Précédente} e-mail de mon {SenderName=Mentor} -- montrer le {OrderReference=Précédente} Un -- Lla {OrderReference=Précédente} email -- Quel est le {OrderReference=Précédente} email - - -> # Entity definitions - -$Attachment:simple - -$Category:simple - -$ContactName:simple - -$Date:simple - -$EmailPlatform: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:number - -$PREBUILT:ordinal - - -> # Phrase list definitions - - -> # List entities - - diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/it/email.lu b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/it/email.lu deleted file mode 100644 index 7ec898e565..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/it/email.lu +++ /dev/null @@ -1,689 +0,0 @@ -> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Thu Feb 28 2019 16:37:09 GMT+0800 (China Standard Time) - -> ! Source LUIS JSON file: email.json - -> ! Source QnA TSV file: Not Specified - -> ! Source QnA Alterations file: Not Specified - - -> # Intent definitions - -## AddFlag -- aggiungere una bandierina -- aggiungere una bandiera per favore -- aggiungere una bandierina al {OrderReference=Ultima} Posta elettronica -- aggiungere un flag a questa e-mail -- Aggiungi flag -- aggiungere bandiera su di esso -- aggiungere flag ad esso -- Aggiungi flag all'email {SenderName=John} appena inviato a me -- Aggiungere {Category=Bandiera} a questa email -- Aggiungi flag a questo messaggio -- Bandiera -- segnalarlo -- bandiera su -- contrassegnare l'e-mail corrente -- contrassegnare l'e-mail -- contrassegnare l'e-mail da {SenderName=Davis} -- contrassegnare questa e-mail -- contrassegnare questa e-mail come {Category=Importante} Per me -- Voglio aggiungere una bandiera -- Voglio aggiungere una bandiera su questa e-mail -- renderlo contrassegnato -- Segna come bandiera -- contrassegnare l'e-mail {Category=Contrassegnato} -- mettere una bandiera -- mettere una bandiera sulla nuova e-mail -- l'e-mail da {SenderName=Tommaso} dovrebbe essere contrassegnato -- l'e-mail a {ContactName=Ruth} deve essere contrassegnato -- Questa email deve essere contrassegnata -- Questa email dovrebbe essere contrassegnata -- girare bandiera su - - -## AddMore -- aggiungere un {Attachment=File} all'e-mail -- aggiungere un {Attachment=Immagine} -- aggiungere un soggetto -- aggiungere un'altra riga al messaggio -- Aggiungere {Message=Hai godere l'intero programma} -- Aggiungere {Attachment=File} per e-mail -- aggiungere più -- aggiungere di più e modificare il messaggio -- aggiungere ulteriori dettagli ad esso -- aggiungere più {Message=non dimenticate di portare la birra} -- aggiungere altro messaggio -- aggiungere di più per favore -- aggiungere più testo -- aggiungere più testo per favore -- aggiungere di più per e-mail -- aggiungere di più al corpo e-mail -- aggiungere di più ad esso -- aggiungere di più al messaggio -- aggiungere di più per {ContactName=Roy} e-mail di -- aggiungere di più al testo -- aggiungere di più all'e-mail -- aggiungere di più al {OrderReference=Ultima} Posta elettronica -- Aggiungere {Attachment=Foto} -- aggiungere un po' di più -- aggiungere qualcosa -- aggiungere al corpo di e-mail -- aggiungere, a proposito, qual è il piano del passo successivo -- Aggiungere: {Message=Chiamami stasera dopo il lavoro} -- aggiungere un {Attachment=Allegato} a questa email -- allegare {Attachment=File} -- Posso aggiungere di più per l'e-mail -- Posso aggiungere di più al messaggio -- modificare e-mail in modo che io possa digitare un messaggio aggiuntivo -- non ho ancora finito. Ho bisogno di aggiungere alcuni dettagli -- Ho dimenticato di aggiungere una parte importante a quella e-mail a {ContactName=James} . si prega di impostarlo per modificare -- Ho bisogno di aggiungere ulteriori linee -- Ho bisogno di aggiungere ulteriori contenuti -- Ho bisogno di aggiungere più messaggio -- Ho bisogno di aggiungere più testo -- Ho bisogno di aggiungere di più per l'e-mail -- Ho bisogno di aggiungere di più al messaggio di posta elettronica che sto inviando a {ContactName=Vincent} -- Ho bisogno di aggiungere qualcos'altro alla mia email per {ContactName=Cheryl} -- Ho bisogno di aggiungere qualcos'altro a quella e-mail a {ContactName=donna} prima che venga inviato -- Voglio aggiungere più l'e-mail -- Vorrei aggiungere di più al messaggio -- Vorrei aggiungere di più per l'e-mail -- Vorrei aggiungere di più al messaggio di posta elettronica -- Mi piacerebbe aprire una nuova linea -- Vorrei aggiungere un po' di più per l'e-mail. -- Mi piacerebbe aggiungere un po' di più al messaggio -- Mi piacerebbe aggiungere di più per l'e-mail -- inserire più linee per me per favore -- inserire più testo nella mia email -- è OK se aggiungo di più all'e-mail? -- non è completo, hanno bisogno di più contenuti -- più testo -- necessario aggiungere informazioni {OrderReference=Precedente} Posta elettronica -- Ok, ho bisogno di aggiungere un paio di cose a che -- si prega di aggiungere {Message=è stato terribile} -- si prega di aggiungere più -- si prega di aggiungere, {Message=per favore fatemi sapere cosa posso portare. sarei felice di fare un contorno o dessert} -- mettere alcune linee aggiuntive a questo messaggio -- Aspetta, ho bisogno di scrivere di più -- scrivere di più - - -## CancelMessages -- Annulla eliminazione -- si può annullare -- Annulla e-mail -- annullare l'e-mail a {ContactName=Natalie} -- Annulla messaggio -- cancellare la mia email a {ContactName=Jane} -- Annulla la ricerca dei messaggi -- annullare l'e-mail -- annullare l'e-mail al mio {RelationshipName=Sorella} -- annullare la posta -- annullare il messaggio -- Annulla questa email -- Annulla questo messaggio -- annullare questo processo di invio -- Don ' t leggere -- Don ' t leggerlo -- Don ' t inviare l'e-mail -- non e-mail -- non e-mail a lei -- non leggere l'e-mail -- non leggere il messaggio -- non inviare -- non inviarlo -- non inviare tale e-mail -- non inviare questa e-mail -- non farmi vedere -- Uscita -- dimenticare l'e-mail -- Voglio che tu annulli l'email -- nessuno dei due -- non importa cancellare la posta -- non importa cancellare il messaggio -- non importa, dimentica la posta -- non importa annullare -- non annullarlo, non voglio inviare la posta -- No non inviare -- No non inviarlo -- non basta annullare l'e-mail -- No, non voglio mandare questo messaggio -- No, no, Annulla la lettura -- va bene annullare l'invio della posta -- uscire dall'invio -- messaggio di arresto -- smettere di leggere - - -## CheckMessages -- Qualsiasi {Category=Nuovo} Posta elettronica -- Qualsiasi {Category=Nuovo} e-mail disponibile -- Qualsiasi {Category=Nuovo} Posta elettronica {Time=ora} -- Qualsiasi {Category=Nuovo} Messaggio {Time=ora} -- controllare la posta elettronica -- controllare e-mail per favore -- controllare la mia e-mail per favore -- controllare le mie e-mail -- controllare il mio {Line=Gmail} -- Controlla la mia casella di posta -- controllare la mia casella di posta -- controllare il mio messaggio -- Verifica {EmailPlatform=Outlook} Si prega -- controllare e-mail -- controllare i messaggi -- si potrebbe per favore controllare le mie e-mail -- si potrebbe per favore controllare la mia casella di posta -- si potrebbe per favore controllare i miei messaggi -- posso ottenere una nuova e-mail -- Ho qualche {Category=Nuovo} Posta -- Ho {Category=Nuovo} Posta elettronica -- Ho {Category=Nuovo} Posta elettronica {Time=ora} -- Ho {Category=Nuovo} Messaggio -- ricevo {Category=Nuovo} Posta elettronica -- ricevo {Category=Nuovo} posta in {EmailPlatform=Outlook} ? -- ricevo {Category=Nuovo} Messaggio -- qualcuno invia e-mail a me solo allora -- qualcuno manda un messaggio a me {Time=proprio in quel} -- fa il mio {EmailPlatform=Outlook} ha {Category=Nuovo} Posta elettronica -- Voglio controllare le mie e-mail -- Voglio controllare la mia casella di posta -- Mi piacerebbe controllare la mia casella di posta -- C'è una nuova email -- si prega di controllare le mie e-mail -- si prega di controllare la mia casella di posta -- si prega di controllare il mio {EmailPlatform=Outlook} -- Visualizza {OrderReference=Ultima} E-mail -- mostrare i miei messaggi di posta elettronica -- Se ottengo {Category=Nuovo} Posta elettronica -- Se ottengo {Category=Nuovo} Messaggio -- Se ho {Category=Nuovo} Posta elettronica -- Se ho {Category=Nuovo} Messaggio -- Se ricevo una nuova e-mail - - -## ConfirmMessages -- "Okay, mandalo" -- "sicuro, vai avanti" -- "Sì, è possibile" -- va bene, basta inviare il messaggio -- corretto, si prega di inviarlo. -- Confermo che voglio inviare questa e-mail -- Nessun problema, andare avanti inviare la posta -- Naturalmente, basta cancellare la posta -- OK inviare la posta a {ContactName=Maggio} -- Ok, bene per me, inviarlo per favore -- Ok, bene, basta inviarlo -- ok -- va bene inviarlo -- Okay, mandalo ora -- perfetto grazie -- a destra, inviarlo per favore -- Sì destra, inviare a {ContactName=Alex} -- Sì, è giusto -- sì che è di destra -- Sì, mandalo - - -## Delete -- mi potete aiutare a eliminarlo -- Cancella la mia casella di posta -- eliminare tutte le email ricevute {Time=Stasera} -- eliminare l'e-mail dal mio {Line=Hotmail} Account -- eliminare il {PositionReference=Prima} e-mail per me -- eliminare il {OrderReference=Ultima} Uno -- eliminare il {Category=Rosso} Quelli -- eliminare la seconda posta -- eliminare il {PositionReference=Secondo} Uno -- eliminare il {Category=non letti} E-mail -- eliminare questa e-mail -- eliminare questo messaggio in modo permanente -- eliminare quello che ho appena scritto -- svuotare la casella di posta elettronica -- metterlo nel cestino -- Inserire l'e-mail nel cestino -- Metti l'email nel cestino -- mettere le e-mail da questa cartella di file al cestino -- rimuovere le email con {Category=Rosso} Bandiere -- rimuoverlo dalla mia casella di posta -- rimuovere l'e-mail da {SenderName=Maria} -- rimuovere le e-mail ricevute {Date=Ieri} - - -## Forward -- potrebbe inoltrare questo messaggio a {ContactName=Ronald} E {ContactName=Roy} -- potrebbe per favore inoltrare questa e-mail al mio {RelationshipName=Sorella} -- avanti tutti {Attachment=File} Da {SenderName=Sally} A {ContactName=Austin} -- avanti dicendo {Message=Se avete interesse} A {ContactName=Rebecca} -- inoltrare e-mail -- inoltrare l'e-mail a {RelationshipName=Fidanzata} -- inoltrare le e-mail a {ContactName=Gabriel} -- inoltrare il messaggio a {RelationshipName=Fidanzata} -- inoltrare l'e-mail da {SenderName=John Smith} A {ContactName=Michelle} dicendo {Message=Fyi} -- inoltrare l'e-mail da {SenderName=Melissa} A {ContactName=Peter} -- inoltrare l'e-mail a {RelationshipName=Papà} -- inoltrare il {OrderReference=Ultima} e-mail a {ContactName=Susan} -- inoltrare questa e-mail -- inoltrare questa e-mail a {ContactName=Eugene} digitando {Message=Che ne pensi} -- inoltrare questa e-mail a {ContactName=Gary Brown} Si prega -- inoltrare questa e-mail a {ContactName=Joseph} -- inoltrare questa e-mail a PartOne dot PartTwo a gmail dot com -- inoltrare questa e-mail a {ContactName=Patricia} -- in avanti per {ContactName=Alan} {Time=Stasera} -- in avanti per {ContactName=Brian Potter} {Time=Stasera} -- in avanti per {ContactName=Deborah} con un messaggio che dice che {Message=non voglio che} -- in avanti per {ContactName=Dorothy} digitando {Message=sono d'accordo con esso} -- in avanti per {RelationshipName=Mamma} -- avanti al mio {RelationshipName=Capo} e attaccare il {Attachment=file schedual} -- avanti a partoneparttwo@gmail.com {Date=Lunedi prossimo} -- in avanti per {ContactName=Tommaso} Si prega -- in avanti per {RelationshipName=Moglie} dicendo {Message=Ti amo} -- si prega di inoltrare questa e-mail a {ContactName=Albert} digitando {Message=tutto va bene} -- si prega di inoltrare questa e-mail a partoneparttwo@163.com -- si prega di inoltrare questa e-mail a partoneparttwo@outlook.com -- si prega di inoltrare questo messaggio -- si prega di inoltrare a {ContactName=Benjamin} - - -## None -- 1 -- 2 -- 3 -- Le {PositionReference=Prima} Uno -- Le {PositionReference=Secondo} Uno -- Le {PositionReference=Terzo} Uno - - -## QueryLastText -- mi puoi dire il {OrderReference=Ultima} e-mail ho ricevuto -- venire al {OrderReference=Ultima} -- andare al {OrderReference=Ultima} Uno -- Voglio vedere il {OrderReference=Ultima} Posta elettronica -- {OrderReference=Ultima} Posta elettronica -- Aprire il {OrderReference=Ultima} Posta elettronica -- Aprire il {OrderReference=ultime ricerche} e-mail ho ottenuto -- per favore dimmi chi mi ha inviato via email {OrderReference=Ultima} -- Mostrami il {OrderReference=ultime ricerche} Posta elettronica -- Mostrami il {OrderReference=Più recente} Posta elettronica -- mostrare la {OrderReference=Ultima} Posta elettronica -- Le {OrderReference=Ultima} Posta elettronica -- quello che ha fatto {RelationshipName=Mamma} Basta dire -- che cosa {ContactName=Eric Watson} appena detto -- che cosa {SenderName=Harry} {OrderReference=Ultima} email ha detto -- che cosa {ContactName=Henry} appena detto -- Qual è il {OrderReference=Ultima} e-mail ho ricevuto {Date=Oggi} -- Qual è il {OrderReference=ultime ricerche} e-mail ho ricevuto da {FromRelationshipName=Papà} -- quello che era il {OrderReference=Ultima} Posta elettronica -- quello che era il {OrderReference=Ultima} e-mail ho ottenuto da {FromRelationshipName=Papà} -- quello che era il {OrderReference=Ultima} e-mail ho ottenuto da {SenderName=Helen Edwards} -- che mi e-mail {Time=proprio ora} -- che mi ha mandato -- che mi ha mandato solo ora -- che mi ha mandato {OrderReference=Ultima} -- che di recente mi ha inviato -- che mi ha inviato l'e-mail infine {Date=Ieri} -- che mi ha mandato la posta proprio ora -- che mi ha mandato un SMS -- che mi ha mandato un SMS {Time=proprio ora} -- la cui email proprio allora? -- la cui e-mail {Time=ora} ? - - -## ReadAloud -- si può leggere le mie e-mail -- si può leggere il mio {OrderReference=Ultima} Posta elettronica -- si potrebbe leggere l'e-mail su {EmailSubject=come utilizzare il nuovo strumento} ? -- si prega di leggere il mio {OrderReference=Ultima} Posta elettronica -- leggere ad alta voce il mio {Category=Nuovo} Posta elettronica -- leggere ad alta voce il {EmailSubject=festa di Natale} Posta elettronica -- Leggere {SenderName=Darren} la posta su {EmailSubject=il film} -- leggere e-mail -- leggere e-mail da {SenderName=Alba} -- leggere e-mail da {SenderName=Kat} -- leggere e-mail da {FromRelationshipName=Mamma} -- leggere e-mail a me -- leggere le email -- leggere le email da {SenderName=Argilla} -- Leggere {PositionReference=Prima} e-mail nella casella di collegamento -- Leggere {PositionReference=Prima} e-mail nella casella di posta collegata -- Leggere {Line=Google} Posta -- Leggilo -- Leggere {OrderReference=Ultima} e-mail ricevuta -- Leggere {OrderReference=Ultima} e-mail in arrivo -- Leggere {OrderReference=Ultima} Posta -- Leggere {OrderReference=Ultima} Posta elettronica -- Leggere {SenderName=Mary Grace Verduguez} Posta elettronica -- Leggimi {SenderName=Dylan} e-mail inviata su {Date=Ieri} -- Leggimi {SenderName=Jessica} e-mail su {EmailSubject=Dress code per il partito} -- Leggimi il mio {OrderReference=Ultima} {Line=Hotmail} Posta elettronica -- Leggimi il mio {OrderReference=Ultima} E-mail -- Leggimi l'email -- Leggimi l'e-mail su {EmailSubject=mela} -- Leggimi l'e-mail su {EmailSubject=giorno del ringraziamento} -- Leggimi l'email inviata su {Date=giorno del ringraziamento} -- Leggimi l'email intitolata {EmailSubject=Felice Anno Nuovo} -- Leggimi le e-mail da {SenderName=Agatha} -- Leggimi il {OrderReference=Ultima} Posta elettronica {SenderName=Claude} Inviato -- Leggimi il {OrderReference=Ultima} e-mail del {Time=cinque minuti} -- Leggimi il {OrderReference=Più recente} Posta elettronica -- Leggimi il {OrderReference=Recente} email intitolata {EmailSubject=Abcd} Da {SenderName=Jessica} -- leggere la maggior parte {OrderReference=Recente} Posta elettronica -- leggere la mia email da {SenderName=Bambino} -- leggere la mia email da {SenderName=Marito} -- leggere la mia email da {SenderName=Tyler Moffett} -- leggere i miei messaggi di posta elettronica -- leggere la mia e-mail per favore -- leggere la mia e-mail a me -- leggere le mie e-mail -- leggere le mie e-mail da {SenderName=Grasso} -- leggere la mia casella di posta -- leggere il mio {OrderReference=Ultima} Posta elettronica -- leggere il mio {OrderReference=Ultima} e-mail a me -- leggere il mio {OrderReference=più recenti} Posta elettronica -- leggere il mio {Category=Nuovo} Posta elettronica -- leggere il mio {Category=Nuovo} E-mail -- leggere la mia notifica -- leggere il mio {EmailPlatform=Outlook} Posta elettronica -- leggere il mio {OrderReference=Recente} Posta elettronica -- leggere il mio {OrderReference=Recente} messaggio di posta elettronica per favore -- leggere il mio {OrderReference=Recente} messaggi di posta elettronica -- leggere il mio {OrderReference=Recente} e-mail a me -- leggere il mio {PositionReference=Secondo} Posta elettronica -- Leggere {Category=Nuovo} Posta elettronica -- Leggere {Category=Nuovo} e-mail da {SenderName=david ma} -- Leggere {Category=Nuovo} Messaggio -- leggere {SenderName=Darren} la posta di -- leggere l'e-mail da {SenderName=Liu} Circa {EmailSubject=Trasferimento} -- leggere {SenderName=Moneta} e-mail di {EmailSubject=Notizie di Apple} -- leggere per favore -- Leggere {OrderReference=Recente} Posta elettronica -- leggere l'e-mail -- leggere l'e-mail su {EmailSubject=auto riparazione} -- leggere il {PositionReference=Prima} Posta elettronica -- leggere il {PositionReference=Prima} e-mail in {Line=Hotmail} -- leggere il {OrderReference=Ultima} Posta elettronica -- leggere il {OrderReference=Ultima} messaggio di posta elettronica -- leggere il {OrderReference=Ultima} e-mail da {FromRelationshipName=Mamma} -- leggere il {OrderReference=Ultima} e-mail da {SenderName=Steve labbro} -- leggere il {OrderReference=Ultima} e-mail ho inviato -- Leggere {Date=Oggi} Posta -- Leggere {Date=Oggi} la posta di -- Leggere {Category=non letti} Posta elettronica -- Leggere {Category=non letti} Messaggio - - -## Reply -- creare una risposta all'e-mail dicendo {Message=pls mi mandi l'immagine di nuovo} -- email indietro -- email indietro {Message=ti richiamerò} -- come rispondere a un'email -- fare una risposta con {Message=Mille Grazie} -- Risposta -- Rispondi via email {Message=La ringrazio molto cordiali saluti Jun} -- rispondere dicendo {Message=Ti amo} -- rispondere dicendo {Message=Sì} -- risposta digitando {Message=Ciao} -- Risposta {Message=Obbligatorio} a un'e-mail -- rispondere che {Message=Io sono occupato} -- rispondere a {ContactName=Edward} -- Rispondi all'email {Message=Io sono occupato ora} -- rispondere al mio {OrderReference=Ultima} Posta elettronica -- rispondere a {ContactName=Susan} -- rispondere all'e-mail -- rispondere alla {PositionReference=Prima} Uno -- Risposta {Message=Ci vediamo più tardi} -- rispondere con {Message=Ciao} -- Risposta {Message=Di Yee ha} -- Risposta {ContactName=Yee} {Message=Ciao} -- Risposta {Message=Sì capo.} -- Rispondere {Message=i ' m malato posso ' t farlo} -- rispondere a {ContactName=Lore Hound} -- rispondere a {ContactName=Nathan} -- rispondere all'e-mail dicendo {Message=Io sono occupato oggi} -- Ritorno {ContactName=Barbara} sul {Line=Mobile} -- Ritorno {ContactName=Husky siberiano} {Line=Mobile} -- inviare e-mail indietro -- inviare la risposta con {Message=Ho già sapere} - - -## SearchMessages -- si può cercare le mie e-mail -- rilevare le email da {SenderName=Betty} -- rilevare l'e-mail contenente la parola chiave {SearchTexts=Bellezza} -- rilevare l'e-mail da {SenderName=Lisa} -- Ho avuto alcuna e-mail da {SenderName=Tom} -- Ho avuto le e-mail da {SenderName=Tom} -- Ho avuto l'e-mail contenente parola chiave {SearchTexts=Pranzo} -- e-mail inviate da {SenderName=Nove} -- e-mail contiene {SearchTexts=Banca} -- enumerare le e-mail con {SearchTexts=di algroithm} -- trovare un'e-mail su {EmailSubject=pianificazione di Capodanno} -- trovare un'email da abc123@outlook.com -- trovare un'e-mail da {SenderName=Angela} -- trovare un'e-mail da {SenderName=Jay} che contiene {SearchTexts=Halloween} -- trovare un'e-mail sul {EmailSubject=prenotazione cena} -- trovare e-mail intitolato {EmailSubject=nuovo design} -- trovare e-mail con il titolo {EmailSubject=strumenti di produzione} -- trovare le e-mail da {FromRelationshipName=Mamma} -- trovare le email che contengono {SearchTexts=Malta} -- trovare e-mail con {SearchTexts=riassumere} -- trovare mail intitolate {EmailSubject=corsi consigliati} -- elencare le e-mail contengono {SearchTexts=Foto divertente} -- alla ricerca di una e-mail con {SearchTexts=Ciao} -- interrogare le email con {SearchTexts=Bill} -- cercare un'e-mail con il soggetto {EmailSubject=screening di sfondo} -- Ricerca {SearchTexts=bla bla} nelle mie email -- e-mail di ricerca contengono {SearchTexts=Outlook} -- e-mail di ricerca con parole chiave {SearchTexts=Pranzo} -- e-mail di ricerca su {EmailSubject=Canottaggio} -- le email di ricerca contengono {SearchTexts=elementi di lavoro} -- e-mail di ricerca contiene {SearchTexts=Coupon} -- e-mail di ricerca da {SenderName=Mike} -- Ricerca {SenderName=Jensen} e-mail di -- Parole chiave di ricerca {SearchTexts=keywordone keywordtwo} nelle mie email -- Ricerca {SearchTexts=keywordsone keywordstwo} dalla posta in arrivo -- cercare le mie e-mail -- testo di ricerca con parole {SearchTexts=pranzo insieme} -- Cerca nell'email con le parole chiave {SearchTexts=Ciao} -- cercare le e-mail contiene {SearchTexts=Microsoft} -- cercare le e-mail contiene {SearchTexts=Soldi} -- mostrare le email contengono parole " {SearchTexts=futuro piano} " -- mostrare le email con " {SearchTexts=carta di credito} " -- mi mostrano le e-mail da {FromRelationshipName=Fidanzata} -- mi mostrano le e-mail da {SenderName=Kelly Chan} -- Mostrami l'e-mail su {EmailSubject=Festival di primavera} -- Mostrami l'email da {SenderName=Tom} e filtraggio con parola {SearchTexts=Pranzo} -- Mostrami l'email inviata da {FromRelationshipName=Mamma} -- Dimmi l'e-mail da {SenderName=Lucas Wong} -- Dimmi l'e-mail con soggetto {EmailSubject=rapporto settimanale} - - -## SendEmail -- comporre una nuova e-mail su {EmailSubject=compiti di spagnolo} -- creare una nuova mail intitolata {EmailSubject=informazioni urgenti sulla riunione} A {ContactName=Jonathan} -- e-mail il messaggio "bene, OK" -- e-mail il mio {RelationshipName=Fratello} -- e-mail il mio {Attachment=Presentazione} -- e-mail il {Attachment=File} A {ContactName=Henry Mathew} -- e-mail a {ContactName=Alex Cooper} Circa {EmailSubject=Haha} Dicendo {Message=Ciao} -- e-mail a {ContactName=Harry Potter} E {ContactName=Hermione Granger} -- e-mail a {ContactName=Kim bianco} Circa {EmailSubject=quel fiore} Dicendo {Message=Bella} -- e-mail a {ContactName=Lawrence} Circa {EmailSubject=problema di apertura} -- e-mail a {ContactName=Mike acque} : {Message=Mike, quella cena la scorsa settimana è stato splendido.} -- e-mail a partoneparttwo@gmail.com -- Ho bisogno di inviare una e-mail sul {EmailSubject=Parole a una canzone} -- fare una nuova e-mail su {EmailSubject=Previsioni meteo} -- contrassegnare l'e-mail per {Category=seguire} e inviare a {ContactName=Arthur} -- nuova e-mail su {EmailSubject=parlare davvero bene} A {ContactName=Michelle} -- nuova e-mail su {EmailSubject=scrittura di documenti} -- nuova e-mail a {ContactName=Kimberly} Circa {EmailSubject=Wingman} -- inviare una mail a {ContactName=Leehom Wong} sulla {EmailSubject=Pianoforte Concerto} Dicendo {Message=è meraviglioso} -- inviare una mail a {ContactName=Daniel} -- inviare una nuova e-mail su {EmailSubject=Facebook} -- inviare una nuova e-mail sul {EmailSubject=torneo di hockey} A {ContactName=Marie Jane} , {ContactName=Joseph} E {ContactName=John} -- inviare una nuova e-mail sul {EmailSubject=risoluzione dei problemi} A {ContactName=Andrea} , {ContactName=Angela} E {ContactName=Ron} -- inviare una nuova e-mail a {ContactName=Larry} con un {Attachment=File} Collegato -- inviare una nuova e-mail a {ContactName=Nicholas} E {ContactName=Jesse} Circa {EmailSubject=Coupon} -- inviare una nuova email a partonepartwopartthree@yahoo.com -- inviare un nuovo {Category=grande importanza} e-mail a {ContactName=Giordania} -- inviare un {Category=lettura ricevuta} e-mail a {ContactName=Samuel} -- Invia {ContactName=Alexander} Un {Category=rosso Bang} Posta elettronica -- inviare un'e-mail -- inviare un'e-mail su {EmailSubject=nuotare pratica squadra} -- inviare un'e-mail su {EmailSubject=stato del test} A {ContactName=Segno} -- inviare un'e-mail sul {EmailSubject=finestra che è rotto} -- inviare una mail per me -- inviare un'e-mail contrassegnata {Category=seguire} A {ContactName=Jerry} -- inviare un'e-mail contrassegnata per {Category=seguire} A {ContactName=Cristiano} -- inviare un'e-mail contrassegnata con un {Category=colpo} A {ContactName=Amy} -- inviare una mail a {ContactName=a. j. Ron} Contrassegnato come {Category=Importante} -- inviare una mail a {ContactName=Christopher falegname} sulla {EmailSubject=escursione escursionistica} -- inviare una mail a {ContactName=Harold} E {ContactName=Paul EIMA} Circa {EmailSubject=team di pranzo} Dicendo {Message=stesso pranzo di squadra questo martedì} -- inviare una mail a {ContactName=Harry Potter} -- inviare una mail a {ContactName=Jacqueline} E {ContactName=Tianyu} sulla {EmailSubject=risultato del test} -- inviare una mail a {ContactName=Jesse Klein} Dicendo {Message=Questo è il messaggio su piani week-end} -- inviare una mail a {ContactName=Larry} , {ContactName=Joseph} E {ContactName=Billy larkson} -- inviare una mail a {ContactName=Lily Roth} e abc123@microsoft.com -- inviare una mail a Lily@gmail.com -- inviare una mail a {ContactName=Leggere} , {ContactName=Yue} E {ContactName=Qiong} Circa {EmailSubject=Finanziamento} -- inviare una mail a {RelationshipName=Mamma} -- inviare una mail al mio {RelationshipName=Fratello} -- inviare una mail a {ContactName=Nathan} con un {Category=rosso Bang} -- inviare una mail a partone_parttwo@microsoft.com -- inviare una mail a {ContactName=Sean} Circa {EmailSubject=week-end piani} -- inviare una mail a {ContactName=Zachary} Circa {EmailSubject=Siamo in grado di pianificare le cose andiamo a fare escursioni} -- inviare un'e-mail {Date=Oggi} -- inviare un'e-mail con {Category=lettura ricevuta} A {ContactName=Peter} -- inviare un {Category=Importante} e-mail a {ContactName=Olivia} -- inviare un {Category=Urgente} Posta elettronica -- inviare un {Category=Urgente} e-mail dal mio {Line=conto di lavoro} A {ContactName=Cristiano} -- inviare un {Category=Urgente} e-mail dal mio {Line=Lavoro} e-mail a {ContactName=Jack} -- inviare ed e-mail su {EmailSubject=nuotare pratica squadra} -- Invia {ContactName=Angela} un'e-mail contrassegnata come {Category=alta priorità} -- Invia {ContactName=Billy} un'e-mail con un {Category=rosso Bang} -- inviare e-mail su {EmailSubject=compiti piano} A {ContactName=Raymond} E {ContactName=Philip} -- Invia e-mail contrassegnata {Category=Priorità} A {ContactName=Yun-SIM} E {ContactName=Mangiare} -- inviare e-mail a {ContactName=Un} E {ContactName=Tian} -- inviare e-mail a {ContactName=Hannah} Dicendo {Message=Test} -- inviare e-mail a {ContactName=erica} Circa {EmailSubject=Auto} -- inviare e-mail a {ContactName=Jiayi} {Date=Oggi} -- inviare e-mail a {ContactName=Di Kai Xu} , {ContactName=Mingming} e la mia {RelationshipName=Madre} -- inviare e-mail a {ContactName=Louis} e segnarlo {Category=Importante} -- inviare e-mail a PartOne.PartTwo@outlook.com -- Invia {Category=Importante} e-mail a {ContactName=Evelyn} E {ContactName=Gary} -- Invia {ContactName=Jacqueline} una mail con {Category=Priorità bassa} -- Invia {Attachment=file di grandi dimensioni} tramite e-mail -- Invia {ContactName=Lori} un nuovo {Category=Contrassegnato} Posta elettronica -- inviare la posta a {ContactName=Dorothy} -- inviare il mio {Attachment=pulizia doc} A {ContactName=Jeffrey} -- inviare il mio {Attachment=diagramma di Visio di pagamento} A {ContactName=Ronald} -- inviare una nuova email a {ContactName=Cristiano} e segnarlo {Category=grande importanza} -- inviare l'e-mail -- inviare l'e-mail {Time=ora} -- inviare questo {Attachment=Documento} a un'e-mail -- Invia {ContactName=Tommaso} una mail -- impostare un'e-mail {Date=Oggi} -- iniziare una nuova e-mail su {EmailSubject=matrimonio consigliere appuntamenti} -- avviare una nuova email da {SenderName=Tracy} Dicendo {Message=Ecco il mio curriculum} -- iniziare una nuova e-mail dicendo {Message=lascia andare al parco} -- avviare una nuova email per {ContactName=Aaron} Circa {EmailSubject=dormire stasera} -- avviare un'e-mail a {ContactName=Jason} Circa {EmailSubject=parlando} -- iniziare una nuova e-mail su {EmailSubject=Taco Blog} A {ContactName=Nicole} E {ContactName=Emily} -- avviare una nuova email per {RelationshipName=amici} sulla {EmailSubject=Club} -- avviare un nuovo oggetto di posta {EmailSubject=nigeriano Principe} -- avviare una nuova e-mail per {ContactName=Michelle} Circa {EmailSubject=guardando baseball} -- la nuova email è {Category=alta priorità} che viene inviato a {ContactName=Jacob} -- si invia un marcato {Category=Non urgente} e-mail a {ContactName=James} -- scrivere una mail sul {EmailSubject=Raccolta fondi} -- scrivere una e-mail che il titolo è {EmailSubject=Ciao} e il contesto è {Message=Cerchiamo di incontrare insieme} -- scrivere un {Category=Urgente} e-mail a {ContactName=Bobby} -- scrivere email -- scrivere e-mail a {RelationshipName=Mamma} soggetto è {EmailSubject=Babysitter} - - -## ShowNext -- Ci sono {Category=non letti} Messaggi? Visualizza {OrderReference=prossimo} -- avanti, mostrami più mail -- Vai a {OrderReference=prossimo} Posta -- andare al {OrderReference=prossimo} Pagina -- andare avanti -- andare avanti {OrderReference=prossimo} posta da Jason -- {OrderReference=prossimo} Posta elettronica -- {OrderReference=prossimo} {Category=non letti} Posta elettronica -- {OrderReference=prossimo} {Category=non letti} Uno -- Mostrami il {OrderReference=prossimo} -- Mostrami il {OrderReference=prossimo} cinque mail -- Visualizza {OrderReference=prossimo} Posta elettronica -- Visualizza {OrderReference=prossimo} {Category=non letti} -- mostrare la {OrderReference=prossimo} e-mail dal mio {FromRelationshipName=Capo} -- mostrare la {OrderReference=prossimo} e-mail da Wong -- mostrare la {OrderReference=prossimo} Messaggi -- Le {OrderReference=prossimo} Posta elettronica -- Le {OrderReference=prossimo} {Category=Importante} Messaggio - - -## ShowPrevious -- Torna al {OrderReference=Ultima} uno da {SenderName=mela} -- portare il {OrderReference=Precedente} uno, voglio leggerlo di nuovo -- Vai a {OrderReference=Precedente} Mail -- {OrderReference=Precedente} Posta elettronica -- {OrderReference=Precedente} uno per favore -- Fammi vedere {OrderReference=Precedente} e-mail da {SenderName=Jack} -- Mostrami il {OrderReference=Ultima} tre mail -- Mostrami il {OrderReference=Precedente} Posta elettronica -- Visualizza {OrderReference=Precedente} Pollici {Category=Rosso} Categoria -- Visualizza {OrderReference=Precedente} uno in posta in arrivo -- mostrare la {OrderReference=Precedente} e-mail dal mio {SenderName=Mentore} -- mostrare la {OrderReference=Precedente} Uno -- Le {OrderReference=Precedente} Posta elettronica -- Qual è il {OrderReference=Precedente} Posta elettronica - - -> # Entity definitions - -$Attachment:simple - -$Category:simple - -$ContactName:simple - -$Date:simple - -$EmailPlatform: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:number - -$PREBUILT:ordinal - - -> # Phrase list definitions - - -> # List entities - - diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/zh/email.lu b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/zh/email.lu deleted file mode 100644 index 2e9229086e..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/CognitiveModels/LUIS/zh/email.lu +++ /dev/null @@ -1,623 +0,0 @@ -> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Thu Feb 28 2019 16:43:57 GMT+0800 (China Standard Time) - -> ! Source LUIS JSON file: email.json - -> ! Source QnA TSV file: Not Specified - -> ! Source QnA Alterations file: Not Specified - - -> # Intent definitions - -## AddFlag -- 在这上面标记一下。 -- {SenderName=小王}发来的邮件加上标记 -- 我想要加一个星标。 -- 把发给{ContactName=露丝}的邮件标记下。 -- 把我{FromRelationshipName=妈}{OrderReference=最近}给我发的邮件加一个标记。 -- 把{OrderReference=最新}的邮件标记了。 -- 把{OrderReference=最近}收到的邮件标记上。 -- 把来自{SenderName=托马斯}的邮件标记下。 -- 把{SenderName=约翰}刚给我发的邮件标记一下。 -- 把这个邮件做个标记 -- 把这个邮件标记上。 -- 把这个邮件添加上<{Category=重要}>这个标记。 -- 把这封邮件加上一个标记 -- 把这封邮件标记了。 -- 把这封邮件给我标记成{Category=重要} -- 标记一下 -- 标记下来自{SenderName=戴维斯}的邮件 -- 标记下这个消息 -- 标记当前的邮件 -- 标记这封邮件 -- 标记这封邮件为“{Category=重要}” -- 标记这封邮件吧 -- 标记邮件 -- 添加标记。 -- 给它加个标记 -- 给邮件加上标记 -- 请帮我把{SenderName=江}发给我的邮件标记了。 -- 这封邮件需要标记一下。 -- 麻烦增加个标记。 - - -## AddMore -- 再写一些吧。 -- 再写上:{Message=我确认} -- 再写上“{Message=请取消}” -- 再写上{Message=我会回复他的。} -- 再加一些东西进去吧。 -- 再加上“{Message=喜欢整个计划吗?}”这句话。 -- 再加入一些文本。 -- 再加几句话到邮件里。 -- 再多写一些内容。 -- 再添加几封邮件。 -- 加下主题。 -- 在上封邮件中添加一些内容。 -- 在发给{ContactName=约翰}的邮件中加一句“{Message=我很好}”。 -- 在{OrderReference=最新}的一封邮件中,添加一些内容。 -- 在正文里添加一句话 -- 在这封邮件里加一个附件。 -- 在这条邮件消息里我想再加入一些内容。 -- 在邮件的正文增加内容。 -- 在邮件里再多加些内容 -- 在邮件里再添加多些内容。 -- 增加一个{Attachment=照片}的附件。 -- 好吧,我需要给它再加一些内容。 -- 好的,我需要增加一些东西 -- 它不完整,还要加些内容 -- 它需要再加入一些细节。 -- 往邮件中加一条:“{Message=谢谢。}”的消息。 -- 往邮件里再加一条消息,写上:{Message=我觉得还不错}。 -- 往邮件里再添加一些内容 -- 往邮件里追加以下信息。 -- 我可以再往邮件里加一些内容吗? -- 我希望可以再加入一些内容到这个邮件消息里。 -- 我想再另起一行。 -- 我要在发给{ContactName=雪莉}的{EmailSubject=新年计划}主题邮件里再加入一些内容。 -- 我要在邮件里添加一些东西 -- 我要添加更多的内容。 -- 我还没做完呢,我还得再加一些细节 -- 我需要往上条消息里加入一些信息。 -- 正文里面再加一点 -- 消息里添加{Message=今晚工作结束后打电话给我} -- 添加一个{Attachment=文件}的附件到邮件里。 -- 添加一个{Attachment=照片}的附件。 -- 添加内容:{Message=顺便问下,下一步的计划是什么} -- 添加内容里。 -- 等等,我需要再写点东西 -- 继续添加上“{Message=你好}” -- 编辑邮件,以便我可以输入其他消息 -- 要发给{ContactName=文森特}的邮件消息里,我需要加一些话 -- 请再加一点儿呗 -- 请帮我再加一些文本内容。 -- 请补充:{Message=请让我知道我能带什么,我很乐意做一道配菜或甜点} -- 还要再加一些东西。 -- 这条消息我要再加几句话 -- 这条消息需要再加一些内容进去。 -- 这条消息需要增加并且修改一些内容。 -- 邮件里添加更多内容 -- 随便添加一些东西进去。 -- 麻烦再帮我插入几行。 -- 麻烦帮我加下:{Message=请告诉我我可以带些什么,我很乐意做一盘菜或者甜点。} - - -## CancelMessages -- 不,把给{ContactName=晓明}发送的邮件取消。 -- 不了,我不想发送这个消息了 -- 不用回复了,放弃 -- 不要打给她 -- 别把{FromRelationshipName=弟弟}发来的邮件转发给{RelationshipName=妈妈}了 -- 别读邮件了 -- 别转发给{ContactName=Jerry}这封邮件了 -- 取消刚刚说的转发操作 -- 取消发送这封邮件 -- 取消掉给{ContactName=凯西}发送的信息。 -- 嗯… 我不想发送这封邮件了。 -- 把给{EmailAddress=xyz@163.com}的邮件取消吧 -- 把这个文本取消 -- 把这条消息关掉 -- 把那条指令删除吧。 -- 撤销给{EmailAddress=yashna_ten@hotmail.com}发送的邮件。 -- 撤销给{ContactName=娜塔莉}发送的{EmailSubject=嘉年华计划} -- 撤销这封邮件 -- 没关系的,把这个消息取消吧。 -- 算了,别发给{ContactName=Tom}了 -- 那封邮件别发了 - - -## CheckMessages -- 刚才有人给我发消息了吗? -- 我想检查一下我的收件箱。 -- 我收到新消息了吗? -- 我收到新消息了嘛? -- 我收没收到新的电子邮件? -- 我有新的电子邮件吗? -- 我要查一下邮箱 -- 拜托看一下我的收件箱 -- 收件箱里有新邮件吗? -- 显示{OrderReference=最新的}邮件 -- 有新邮件吗? -- 有没有新消息? -- 有没有新的邮件发给我? -- 查一下我是否收到新邮件了。 -- 查一下收件箱里的内容。 -- 查一下新邮件 -- 查一下有没有刚发来的邮件 -- 查一下有没有新消息。 -- 查收一下我的消息 -- 检查一下我的邮箱。 -- 检查一下邮件。 -- 检查我的所有邮件。 -- 看一下我是否收到了新消息 -- 看一下我有没有收到新消息。 -- 看看我有没有新消息。 -- 给我看下我的邮件 -- 能否检查一下我的消息? -- 请帮我看一下我的邮箱里收没收到邮件。 -- 请查看我的收件箱。 -- 请检查一下我有没有新收到邮件。 -- 请检查一下我的全部邮件。 -- 请检查我的所有消息。 -- 请看一下有没有新的邮件。 -- 麻烦你检查一下我的收件箱好吗? -- 麻烦帮我看一下我是否收到新的邮件了。 -- 麻烦查一下我的邮件。 -- 麻烦查收邮件 - - -## ConfirmMessages -- 可以了,发送吧。 -- 可以了,{Time=现在}就发送。 -- 嗯,看{OrderReference=下一封}邮件 -- 好,发吧。 -- 对,撤销发送 -- 对的,请把这条消息发出去喽。 -- 对的,转发给她 -- 我确定一定以及肯定,我要发送这封邮件。 -- 我确定发送 -- 我确定要取消 -- 我确认,请转发给{EmailAddress=xyz@gmail.com} -- 我确认要回复 -- 我确认转发给{ContactName=小郭}这封{SenderName=小王}的邮件 -- 是的,发到 {EmailAddress=xyz@outlook.com} -- 是的,给我念一下这封邮件 -- 是的,请把{EmailSubject=节日计划}发送给{ContactName=王红} -- 没错,发送给{ContactName=Tom}这份{EmailSubject=工作安排}邮件 -- 确认发送给{ContactName=小李}这个回复 -- 确认发送给{ContactName=马利}关于{SearchTexts=工作计划}的邮件 -- 确认转发给{ContactName=Tom} -- 确认转发给{ContactName=陈明} - - -## Delete -- 从我的{Line=hotmail}账户中删了这封邮件 -- 从我的收件箱中删除它 -- 你能帮我删掉它吗 -- 删了{PositionReference=最后一封} -- 删了{SenderName=玛丽·简}发来的邮件 -- 删掉我刚刚写的东西 -- 删掉{PositionReference=第二个} -- 删除{Time=今晚}收到的所有邮件 -- 删除{Category=红色}标记的那些邮件 -- 删除{Category=红色}标记的邮件 -- 帮我删了{PositionReference=第一封}邮件 -- 彻底删除此消息 -- 把它移到回收站 -- 把{Date=昨天}收到的邮件都删掉 -- 把这个文件夹里的邮件都放到垃圾箱里 -- 把这封邮件删除吧 -- 把这封邮件扔进回收站吧 -- 把这封邮件拖进垃圾箱去 -- {Category=未读}邮件统统删掉 -- 清空我的收件箱 -- 清空收件箱里的邮件 - - -## Forward -- 你明天能帮我把这个邮件转发到{EmailAddress=asdf@outlook.com}这个邮箱吗? -- 可以把{SenderName=小李}发来的这封邮件转发给{ContactName=罗素}和{ContactName=黛安}吗? -- 把“{Attachment=行程文件}”一起转发给我的老板。 -- 把所有来自{SenderName=莎莉}的文件转发给{ContactName=彼得} -- 把{OrderReference=最新}的邮件转发给{ContactName=苏珊}。 -- 把消息转发给{RelationshipName=女朋友} -- 把这个关于{EmailSubject=个税}的消息转发给{ContactName=安}吧 -- 把这封{FromRelationshipName=堂姐}的邮件转发给{ContactName=珍妮佛} -- 把这封{SenderName=安妮}发来的电子邮件转发给{ContactName=约瑟夫}。 -- 把这封邮件转发到{EmailAddress=asdf@gmail.com} -- 把这封邮件转发给{EmailAddress=partone.parttwo@gmail.com} -- 把这封邮件转发给我的{RelationshipName=老婆},加上“{Message=我爱你}” -- 把邮件转发给{ContactName=凯斯},再加上:{Message=你是怎么想的?} -- 把邮件转发给{ContactName=哈利}。 -- 把邮件转发给{ContactName=玛丽莲},再额外加上:{Message=我不想这样。} -- 给我的{RelationshipName=女朋友}转发这条消息。 -- 能否把这封邮件转发给我的{RelationshipName=妹妹}? -- 请帮我把我{FromRelationshipName=爸}发的消息转发出去。 -- 请把这个邮件转发给我{RelationshipName=妈}。 -- 请把这封{EmailSubject=技术方案}的邮件转发给{ContactName=奥斯丁}。 -- 请把这封{EmailSubject=技术路线}转发给{ContactName=阿什利} -- 请把邮件转发到{EmailAddress=partoneparttwo@outlook.com} -- 转发此消息。 -- 转发给{ContactName=杰瑞},并且写上:{Message=同意} -- 转发这些{EmailSubject=节日计划}邮件给{ContactName=陈晓红}。 -- 转发这封邮件。 -- 转发这条消息。 -- 邮件转发给{RelationshipName=妈妈}。 -- 麻烦帮我把{SenderName=汤姆}发的邮件转发给{ContactName=麦克} -- 麻烦把这条消息转发给我的{RelationshipName=爸爸}。 -- 麻烦转发这个{EmailSubject=项目现状}邮件给{ContactName=奥斯丁},再写上:{Message=一切都会好起来的。} - - -## None -- 1 -- 2 -- 3 -- {PositionReference=第一个} -- 第三个 -- {PositionReference=第二个} - - -## QueryLastText -- {Date=今天}我收到的{PositionReference=最后一封}邮件是什么? -- 刚刚谁给我发消息了 -- 刚才谁给我发消息了? -- 刚才谁给我发邮件了? -- 刚收到的邮件是什么内容? -- {SenderName=哈利}在{OrderReference=上一封}邮件中说什么了? -- {FromRelationshipName=妈妈}刚才在邮件中说什么了? -- 我{FromRelationshipName=爸}给我发的{PositionReference=最后一封}是关于啥的? -- 我要查看{PositionReference=最后一封}邮件 -- 打开{PositionReference=最后一封}邮件 -- 打开{OrderReference=最后}给我发过来的邮件。 -- {PositionReference=最后一封}邮件是谁发来的? -- {PositionReference=最后}收到的邮件是什么? -- {PositionReference=最后}的这封邮件是谁发的? -- {PositionReference=最后}那封邮件 -- {OrderReference=最新}收到的这封邮件是谁发的? -- {Time=现在}收到的邮件是谁发来的? -- 给我打开{PositionReference=最后}的电子邮件。 -- 给我看一下{PositionReference=最后}的电子邮件。 -- 给我看一下{OrderReference=最近的}邮件。 -- 请告诉我谁是{PositionReference=最后}给我发邮件的? -- 谁发信息给我了 -- 谁在刚才发来的邮件? -- 谁是{PositionReference=最后一个}给我发来邮件的? -- 谁{OrderReference=最近}给我发邮件了? -- 谁给我发邮件了? - - -## ReadAloud -- 你能帮我读一下这封{EmailSubject=如何使用新工具}的邮件吗? -- 听一下{OrderReference=最新}的邮件 -- 听听{OrderReference=最近}的邮件。 -- 大声念一遍关于{EmailSubject=圣诞party}的邮件 -- 大声读出我的新邮件 -- 帮我读一下我的邮件呗。 -- 念一下{SenderName=张明}发来的邮件 -- 念一下我{OrderReference=刚}收到的邮件。 -- 念一遍{SenderName=小王}发来的邮件。 -- 我{OrderReference=最新}收到的全部邮件朗读一遍 -- 我要听一下我的邮件 -- 我要听一听{SenderName=唐娜怀特}发来的邮件 -- 我要听取{SenderName=史蒂夫李}{OrderReference=刚刚}发来的邮件 -- 把我{OrderReference=刚收到的}邮件读取出来。 -- 把我{OrderReference=最近}的邮件读取出来。 -- 把我的{PositionReference=第二封}电子邮件读一下。 -- 把我的通知读取一下。 -- 把{PositionReference=最后一封}邮件读给我听 -- 把{OrderReference=最新}的邮件读一下。 -- 把来自{SenderName=sexy desti}的邮件读出来 -- {Time=最近5分钟}收到的全部邮件读读. -- 朗读{SenderName=小陈}发来的邮件 -- 朗读我{Category=未读}的{PositionReference=前两封}邮件 -- 朗读消息内容 -- 给我听一下这个邮件的内容 -- 给我念一下{SenderName=斯考特}发来的邮件。 -- 给我读一下{OrderReference=最新}收到的邮件。 -- 给我读下{EmailPlatform=hotmail}邮箱里{OrderReference=最新}的邮件。 -- 给我读读{SenderName=jessica}最新一封标题为{EmailSubject=abcd}的邮件 -- 能给我读一下我的邮件消息么? -- 请帮我读一下我的邮件。 -- 请阅读一下我的{OrderReference=最新}的邮件。 -- 读一下关于AI公司自动驾驶技术研究的邮件 -- 读一下{SenderName=凯特}发来的邮件 -- 读一下来自{SenderName=徐先生}的关于{EmailSubject=苹果新闻}的邮件 -- 读一下邮件。 -- 读一下{SenderName=马特}发来的邮件 -- 读一遍{SenderName=克劳德}{OrderReference=最新}发给我的邮件。 -- 读一遍{Date=感恩节}那天发送的邮件 -- 读一遍{EmailPlatform=谷歌}邮箱里的邮件。 -- 读下我{OrderReference=刚}收的邮件 -- 读下链接收件箱中的{PositionReference=第一封}邮件 -- 读取{EmailPlatform=hotmail}邮箱里的{PositionReference=第一封}电邮。 -- 读取一下我的邮件消息。 -- 读取我{OrderReference=最近}刚收到的邮件。 -- 读取我的 {EmailPlatform=outlook} 邮箱里的电子邮件 -- 读取{PositionReference=第一封}电子邮件。 -- 读给我听{SenderName=dylan}{Date=昨天}发的邮件 -- 读读{FromRelationshipName=妈妈}发的邮件 -- 读读我{EmailPlatform=outlook}邮箱里的邮件 -- {Category=还没有看的}邮件,读给我听 -- 麻烦帮我读一下邮件好嘛? - - -## Reply -- 创建一个回复写上:{Message=非常感谢。} -- 回一下,说:{Message=我很忙。} -- 回下{PositionReference=第一个} -- 回复:{Message=咦哈} -- 回复:{Message=我已经知道了。} -- 回复:{Message=我很忙。} -- 回复“{Message=我爱你}” -- 回复一下{SenderName=小李} -- 回复一条消息:{Message=我很快就能见到你了} -- 回复到:{Message=我生病了,我做不了} -- 回复{Message=可以} -- 回复{Message=好的} -- 回复{Message=您说的事宜我已悉知,会妥善安排解决。} -- 回复我{OrderReference=最新}收的邮件 -- 回复{SenderName=晓明},{Message=明天可以} -- 回复来自{SenderName=罗萨多}的邮件。 -- 回复{SenderName=王云},{Message=我知道了} -- 回复该邮件,写上{Message=我今天很忙}。 -- 回复说:{Message=伊哈} -- 回复输入“{Message=你好}” -- 回复邮件 -- 回复邮件,写:{Message=我会给你回电话} -- 在{Line=手机}上给{ContactName=斯蒂夫}回信。 -- 把“{Message=会议早上八点开始}”这个消息回复过去。 -- 把“{Message=我在路上呢}”回复过去。 -- 把“{Message=记得联系我}”回复过去。 -- 用手机回复{Message=siberian huskies} -- 用邮件给{ContactName=本米尔}回复这次{EmailSubject=工作事项}。 -- 答复邮件 -- 给{ContactName=凯斯}回复{EmailSubject=工作计划}。 -- 给{OrderReference=刚}发来的邮件回复,写上:{Message=早上八点开始会议。} -- 给{ContactName=本米乐}回复邮件,写上:{Message=马上到。} -- 给{ContactName=本米尔}回信。 -- 给来自 {EmailAddress=asdf@gmail.com}的邮件回复消息。 -- 给这封邮件回复一下 -- 给那封邮件回复一条消息:{Message=我现在很忙。} -- 输入“{Message=请再次给我发送图片}”回复这封邮件 - - -## SearchMessages -- 从{EmailAddress=abc123@outlook.com}上找一封邮件 -- 从我的邮件中搜索”{SearchTexts=关键词一关键词二}“。 -- 从收件箱搜索“{SearchTexts=关键词一,关键词二}”。 -- 以关键词“{SearchTexts=午餐}”来搜索邮件。 -- 列举出来带有“{SearchTexts=算法}”的邮件。 -- 在我的邮件里搜索出来{SearchTexts=没用的}邮件。 -- 展示{FromRelationshipName=妈妈}发来的{Category=未读}邮件 -- 帮我搜索一下邮件呗。 -- 帮我查一下来自{SenderName=Tom}的邮件 -- 我{Date=今天}收到{SenderName=陈飞}的邮件了吗? -- 我有收到{SenderName=陈飞}的邮件吗? -- 我有没有收到包含”{SearchTexts=午餐}“的邮件。 -- 找一下来自{SenderName=安吉拉}的邮件 -- 找下带有{SearchTexts=你好}的邮件 -- 找出标题为“{EmailSubject=新设计}”的邮件 -- 找到并打开主题为{EmailSubject=周报}的邮件 -- 把包含”{SearchTexts=有趣的图片}“的邮件列出来。 -- 把包含”{SearchTexts=未来计划}“的邮件找出来。 -- 把包含{SearchTexts=微软}的邮件搜索出来。 -- 搜出含有{SearchTexts=美丽}这个词的邮件 -- 搜索一下有关{SearchTexts=工作项目}的邮件。 -- 搜索以”{SearchTexts=你好}“为关键词的邮件。 -- 搜索关于“{SearchTexts=优惠券}”的邮件 -- 搜索关键词是“{SearchTexts=午餐}”的邮件。 -- 搜索包含”{SearchTexts=晚餐}“的邮件 -- 搜索带有{SearchTexts=信用卡}的电子邮件 -- 搜索我所有的邮件 -- 搜索所有关于{SearchTexts=苹果7}的邮件。 -- 搜索来自{SenderName=笛莎}的邮件 -- 搜索来自{SenderName=迈克}的邮件 -- 显示{EmailAddress=abczyx@outlook.com}刚刚发来的邮件 -- 显示来自{SenderName=汤姆}的邮件,并筛选“{SearchTexts=午餐}”这个词 -- 查一下来自{FromRelationshipName=妹妹}的邮件 -- 查下{SenderName=丽莎}发来的邮件 -- 查找一封{EmailSubject=新年计划}的邮件 -- 查找包含{SearchTexts=马尔代夫}的邮件 -- 查找所有{SearchTexts=信用卡}相关的邮件 -- 查找来自{FromRelationshipName=妈妈}的邮件 -- 查找标题为{EmailSubject=瑜伽运动推荐课程}的所有邮件 -- 查找{SenderName=詹先生}的邮件 -- 查看{EmailPlatform=outlook}邮箱中{SenderName=小王}发来的信息 -- 查看{SenderName=李明}发来的邮件 -- {SenderName=汤姆}给我发邮件了吗? -- 看一下来自{SenderName=lucas wong}的邮件 -- 筛选主题包含{SearchTexts=工作计划}的文件 -- 筛选出内容有{SearchTexts=一起午饭}的邮件 -- 筛选出{FromRelationshipName=妈妈}发来的邮件 -- 筛选包含“{SearchTexts=未来计划}”字样的邮件 -- 给我看一下我{FromRelationshipName=女友}发来的邮件。 -- 给我看一下{SenderName=汤姆}{Date=昨天}发来的邮件消息。 -- 给我看看{SenderName=jay}发来的含有“{SearchTexts=元宵节灯谜活动}”字样的邮件 -- 给我看看关于{EmailSubject=春节特别活动}的邮件 -- 麻烦能帮我搜索一下邮件吗 - - -## SendEmail -- {Date=今天}给{ContactName=埃里克}发一封邮件。 -- {Date=今天}要发一封邮件。 -- 从我的邮件里发一封{Category=紧急}邮件给{EmailAddress=part1_part2@hotmail.com} -- 以”{EmailSubject=尼日利亚王子}“为主题,创建一封新的邮件。 -- 写一封新的关于“{EmailSubject=曲棍球锦标赛}”的邮件,群发给{ContactName=玛丽},{ContactName=约瑟夫}和{ContactName=约翰}。 -- 写一封邮件,标题是:{EmailSubject=你好},内容是:{Message=让我们一起见个面吧} -- 写封”{Category=紧急}“邮件发给{ContactName=鲍比}。 -- 创建一个关于“{EmailSubject=婚姻顾问任命}”的新邮件。 -- 创建一封主题为{EmailSubject=墨西哥玉米薄饼卷博客}的邮件,并且分别发送给{ContactName=妮可}和{ContactName=艾米丽}。 -- 创建一封关于”{EmailSubject=起草文件}“的邮件。 -- 创建一封内容是{Message=一起去公园}的邮件 -- 发一封主题是{EmailSubject=冰球比赛}的新邮件给{ContactName=玛丽·简}、{ContactName=约瑟夫}和{ContactName=约翰} -- 发一封电邮。 -- 发一封邮件 -- 发一封邮件给{ContactName=丹尼尔}。 -- 发一封{Category=重要}的电子邮件给{ContactName=伊夫林}和{ContactName=加里} -- 发封主题为{EmailSubject=哈哈}的邮件给{ContactName=亚历克斯·库珀},说声{Message=你好} -- 发封邮件给{ContactName=扎克利},主题为“{EmailSubject=一起计划,一起旅行}” -- 发封邮件给{ContactName=杰奎},{Category=低优先级} -- 发封邮件给{ContactName=迈克·沃特斯},内容是:{Message=迈克,上周的晚餐太丰盛了} -- 发送一封主题为“{EmailSubject=排球}”的邮件给{ContactName=海伦}。 -- 发送一封主题为“{EmailSubject=更大的钟声}”的邮件到 {EmailAddress=asdf@gmail.com} -- 发送一封新的关于{EmailSubject=微博}的邮件。 -- 发送一封电子邮件到 {EmailAddress=partone_parttwo@microsoft.com} -- 发送一封邮件到 {EmailAddress=partone.parttwo@yahoo.com} -- 发送电子邮件到 {EmailAddress=partone.parttwo@outlook.com} -- 发送邮件到 {EmailAddress=asdf@gmail.com}并写上:{Message=我要迟到了。} -- 发送邮件给{ContactName=晓明} -- 发邮件 -- 发邮件到{EmailAddress=lily@gmail.com} -- 发邮件到{EmailAddress=partone.parttwo@gmail.com} -- 发邮件给他,说{Message=今天很高兴} -- 发邮件给{ContactName=哈利波特}和{ContactName=赫敏格兰杰} -- 发邮件给{ContactName=拉里,约瑟夫}和{ContactName=比利·拉克森} -- 基于{SenderName=特蕾西}发的邮件另起一封新的电子邮件,说“{Message=这里是我的简历}” -- 将测试结果发邮件给{ContactName=杰奎琳}和{ContactName=天宇} -- 帮我发一封电子邮件。 -- 我想发一封邮件。 -- 把主题为“{EmailSubject=徒步之旅}”的邮件发给{ContactName=克里斯多夫}。 -- 把主题为”{EmailSubject=开业事项}“的邮件给{ContactName=劳伦斯}发过去。 -- 把主题是{EmailSubject=游泳队训练}的邮件发送出去。 -- 把写着:“{Message=测试}”的邮件发给{ContactName=汉娜} -- 把写着:“{Message=这是我的新手机,很酷吧。}”的邮件发到{EmailAddress=partone.parttwo.partthree@outlook.com} -- 把{Attachment=客房管理的文件}给{ContactName=弗朗克}发过去 -- 把{EmailSubject=家庭作业的计划}邮件发送给{ContactName=雷蒙}和{ContactName=菲利普}。 -- 把我的{Attachment=演示文稿}发送出去。 -- 把我的{Attachment=照片}发给{ContactName=丹尼尔}。 -- 把标注上“{Category=红色警告}”的邮件发出去。 -- 把标记了{Category=优先级}的电子邮件发送给{ContactName=云-西姆}和{ContactName=伊} -- 把这个{Category=爆炸性}的{Attachment=附件}以邮件的形式发给{ContactName=拉里}。 -- 把这些{Attachment=超大文件}通过邮件的形式发送出去。 -- 把这封”{Category=高优先级}“的邮件发给{ContactName=安吉拉}。 -- 把这封{Category=紧急}电邮发送出去。 -- 把这封邮件发送给{ContactName=克里斯丁}并且标记上“{Category=待跟进}”。 -- 把这封邮件标记为{Category=跟进}并发给{ContactName=杰瑞}。 -- 把这封邮件设置成为{Date=今天}发送。 -- 把那封以{EmailSubject=车}为主题的邮件发给{ContactName=海德}。 -- 把邮件发给 {EmailAddress=asdf@gmail.com} -- 把邮件发给{ContactName=帕米拉},标记为“{Category=重要}” -- 把邮件发给我{RelationshipName=哥}。 -- 把邮件发给{ContactName=路易斯}并且标记为{Category=重要}。 -- 把邮件标记为{Category=重要},并且发送给{ContactName=张明} -- 撰写一封新的关于“{EmailSubject=西班牙语家庭作业}”的电子邮件。 -- 新建一封关于“{EmailSubject=俱乐部}”的邮件并且群发给我的{RelationshipName=朋友}。 -- 新建一封关于“{EmailSubject=测试状态}”的新邮件并且给{ContactName=马克}发过去。 -- 新建一封标题为{EmailSubject=紧急会议信息}的邮件发给{ContactName=乔纳森} -- 新建个”{EmailSubject=优惠券}“为主题的邮件发给{ContactName=尼古拉斯}和{ContactName=杰西}。 -- 新建电子邮件 -- {Time=现在}就发送吧。 -- 用我的{Line=工作账号}给{ContactName=christian}发一封{Category=紧急}邮件 -- 用我的{Line=工作邮件}里发一封{Category=紧急}邮件给{ContactName=jack} -- 给{EmailAddress=shawn parker95@google.com}发邮件说{Message=我会和他沟通接下来的计划} -- 给{EmailAddress=yashna underscored ten@hotmail.com}发邮件。 -- 给{ContactName=乔丹}发送一封新的需要{Category=高度重视}的邮件。 -- 给{ContactName=亚伦}写一封新邮件主题是:{EmailSubject=今晚来我家过夜}。 -- 给{ContactName=亚力克西}发邮件,写上:{Message=麦克上周的晚餐非常棒。} -- 给{ContactName=亚历山大}发送一封”{Category=红色警告}“的邮件。 -- 给{ContactName=伦纳德}发送一封电子邮件 -- 给{ContactName=内森}发封{Category=重要性-高}的邮件 -- 给{ContactName=劳伦斯}发邮件,主题{EmailSubject=开幕问题} -- 给{ContactName=奥利维亚}发封”{Category=重要}“的邮件 -- 给{RelationshipName=妈咪}发封邮件说{Message=明天回} -- 给{ContactName=安吉丽娜}发送一封邮件。 -- 给{ContactName=安}和{ContactName=田}发封邮件 -- 给{ContactName=安德里亚},{ContactName=安吉拉}和{ContactName=罗恩}发一封关于{EmailSubject=解决问题}的新邮件 -- 给{ContactName=小周}写一封关于“{EmailSubject=看棒球}”新邮件 -- 给{ContactName=布鲁斯}发送一封邮件,并且标记上“{Category=红色警告}” -- 给{ContactName=徐凯},{ContactName=明明}和我{RelationshipName=妈妈}发邮件 -- 给我{RelationshipName=妈}写一封关于{EmailSubject=照看孩子}的邮件。 -- 给我的{RelationshipName=家庭成员}创建一封主题为“{EmailSubject=家庭聚会}”的邮件。 -- 给{ContactName=托马斯}发一封邮件。 -- 给{ContactName=杰西}发送一封邮件并且写上:{Message=这是关于周末计划的消息}。 -- 给{ContactName=比利}发一封“{Category=红色警告}”的邮件。 -- 给{ContactName=王力宏}发一封关于{EmailSubject=钢琴音乐会}的电子邮件,说{Message=它很棒} -- 给{ContactName=玛利亚}发邮件。 -- 给{ContactName=皮特}发一封{Category=请求已读回执}电邮。 -- 给{ContactName=莉莉罗斯}和{EmailAddress=abc123@microsoft.com}发封邮件 -- 给{ContactName=路易}发一封邮件。 -- 给{ContactName=辛西娅}和{ContactName=迈克}发电子邮件说,{Message=上周的晚餐棒极了}。 -- 给{ContactName=金伯利}发送一封新的关于”{EmailSubject=僚机}“的电子邮件。 -- 给{ContactName=金姆·怀特}发封{EmailSubject=花}的邮件,告诉她{Message=很漂亮} -- 给{ContactName=陆}、{ContactName=月}和{ContactName=琼}发一封关于{EmailSubject=资金}主题的邮件 -- 给{ContactName=雅各布}发的邮件是要标注为”{Category=高优先级}“的。 -- 编写一封关于{EmailSubject=募捐者}的电子邮件。 -- 邮件发给{ContactName=胡安}这个{EmailSubject=工作安排}的邮件 - - -## ShowNext -- 切换到{OrderReference=下一封}邮件 -- {OrderReference=后面的}邮件呢? -- 展示{OrderReference=下面的}邮件 -- 打开{OrderReference=下边的一封} -- 显示{OrderReference=下一封}。 -- 显示{OrderReference=下一封}{Category=未读}邮件。 -- 显示{OrderReference=下一条}消息 -- 显示{PositionReference=第二页}的{Category=未读}邮件 -- 给我看{OrderReference=之后的}邮件 -- 继续,{OrderReference=下一封}。 -- 请给我看{OrderReference=接下来的}邮件。 -- 请转到{OrderReference=下一封}邮件。 -- 跳到{OrderReference=下一封}邮件 -- 还有什么邮件? - - -## ShowPrevious -- {OrderReference=之前的}邮件 -- {OrderReference=前一封}是什么内容。 -- 把{OrderReference=上一封}邮件给我看一下。 -- 显示{OrderReference=之前的}一封。 -- 查看{OrderReference=上一封}邮件。 -- 查看{OrderReference=之前的}邮件 -- 看一下{OrderReference=上一封}我{FromRelationshipName=导师}给我发过来的邮件。 -- 给我看一下{OrderReference=前一封}来自{SenderName=杰克}的邮件 -- 请给我看一下{OrderReference=前一页}{PositionReference=第三}封。 - - -> # Entity definitions - -$Attachment:simple - -$Category:simple - -$ContactName:simple - -$Date:simple - -$EmailAddress:simple - -$EmailPlatform: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:number - -$PREBUILT:ordinal - - -> # Phrase list definitions - - -> # List entities - diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Cards/EmailCard.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Content/EmailCard.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Cards/EmailCard.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Content/EmailCard.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Cards/EmailContentPreview.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Content/EmailContentPreview.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Cards/EmailContentPreview.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Content/EmailContentPreview.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Cards/EmailDetailCard.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Content/EmailDetailCard.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Cards/EmailDetailCard.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Content/EmailDetailCard.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Cards/EmailWithOutButtonCard.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Content/EmailWithOutButtonCard.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Cards/EmailWithOutButtonCard.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Content/EmailWithOutButtonCard.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/bot.recipe b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/bot.recipe deleted file mode 100644 index d472b275bc..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/bot.recipe +++ /dev/null @@ -1,40 +0,0 @@ -{ - "version": "1.0", - "resources": [ - { - "type": "endpoint", - "id": "1", - "name": "development", - "url": "http://localhost:3980/api/messages" - }, - { - "type": "endpoint", - "id": "108", - "name": "production", - "url": "https://your-bot-url.azurewebsites.net/api/messages" - }, - { - "type": "abs", - "id": "199", - "name": "CustomAssistantABS" - }, - { - "type": "blob", - "id": "2", - "name": "CustomAssistantStorage", - "container": "transcripts" - }, - { - "type": "appInsights", - "id": "3", - "name": "CustomAssistantInsights" - }, - { - "type": "cosmosdb", - "id": "8", - "name": "CustomAssistantCosmosDB", - "database": "botstate-db", - "collection": "botstate-collection" - } - ] -} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/de/bot.recipe b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/de/bot.recipe deleted file mode 100644 index 087d40bc07..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/de/bot.recipe +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": "1.0", - "resources": [ - { - "type": "luis", - "id": "general", - "name": "General" - }, - { - "type": "luis", - "id": "email", - "name": "Email" - } - ] -} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/deploy_bot.ps1 b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/deploy_bot.ps1 deleted file mode 100644 index 65d2ab3b20..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/deploy_bot.ps1 +++ /dev/null @@ -1,50 +0,0 @@ -# all msbot clone parameters and locales -Param( - [string] [Parameter(Mandatory=$true)]$name, - [string] [Parameter(Mandatory=$true)]$location, - [string] [Parameter(Mandatory=$true)]$luisAuthoringKey, - [string] $locales = "en-us", - [switch] $languagesOnly, - [string] $luisAuthoringRegion, - [string] $luisPublishRegion, - [string] $subscriptionId, - [string] $insightsRegion, - [string] $groupName, - [string] $sdkLanguage, - [string] $sdkVersion, - [string] $prefix, - [string] $appId, - [string] $appSecret -) - -if (!$languagesOnly) -{ - # Change to project directory for .bot file - Write-Host "Changing to project directory ..." - cd "$($PSScriptRoot)\..\" - - # Deploy the common resources (Azure Bot Service, App Insights, Azure Storage, Cosmos DB, etc) - Write-Host "Deploying common resources..." - msbot clone services -n $name -l $location --luisAuthoringKey $luisAuthoringKey --folder "$($PSScriptRoot)" --appId $appId --appSecret $appSecret --force --quiet -} - -$localeArr = $locales.Split(',') - -foreach ($locale in $localeArr) -{ - # Update deployment scripts for the locale - Invoke-Expression "$($PSScriptRoot)\generate_deployment_scripts.ps1 -locale $($locale)" - - # Get language code from locale (first two characters, i.e. "en") - $langCode = ($locale -split "-")[0] - - # Create LocaleConfigurations folder and change directory - md -Force "$($PSScriptRoot)\..\LocaleConfigurations" > $null - cd "$($PSScriptRoot)\..\LocaleConfigurations" > $null - - # Deploy Dispatch, LUIS (calendar, email, todo, and general), and QnA Maker for the locale - Write-Host "Deploying $($locale) resources..." - msbot clone services -n "$($name)$($langCode)" -l $location --luisAuthoringKey $luisAuthoringKey --groupName $name --force --quiet --folder "$($PSScriptRoot)\$($langCode)" | Out-Null -} - -Write-Host "Done." \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/en/bot.recipe b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/en/bot.recipe deleted file mode 100644 index 087d40bc07..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/en/bot.recipe +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": "1.0", - "resources": [ - { - "type": "luis", - "id": "general", - "name": "General" - }, - { - "type": "luis", - "id": "email", - "name": "Email" - } - ] -} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/es/bot.recipe b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/es/bot.recipe deleted file mode 100644 index 087d40bc07..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/es/bot.recipe +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": "1.0", - "resources": [ - { - "type": "luis", - "id": "general", - "name": "General" - }, - { - "type": "luis", - "id": "email", - "name": "Email" - } - ] -} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/fr/bot.recipe b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/fr/bot.recipe deleted file mode 100644 index 087d40bc07..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/fr/bot.recipe +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": "1.0", - "resources": [ - { - "type": "luis", - "id": "general", - "name": "General" - }, - { - "type": "luis", - "id": "email", - "name": "Email" - } - ] -} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/generate_deployment_scripts.ps1 b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/generate_deployment_scripts.ps1 deleted file mode 100644 index d99fe8cde4..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/generate_deployment_scripts.ps1 +++ /dev/null @@ -1,29 +0,0 @@ -param ( - [string] [Parameter(Mandatory=$true)]$locale -) - -$locale = $locale.ToLower() -$langCode = ($locale -split "-")[0] -$basePath = "$($PSScriptRoot)\.." -$outputPath = "$($PSScriptRoot)\$($langCode)" - -# lu file paths -$emailLUPath = "$($basePath)\CognitiveModels\LUIS\$($langCode)\email.lu" -$generalLUPath = "$($basePath)\..\..\..\assistant\CognitiveModels\LUIS\$($langCode)\general.lu" - -$luArr = @($emailLUPath, $generalLUPath) - -Write-Host "Updating $($locale) deployment scripts ..." -foreach ($lu in $luArr) -{ - $duplicates = Get-Content $lu | Group-Object | Where-Object { $_.Count -gt 1 } | Select -ExpandProperty Name - - if ($duplicates.Count -gt 1) - { - Write-Error "$($duplicates.Count - 1) duplicate utterances found in $($lu). This could cause issues in your model accuracy." - } -} - -Write-Host "Generating $($locale) LUIS models from .lu files ..." -ludown parse toluis -c $($locale) -o $outputPath --in $emailLUPath --out email.luis -n Email -ludown parse toluis -c $($locale) -o $outputPath --in $generalLUPath --out general.luis -n General \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/it/bot.recipe b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/it/bot.recipe deleted file mode 100644 index 087d40bc07..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/it/bot.recipe +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": "1.0", - "resources": [ - { - "type": "luis", - "id": "general", - "name": "General" - }, - { - "type": "luis", - "id": "email", - "name": "Email" - } - ] -} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/update_published_models.ps1 b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/update_published_models.ps1 deleted file mode 100644 index 75a9b39bec..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/update_published_models.ps1 +++ /dev/null @@ -1,40 +0,0 @@ -param ( - [string] $locales = "de-de,en-us,es-es,fr-fr,it-it,zh-cn", - [string] $domains = "general,email" -) - -$localeArr = $locales.Split(",") -$domainArr = $domains.Split(",") -$basePath = "$($PSScriptRoot)\..\LocaleConfigurations\" -$botFiles = get-childitem $basePath -recurse | where {$_.extension -eq ".bot"} - -Write-Host "Updating deployment scripts..." -foreach ($locale in $localeArr) -{ - Invoke-Expression "$($PSScriptRoot)\generate_deployment_scripts.ps1 -locale $($locale)" -} - -foreach ($botFile in $botFiles) -{ - $botFileName = $botFile | % {$_.BaseName} - $langCode = $botFileName.Substring($botFileName.Length - 2, 2) - - if ($localeArr | where {$_ -like "*$($langCode)*"}) - { - Write-Host "Updating $($langCode) LUIS models ..." - foreach ($domain in $domainArr) - { - # Check for existing old version - $versions = msbot get $domain --bot "$($basePath)$($botFile)" | luis list versions --stdin | ConvertFrom-Json - if ($versions | where {$_.version -eq "backup"}) - { - msbot get $domain --bot "$($basePath)$($botFile)" | luis delete version --stdin --versionId backup --force --wait - } - - msbot get $domain --bot "$($basePath)$($botFile)" | luis rename version --newVersionId backup --stdin --wait - msbot get $domain --bot "$($basePath)$($botFile)" | luis import version --stdin --in "$($PSScriptRoot)\$($langCode)\$($domain).luis" --wait - msbot get $domain --bot "$($basePath)$($botFile)" | luis train version --wait --stdin - msbot get $domain --bot "$($basePath)$($botFile)" | luis publish version --stdin - } - } -} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/zh/bot.recipe b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/zh/bot.recipe deleted file mode 100644 index 087d40bc07..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/DeploymentScripts/zh/bot.recipe +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": "1.0", - "resources": [ - { - "type": "luis", - "id": "general", - "name": "General" - }, - { - "type": "luis", - "id": "email", - "name": "Email" - } - ] -} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/AuthDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/AuthDialog.cs new file mode 100644 index 0000000000..5f0d7264ff --- /dev/null +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/AuthDialog.cs @@ -0,0 +1,184 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using EmailSkill.Models; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Dialogs; +using Microsoft.Bot.Builder.Dialogs.Choices; +using Microsoft.Bot.Builder.Solutions; +using Microsoft.Bot.Builder.Solutions.Authentication; +using Microsoft.Bot.Builder.Solutions.Resources; +using Microsoft.Bot.Builder.Solutions.Responses; +using Microsoft.Bot.Builder.Solutions.Telemetry; +using Microsoft.Bot.Schema; + +namespace EmailSkill.Dialogs +{ + public class AuthDialog : ComponentDialog + { + private ResponseManager _responseManager; + private Dictionary _cognitiveModels; + private List _oauthConnections; + private string _selectedAuthType = string.Empty; + + public AuthDialog(Dictionary cognitiveModels, List oauthConnections, bool authenticationRequired = false) + : base(nameof(AuthDialog)) + { + _cognitiveModels = cognitiveModels; + _oauthConnections = oauthConnections; + _responseManager = new ResponseManager(cognitiveModels.Keys.ToArray(), new AuthenticationResponses()); + + if (authenticationRequired && !oauthConnections.Any()) + { + throw new Exception("You must configure an authentication connection in your bot file before using this component."); + } + + var auth = new WaterfallStep[] + { + PromptForProvider, + PromptForAuth, + HandleTokenResponse, + }; + + AddDialog(new WaterfallDialog(nameof(AuthDialog), auth)); + AddDialog(new ChoicePrompt(DialogIds.ProviderPrompt) { Style = ListStyle.SuggestedAction }); + + foreach (var connection in oauthConnections) + { + AddDialog(new OAuthPrompt( + connection.Name, + new OAuthPromptSettings + { + ConnectionName = connection.Name, + Title = CommonStrings.Login, + Text = string.Format(CommonStrings.LoginDescription, connection.Name), + }, + AuthPromptValidator)); + } + } + + private async Task PromptForProvider(WaterfallStepContext stepContext, CancellationToken cancellationToken) + { + if (_oauthConnections.Count() == 1) + { + var result = _oauthConnections.ElementAt(0).Name; + return await stepContext.NextAsync(result); + } + else + { + var adapter = stepContext.Context.Adapter as BotFrameworkAdapter; + var tokenStatusCollection = await adapter.GetTokenStatusAsync(stepContext.Context, stepContext.Context.Activity.From.Id); + + var matchingProviders = tokenStatusCollection.Where(p => (bool)p.HasToken && _oauthConnections.Any(t => t.Name == p.ConnectionName)).ToList(); + + if (matchingProviders.Count() == 1) + { + var authType = matchingProviders[0].ConnectionName; + return await stepContext.NextAsync(authType); + } + else if (matchingProviders.Count() > 1) + { + var choices = new List(); + + foreach (var connection in matchingProviders) + { + choices.Add(new Choice() + { + Action = new CardAction(ActionTypes.ImBack, connection.ConnectionName, value: connection.ConnectionName), + Value = connection.ConnectionName, + }); + } + + return await stepContext.PromptAsync(DialogIds.ProviderPrompt, new PromptOptions + { + Prompt = _responseManager.GetResponse(AuthenticationResponses.ConfiguredAuthProvidersPrompt), + Choices = choices, + }); + } + else + { + var choices = new List(); + + foreach (var connection in _oauthConnections) + { + choices.Add(new Choice() + { + Action = new CardAction(ActionTypes.ImBack, connection.Name, value: connection.Name), + Value = connection.Name, + }); + } + + return await stepContext.PromptAsync(DialogIds.ProviderPrompt, new PromptOptions + { + Prompt = _responseManager.GetResponse(AuthenticationResponses.AuthProvidersPrompt), + Choices = choices, + }); + } + } + } + + private async Task PromptForAuth(WaterfallStepContext stepContext, CancellationToken cancellationToken) + { + if (stepContext.Result is string) + { + _selectedAuthType = stepContext.Result as string; + } + else if (stepContext.Result is FoundChoice) + { + var choice = stepContext.Result as FoundChoice; + _selectedAuthType = choice.Value; + } + + return await stepContext.PromptAsync(_selectedAuthType, new PromptOptions()); + } + + private async Task HandleTokenResponse(WaterfallStepContext stepContext, CancellationToken cancellationToken) + { + var tokenResponse = stepContext.Result as TokenResponse; + if (tokenResponse != null && !string.IsNullOrWhiteSpace(tokenResponse.Token)) + { + var result = await CreateProviderTokenResponse(stepContext.Context, tokenResponse); + + return await stepContext.EndDialogAsync(result); + } + else + { + TelemetryClient.TrackEventEx("TokenRetrievalFailure", stepContext.Context.Activity); + return new DialogTurnResult(DialogTurnStatus.Cancelled); + } + } + + private async Task CreateProviderTokenResponse(ITurnContext context, TokenResponse tokenResponse) + { + var adapter = context.Adapter as BotFrameworkAdapter; + var tokens = await adapter.GetTokenStatusAsync(context, context.Activity.From.Id); + var match = Array.Find(tokens, t => t.ConnectionName == tokenResponse.ConnectionName); + + return new ProviderTokenResponse + { + AuthenticationProvider = match.ServiceProviderDisplayName.GetAuthenticationProvider(), + TokenResponse = tokenResponse, + }; + } + + private Task AuthPromptValidator(PromptValidatorContext promptContext, CancellationToken cancellationToken) + { + var token = promptContext.Recognized.Value; + if (token != null && !string.IsNullOrWhiteSpace(token.Token)) + { + return Task.FromResult(true); + } + else + { + return Task.FromResult(false); + } + } + + private class DialogIds + { + public const string ProviderPrompt = "ProviderPrompt"; + } + } +} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/DeleteEmailDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmailDialog.cs similarity index 89% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/DeleteEmailDialog.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmailDialog.cs index ebb42035fc..c1df554950 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/DeleteEmailDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmailDialog.cs @@ -3,32 +3,30 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; -using EmailSkill.Dialogs.DeleteEmail.Resources; -using EmailSkill.Dialogs.Shared; -using EmailSkill.Dialogs.Shared.DialogOptions; -using EmailSkill.Dialogs.Shared.Resources; -using EmailSkill.Dialogs.Shared.Resources.Cards; -using EmailSkill.Dialogs.Shared.Resources.Strings; +using EmailSkill.Models; +using EmailSkill.Responses.DeleteEmail; +using EmailSkill.Responses.Shared; using EmailSkill.ServiceClients; -using EmailSkill.Util; +using EmailSkill.Services; +using EmailSkill.Utilities; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Solutions.Responses; -using Microsoft.Bot.Builder.Solutions.Skills; using Microsoft.Bot.Builder.Solutions.Util; -namespace EmailSkill.Dialogs.DeleteEmail +namespace EmailSkill.Dialogs { - public class DeleteEmailDialog : EmailSkillDialog + public class DeleteEmailDialog : EmailSkillDialogBase { public DeleteEmailDialog( - SkillConfigurationBase services, + BotSettings settings, + BotServices services, ResponseManager responseManager, IStatePropertyAccessor emailStateAccessor, IStatePropertyAccessor dialogStateAccessor, IServiceManager serviceManager, IBotTelemetryClient telemetryClient) - : base(nameof(DeleteEmailDialog), services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient) + : base(nameof(DeleteEmailDialog), settings, services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient) { TelemetryClient = telemetryClient; diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/EmailSkillDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/EmailSkillDialogBase.cs similarity index 92% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/EmailSkillDialog.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/EmailSkillDialogBase.cs index 0c6a78efb7..11ca4cef86 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/EmailSkillDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/EmailSkillDialogBase.cs @@ -6,22 +6,17 @@ using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; -using EmailSkill.Dialogs.FindContact; -using EmailSkill.Dialogs.ForwardEmail; -using EmailSkill.Dialogs.Shared.DialogOptions; -using EmailSkill.Dialogs.Shared.Resources; -using EmailSkill.Dialogs.Shared.Resources.Cards; -using EmailSkill.Dialogs.Shared.Resources.Strings; using EmailSkill.Extensions; -using EmailSkill.Model; +using EmailSkill.Models; +using EmailSkill.Responses.Shared; using EmailSkill.ServiceClients; -using EmailSkill.Util; +using EmailSkill.Services; +using EmailSkill.Utilities; using Luis; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Dialogs.Choices; using Microsoft.Bot.Builder.Solutions.Authentication; -using Microsoft.Bot.Builder.Solutions.Prompts; using Microsoft.Bot.Builder.Solutions.Resources; using Microsoft.Bot.Builder.Solutions.Responses; using Microsoft.Bot.Builder.Solutions.Skills; @@ -30,18 +25,18 @@ using Microsoft.Bot.Schema; using Microsoft.Graph; using Microsoft.Recognizers.Text; -using Newtonsoft.Json.Linq; -namespace EmailSkill.Dialogs.Shared +namespace EmailSkill.Dialogs { - public class EmailSkillDialog : ComponentDialog + public class EmailSkillDialogBase : ComponentDialog { // Constants public const string SkillModeAuth = "SkillAuth"; - public EmailSkillDialog( + public EmailSkillDialogBase( string dialogId, - SkillConfigurationBase services, + BotSettings settings, + BotServices services, ResponseManager responseManager, IStatePropertyAccessor emailStateAccessor, IStatePropertyAccessor dialogStateAccessor, @@ -49,6 +44,7 @@ public EmailSkillDialog( IBotTelemetryClient telemetryClient) : base(dialogId) { + Settings = settings; Services = services; ResponseManager = responseManager; EmailStateAccessor = emailStateAccessor; @@ -56,23 +52,24 @@ public EmailSkillDialog( ServiceManager = serviceManager; TelemetryClient = telemetryClient; - if (!Services.AuthenticationConnections.Any()) + if (!Settings.OAuthConnections.Any()) { throw new Exception("You must configure an authentication connection in your bot file before using this component."); } - AddDialog(new EventPrompt(SkillModeAuth, "tokens/response", TokenResponseValidator)); - AddDialog(new MultiProviderAuthDialog(services)); + AddDialog(new AuthDialog(services.CognitiveModelSets, settings.OAuthConnections, true)); AddDialog(new TextPrompt(Actions.Prompt)); AddDialog(new ConfirmPrompt(Actions.TakeFurtherAction, null, Culture.English) { Style = ListStyle.SuggestedAction }); } - protected EmailSkillDialog(string dialogId) + protected EmailSkillDialogBase(string dialogId) : base(dialogId) { } - protected SkillConfigurationBase Services { get; set; } + protected BotServices Services { get; set; } + + protected BotSettings Settings { get; set; } protected IStatePropertyAccessor EmailStateAccessor { get; set; } @@ -176,12 +173,12 @@ protected override Task EndComponentAsync(DialogContext outerD var generalLuisResult = state.GeneralLuisResult; var generalTopIntent = generalLuisResult?.TopIntent().intent; - if (skillLuisResult == EmailLU.Intent.ShowNext || generalTopIntent == General.Intent.ShowNext) + if (skillLuisResult == EmailLuis.Intent.ShowNext || generalTopIntent == General.Intent.ShowNext) { state.ShowEmailIndex++; state.ReadEmailIndex = 0; } - else if ((skillLuisResult == EmailLU.Intent.ShowPrevious || generalTopIntent == General.Intent.ShowPrevious) && state.ShowEmailIndex >= 0) + else if ((skillLuisResult == EmailLuis.Intent.ShowPrevious || generalTopIntent == General.Intent.ShowPrevious) && state.ShowEmailIndex >= 0) { state.ShowEmailIndex--; state.ReadEmailIndex = 0; @@ -211,37 +208,19 @@ protected override Task EndComponentAsync(DialogContext outerD } } + // Shared steps protected async Task GetAuthToken(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { - var skillOptions = (EmailSkillDialogOptions)sc.Options; - - // If in Skill mode we ask the calling Bot for the token - if (skillOptions != null && skillOptions.SkillMode) + return await sc.PromptAsync(nameof(AuthDialog), new PromptOptions() { - // We trigger a Token Request from the Parent Bot by sending a "TokenRequest" event back and then waiting for a "TokenResponse" - // TODO Error handling - if we get a new activity that isn't an event - var response = sc.Context.Activity.CreateReply(); - response.Type = ActivityTypes.Event; - response.Name = "tokens/request"; - - // Send the tokens/request Event - await sc.Context.SendActivityAsync(response); - - // Wait for the tokens/response event - return await sc.PromptAsync(SkillModeAuth, new PromptOptions()); - } - else - { - var retry = ResponseManager.GetResponse(EmailSharedResponses.NoAuth); - return await sc.PromptAsync(nameof(MultiProviderAuthDialog), new PromptOptions() { RetryPrompt = retry }); - } + RetryPrompt = ResponseManager.GetResponse(EmailSharedResponses.NoAuth) + }); } catch (Exception ex) { await HandleDialogExceptions(sc, ex); - return new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs); } } @@ -250,27 +229,7 @@ protected override Task EndComponentAsync(DialogContext outerD { try { - // When the user authenticates interactively we pass on the tokens/Response event which surfaces as a JObject - // When the token is cached we get a TokenResponse object. - var skillOptions = (EmailSkillDialogOptions)sc.Options; - ProviderTokenResponse providerTokenResponse; - if (skillOptions != null && skillOptions.SkillMode) - { - var resultType = sc.Context.Activity.Value.GetType(); - if (resultType == typeof(ProviderTokenResponse)) - { - providerTokenResponse = sc.Context.Activity.Value as ProviderTokenResponse; - } - else - { - var tokenResponseObject = sc.Context.Activity.Value as JObject; - providerTokenResponse = tokenResponseObject?.ToObject(); - } - } - else - { - providerTokenResponse = sc.Result as ProviderTokenResponse; - } + var providerTokenResponse = sc.Result as ProviderTokenResponse; if (providerTokenResponse != null) { @@ -763,8 +722,8 @@ protected async Task GetNameListStringAsync(WaterfallStepContext sc) return recipients.FirstOrDefault()?.EmailAddress.Name + ": " + recipients.FirstOrDefault()?.EmailAddress.Address; } - string result = recipients.FirstOrDefault()?.EmailAddress.Name + ": " + recipients.FirstOrDefault()?.EmailAddress.Address; - for (int i = 1; i < recipients.Count; i++) + var result = recipients.FirstOrDefault()?.EmailAddress.Name + ": " + recipients.FirstOrDefault()?.EmailAddress.Address; + for (var i = 1; i < recipients.Count; i++) { if (i == recipients.Count - 1) { @@ -858,7 +817,7 @@ protected List FilterMessages(List messages, string searchSend // Get display messages var displayMessages = new List(); - for (int i = 0; i < messages.Count(); i++) + for (var i = 0; i < messages.Count(); i++) { var messageSender = messages[i].Sender?.EmailAddress?.Name?.ToLowerInvariant(); var messageSubject = messages[i].Subject?.ToLowerInvariant(); @@ -995,7 +954,7 @@ protected List FilterMessages(List messages, string searchSend } } - int maxPage = (totalCount / ConfigData.GetInstance().MaxDisplaySize) + (totalCount % ConfigData.GetInstance().MaxDisplaySize > 0 ? 1 : 0) - 1; + var maxPage = (totalCount / ConfigData.GetInstance().MaxDisplaySize) + (totalCount % ConfigData.GetInstance().MaxDisplaySize > 0 ? 1 : 0) - 1; if (state.ShowEmailIndex < 0) { var pagingInfo = ResponseManager.GetResponse(EmailSharedResponses.FirstPageAlready); @@ -1136,7 +1095,7 @@ protected async Task DigestFocusEmailAsync(WaterfallStepContext sc) } } - protected async Task DigestEmailLuisResult(DialogContext dc, EmailLU luisResult, bool isBeginDialog) + protected async Task DigestEmailLuisResult(DialogContext dc, EmailLuis luisResult, bool isBeginDialog) { try { @@ -1189,11 +1148,11 @@ protected async Task DigestEmailLuisResult(DialogContext dc, EmailLU luisResult, switch (intent) { - case EmailLU.Intent.CheckMessages: - case EmailLU.Intent.SearchMessages: - case EmailLU.Intent.ReadAloud: - case EmailLU.Intent.ShowNext: - case EmailLU.Intent.ShowPrevious: + case EmailLuis.Intent.CheckMessages: + case EmailLuis.Intent.SearchMessages: + case EmailLuis.Intent.ReadAloud: + case EmailLuis.Intent.ShowNext: + case EmailLuis.Intent.ShowPrevious: { // Get email search type if (dc.Context.Activity.Text != null) @@ -1264,9 +1223,9 @@ protected async Task DigestEmailLuisResult(DialogContext dc, EmailLU luisResult, break; } - case EmailLU.Intent.SendEmail: - case EmailLU.Intent.Forward: - case EmailLU.Intent.Reply: + case EmailLuis.Intent.SendEmail: + case EmailLuis.Intent.Forward: + case EmailLuis.Intent.Reply: { if (entity.EmailSubject != null) { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/FindContactDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContactDialog.cs similarity index 97% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/FindContactDialog.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContactDialog.cs index 0f33d196a6..1d813291ad 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/FindContactDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContactDialog.cs @@ -4,12 +4,12 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; -using EmailSkill.Dialogs.FindContact.Resources; -using EmailSkill.Dialogs.Shared; -using EmailSkill.Dialogs.Shared.DialogOptions; -using EmailSkill.Dialogs.Shared.Resources; +using EmailSkill.Models; +using EmailSkill.Responses.FindContact; +using EmailSkill.Responses.Shared; using EmailSkill.ServiceClients; -using EmailSkill.Util; +using EmailSkill.Services; +using EmailSkill.Utilities; using Luis; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; @@ -20,18 +20,19 @@ using Microsoft.Bot.Builder.Solutions.Util; using Microsoft.Graph; -namespace EmailSkill.Dialogs.FindContact +namespace EmailSkill.Dialogs { - public class FindContactDialog : EmailSkillDialog + public class FindContactDialog : EmailSkillDialogBase { public FindContactDialog( - SkillConfigurationBase services, + BotSettings settings, + BotServices services, ResponseManager responseManager, IStatePropertyAccessor emailStateAccessor, IStatePropertyAccessor dialogStateAccessor, IServiceManager serviceManager, IBotTelemetryClient telemetryClient) - : base(nameof(FindContactDialog), services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient) + : base(nameof(FindContactDialog), settings, services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient) { TelemetryClient = telemetryClient; @@ -100,7 +101,7 @@ await sc.Context.SendActivityAsync(ResponseManager.GetResponse( FindContactResponses.UserNotFoundAgain, new StringDictionary() { - { "source", state.MailSourceType == Model.MailSource.Microsoft ? "Outlook" : "Gmail" }, + { "source", state.MailSourceType == MailSource.Microsoft ? "Outlook" : "Gmail" }, { "UserName", state.NameList[state.ConfirmRecipientIndex] } })); state.ConfirmRecipientIndex++; @@ -114,7 +115,7 @@ await sc.Context.SendActivityAsync(ResponseManager.GetResponse( FindContactResponses.UserNotFoundAgain, new StringDictionary() { - { "source", state.MailSourceType == Model.MailSource.Microsoft ? "Outlook" : "Gmail" }, + { "source", state.MailSourceType == MailSource.Microsoft ? "Outlook" : "Gmail" }, { "UserName", state.NameList[state.ConfirmRecipientIndex] } })); state.ConfirmRecipientIndex = 0; @@ -140,7 +141,7 @@ await sc.Context.SendActivityAsync(ResponseManager.GetResponse( if (string.IsNullOrEmpty(userInput)) { - await sc.Context.SendActivityAsync(ResponseManager.GetResponse(FindContactResponses.UserNotFoundAgain, new StringDictionary() { { "source", state.MailSourceType == Model.MailSource.Microsoft ? "Outlook" : "Gmail" } })); + await sc.Context.SendActivityAsync(ResponseManager.GetResponse(FindContactResponses.UserNotFoundAgain, new StringDictionary() { { "source", state.MailSourceType == MailSource.Microsoft ? "Outlook" : "Gmail" } })); return await sc.EndDialogAsync(); } diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/ForwardEmailDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmailDialog.cs similarity index 87% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/ForwardEmailDialog.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmailDialog.cs index a302018f41..85501e3dba 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/ForwardEmailDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmailDialog.cs @@ -3,31 +3,29 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; -using EmailSkill.Dialogs.FindContact; -using EmailSkill.Dialogs.Shared; -using EmailSkill.Dialogs.Shared.Resources; -using EmailSkill.Dialogs.Shared.Resources.Cards; -using EmailSkill.Dialogs.Shared.Resources.Strings; +using EmailSkill.Models; +using EmailSkill.Responses.Shared; using EmailSkill.ServiceClients; -using EmailSkill.Util; +using EmailSkill.Services; +using EmailSkill.Utilities; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Solutions.Responses; -using Microsoft.Bot.Builder.Solutions.Skills; using Microsoft.Bot.Builder.Solutions.Util; -namespace EmailSkill.Dialogs.ForwardEmail +namespace EmailSkill.Dialogs { - public class ForwardEmailDialog : EmailSkillDialog + public class ForwardEmailDialog : EmailSkillDialogBase { public ForwardEmailDialog( - SkillConfigurationBase services, + BotSettings settings, + BotServices services, ResponseManager responseManager, IStatePropertyAccessor emailStateAccessor, IStatePropertyAccessor dialogStateAccessor, IServiceManager serviceManager, IBotTelemetryClient telemetryClient) - : base(nameof(ForwardEmailDialog), services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient) + : base(nameof(ForwardEmailDialog), settings, services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient) { TelemetryClient = telemetryClient; @@ -70,7 +68,7 @@ public ForwardEmailDialog( AddDialog(new WaterfallDialog(Actions.Show, showEmail) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.CollectRecipient, collectRecipients) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.UpdateSelectMessage, updateSelectMessage) { TelemetryClient = telemetryClient }); - AddDialog(new FindContactDialog(services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient)); + AddDialog(new FindContactDialog(settings, services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient)); InitialDialogId = Actions.Forward; } diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/MainDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/MainDialog.cs similarity index 76% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/MainDialog.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/MainDialog.cs index b86703b8d9..dd06079e98 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/MainDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/MainDialog.cs @@ -6,30 +6,25 @@ using System.Globalization; using System.Threading; using System.Threading.Tasks; -using EmailSkill.Dialogs.DeleteEmail; -using EmailSkill.Dialogs.ForwardEmail; -using EmailSkill.Dialogs.Main.Resources; -using EmailSkill.Dialogs.ReplyEmail; -using EmailSkill.Dialogs.SendEmail; -using EmailSkill.Dialogs.Shared.DialogOptions; -using EmailSkill.Dialogs.Shared.Resources; -using EmailSkill.Dialogs.ShowEmail; +using EmailSkill.Models; +using EmailSkill.Responses.Main; +using EmailSkill.Responses.Shared; using EmailSkill.ServiceClients; +using EmailSkill.Services; using Luis; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Solutions.Dialogs; using Microsoft.Bot.Builder.Solutions.Responses; -using Microsoft.Bot.Builder.Solutions.Skills; using Microsoft.Bot.Builder.Solutions.Util; using Microsoft.Bot.Schema; -namespace EmailSkill.Dialogs.Main +namespace EmailSkill.Dialogs { public class MainDialog : RouterDialog { - private bool _skillMode; - private SkillConfigurationBase _skillConfig; + private BotSettings _settings; + private BotServices _services; private ResponseManager _responseManager; private UserState _userState; private ConversationState _conversationState; @@ -38,17 +33,17 @@ public class MainDialog : RouterDialog private IStatePropertyAccessor _dialogStateAccessor; public MainDialog( - SkillConfigurationBase skillConfiguration, + BotSettings settings, + BotServices services, ResponseManager responseManager, ConversationState conversationState, UserState userState, IBotTelemetryClient telemetryClient, - IServiceManager serviceManager, - bool skillMode) + IServiceManager serviceManager) : base(nameof(MainDialog), telemetryClient) { - _skillMode = skillMode; - _skillConfig = skillConfiguration; + _settings = settings; + _services = services; _responseManager = responseManager; _conversationState = conversationState; _userState = userState; @@ -65,11 +60,8 @@ public MainDialog( protected override async Task OnStartAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken)) { - if (!_skillMode) - { - // send a greeting if we're in local mode - await dc.Context.SendActivityAsync(_responseManager.GetResponse(EmailMainResponses.EmailWelcomeMessage)); - } + // send a greeting if we're in local mode + await dc.Context.SendActivityAsync(_responseManager.GetResponse(EmailMainResponses.EmailWelcomeMessage)); } protected override async Task RouteAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken)) @@ -78,7 +70,7 @@ public MainDialog( // get current activity locale var locale = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName; - var localeConfig = _skillConfig.LocaleConfigurations[locale]; + var localeConfig = _services.CognitiveModelSets[locale]; // If dispatch result is general luis model localeConfig.LuisServices.TryGetValue("email", out var luisService); @@ -90,58 +82,57 @@ public MainDialog( else { var turnResult = EndOfTurn; - var result = await luisService.RecognizeAsync(dc.Context, CancellationToken.None); + var result = await luisService.RecognizeAsync(dc.Context, CancellationToken.None); var intent = result?.TopIntent().intent; var generalTopIntent = state.GeneralLuisResult?.TopIntent().intent; var skillOptions = new EmailSkillDialogOptions { - SkillMode = _skillMode, SubFlowMode = false }; // switch on general intents switch (intent) { - case EmailLU.Intent.SendEmail: + case EmailLuis.Intent.SendEmail: { turnResult = await dc.BeginDialogAsync(nameof(SendEmailDialog), skillOptions); break; } - case EmailLU.Intent.Forward: + case EmailLuis.Intent.Forward: { turnResult = await dc.BeginDialogAsync(nameof(ForwardEmailDialog), skillOptions); break; } - case EmailLU.Intent.Reply: + case EmailLuis.Intent.Reply: { turnResult = await dc.BeginDialogAsync(nameof(ReplyEmailDialog), skillOptions); break; } - case EmailLU.Intent.SearchMessages: - case EmailLU.Intent.CheckMessages: - case EmailLU.Intent.ReadAloud: - case EmailLU.Intent.QueryLastText: + case EmailLuis.Intent.SearchMessages: + case EmailLuis.Intent.CheckMessages: + case EmailLuis.Intent.ReadAloud: + case EmailLuis.Intent.QueryLastText: { turnResult = await dc.BeginDialogAsync(nameof(ShowEmailDialog), skillOptions); break; } - case EmailLU.Intent.Delete: + case EmailLuis.Intent.Delete: { turnResult = await dc.BeginDialogAsync(nameof(DeleteEmailDialog), skillOptions); break; } - case EmailLU.Intent.ShowNext: - case EmailLU.Intent.ShowPrevious: - case EmailLU.Intent.None: + case EmailLuis.Intent.ShowNext: + case EmailLuis.Intent.ShowPrevious: + case EmailLuis.Intent.None: { - if (intent == EmailLU.Intent.ShowNext - || intent == EmailLU.Intent.ShowPrevious + if (intent == EmailLuis.Intent.ShowNext + || intent == EmailLuis.Intent.ShowPrevious || generalTopIntent == General.Intent.ShowNext || generalTopIntent == General.Intent.ShowPrevious) { @@ -150,10 +141,7 @@ public MainDialog( else { await dc.Context.SendActivityAsync(_responseManager.GetResponse(EmailSharedResponses.DidntUnderstandMessage)); - if (_skillMode) - { - turnResult = new DialogTurnResult(DialogTurnStatus.Complete); - } + turnResult = new DialogTurnResult(DialogTurnStatus.Complete); } break; @@ -162,11 +150,7 @@ public MainDialog( default: { await dc.Context.SendActivityAsync(_responseManager.GetResponse(EmailMainResponses.FeatureNotAvailable)); - - if (_skillMode) - { - turnResult = new DialogTurnResult(DialogTurnStatus.Complete); - } + turnResult = new DialogTurnResult(DialogTurnStatus.Complete); break; } @@ -181,13 +165,10 @@ public MainDialog( protected override async Task CompleteAsync(DialogContext dc, DialogTurnResult result = null, CancellationToken cancellationToken = default(CancellationToken)) { - if (_skillMode) - { - var response = dc.Context.Activity.CreateReply(); - response.Type = ActivityTypes.EndOfConversation; + var response = dc.Context.Activity.CreateReply(); + response.Type = ActivityTypes.EndOfConversation; - await dc.Context.SendActivityAsync(response); - } + await dc.Context.SendActivityAsync(response); // End active dialog await dc.EndDialogAsync(result); @@ -240,10 +221,10 @@ public MainDialog( { // get current activity locale var locale = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName; - var localeConfig = _skillConfig.LocaleConfigurations[locale]; + var localeConfig = _services.CognitiveModelSets[locale]; // Update state with email luis result and entities - var emailLuisResult = await localeConfig.LuisServices["email"].RecognizeAsync(dc.Context, cancellationToken); + var emailLuisResult = await localeConfig.LuisServices["email"].RecognizeAsync(dc.Context, cancellationToken); var state = await _stateAccessor.GetAsync(dc.Context, () => new EmailSkillState()); state.LuisResult = emailLuisResult; @@ -329,17 +310,17 @@ private async Task OnLogout(DialogContext dc) private void RegisterDialogs() { - AddDialog(new ForwardEmailDialog(_skillConfig, _responseManager, _stateAccessor, _dialogStateAccessor, _serviceManager, TelemetryClient)); - AddDialog(new SendEmailDialog(_skillConfig, _responseManager, _stateAccessor, _dialogStateAccessor, _serviceManager, TelemetryClient)); - AddDialog(new ShowEmailDialog(_skillConfig, _responseManager, _stateAccessor, _dialogStateAccessor, _serviceManager, TelemetryClient)); - AddDialog(new ReplyEmailDialog(_skillConfig, _responseManager, _stateAccessor, _dialogStateAccessor, _serviceManager, TelemetryClient)); - AddDialog(new DeleteEmailDialog(_skillConfig, _responseManager, _stateAccessor, _dialogStateAccessor, _serviceManager, TelemetryClient)); + AddDialog(new ForwardEmailDialog(_settings, _services, _responseManager, _stateAccessor, _dialogStateAccessor, _serviceManager, TelemetryClient)); + AddDialog(new SendEmailDialog(_settings, _services, _responseManager, _stateAccessor, _dialogStateAccessor, _serviceManager, TelemetryClient)); + AddDialog(new ShowEmailDialog(_settings, _services, _responseManager, _stateAccessor, _dialogStateAccessor, _serviceManager, TelemetryClient)); + AddDialog(new ReplyEmailDialog(_settings, _services, _responseManager, _stateAccessor, _dialogStateAccessor, _serviceManager, TelemetryClient)); + AddDialog(new DeleteEmailDialog(_settings, _services, _responseManager, _stateAccessor, _dialogStateAccessor, _serviceManager, TelemetryClient)); } private void GetReadingDisplayConfig() { - _skillConfig.Properties.TryGetValue("displaySize", out var maxDisplaySize); - _skillConfig.Properties.TryGetValue("readSize", out var maxReadSize); + _settings.Properties.TryGetValue("displaySize", out var maxDisplaySize); + _settings.Properties.TryGetValue("readSize", out var maxReadSize); if (maxDisplaySize != null) { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/ReplyEmailDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmailDialog.cs similarity index 89% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/ReplyEmailDialog.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmailDialog.cs index a4bfcef669..fd4c751355 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/ReplyEmailDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmailDialog.cs @@ -3,30 +3,29 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; -using EmailSkill.Dialogs.Shared; -using EmailSkill.Dialogs.Shared.Resources; -using EmailSkill.Dialogs.Shared.Resources.Cards; -using EmailSkill.Dialogs.Shared.Resources.Strings; +using EmailSkill.Models; +using EmailSkill.Responses.Shared; using EmailSkill.ServiceClients; -using EmailSkill.Util; +using EmailSkill.Services; +using EmailSkill.Utilities; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Solutions.Responses; -using Microsoft.Bot.Builder.Solutions.Skills; using Microsoft.Bot.Builder.Solutions.Util; -namespace EmailSkill.Dialogs.ReplyEmail +namespace EmailSkill.Dialogs { - public class ReplyEmailDialog : EmailSkillDialog + public class ReplyEmailDialog : EmailSkillDialogBase { public ReplyEmailDialog( - SkillConfigurationBase services, + BotSettings settings, + BotServices services, ResponseManager responseManager, IStatePropertyAccessor emailStateAccessor, IStatePropertyAccessor dialogStateAccessor, IServiceManager serviceManager, IBotTelemetryClient telemetryClient) - : base(nameof(ReplyEmailDialog), services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient) + : base(nameof(ReplyEmailDialog), settings, services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient) { TelemetryClient = telemetryClient; diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/SendEmailDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmailDialog.cs similarity index 95% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/SendEmailDialog.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmailDialog.cs index bdcccf0b7b..147bda6340 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/SendEmailDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmailDialog.cs @@ -2,35 +2,32 @@ using System.Collections.Specialized; using System.Threading; using System.Threading.Tasks; -using EmailSkill.Dialogs.FindContact; -using EmailSkill.Dialogs.SendEmail.Prompts; -using EmailSkill.Dialogs.SendEmail.Resources; -using EmailSkill.Dialogs.Shared; -using EmailSkill.Dialogs.Shared.DialogOptions; -using EmailSkill.Dialogs.Shared.Resources; -using EmailSkill.Dialogs.Shared.Resources.Cards; -using EmailSkill.Dialogs.Shared.Resources.Strings; +using EmailSkill.Models; +using EmailSkill.Prompts; +using EmailSkill.Responses.SendEmail; +using EmailSkill.Responses.Shared; using EmailSkill.ServiceClients; -using EmailSkill.Util; +using EmailSkill.Services; +using EmailSkill.Utilities; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Solutions.Responses; using Microsoft.Bot.Builder.Solutions.Skills; using Microsoft.Bot.Builder.Solutions.Util; -using static EmailSkill.Models.SendEmailStateModel; -namespace EmailSkill.Dialogs.SendEmail +namespace EmailSkill.Dialogs { - public class SendEmailDialog : EmailSkillDialog + public class SendEmailDialog : EmailSkillDialogBase { public SendEmailDialog( - SkillConfigurationBase services, + BotSettings settings, + BotServices services, ResponseManager responseManager, IStatePropertyAccessor emailStateAccessor, IStatePropertyAccessor dialogStateAccessor, IServiceManager serviceManager, IBotTelemetryClient telemetryClient) - : base(nameof(SendEmailDialog), services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient) + : base(nameof(SendEmailDialog), settings, services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient) { TelemetryClient = telemetryClient; @@ -78,7 +75,7 @@ public SendEmailDialog( AddDialog(new WaterfallDialog(Actions.CollectRecipient, collectRecipients) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.UpdateSubject, updateSubject) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.UpdateContent, updateContent) { TelemetryClient = telemetryClient }); - AddDialog(new FindContactDialog(services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient)); + AddDialog(new FindContactDialog(settings, services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient)); AddDialog(new WaterfallDialog(Actions.GetRecreateInfo, getRecreateInfo) { TelemetryClient = telemetryClient }); AddDialog(new GetRecreateInfoPrompt(Actions.GetRecreateInfoPrompt)); InitialDialogId = Actions.Send; @@ -453,7 +450,7 @@ public SendEmailDialog( skillOptions.SubFlowMode = true; if (sc.Result != null) { - ResendEmailState? recreateState = sc.Result as ResendEmailState?; + var recreateState = sc.Result as ResendEmailState?; switch (recreateState.Value) { case ResendEmailState.Cancel: diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/ShowEmailDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmailDialog.cs similarity index 92% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/ShowEmailDialog.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmailDialog.cs index e6c4071327..460fe6e93e 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/ShowEmailDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmailDialog.cs @@ -3,18 +3,13 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; -using EmailSkill.Dialogs.DeleteEmail; -using EmailSkill.Dialogs.ForwardEmail; -using EmailSkill.Dialogs.ReplyEmail; -using EmailSkill.Dialogs.Shared; -using EmailSkill.Dialogs.Shared.DialogOptions; -using EmailSkill.Dialogs.Shared.Resources; -using EmailSkill.Dialogs.Shared.Resources.Cards; -using EmailSkill.Dialogs.Shared.Resources.Strings; -using EmailSkill.Dialogs.ShowEmail.Resources; using EmailSkill.Extensions; +using EmailSkill.Models; +using EmailSkill.Responses.Shared; +using EmailSkill.Responses.ShowEmail; using EmailSkill.ServiceClients; -using EmailSkill.Util; +using EmailSkill.Services; +using EmailSkill.Utilities; using Luis; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; @@ -23,18 +18,19 @@ using Microsoft.Bot.Builder.Solutions.Skills; using Microsoft.Bot.Builder.Solutions.Util; -namespace EmailSkill.Dialogs.ShowEmail +namespace EmailSkill.Dialogs { - public class ShowEmailDialog : EmailSkillDialog + public class ShowEmailDialog : EmailSkillDialogBase { public ShowEmailDialog( - SkillConfigurationBase services, + BotSettings settings, + BotServices services, ResponseManager responseManager, IStatePropertyAccessor emailStateAccessor, IStatePropertyAccessor dialogStateAccessor, IServiceManager serviceManager, IBotTelemetryClient telemetryClient) - : base(nameof(ShowEmailDialog), services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient) + : base(nameof(ShowEmailDialog), settings, services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient) { TelemetryClient = telemetryClient; @@ -104,9 +100,9 @@ public ShowEmailDialog( AddDialog(new WaterfallDialog(Actions.Display, displayEmail) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.DisplayFiltered, displayFilteredEmail) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.ReDisplay, redisplayEmail) { TelemetryClient = telemetryClient }); - AddDialog(new DeleteEmailDialog(services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient)); - AddDialog(new ReplyEmailDialog(services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient)); - AddDialog(new ForwardEmailDialog(services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient)); + AddDialog(new DeleteEmailDialog(settings, services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient)); + AddDialog(new ReplyEmailDialog(settings, services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient)); + AddDialog(new ForwardEmailDialog(settings, services, responseManager, emailStateAccessor, dialogStateAccessor, serviceManager, telemetryClient)); InitialDialogId = Actions.Show; } @@ -240,9 +236,9 @@ public ShowEmailDialog( var promptRecognizerResult = ConfirmRecognizerHelper.ConfirmYesOrNo(userInput, sc.Context.Activity.Locale); - if ((topIntent == EmailLU.Intent.None - || topIntent == EmailLU.Intent.SearchMessages - || (topIntent == EmailLU.Intent.ReadAloud && !IsReadMoreIntent(generalTopIntent, sc.Context.Activity.Text)) + if ((topIntent == EmailLuis.Intent.None + || topIntent == EmailLuis.Intent.SearchMessages + || (topIntent == EmailLuis.Intent.ReadAloud && !IsReadMoreIntent(generalTopIntent, sc.Context.Activity.Text)) || (promptRecognizerResult.Succeeded && promptRecognizerResult.Value == true)) && message != null) { @@ -348,20 +344,20 @@ public ShowEmailDialog( var skillOptions = (EmailSkillDialogOptions)sc.Options; skillOptions.SubFlowMode = true; - if (topIntent == EmailLU.Intent.Delete) + if (topIntent == EmailLuis.Intent.Delete) { return await sc.BeginDialogAsync(Actions.Delete, skillOptions); } - else if (topIntent == EmailLU.Intent.Forward) + else if (topIntent == EmailLuis.Intent.Forward) { return await sc.BeginDialogAsync(Actions.Forward, skillOptions); } - else if (topIntent == EmailLU.Intent.Reply) + else if (topIntent == EmailLuis.Intent.Reply) { return await sc.BeginDialogAsync(Actions.Reply, skillOptions); } else if (IsReadMoreIntent(topGeneralIntent, userInput) - || (topIntent == EmailLU.Intent.ShowNext || topIntent == EmailLU.Intent.ShowPrevious || topGeneralIntent == General.Intent.ShowPrevious || topGeneralIntent == General.Intent.ShowNext)) + || (topIntent == EmailLuis.Intent.ShowNext || topIntent == EmailLuis.Intent.ShowPrevious || topGeneralIntent == General.Intent.ShowPrevious || topGeneralIntent == General.Intent.ShowNext)) { return await sc.ReplaceDialogAsync(Actions.Display, skillOptions); } diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/EmailSkill.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/EmailSkill.cs deleted file mode 100644 index 3d80364f27..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/EmailSkill.cs +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using EmailSkill.Dialogs.DeleteEmail.Resources; -using EmailSkill.Dialogs.FindContact.Resources; -using EmailSkill.Dialogs.ForwardEmail.Resources; -using EmailSkill.Dialogs.Main; -using EmailSkill.Dialogs.Main.Resources; -using EmailSkill.Dialogs.ReplyEmail.Resources; -using EmailSkill.Dialogs.SendEmail.Resources; -using EmailSkill.Dialogs.Shared.Resources; -using EmailSkill.Dialogs.ShowEmail.Resources; -using EmailSkill.ServiceClients; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Solutions.Proactive; -using Microsoft.Bot.Builder.Solutions.Responses; -using Microsoft.Bot.Builder.Solutions.Skills; -using Microsoft.Bot.Builder.Solutions.TaskExtensions; -using Microsoft.Bot.Builder.Solutions.Telemetry; -using Microsoft.Bot.Configuration; - -namespace EmailSkill -{ - /// - /// Main entry point and orchestration for bot. - /// - public class EmailSkill : IBot - { - private readonly SkillConfigurationBase _services; - private readonly ResponseManager _responseManager; - private readonly ConversationState _conversationState; - private readonly UserState _userState; - private readonly IBotTelemetryClient _telemetryClient; - private IServiceManager _serviceManager; - private DialogSet _dialogs; - private bool _skillMode; - - public EmailSkill( - SkillConfigurationBase services, - EndpointService endpointService, - ConversationState conversationState, - UserState userState, - ProactiveState proactiveState, - IBotTelemetryClient telemetryClient, - IBackgroundTaskQueue backgroundTaskQueue, - bool skillMode = false, - ResponseManager responseManager = null, - IServiceManager serviceManager = null) - { - _skillMode = skillMode; - _services = services ?? throw new ArgumentNullException(nameof(services)); - _userState = userState ?? throw new ArgumentNullException(nameof(userState)); - _conversationState = conversationState ?? throw new ArgumentNullException(nameof(conversationState)); - _telemetryClient = telemetryClient ?? throw new ArgumentNullException(nameof(telemetryClient)); - _serviceManager = serviceManager ?? new ServiceManager(services); - - if (responseManager == null) - { - var supportedLanguages = services.LocaleConfigurations.Keys.ToArray(); - responseManager = new ResponseManager( - supportedLanguages, - new FindContactResponses(), - new DeleteEmailResponses(), - new ForwardEmailResponses(), - new EmailMainResponses(), - new ReplyEmailResponses(), - new SendEmailResponses(), - new EmailSharedResponses(), - new ShowEmailResponses()); - } - - _responseManager = responseManager; - _dialogs = new DialogSet(_conversationState.CreateProperty(nameof(DialogState))); - _dialogs.Add(new MainDialog(_services, _responseManager, _conversationState, _userState, _telemetryClient, _serviceManager, _skillMode)); - } - - /// - /// Run every turn of the conversation. Handles orchestration of messages. - /// - /// Bot Turn Context. - /// Task CancellationToken. - /// A representing the asynchronous operation. - public async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken) - { - turnContext.TurnState.TryAdd(TelemetryLoggerMiddleware.AppInsightsServiceKey, _telemetryClient); - - var dc = await _dialogs.CreateContextAsync(turnContext); - - if (dc.ActiveDialog != null) - { - var result = await dc.ContinueDialogAsync(); - } - else - { - await dc.BeginDialogAsync(nameof(MainDialog)); - } - } - } -} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/EmailSkill.csproj b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/EmailSkill.csproj index a8bd998dbb..8a2e0b7636 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/EmailSkill.csproj +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/EmailSkill.csproj @@ -34,50 +34,50 @@ - + + True + True + DeleteEmailResponses.tt + + True True FindContactResponses.tt - + True True ForwardEmailResponses.tt - + True True EmailMainResponses.tt - + True True ReplyEmailResponses.tt - + True True SendEmailResponses.tt - - True - True - EmailSharedResponses.tt - - + True True EmailCommonStrings.resx - + True True - ShowEmailResponses.tt + EmailSharedResponses.tt - + True True - DeleteEmailResponses.tt + ShowEmailResponses.tt @@ -91,58 +91,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -150,46 +150,50 @@ - + DeleteEmailResponses.cs TextTemplatingFileGenerator - + FindContactResponses.cs TextTemplatingFileGenerator - + TextTemplatingFileGenerator ForwardEmailResponses.cs - + TextTemplatingFileGenerator EmailMainResponses.cs - + TextTemplatingFileGenerator ReplyEmailResponses.cs - + TextTemplatingFileGenerator SendEmailResponses.cs - + TextTemplatingFileGenerator EmailSharedResponses.cs - + + TextTemplatingFileGenerator + ResponseIdCollection.cs + + TextTemplatingFileGenerator ShowEmailResponses.cs - + PublicResXFileCodeGenerator EmailCommonStrings.Designer.cs - + PublicResXFileCodeGenerator EmailCommonStrings.Designer.cs @@ -199,4 +203,10 @@ + + + cognitivemodels.json + + + diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Model/SendEmailStateModel.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Model/SendEmailStateModel.cs deleted file mode 100644 index 22a45974b5..0000000000 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Model/SendEmailStateModel.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace EmailSkill.Models -{ - public class SendEmailStateModel - { - public enum ResendEmailState - { - /// - /// Cancel the recreate - /// - Cancel = 0, - - /// - /// Change the Participants and recerate. - /// - Participants = 1, - - /// - /// Change the subject and recerate. - /// - Subject = 2, - - /// - /// Change the content and recerate. - /// - Content = 3 - } - } -} diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Cards/EmailCardData.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/EmailCardData.cs similarity index 89% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Cards/EmailCardData.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/EmailCardData.cs index c299d74fb7..019dffac8b 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Cards/EmailCardData.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/EmailCardData.cs @@ -1,6 +1,6 @@ using Microsoft.Bot.Builder.Solutions.Responses; -namespace EmailSkill.Dialogs.Shared.Resources.Cards +namespace EmailSkill.Models { public class EmailCardData : ICardData { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Cards/EmailCardDataNoButtons.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/EmailCardDataNoButtons.cs similarity index 89% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Cards/EmailCardDataNoButtons.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/EmailCardDataNoButtons.cs index 594d43ebbe..93780459f1 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Cards/EmailCardDataNoButtons.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/EmailCardDataNoButtons.cs @@ -1,6 +1,6 @@ using Microsoft.Bot.Builder.Solutions.Responses; -namespace EmailSkill.Dialogs.Shared.Resources.Cards +namespace EmailSkill.Models { public class EmailCardDataNoButtons : ICardData { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/DialogOptions/EmailSkillDialogOptions.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/EmailSkillDialogOptions.cs similarity index 53% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/DialogOptions/EmailSkillDialogOptions.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/EmailSkillDialogOptions.cs index 2cbc629d15..7dcb0be93a 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/DialogOptions/EmailSkillDialogOptions.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/EmailSkillDialogOptions.cs @@ -1,9 +1,7 @@ -namespace EmailSkill.Dialogs.Shared.DialogOptions +namespace EmailSkill.Models { public class EmailSkillDialogOptions { - public bool SkillMode { get; set; } - public bool SubFlowMode { get; set; } = false; } } \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/EmailSkillState.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/EmailSkillState.cs similarity index 97% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/EmailSkillState.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/EmailSkillState.cs index 14d4ddfaca..34461244dc 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/EmailSkillState.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/EmailSkillState.cs @@ -1,14 +1,13 @@ using System; using System.Collections.Generic; -using EmailSkill.Dialogs.Shared.Resources.Strings; -using EmailSkill.Model; +using EmailSkill.Responses.Shared; using Luis; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Dialogs.Choices; using Microsoft.Graph; -namespace EmailSkill +namespace EmailSkill.Models { public class EmailSkillState { @@ -110,7 +109,7 @@ public EmailSkillState() public List RecipientChoiceList { get; set; } - public EmailLU LuisResult { get; set; } + public EmailLuis LuisResult { get; set; } public General GeneralLuisResult { get; set; } diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Model/MailSource.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/MailSource.cs similarity index 94% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Model/MailSource.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/MailSource.cs index 0858c70302..28350c6ba4 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Model/MailSource.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/MailSource.cs @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -namespace EmailSkill.Model +namespace EmailSkill.Models { /// /// Source of event. diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/OAuthConnection.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/OAuthConnection.cs new file mode 100644 index 0000000000..839a960f7f --- /dev/null +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/OAuthConnection.cs @@ -0,0 +1,9 @@ +namespace EmailSkill.Models +{ + public class OAuthConnection + { + public string Name { get; set; } + + public string Provider { get; set; } + } +} diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/SendEmailStateModel.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/SendEmailStateModel.cs new file mode 100644 index 0000000000..2da58b5f34 --- /dev/null +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/SendEmailStateModel.cs @@ -0,0 +1,25 @@ +namespace EmailSkill.Models +{ + public enum ResendEmailState + { + /// + /// Cancel the recreate + /// + Cancel = 0, + + /// + /// Change the Participants and recerate. + /// + Participants = 1, + + /// + /// Change the subject and recerate. + /// + Subject = 2, + + /// + /// Change the content and recerate. + /// + Content = 3 + } +} diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/DialogOptions/UpdateUserDialogOptions.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/UpdateUserDialogOptions.cs similarity index 94% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/DialogOptions/UpdateUserDialogOptions.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/UpdateUserDialogOptions.cs index 7d9ebd93d1..3bb0de08a1 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/DialogOptions/UpdateUserDialogOptions.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Models/UpdateUserDialogOptions.cs @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -namespace EmailSkill.Dialogs.Shared.DialogOptions +namespace EmailSkill.Models { public class UpdateUserDialogOptions { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Prompts/GetRecreateInfoPrompt.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Prompts/GetRecreateInfoPrompt.cs similarity index 93% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Prompts/GetRecreateInfoPrompt.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Prompts/GetRecreateInfoPrompt.cs index 133af27116..d5561a5d8d 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Prompts/GetRecreateInfoPrompt.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Prompts/GetRecreateInfoPrompt.cs @@ -2,14 +2,14 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -using EmailSkill.Dialogs.Shared.Resources.Strings; +using EmailSkill.Models; +using EmailSkill.Responses.Shared; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Solutions.Util; using Microsoft.Bot.Schema; -using static EmailSkill.Models.SendEmailStateModel; -namespace EmailSkill.Dialogs.SendEmail.Prompts +namespace EmailSkill.Prompts { public class GetRecreateInfoPrompt : Prompt { @@ -54,7 +54,7 @@ public GetRecreateInfoPrompt(string dialogId, PromptValidator if (turnContext.Activity.Type == ActivityTypes.Message) { var message = turnContext.Activity.AsMessageActivity(); - ResendEmailState? recreateState = GetStateFromMessage(message.Text); + var recreateState = GetStateFromMessage(message.Text); var promptRecognizerResult = ConfirmRecognizerHelper.ConfirmYesOrNo(message.Text, turnContext.Activity.Locale); if (promptRecognizerResult.Succeeded && promptRecognizerResult.Value == false) diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.cs similarity index 91% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.cs index 2c2e89cb92..de6e0bdfc9 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.cs @@ -4,7 +4,7 @@ using Microsoft.Bot.Builder.Solutions.Responses; -namespace EmailSkill.Dialogs.DeleteEmail.Resources +namespace EmailSkill.Responses.DeleteEmail { /// /// Contains bot responses. @@ -16,4 +16,4 @@ public class DeleteEmailResponses : IResponseIdCollection public const string DeleteConfirm = "DeleteConfirm"; public const string DeleteSuccessfully = "DeleteSuccessfully"; } -} +} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.de.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.de.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.de.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.de.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.es.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.es.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.es.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.es.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.fr.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.fr.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.fr.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.fr.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.it.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.it.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.it.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.it.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.tt b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.tt similarity index 58% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.tt rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.tt index d636d96c8b..f204f0981b 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.tt +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.tt @@ -1,3 +1,3 @@ <#@ template debug="false" hostspecific="true" language="C#" #> <#@ output extension=".cs" #> -<#@ include file="..\..\Shared\Resources\ResponseIdCollection.t4"#> +<#@ include file="..\Shared\ResponseIdCollection.t4"#> \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.zh.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.zh.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/DeleteEmail/Resources/DeleteEmailResponses.zh.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/DeleteEmail/DeleteEmailResponses.zh.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.cs similarity index 95% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.cs index 1ed7130cfe..b574c67cc2 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.cs @@ -4,7 +4,7 @@ using Microsoft.Bot.Builder.Solutions.Responses; -namespace EmailSkill.Dialogs.FindContact.Resources +namespace EmailSkill.Responses.FindContact { /// /// Contains bot responses. @@ -23,4 +23,4 @@ public class FindContactResponses : IResponseIdCollection public const string AlreadyFirstPage = "AlreadyFirstPage"; public const string AlreadyLastPage = "AlreadyLastPage"; } -} +} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.de.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.de.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.de.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.de.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.es.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.es.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.es.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.es.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.fr.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.fr.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.fr.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.fr.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.it.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.it.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.it.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.it.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.tt b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.tt similarity index 58% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.tt rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.tt index d636d96c8b..f204f0981b 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.tt +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.tt @@ -1,3 +1,3 @@ <#@ template debug="false" hostspecific="true" language="C#" #> <#@ output extension=".cs" #> -<#@ include file="..\..\Shared\Resources\ResponseIdCollection.t4"#> +<#@ include file="..\Shared\ResponseIdCollection.t4"#> \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.zh.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.zh.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/FindContact/Resources/FindContactResponses.zh.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/FindContact/FindContactResponses.zh.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.cs similarity index 88% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.cs index 74f7e21f70..62f96fb91a 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.cs @@ -4,7 +4,7 @@ using Microsoft.Bot.Builder.Solutions.Responses; -namespace EmailSkill.Dialogs.ForwardEmail.Resources +namespace EmailSkill.Responses.ForwardEmail { /// /// Contains bot responses. @@ -13,4 +13,4 @@ public class ForwardEmailResponses : IResponseIdCollection { // Generated accessors } -} +} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.de.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.de.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.de.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.de.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.es.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.es.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.es.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.es.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.fr.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.fr.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.fr.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.fr.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.it.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.it.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.it.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.it.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.tt b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.tt similarity index 58% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.tt rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.tt index d636d96c8b..f204f0981b 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.tt +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.tt @@ -1,3 +1,3 @@ <#@ template debug="false" hostspecific="true" language="C#" #> <#@ output extension=".cs" #> -<#@ include file="..\..\Shared\Resources\ResponseIdCollection.t4"#> +<#@ include file="..\Shared\ResponseIdCollection.t4"#> \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.zh.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.zh.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ForwardEmail/Resources/ForwardEmailResponses.zh.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ForwardEmail/ForwardEmailResponses.zh.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.cs similarity index 94% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.cs index 147c102cc4..88d3772fd3 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.cs @@ -4,7 +4,7 @@ using Microsoft.Bot.Builder.Solutions.Responses; -namespace EmailSkill.Dialogs.Main.Resources +namespace EmailSkill.Responses.Main { /// /// Contains bot responses. @@ -19,4 +19,4 @@ public class EmailMainResponses : IResponseIdCollection public const string FeatureNotAvailable = "FeatureNotAvailable"; public const string CancelMessage = "CancelMessage"; } -} +} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.de.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.de.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.de.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.de.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.es.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.es.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.es.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.es.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.fr.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.fr.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.fr.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.fr.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.it.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.it.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.it.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.it.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.tt b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.tt similarity index 58% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.tt rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.tt index d636d96c8b..f204f0981b 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.tt +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.tt @@ -1,3 +1,3 @@ <#@ template debug="false" hostspecific="true" language="C#" #> <#@ output extension=".cs" #> -<#@ include file="..\..\Shared\Resources\ResponseIdCollection.t4"#> +<#@ include file="..\Shared\ResponseIdCollection.t4"#> \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.zh.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.zh.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Main/Resources/EmailMainResponses.zh.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Main/EmailMainResponses.zh.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.cs similarity index 88% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.cs index 4f12b9b076..4de1c324a6 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.cs @@ -4,7 +4,7 @@ using Microsoft.Bot.Builder.Solutions.Responses; -namespace EmailSkill.Dialogs.ReplyEmail.Resources +namespace EmailSkill.Responses.ReplyEmail { /// /// Contains bot responses. @@ -13,4 +13,4 @@ public class ReplyEmailResponses : IResponseIdCollection { // Generated accessors } -} +} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.de.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.de.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.de.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.de.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.es.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.es.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.es.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.es.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.fr.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.fr.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.fr.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.fr.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.it.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.it.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.it.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.it.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.tt b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.tt similarity index 58% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.tt rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.tt index d636d96c8b..f204f0981b 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.tt +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.tt @@ -1,3 +1,3 @@ <#@ template debug="false" hostspecific="true" language="C#" #> <#@ output extension=".cs" #> -<#@ include file="..\..\Shared\Resources\ResponseIdCollection.t4"#> +<#@ include file="..\Shared\ResponseIdCollection.t4"#> \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.zh.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.zh.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ReplyEmail/Resources/ReplyEmailResponses.zh.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ReplyEmail/ReplyEmailResponses.zh.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.cs similarity index 95% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.cs index b460b94053..a0c3145602 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.cs @@ -4,7 +4,7 @@ using Microsoft.Bot.Builder.Solutions.Responses; -namespace EmailSkill.Dialogs.SendEmail.Resources +namespace EmailSkill.Responses.SendEmail { /// /// Contains bot responses. @@ -23,4 +23,4 @@ public class SendEmailResponses : IResponseIdCollection public const string GetRecreateInfoRetry = "GetRecreateInfoRetry"; public const string ConfirmMessageRetry = "ConfirmMessageRetry"; } -} +} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.de.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.de.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.de.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.de.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.es.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.es.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.es.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.es.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.fr.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.fr.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.fr.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.fr.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.it.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.it.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.it.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.it.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.tt b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.tt similarity index 58% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.tt rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.tt index d636d96c8b..f204f0981b 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.tt +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.tt @@ -1,3 +1,3 @@ <#@ template debug="false" hostspecific="true" language="C#" #> <#@ output extension=".cs" #> -<#@ include file="..\..\Shared\Resources\ResponseIdCollection.t4"#> +<#@ include file="..\Shared\ResponseIdCollection.t4"#> \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.zh.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.zh.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/SendEmail/Resources/SendEmailResponses.zh.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/SendEmail/SendEmailResponses.zh.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.Designer.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.Designer.cs similarity index 98% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.Designer.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.Designer.cs index 95e2e688e8..86a19da75c 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.Designer.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.Designer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -namespace EmailSkill.Dialogs.Shared.Resources.Strings { +namespace EmailSkill.Responses.Shared { using System; @@ -39,7 +39,7 @@ internal EmailCommonStrings() { public static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("EmailSkill.Dialogs.Shared.Resources.Strings.EmailCommonStrings", typeof(EmailCommonStrings).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("EmailSkill.Responses.Shared.EmailCommonStrings", typeof(EmailCommonStrings).Assembly); resourceMan = temp; } return resourceMan; diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.de.resx b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.de.resx similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.de.resx rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.de.resx diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.es.resx b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.es.resx similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.es.resx rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.es.resx diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.fr.resx b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.fr.resx similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.fr.resx rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.fr.resx diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.it.resx b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.it.resx similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.it.resx rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.it.resx diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.resx b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.resx similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.resx rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.resx diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.zh.resx b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.zh.resx similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonStrings.zh.resx rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailCommonStrings.zh.resx diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.cs similarity index 97% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.cs index 1e69239fd2..7b09b02c39 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.cs @@ -4,7 +4,7 @@ using Microsoft.Bot.Builder.Solutions.Responses; -namespace EmailSkill.Dialogs.Shared.Resources +namespace EmailSkill.Responses.Shared { /// /// Contains bot responses. diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.de.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.de.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.de.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.de.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.es.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.es.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.es.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.es.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.fr.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.fr.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.fr.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.fr.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.it.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.it.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.it.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.it.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.tt b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.tt similarity index 58% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.tt rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.tt index d636d96c8b..e5404a9ce4 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.tt +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.tt @@ -1,3 +1,3 @@ <#@ template debug="false" hostspecific="true" language="C#" #> <#@ output extension=".cs" #> -<#@ include file="..\..\Shared\Resources\ResponseIdCollection.t4"#> +<#@ include file="..\Shared\ResponseIdCollection.t4"#> diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.zh.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.zh.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailSharedResponses.zh.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/EmailSharedResponses.zh.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/ResponseIdCollection.t4 b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/ResponseIdCollection.t4 similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/ResponseIdCollection.t4 rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/Shared/ResponseIdCollection.t4 diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.cs similarity index 93% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.cs index abe4827600..7d4c0babec 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.cs @@ -4,7 +4,7 @@ using Microsoft.Bot.Builder.Solutions.Responses; -namespace EmailSkill.Dialogs.ShowEmail.Resources +namespace EmailSkill.Responses.ShowEmail { /// /// Contains bot responses. @@ -17,4 +17,4 @@ public class ShowEmailResponses : IResponseIdCollection public const string ReadOutOnlyOnePrompt = "ReadOutOnlyOnePrompt"; public const string ReadOutPrompt = "ReadOutPrompt"; } -} +} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.de.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.de.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.de.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.de.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.es.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.es.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.es.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.es.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.fr.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.fr.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.fr.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.fr.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.it.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.it.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.it.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.it.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.tt b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.tt similarity index 58% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.tt rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.tt index d636d96c8b..f204f0981b 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.tt +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.tt @@ -1,3 +1,3 @@ <#@ template debug="false" hostspecific="true" language="C#" #> <#@ output extension=".cs" #> -<#@ include file="..\..\Shared\Resources\ResponseIdCollection.t4"#> +<#@ include file="..\Shared\ResponseIdCollection.t4"#> \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.zh.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.zh.json similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/ShowEmail/Resources/ShowEmailResponses.zh.json rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Responses/ShowEmail/ShowEmailResponses.zh.json diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/BotServices.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/BotServices.cs new file mode 100644 index 0000000000..f0bf550e5c --- /dev/null +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/BotServices.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.Bot.Builder.AI.Luis; +using Microsoft.Bot.Builder.AI.QnA; +using Microsoft.Bot.Builder.Solutions; +using Microsoft.Bot.Builder.Solutions.Telemetry; + +namespace EmailSkill.Services +{ + public class BotServices + { + public BotServices(BotSettings settings) + { + foreach (var pair in settings.CognitiveModels) + { + var set = new CognitiveModelSet(); + var language = pair.Key; + var config = pair.Value; + + if (config.DispatchModel != null) + { + var dispatchApp = new LuisApplication(config.DispatchModel.AppId, config.DispatchModel.SubscriptionKey, config.DispatchModel.GetEndpoint()); + set.DispatchService = new TelemetryLuisRecognizer(dispatchApp); + } + + 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 TelemetryLuisRecognizer(luisApp)); + } + } + + if (config.Knowledgebases != null) + { + foreach (var kb in config.Knowledgebases) + { + var qnaEndpoint = new QnAMakerEndpoint() + { + KnowledgeBaseId = kb.KbId, + EndpointKey = kb.EndpointKey, + Host = kb.Hostname, + }; + var qnaMaker = new TelemetryQnAMaker(qnaEndpoint); + set.QnAServices.Add(kb.Id, qnaMaker); + } + } + + CognitiveModelSets.Add(language, set); + } + } + + public Dictionary CognitiveModelSets { get; set; } = new Dictionary(); + } +} diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/BotSettings.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/BotSettings.cs new file mode 100644 index 0000000000..e33d0c3d51 --- /dev/null +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/BotSettings.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using EmailSkill.Models; +using Microsoft.ApplicationInsights.Extensibility; +using Microsoft.Bot.Builder.Azure; +using Microsoft.Bot.Configuration; + +namespace EmailSkill.Services +{ + public class BotSettings + { + public string MicrosoftAppId { get; set; } + + public string MicrosoftAppPassword { get; set; } + + public string DefaultLocale { get; set; } + + public List OAuthConnections { get; set; } + + public CosmosDbStorageOptions CosmosDb { get; set; } + + public TelemetryConfiguration AppInsights { get; set; } + + public BlobStorageConfiguration BlobStorage { get; set; } + + public ContentModeratorConfiguration ContentModerator { get; set; } + + public Dictionary CognitiveModels { get; set; } + + public Dictionary Properties { get; set; } + + public class BlobStorageConfiguration + { + public string ConnectionString { get; set; } + + public string Container { get; set; } + } + + public class ContentModeratorConfiguration + { + public string Key { get; set; } + } + + public class CognitiveModelConfiguration + { + public DispatchService DispatchModel { get; set; } + + public List LanguageModels { get; set; } + + public List Knowledgebases { get; set; } + } + } +} diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailLU.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/EmailLuis.cs similarity index 96% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailLU.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/EmailLuis.cs index 1ee305e97b..a91f526b5d 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/EmailLU.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/EmailLuis.cs @@ -10,7 +10,7 @@ using Microsoft.Bot.Builder.AI.Luis; namespace Luis { - public class EmailLU: IRecognizerConvert + public class EmailLuis: IRecognizerConvert { public string Text; public string AlteredText; @@ -89,7 +89,7 @@ public class _Instance public void Convert(dynamic result) { - var app = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(result)); + var app = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(result)); Text = app.Text; AlteredText = app.AlteredText; Intents = app.Intents; diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/GoogleAPI/GMailService.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/GoogleAPI/GMailService.cs similarity index 97% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/GoogleAPI/GMailService.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/GoogleAPI/GMailService.cs index 416408588c..3db20ade12 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/GoogleAPI/GMailService.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/GoogleAPI/GMailService.cs @@ -8,7 +8,7 @@ using System.Net.Mail; using System.Text; using System.Threading.Tasks; -using EmailSkill.Dialogs.Shared.Resources.Strings; +using EmailSkill.Responses.Shared; using Google; using Google.Apis.Auth.OAuth2; using Google.Apis.Auth.OAuth2.Flows; @@ -88,7 +88,7 @@ public static string Base64UrlEncode(string text) // decode from base64url to utf-8 bytes public static byte[] Base64UrlDecode(string text) { - string result = text; + var result = text; result = result.Replace('-', '+'); // 62nd char of encoding result = result.Replace('_', '/'); // 63rd char of encoding @@ -103,16 +103,16 @@ public static byte[] Base64UrlDecode(string text) "Illegal base64url string!"); } - byte[] textBytes = Convert.FromBase64String(result); + var textBytes = Convert.FromBase64String(result); return textBytes; } // decode to mimeMessage public static MimeMessage DecodeToMessage(string text) { - byte[] msg = Base64UrlDecode(text); - MemoryStream mm = new MemoryStream(msg); - MimeKit.MimeMessage mime = MimeKit.MimeMessage.Load(mm); + var msg = Base64UrlDecode(text); + var mm = new MemoryStream(msg); + var mime = MimeKit.MimeMessage.Load(mm); return mime; } @@ -309,7 +309,7 @@ public async Task> GetMyMessagesAsync(DateTime fromTime, DateTim var user = ((IClientServiceRequest)profileRequest).Execute(); var userAddress = user.EmailAddress; - string searchOperation = string.Empty; + var searchOperation = string.Empty; searchOperation = this.AppendFilterString(searchOperation, "in:inbox"); if (getUnRead) { @@ -406,8 +406,8 @@ public async Task MarkMessageAsReadAsync(string id) { try { - ModifyMessageRequest mods = new ModifyMessageRequest(); - List labelsToRemove = new List() { "UNREAD" }; + var mods = new ModifyMessageRequest(); + var labelsToRemove = new List() { "UNREAD" }; mods.RemoveLabelIds = labelsToRemove; var updateRequest = service.Users.Messages.Modify( @@ -422,7 +422,7 @@ public async Task MarkMessageAsReadAsync(string id) public string AppendFilterString(string old, string filterString) { - string result = old; + var result = old; if (string.IsNullOrEmpty(old)) { result += filterString; @@ -452,7 +452,7 @@ private int GetUnixTime(DateTime time) private MSMessage MapMimeMessageToMSMessage(MimeMessage mime) { - MSMessage message = new MSMessage + var message = new MSMessage { ReceivedDateTime = mime.Date }; diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/GoogleAPI/GoogleClient.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/GoogleAPI/GoogleClient.cs similarity index 59% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/GoogleAPI/GoogleClient.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/GoogleAPI/GoogleClient.cs index d29a4e6460..916890dc67 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/GoogleAPI/GoogleClient.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/GoogleAPI/GoogleClient.cs @@ -1,4 +1,5 @@ using System; +using EmailSkill.Services; using Google; using Microsoft.Bot.Builder.Solutions.Skills; @@ -16,24 +17,24 @@ public class GoogleClient public string[] Scopes { get; set; } - public static GoogleClient GetGoogleClient(SkillConfigurationBase config) + public static GoogleClient GetGoogleClient(BotSettings settings) { - if (config == null) + if (settings == null) { - throw new ArgumentNullException(nameof(config)); + throw new ArgumentNullException(nameof(settings)); } - config.Properties.TryGetValue("googleAppName", out object appName); - config.Properties.TryGetValue("googleClientId", out object clientId); - config.Properties.TryGetValue("googleClientSecret", out object clientSecret); - config.Properties.TryGetValue("googleScopes", out object scopes); + settings.Properties.TryGetValue("googleAppName", out var appName); + settings.Properties.TryGetValue("googleClientId", out var clientId); + settings.Properties.TryGetValue("googleClientSecret", out var clientSecret); + settings.Properties.TryGetValue("googleScopes", out var scopes); var googleClient = new GoogleClient { - ApplicationName = appName as string, - ClientId = clientId as string, - ClientSecret = clientSecret as string, - Scopes = (scopes as string).Split(" "), + ApplicationName = appName, + ClientId = clientId, + ClientSecret = clientSecret, + Scopes = scopes.Split(" "), }; return googleClient; diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/GoogleAPI/GooglePeopleService.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/GoogleAPI/GooglePeopleService.cs similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/GoogleAPI/GooglePeopleService.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/GoogleAPI/GooglePeopleService.cs diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/IMailService.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/IMailService.cs similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/IMailService.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/IMailService.cs diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/IServiceManager.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/IServiceManager.cs similarity index 94% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/IServiceManager.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/IServiceManager.cs index d281ad6855..981a5e45ae 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/IServiceManager.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/IServiceManager.cs @@ -2,7 +2,7 @@ // Licensed under the MIT License. using System; -using EmailSkill.Model; +using EmailSkill.Models; namespace EmailSkill.ServiceClients { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/IUserService.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/IUserService.cs similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/IUserService.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/IUserService.cs diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/MSGraphAPI/GraphClient.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/MSGraphAPI/GraphClient.cs similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/MSGraphAPI/GraphClient.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/MSGraphAPI/GraphClient.cs diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/MSGraphAPI/MSGraphMailAPI.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/MSGraphAPI/MSGraphMailAPI.cs similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/MSGraphAPI/MSGraphMailAPI.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/MSGraphAPI/MSGraphMailAPI.cs diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/MSGraphAPI/MSGraphUserService.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/MSGraphAPI/MSGraphUserService.cs similarity index 100% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/MSGraphAPI/MSGraphUserService.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/MSGraphAPI/MSGraphUserService.cs diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/ServiceManager.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/ServiceManager.cs similarity index 88% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/ServiceManager.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/ServiceManager.cs index e79d9a7fae..34c9a9fa7f 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/ServiceClients/ServiceManager.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Services/ServiceManager.cs @@ -2,20 +2,20 @@ // Licensed under the MIT License. using System; -using EmailSkill.Model; +using EmailSkill.Models; using EmailSkill.ServiceClients.GoogleAPI; using EmailSkill.ServiceClients.MSGraphAPI; -using Microsoft.Bot.Builder.Solutions.Skills; +using EmailSkill.Services; namespace EmailSkill.ServiceClients { public class ServiceManager : IServiceManager { - private SkillConfigurationBase _skillConfig; + private BotSettings _settings; - public ServiceManager(SkillConfigurationBase config) + public ServiceManager(BotSettings settings) { - _skillConfig = config; + _settings = settings; } /// @@ -27,7 +27,7 @@ public IUserService InitUserService(string token, TimeZoneInfo timeZoneInfo, Mai var serviceClient = GraphClient.GetAuthenticatedClient(token, timeZoneInfo); return new MSGraphUserService(serviceClient, timeZoneInfo); case MailSource.Google: - var googleClient = GoogleClient.GetGoogleClient(_skillConfig); + var googleClient = GoogleClient.GetGoogleClient(_settings); var googlePeopleClient = GooglePeopleService.GetServiceClient(googleClient, token); return new GooglePeopleService(googlePeopleClient); default: @@ -44,7 +44,7 @@ public IMailService InitMailService(string token, TimeZoneInfo timeZoneInfo, Mai var serviceClient = GraphClient.GetAuthenticatedClient(token, timeZoneInfo); return new MSGraphMailAPI(serviceClient, timeZoneInfo); case MailSource.Google: - var googleClient = GoogleClient.GetGoogleClient(_skillConfig); + var googleClient = GoogleClient.GetGoogleClient(_settings); var googleServiceClient = GMailService.GetServiceClient(googleClient, token); return new GMailService(googleServiceClient); default: diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Startup.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Startup.cs index 126c983e78..9a60f5f66d 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Startup.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Startup.cs @@ -1,38 +1,35 @@ // 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.Tasks; -using EmailSkill.Dialogs.DeleteEmail.Resources; -using EmailSkill.Dialogs.FindContact.Resources; -using EmailSkill.Dialogs.ForwardEmail.Resources; -using EmailSkill.Dialogs.Main.Resources; -using EmailSkill.Dialogs.ReplyEmail.Resources; -using EmailSkill.Dialogs.SendEmail.Resources; -using EmailSkill.Dialogs.Shared.Resources; -using EmailSkill.Dialogs.ShowEmail.Resources; +using EmailSkill.Adapters; +using EmailSkill.Bots; +using EmailSkill.Dialogs; +using EmailSkill.Responses.DeleteEmail; +using EmailSkill.Responses.FindContact; +using EmailSkill.Responses.ForwardEmail; +using EmailSkill.Responses.Main; +using EmailSkill.Responses.ReplyEmail; +using EmailSkill.Responses.SendEmail; +using EmailSkill.Responses.Shared; +using EmailSkill.Responses.ShowEmail; using EmailSkill.ServiceClients; +using EmailSkill.Services; +using Microsoft.ApplicationInsights; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; 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.Solutions.Middleware; using Microsoft.Bot.Builder.Solutions.Proactive; using Microsoft.Bot.Builder.Solutions.Responses; -using Microsoft.Bot.Builder.Solutions.Skills; using Microsoft.Bot.Builder.Solutions.TaskExtensions; -using Microsoft.Bot.Builder.Solutions.Telemetry; -using Microsoft.Bot.Configuration; using Microsoft.Bot.Connector.Authentication; -using Microsoft.Bot.Schema; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.IdentityModel.Tokens; @@ -49,6 +46,10 @@ public Startup(IHostingEnvironment env) .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) + .AddJsonFile("cognitivemodels.json", optional: true, reloadOnChange: true) + .AddJsonFile($"cognitivemodels.{env.EnvironmentName}.json", optional: true) + .AddJsonFile("skills.json", optional: true, reloadOnChange: true) + .AddJsonFile($"skills.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); @@ -60,30 +61,45 @@ public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_2_2); - // add background task queue + // Load settings + var settings = new BotSettings(); + Configuration.Bind(settings); + services.AddSingleton(settings); + + // Configure bot services + services.AddSingleton(); + + // Configure credentials + services.AddSingleton(); + + // Configure bot state + services.AddSingleton(new CosmosDbStorage(settings.CosmosDb)); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(sp => + { + var userState = sp.GetService(); + var conversationState = sp.GetService(); + var proactiveState = sp.GetService(); + return new BotStateSet(userState, conversationState); + }); + + // Configure telemetry + var telemetryClient = new BotTelemetryClient(new TelemetryClient(settings.AppInsights)); + services.AddSingleton(telemetryClient); + services.AddBotApplicationInsights(telemetryClient); + + // Configure proactive services.AddSingleton(); services.AddHostedService(); - // Load the connected services from .bot file. - var botFilePath = Configuration.GetSection("botFilePath")?.Value; - var botFileSecret = Configuration.GetSection("botFileSecret")?.Value; - var botConfig = BotConfiguration.Load(botFilePath ?? @".\EmailSkill.bot", botFileSecret); - services.AddSingleton(sp => botConfig ?? throw new InvalidOperationException($"The .bot config file could not be loaded.")); - - // Use Application Insights - services.AddBotApplicationInsights(botConfig); - - // Initializes your bot service clients and adds a singleton that your Bot can access through dependency injection. - var parameters = Configuration.GetSection("parameters")?.Get(); - var configuration = Configuration.GetSection("configuration")?.GetChildren()?.ToDictionary(x => x.Key, y => y.Value as object); - var supportedProviders = Configuration.GetSection("supportedProviders")?.Get(); - var languageModels = Configuration.GetSection("languageModels").Get>>(); - var connectedServices = new SkillConfiguration(botConfig, languageModels, supportedProviders, parameters, configuration); - services.AddSingleton(sp => connectedServices); - - var supportedLanguages = languageModels.Select(l => l.Key).ToArray(); - var responseManager = new ResponseManager( - supportedLanguages, + // Configure service manager + services.AddTransient(); + + // Configure responses + services.AddSingleton(sp => new ResponseManager( + settings.CognitiveModels.Select(l => l.Key).ToArray(), new FindContactResponses(), new DeleteEmailResponses(), new ForwardEmailResponses(), @@ -91,48 +107,14 @@ public void ConfigureServices(IServiceCollection services) new ReplyEmailResponses(), new SendEmailResponses(), new EmailSharedResponses(), - new ShowEmailResponses()); - - // Register bot responses for all supported languages. - services.AddSingleton(sp => responseManager); - - var defaultLocale = Configuration.GetSection("defaultLocale").Get(); - - // Initialize Bot State - var cosmosDbService = botConfig.Services.FirstOrDefault(s => s.Type == ServiceTypes.CosmosDB) ?? throw new Exception("Please configure your CosmosDb service in your .bot file."); - var cosmosDb = cosmosDbService as CosmosDbService; - var cosmosOptions = new CosmosDbStorageOptions() - { - CosmosDBEndpoint = new Uri(cosmosDb.Endpoint), - AuthKey = cosmosDb.Key, - CollectionId = cosmosDb.Collection, - DatabaseId = cosmosDb.Database, - }; - var dataStore = new CosmosDbStorage(cosmosOptions); - var userState = new UserState(dataStore); - var conversationState = new ConversationState(dataStore); - var proactiveState = new ProactiveState(dataStore); - - services.AddSingleton(dataStore); - services.AddSingleton(userState); - services.AddSingleton(conversationState); - services.AddSingleton(proactiveState); - services.AddSingleton(new BotStateSet(userState, conversationState)); - - var environment = _isProduction ? "production" : "development"; - var service = botConfig.Services.FirstOrDefault(s => s.Type == ServiceTypes.Endpoint && s.Name == environment); - if (!(service is EndpointService endpointService)) - { - throw new InvalidOperationException($"The .bot file does not contain an endpoint with name '{environment}'."); - } - - services.AddSingleton(endpointService); + new ShowEmailResponses())); + // Configure Skill authentication services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.Authority = "https://login.microsoftonline.com/microsoft.com"; - options.Audience = endpointService.AppId; + options.Audience = settings.MicrosoftAppId; options.TokenValidationParameters = new TokenValidationParameters { ValidIssuer = "https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/v2.0", @@ -140,74 +122,16 @@ public void ConfigureServices(IServiceCollection services) }); // comment out for now to disable whitelist checking - //services.AddSingleton(); - //services.AddSingleton(); - - // Initialize Email client - services.AddSingleton(); - - // Add the bot - services.AddTransient(); - - var credentialProvider = new SimpleCredentialProvider(endpointService.AppId, endpointService.AppPassword); + // services.AddSingleton(); + // services.AddSingleton(); - // Create the middlewares - var telemetryClient = services.BuildServiceProvider().GetService(); - var appInsightsLogger = new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: true); + // Configure adapters + services.AddTransient(); + services.AddTransient(); - var storageService = botConfig.Services.FirstOrDefault(s => s.Type == ServiceTypes.BlobStorage) ?? throw new Exception("Please configure your Azure Storage service in your .bot file."); - var blobStorage = storageService as BlobStorageService; - var transcriptStore = new AzureBlobTranscriptStore(blobStorage.ConnectionString, blobStorage.Container); - var transcriptMiddleware = new TranscriptLoggerMiddleware(transcriptStore); - - var typingMiddleware = new ShowTypingMiddleware(); - var setLocaleMiddleware = new SetLocaleMiddleware(defaultLocale ?? "en-us"); - var eventDebuggerMiddleware = new EventDebuggerMiddleware(); - var autoSaveStateMiddleware = new AutoSaveStateMiddleware(userState, conversationState); - - Func onTurnError = async (context, exception) => - { - CultureInfo.CurrentUICulture = new CultureInfo(context.Activity.Locale); - await context.SendActivityAsync(responseManager.GetResponse(EmailSharedResponses.EmailErrorMessage)); - await context.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"Email Skill Error: {exception.Message} | {exception.StackTrace}")); - telemetryClient.TrackExceptionEx(exception, context.Activity); - }; - - // Add the http adapter with middlewares - services.AddTransient(sp => - { - var botFrameworkHttpAdapter = new BotFrameworkHttpAdapter(credentialProvider) - { - OnTurnError = onTurnError - }; - - botFrameworkHttpAdapter.Use(appInsightsLogger); - botFrameworkHttpAdapter.Use(transcriptMiddleware); - botFrameworkHttpAdapter.Use(typingMiddleware); - botFrameworkHttpAdapter.Use(setLocaleMiddleware); - botFrameworkHttpAdapter.Use(eventDebuggerMiddleware); - botFrameworkHttpAdapter.Use(autoSaveStateMiddleware); - - return botFrameworkHttpAdapter; - }); - - // Add the SkillAdapter with middlewares - services.AddTransient(sp => - { - var skillAdapter = new SkillAdapter(credentialProvider) - { - OnTurnError = onTurnError - }; - - skillAdapter.Use(appInsightsLogger); - skillAdapter.Use(transcriptMiddleware); - skillAdapter.Use(typingMiddleware); - skillAdapter.Use(setLocaleMiddleware); - skillAdapter.Use(eventDebuggerMiddleware); - skillAdapter.Use(autoSaveStateMiddleware); - - return skillAdapter; - }); + // Configure bot + services.AddTransient(); + services.AddTransient>(); } /// diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Actions.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Utilities/Actions.cs similarity index 97% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Actions.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Utilities/Actions.cs index 07745ee207..0b7593a466 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Actions.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Utilities/Actions.cs @@ -1,4 +1,4 @@ -namespace EmailSkill.Dialogs.Shared +namespace EmailSkill.Utilities { public class Actions { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Util/DisplayHelper.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Utilities/DisplayHelper.cs similarity index 88% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Util/DisplayHelper.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Utilities/DisplayHelper.cs index 8dd98ad9a8..bf72a0c227 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Util/DisplayHelper.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Utilities/DisplayHelper.cs @@ -1,11 +1,11 @@ using System; using System.Collections.Generic; using System.Linq; -using EmailSkill.Dialogs.Shared.Resources.Strings; +using EmailSkill.Responses.Shared; using Microsoft.Bot.Builder.Solutions.Resources; using Microsoft.Graph; -namespace EmailSkill.Util +namespace EmailSkill.Utilities { public class DisplayHelper { @@ -16,7 +16,7 @@ public static string ToDisplayRecipientsString_Summay(IEnumerable rec throw new Exception("No recipient!"); } - string toRecipient = !string.IsNullOrEmpty(recipients.FirstOrDefault()?.EmailAddress?.Name) + var toRecipient = !string.IsNullOrEmpty(recipients.FirstOrDefault()?.EmailAddress?.Name) ? recipients.FirstOrDefault()?.EmailAddress?.Name : EmailCommonStrings.UnknownRecipient; var nameListString = toRecipient; @@ -35,13 +35,13 @@ public static string ToDisplayRecipientsString(IEnumerable recipients throw new Exception("No recipient!"); } - string toRecipient = !string.IsNullOrEmpty(recipients.FirstOrDefault()?.EmailAddress?.Name) + var toRecipient = !string.IsNullOrEmpty(recipients.FirstOrDefault()?.EmailAddress?.Name) ? recipients.FirstOrDefault()?.EmailAddress?.Name : EmailCommonStrings.UnknownRecipient; var displayString = toRecipient; if (recipients.Count() > 1) { - for (int i = 1; i < recipients.Count(); i++) + for (var i = 1; i < recipients.Count(); i++) { if (string.IsNullOrEmpty(recipients.ElementAt(i)?.EmailAddress?.Name)) { @@ -60,14 +60,14 @@ public static string ToDisplayRecipientsString(IEnumerable recipients public static (List formattedPersonList, List formattedUserList) FormatRecipientList(List personList, List userList) { // Remove dup items - List formattedPersonList = new List(); - List formattedUserList = new List(); + var formattedPersonList = new List(); + var formattedUserList = new List(); foreach (var person in personList) { var mailAddress = person.ScoredEmailAddresses.FirstOrDefault()?.Address ?? person.UserPrincipalName; - bool isDup = false; + var isDup = false; foreach (var formattedPerson in formattedPersonList) { var formattedMailAddress = formattedPerson.ScoredEmailAddresses.FirstOrDefault()?.Address ?? formattedPerson.UserPrincipalName; @@ -89,7 +89,7 @@ public static (List formattedPersonList, List formattedUserList) { var mailAddress = user.ScoredEmailAddresses.FirstOrDefault()?.Address ?? user.UserPrincipalName; - bool isDup = false; + var isDup = false; foreach (var formattedPerson in formattedPersonList) { var formattedMailAddress = formattedPerson.ScoredEmailAddresses.FirstOrDefault()?.Address ?? formattedPerson.UserPrincipalName; diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonPhrase.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Utilities/EmailCommonPhrase.cs similarity index 89% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonPhrase.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Utilities/EmailCommonPhrase.cs index 616a0049e5..636f981bce 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Dialogs/Shared/Resources/Strings/EmailCommonPhrase.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Utilities/EmailCommonPhrase.cs @@ -1,6 +1,7 @@ using System.Linq; +using EmailSkill.Responses.Shared; -namespace EmailSkill.Dialogs.Shared.Resources.Strings +namespace EmailSkill.Utilities { public class EmailCommonPhrase { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Util/SpeakHelper.cs b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Utilities/SpeakHelper.cs similarity index 69% rename from solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Util/SpeakHelper.cs rename to solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Utilities/SpeakHelper.cs index b0d3834a03..0a6a51b98c 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Util/SpeakHelper.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/Utilities/SpeakHelper.cs @@ -1,19 +1,19 @@ using System; using System.Collections.Generic; -using EmailSkill.Dialogs.Shared.Resources.Strings; using EmailSkill.Extensions; +using EmailSkill.Responses.Shared; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Solutions.Extensions; using Microsoft.Bot.Builder.Solutions.Resources; using Microsoft.Graph; -namespace EmailSkill.Util +namespace EmailSkill.Utilities { public class SpeakHelper { public static string ToSpeechEmailListString(List messages, TimeZoneInfo timeZone, int maxReadSize = 1) { - string speakString = string.Empty; + var speakString = string.Empty; if (messages == null || messages.Count == 0) { @@ -22,7 +22,7 @@ public static string ToSpeechEmailListString(List messages, TimeZoneInf var emailDetail = string.Empty; - int readSize = Math.Min(messages.Count, maxReadSize); + var readSize = Math.Min(messages.Count, maxReadSize); if (readSize >= 1) { emailDetail = ToSpeechEmailDetailOverallString(messages[0], timeZone); @@ -34,15 +34,15 @@ public static string ToSpeechEmailListString(List messages, TimeZoneInf public static string ToSpeechEmailDetailOverallString(Message message, TimeZoneInfo timeZone) { - string speakString = string.Empty; + var speakString = string.Empty; if (message != null) { - string time = message.ReceivedDateTime == null + var time = message.ReceivedDateTime == null ? CommonStrings.NotAvailable : message.ReceivedDateTime.Value.UtcDateTime.ToRelativeString(timeZone); - string sender = (message.Sender?.EmailAddress?.Name != null) ? message.Sender.EmailAddress.Name : EmailCommonStrings.UnknownSender; - string subject = (message.Subject != null) ? message.Subject : EmailCommonStrings.EmptySubject; + var sender = (message.Sender?.EmailAddress?.Name != null) ? message.Sender.EmailAddress.Name : EmailCommonStrings.UnknownSender; + var subject = (message.Subject != null) ? message.Subject : EmailCommonStrings.EmptySubject; speakString = string.Format(EmailCommonStrings.FromDetailsFormatAll, sender, time, subject); } @@ -51,16 +51,16 @@ public static string ToSpeechEmailDetailOverallString(Message message, TimeZoneI public static string ToSpeechEmailDetailString(Message message, TimeZoneInfo timeZone, bool isNeedContent = false) { - string speakString = string.Empty; + var speakString = string.Empty; if (message != null) { - string time = message.ReceivedDateTime == null + var time = message.ReceivedDateTime == null ? CommonStrings.NotAvailable : message.ReceivedDateTime.Value.UtcDateTime.ToRelativeString(timeZone); - string subject = message.Subject ?? EmailCommonStrings.EmptySubject; - string sender = (message.Sender?.EmailAddress?.Name != null) ? message.Sender.EmailAddress.Name : EmailCommonStrings.UnknownSender; - string content = message.Body.Content ?? EmailCommonStrings.EmptyContent; + var subject = message.Subject ?? EmailCommonStrings.EmptySubject; + var sender = (message.Sender?.EmailAddress?.Name != null) ? message.Sender.EmailAddress.Name : EmailCommonStrings.UnknownSender; + var content = message.Body.Content ?? EmailCommonStrings.EmptyContent; var stringFormat = isNeedContent ? EmailCommonStrings.FromDetailsWithContentFormat : EmailCommonStrings.FromDetailsFormatAll; speakString = string.Format(stringFormat, sender, time, subject, content); @@ -71,11 +71,11 @@ public static string ToSpeechEmailDetailString(Message message, TimeZoneInfo tim public static string ToSpeechEmailSendDetailString(string detailSubject, string detailToRecipient, string detailContent) { - string speakString = string.Empty; + var speakString = string.Empty; - string subject = (detailSubject != string.Empty) ? detailSubject : EmailCommonStrings.EmptySubject; - string toRecipient = (detailToRecipient != string.Empty) ? detailToRecipient : EmailCommonStrings.UnknownRecipient; - string content = (detailContent != string.Empty) ? detailContent : EmailCommonStrings.EmptyContent; + var subject = (detailSubject != string.Empty) ? detailSubject : EmailCommonStrings.EmptySubject; + var toRecipient = (detailToRecipient != string.Empty) ? detailToRecipient : EmailCommonStrings.UnknownRecipient; + var content = (detailContent != string.Empty) ? detailContent : EmailCommonStrings.EmptyContent; speakString = string.Format(EmailCommonStrings.ToDetailsFormat, subject, toRecipient, content); @@ -87,9 +87,9 @@ public static string ToSpeechSelectionDetailString(PromptOptions selectOption, i var result = string.Empty; result += selectOption.Prompt.Text + "\r\n"; - List selectionDetails = new List(); + var selectionDetails = new List(); - int readSize = Math.Min(selectOption.Choices.Count, maxSize); + var readSize = Math.Min(selectOption.Choices.Count, maxSize); if (readSize == 1) { selectionDetails.Add(selectOption.Choices[0].Value); diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/appsettings.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/appsettings.json index 2b56c7e6ad..bcaaeb9afd 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/appsettings.json +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/appsettings.json @@ -1,25 +1,27 @@ { - "botFilePath": "./YOUR_BOT_PATH.bot", - "botFileSecret": "", - "defaultLocale": "en-us", - "languageModels": { - "en": { - "botFilePath": "./LocaleConfigurations/YOUR_EN_BOT_PATH.bot", - "botFileSecret": "" - }, - "zh": { - "botFilePath": "./LocaleConfigurations/YOUR_ZH_BOT_PATH.bot", - "botFileSecret": "" + "microsoftAppId": "", + "microsoftAppPassword": "", + "oauthConnections": [ + { + "name": "", + "provider": "Azure Active Directory v2" } - }, - "supportedProviders": [ - "Azure Active Directory v2", - "Google" - ], - "parameters": [ - "IPA.Timezone" ], - "configuration": { + "appInsights": { + "appId": "", + "instrumentationKey": "" + }, + "blobStorage": { + "connectionString": "", + "container": "transcripts" + }, + "cosmosDb": { + "collectionId": "botstate-collection", + "databaseId": "botstate-db", + "cosmosDBEndpoint": "", + "authKey": "" + }, + "properties": { "googleAppName": "", "googleClientId": "", "googleClientSecret": "", diff --git a/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/cognitivemodels.json b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/cognitivemodels.json new file mode 100644 index 0000000000..59a6768637 --- /dev/null +++ b/solutions/Virtual-Assistant/src/csharp/skills/emailskill/emailskill/cognitivemodels.json @@ -0,0 +1,27 @@ +{ + "cognitiveModels": { + "en": { + "languageModels": [ + { + "id": "general", + "name": "", + "appId": "", + "authoringKey": "", + "subscriptionKey": "", + "version": "", + "region": "" + }, + { + "id": "email", + "name": "", + "appId": "", + "authoringKey": "", + "subscriptionKey": "", + "version": "", + "region": "" + } + ] + } + }, + "defaultLocale": "en-us" +} \ No newline at end of file diff --git a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Bots/DefaultBot.cs b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Bots/DialogBot.cs similarity index 81% rename from solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Bots/DefaultBot.cs rename to solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Bots/DialogBot.cs index dd4c28961d..5ec98be907 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Bots/DefaultBot.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Bots/DialogBot.cs @@ -8,21 +8,18 @@ using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Schema; using Microsoft.Extensions.DependencyInjection; -using PointOfInterestSkill.Services; namespace PointOfInterestSkill.Bots { - public class DefaultBot : ActivityHandler + public class DialogBot : ActivityHandler where T : Dialog { private readonly IBotTelemetryClient _telemetryClient; private DialogSet _dialogs; - public DefaultBot(IServiceProvider serviceProvider, T dialog) + public DialogBot(IServiceProvider serviceProvider, T dialog) { - var services = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(BotServices)); var conversationState = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(ConversationState)); - var userState = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(UserState)); _telemetryClient = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(IBotTelemetryClient)); var dialogState = conversationState.CreateProperty(nameof(PointOfInterestSkill)); diff --git a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/CancelRouteDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/CancelRouteDialog.cs index 79e9088538..2fda87e255 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/CancelRouteDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/CancelRouteDialog.cs @@ -7,15 +7,15 @@ using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Solutions.Responses; -using Microsoft.Bot.Builder.Solutions.Skills; using Microsoft.Bot.Builder.Solutions.Util; using PointOfInterestSkill.Models; using PointOfInterestSkill.Responses.CancelRoute; using PointOfInterestSkill.Services; +using PointOfInterestSkill.Utilities; namespace PointOfInterestSkill.Dialogs { - public class CancelRouteDialog : PointOfInterestBaseDialog + public class CancelRouteDialog : PointOfInterestDialogBase { public CancelRouteDialog( BotSettings settings, diff --git a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/FindParkingDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/FindParkingDialog.cs index a7e9da06b4..1d61089c88 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/FindParkingDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/FindParkingDialog.cs @@ -13,10 +13,11 @@ using PointOfInterestSkill.Models; using PointOfInterestSkill.Responses.Shared; using PointOfInterestSkill.Services; +using PointOfInterestSkill.Utilities; namespace PointOfInterestSkill.Dialogs { - public class FindParkingDialog : PointOfInterestBaseDialog + public class FindParkingDialog : PointOfInterestDialogBase { public FindParkingDialog( BotSettings settings, diff --git a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/FindPointOfInterestDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/FindPointOfInterestDialog.cs index 7d2ed960f5..9fdd9654cb 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/FindPointOfInterestDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/FindPointOfInterestDialog.cs @@ -6,14 +6,14 @@ using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Solutions.Responses; -using Microsoft.Bot.Builder.Solutions.Skills; using PointOfInterestSkill.Models; using PointOfInterestSkill.Responses.Shared; using PointOfInterestSkill.Services; +using PointOfInterestSkill.Utilities; namespace PointOfInterestSkill.Dialogs { - public class FindPointOfInterestDialog : PointOfInterestBaseDialog + public class FindPointOfInterestDialog : PointOfInterestDialogBase { public FindPointOfInterestDialog( BotSettings settings, diff --git a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/PointOfInterestBaseDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/PointOfInterestDialogBase.cs similarity index 94% rename from solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/PointOfInterestBaseDialog.cs rename to solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/PointOfInterestDialogBase.cs index 4bc27d951a..82ac8ef96b 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/PointOfInterestBaseDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/PointOfInterestDialogBase.cs @@ -23,7 +23,7 @@ namespace PointOfInterestSkill.Dialogs { - public class PointOfInterestBaseDialog : ComponentDialog + public class PointOfInterestDialogBase : ComponentDialog { // Constants public const string SkillModeAuth = "SkillAuth"; @@ -31,7 +31,7 @@ public class PointOfInterestBaseDialog : ComponentDialog private const string FallbackPointOfInterestImageFileName = "default_pointofinterest.jpg"; private IHttpContextAccessor _httpContext; - public PointOfInterestBaseDialog( + public PointOfInterestDialogBase( string dialogId, BotSettings settings, BotServices services, @@ -50,10 +50,10 @@ public PointOfInterestBaseDialog( TelemetryClient = telemetryClient; _httpContext = httpContext; - AddDialog(new TextPrompt(Actions.CurrentLocationPrompt)); - AddDialog(new TextPrompt(Actions.Prompt)); - AddDialog(new ConfirmPrompt(Actions.ConfirmPrompt) { Style = ListStyle.Auto, }); - AddDialog(new ChoicePrompt(Actions.SelectPointOfInterestPrompt) { Style = ListStyle.Auto, ChoiceOptions = new ChoiceFactoryOptions { InlineSeparator = string.Empty, InlineOr = string.Empty, InlineOrMore = string.Empty, IncludeNumbers = true } }); + AddDialog(new TextPrompt(Utilities.Actions.CurrentLocationPrompt)); + AddDialog(new TextPrompt(Utilities.Actions.Prompt)); + AddDialog(new ConfirmPrompt(Utilities.Actions.ConfirmPrompt) { Style = ListStyle.Auto, }); + AddDialog(new ChoicePrompt(Utilities.Actions.SelectPointOfInterestPrompt) { Style = ListStyle.Auto, ChoiceOptions = new ChoiceFactoryOptions { InlineSeparator = string.Empty, InlineOr = string.Empty, InlineOrMore = string.Empty, IncludeNumbers = true } }); } protected BotSettings Settings { get; set; } @@ -76,7 +76,7 @@ public PointOfInterestBaseDialog( protected override async Task OnContinueDialogAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken)) { var state = await Accessor.GetAsync(dc.Context); - if (!dc.ActiveDialog.Id.Equals(Actions.CurrentLocationPrompt)) + if (!dc.ActiveDialog.Id.Equals(Utilities.Actions.CurrentLocationPrompt)) { await DigestLuisResult(dc, state.LuisResult); } @@ -102,14 +102,14 @@ protected async Task ConfirmCurrentLocation(WaterfallStepConte if (pointOfInterestList?.ToList().Count == 1) { - return await sc.PromptAsync(Actions.ConfirmPrompt, new PromptOptions { Prompt = ResponseManager.GetResponse(POISharedResponses.CurrentLocationSingleSelection) }); + return await sc.PromptAsync(Utilities.Actions.ConfirmPrompt, new PromptOptions { Prompt = ResponseManager.GetResponse(POISharedResponses.CurrentLocationSingleSelection) }); } else { var options = GetPointOfInterestChoicePromptOptions(pointOfInterestList); options.Prompt = ResponseManager.GetResponse(POISharedResponses.CurrentLocationMultipleSelection); - return await sc.PromptAsync(Actions.SelectPointOfInterestPrompt, options); + return await sc.PromptAsync(Utilities.Actions.SelectPointOfInterestPrompt, options); } } catch (Exception ex) @@ -230,13 +230,13 @@ protected async Task ProcessCurrentLocationSelection(Waterfall if (pointOfInterestList?.ToList().Count == 1) { - return await sc.PromptAsync(Actions.ConfirmPrompt, new PromptOptions { Prompt = ResponseManager.GetResponse(POISharedResponses.PromptToGetRoute) }); + return await sc.PromptAsync(Utilities.Actions.ConfirmPrompt, new PromptOptions { Prompt = ResponseManager.GetResponse(POISharedResponses.PromptToGetRoute) }); } else { var options = GetPointOfInterestChoicePromptOptions(pointOfInterestList); - return await sc.PromptAsync(Actions.SelectPointOfInterestPrompt, options); + return await sc.PromptAsync(Utilities.Actions.SelectPointOfInterestPrompt, options); } } catch (Exception ex) @@ -287,13 +287,13 @@ protected async Task ProcessPointOfInterestSelection(Waterfall state.LastFoundPointOfInterests = null; } - if (sc.ActiveDialog.Id.Equals(Actions.FindAlongRoute) || sc.ActiveDialog.Id.Equals(Actions.FindPointOfInterestBeforeRoute)) + if (sc.ActiveDialog.Id.Equals(Utilities.Actions.FindAlongRoute) || sc.ActiveDialog.Id.Equals(Utilities.Actions.FindPointOfInterestBeforeRoute)) { return await sc.NextAsync(); } else { - return await sc.ReplaceDialogAsync(nameof(RouteDialog)); + return await sc.ReplaceDialogAsync(nameof(Dialogs.RouteDialog)); } } @@ -379,7 +379,7 @@ protected async Task> GetPointOfInterestLocationCards { for (var i = 0; i < pointOfInterestList.Count; i++) { - if (sc.ActiveDialog.Id.Equals(Actions.CheckForCurrentLocation)) + if (sc.ActiveDialog.Id.Equals(Utilities.Actions.CheckForCurrentLocation)) { pointOfInterestList[i] = await addressService.GetPointOfInterestDetailsAsync(pointOfInterestList[i]); } diff --git a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/RouteDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/RouteDialog.cs index 34ada65580..bc370cecf4 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/RouteDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/RouteDialog.cs @@ -8,17 +8,17 @@ using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Solutions.Responses; -using Microsoft.Bot.Builder.Solutions.Skills; using Microsoft.Bot.Builder.Solutions.Util; using Microsoft.Bot.Schema; using PointOfInterestSkill.Models; using PointOfInterestSkill.Responses.Route; using PointOfInterestSkill.Responses.Shared; using PointOfInterestSkill.Services; +using PointOfInterestSkill.Utilities; namespace PointOfInterestSkill.Dialogs { - public class RouteDialog : PointOfInterestBaseDialog + public class RouteDialog : PointOfInterestDialogBase { public RouteDialog( BotSettings settings, @@ -33,12 +33,12 @@ public RouteDialog( TelemetryClient = telemetryClient; var checkCurrentLocation = new WaterfallStep[] -{ + { CheckForCurrentCoordinatesBeforeFindPointOfInterestBeforeRoute, ConfirmCurrentLocation, ProcessCurrentLocationSelection, RouteToFindPointOfInterestBeforeRouteDialog -}; + }; var checkForActiveRouteAndLocation = new WaterfallStep[] { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Startup.cs b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Startup.cs index 0c1e7477d5..5c4af47ac2 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Startup.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Startup.cs @@ -119,8 +119,8 @@ public void ConfigureServices(IServiceCollection services) }); // comment out for now to disable whitelist checking - //services.AddSingleton(); - //services.AddSingleton(); + // services.AddSingleton(); + // services.AddSingleton(); // Configure adapters services.AddTransient(); @@ -128,7 +128,7 @@ public void ConfigureServices(IServiceCollection services) // Configure bot services.AddTransient(); - services.AddTransient>(); + services.AddTransient>(); } /// diff --git a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/Actions.cs b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Utilities/Actions.cs similarity index 95% rename from solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/Actions.cs rename to solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Utilities/Actions.cs index 4b425e01a8..4fe6540fda 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Dialogs/Actions.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/pointofinterestskill/pointofinterestskill/Utilities/Actions.cs @@ -1,4 +1,4 @@ -namespace PointOfInterestSkill.Dialogs +namespace PointOfInterestSkill.Utilities { public class Actions { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Bots/DefaultBot.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Bots/DialogBot.cs similarity index 79% rename from solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Bots/DefaultBot.cs rename to solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Bots/DialogBot.cs index 988ae56917..8e2b219652 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Bots/DefaultBot.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Bots/DialogBot.cs @@ -8,22 +8,18 @@ using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Schema; using Microsoft.Extensions.DependencyInjection; -using ToDoSkill.Dialogs; -using ToDoSkill.Services; -namespace ToDoSkill +namespace ToDoSkill.Bots { - public class DefaultBot : ActivityHandler + public class DialogBot : ActivityHandler where T : Dialog { private readonly IBotTelemetryClient _telemetryClient; private DialogSet _dialogs; - public DefaultBot(IServiceProvider serviceProvider, T dialog) + public DialogBot(IServiceProvider serviceProvider, T dialog) { - var services = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(BotServices)); var conversationState = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(ConversationState)); - var userState = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(UserState)); _telemetryClient = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(IBotTelemetryClient)); var dialogState = conversationState.CreateProperty(nameof(ToDoSkill)); diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/AddToDoItemDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/AddToDoItemDialog.cs index de660904dd..59147eebae 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/AddToDoItemDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/AddToDoItemDialog.cs @@ -10,8 +10,8 @@ using Microsoft.Bot.Schema; using ToDoSkill.Responses.AddToDo; using ToDoSkill.Responses.Shared; -using ToDoSkill.ServiceClients; using ToDoSkill.Services; +using ToDoSkill.Utilities; namespace ToDoSkill.Dialogs { @@ -71,22 +71,22 @@ public AddToDoItemDialog( }; // Define the conversation flow using a waterfall model. - AddDialog(new WaterfallDialog(Action.DoAddTask, doAddTask) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.AddTask, addTask) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.CollectTaskContent, collectTaskContent) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.CollectSwitchListTypeConfirmation, collectSwitchListTypeConfirmation) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.CollectAddDupTaskConfirmation, collectAddDupTaskConfirmation) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.ContinueAddTask, continueAddTask) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.DoAddTask, doAddTask) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.AddTask, addTask) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.CollectTaskContent, collectTaskContent) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.CollectSwitchListTypeConfirmation, collectSwitchListTypeConfirmation) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.CollectAddDupTaskConfirmation, collectAddDupTaskConfirmation) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.ContinueAddTask, continueAddTask) { TelemetryClient = telemetryClient }); // Set starting dialog for component - InitialDialogId = Action.AddTask; + InitialDialogId = Actions.AddTask; } protected async Task DoAddTask(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { - return await sc.BeginDialogAsync(Action.DoAddTask); + return await sc.BeginDialogAsync(Actions.DoAddTask); } catch (Exception ex) { @@ -148,7 +148,7 @@ public AddToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.CollectTaskContent); + return await sc.BeginDialogAsync(Actions.CollectTaskContent); } catch (Exception ex) { @@ -171,7 +171,7 @@ public AddToDoItemDialog( else { var prompt = ResponseManager.GetResponse(AddToDoResponses.AskTaskContentText); - return await sc.PromptAsync(Action.Prompt, new PromptOptions() { Prompt = prompt }); + return await sc.PromptAsync(Actions.Prompt, new PromptOptions() { Prompt = prompt }); } } catch (Exception ex) @@ -198,7 +198,7 @@ public AddToDoItemDialog( } else { - return await sc.ReplaceDialogAsync(Action.CollectTaskContent); + return await sc.ReplaceDialogAsync(Actions.CollectTaskContent); } } else @@ -222,7 +222,7 @@ public AddToDoItemDialog( if (state.SwitchListType) { state.SwitchListType = false; - return await sc.BeginDialogAsync(Action.CollectSwitchListTypeConfirmation); + return await sc.BeginDialogAsync(Actions.CollectSwitchListTypeConfirmation); } else { @@ -244,7 +244,7 @@ public AddToDoItemDialog( var token = new StringDictionary() { { "listType", state.ListType } }; var prompt = ResponseManager.GetResponse(AddToDoResponses.SwitchListType, tokens: token); var retryPrompt = ResponseManager.GetResponse(AddToDoResponses.SwitchListTypeConfirmFailed, tokens: token); - return await sc.PromptAsync(Action.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); + return await sc.PromptAsync(Actions.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); } catch (Exception ex) { @@ -281,7 +281,7 @@ public AddToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.CollectAddDupTaskConfirmation); + return await sc.BeginDialogAsync(Actions.CollectAddDupTaskConfirmation); } catch (Exception ex) { @@ -311,7 +311,7 @@ public AddToDoItemDialog( var token = new StringDictionary() { { "taskContent", state.TaskContent } }; var prompt = ResponseManager.GetResponse(AddToDoResponses.AskAddDupTaskPrompt, tokens: token); var retryPrompt = ResponseManager.GetResponse(AddToDoResponses.AskAddDupTaskConfirmFailed); - return await sc.PromptAsync(Action.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); + return await sc.PromptAsync(Actions.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); } } catch (Exception ex) @@ -348,7 +348,7 @@ public AddToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.ContinueAddTask); + return await sc.BeginDialogAsync(Actions.ContinueAddTask); } catch (Exception ex) { @@ -365,7 +365,7 @@ public AddToDoItemDialog( var token = new StringDictionary() { { "listType", state.ListType } }; var prompt = ResponseManager.GetResponse(AddToDoResponses.AddMoreTask, tokens: token); var retryPrompt = ResponseManager.GetResponse(AddToDoResponses.AddMoreTaskConfirmFailed, tokens: token); - return await sc.PromptAsync(Action.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); + return await sc.PromptAsync(Actions.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); } catch (Exception ex) { @@ -392,7 +392,7 @@ public AddToDoItemDialog( state.HasShopVerb = false; // replace current dialog to continue add more tasks - return await sc.ReplaceDialogAsync(Action.DoAddTask); + return await sc.ReplaceDialogAsync(Actions.DoAddTask); } else { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/DeleteToDoItemDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/DeleteToDoItemDialog.cs index 81a097b17f..78e26ce7cd 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/DeleteToDoItemDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/DeleteToDoItemDialog.cs @@ -13,8 +13,8 @@ using ToDoSkill.Models; using ToDoSkill.Responses.DeleteToDo; using ToDoSkill.Responses.Shared; -using ToDoSkill.ServiceClients; using ToDoSkill.Services; +using ToDoSkill.Utilities; namespace ToDoSkill.Dialogs { @@ -75,22 +75,22 @@ public DeleteToDoItemDialog( }; // Define the conversation flow using a waterfall model. - AddDialog(new WaterfallDialog(Action.DoDeleteTask, doDeleteTask) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.DeleteTask, deleteTask) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.CollectListTypeForDelete, collectListTypeForDelete) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.CollectTaskIndexForDelete, collectTaskIndexForDelete) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.CollectDeleteTaskConfirmation, collectDeleteTaskConfirmation) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.ContinueDeleteTask, continueDeleteTask) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.DoDeleteTask, doDeleteTask) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.DeleteTask, deleteTask) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.CollectListTypeForDelete, collectListTypeForDelete) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.CollectTaskIndexForDelete, collectTaskIndexForDelete) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.CollectDeleteTaskConfirmation, collectDeleteTaskConfirmation) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.ContinueDeleteTask, continueDeleteTask) { TelemetryClient = telemetryClient }); // Set starting dialog for component - InitialDialogId = Action.DeleteTask; + InitialDialogId = Actions.DeleteTask; } protected async Task DoDeleteTask(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { - return await sc.BeginDialogAsync(Action.DoDeleteTask); + return await sc.BeginDialogAsync(Actions.DoDeleteTask); } catch (Exception ex) { @@ -194,7 +194,7 @@ public DeleteToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.CollectListTypeForDelete); + return await sc.BeginDialogAsync(Actions.CollectListTypeForDelete); } catch (Exception ex) { @@ -211,7 +211,7 @@ public DeleteToDoItemDialog( if (string.IsNullOrEmpty(state.ListType)) { var prompt = ResponseManager.GetResponse(DeleteToDoResponses.ListTypePromptForDelete); - return await sc.PromptAsync(Action.Prompt, new PromptOptions() { Prompt = prompt }); + return await sc.PromptAsync(Actions.Prompt, new PromptOptions() { Prompt = prompt }); } else { @@ -232,7 +232,7 @@ public DeleteToDoItemDialog( var state = await ToDoStateAccessor.GetAsync(sc.Context); if (string.IsNullOrEmpty(state.ListType)) { - return await sc.ReplaceDialogAsync(Action.CollectListTypeForDelete); + return await sc.ReplaceDialogAsync(Actions.CollectListTypeForDelete); } else { @@ -250,7 +250,7 @@ public DeleteToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.CollectTaskIndexForDelete); + return await sc.BeginDialogAsync(Actions.CollectTaskIndexForDelete); } catch (Exception ex) { @@ -285,7 +285,7 @@ public DeleteToDoItemDialog( prompt = ResponseManager.GetResponse(DeleteToDoResponses.AskTaskIndexForDelete); } - return await sc.PromptAsync(Action.Prompt, new PromptOptions() { Prompt = prompt }); + return await sc.PromptAsync(Actions.Prompt, new PromptOptions() { Prompt = prompt }); } } catch (Exception ex) @@ -343,7 +343,7 @@ public DeleteToDoItemDialog( state.TaskContentPattern = null; state.TaskContentML = null; state.CollectIndexRetry = true; - return await sc.ReplaceDialogAsync(Action.CollectTaskIndexForDelete); + return await sc.ReplaceDialogAsync(Actions.CollectTaskIndexForDelete); } } catch (Exception ex) @@ -357,7 +357,7 @@ public DeleteToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.CollectDeleteTaskConfirmation); + return await sc.BeginDialogAsync(Actions.CollectDeleteTaskConfirmation); } catch (Exception ex) { @@ -376,7 +376,7 @@ public DeleteToDoItemDialog( var token = new StringDictionary() { { "listType", state.ListType } }; var prompt = ResponseManager.GetResponse(DeleteToDoResponses.AskDeletionAllConfirmation, token); var retryPrompt = ResponseManager.GetResponse(DeleteToDoResponses.AskDeletionAllConfirmationFailed, token); - return await sc.PromptAsync(Action.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); + return await sc.PromptAsync(Actions.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); } else { @@ -421,7 +421,7 @@ public DeleteToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.ContinueDeleteTask); + return await sc.BeginDialogAsync(Actions.ContinueDeleteTask); } catch (Exception ex) { @@ -436,7 +436,7 @@ public DeleteToDoItemDialog( { var prompt = ResponseManager.GetResponse(DeleteToDoResponses.DeleteAnotherTaskPrompt); var retryPrompt = ResponseManager.GetResponse(DeleteToDoResponses.DeleteAnotherTaskConfirmFailed); - return await sc.PromptAsync(Action.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); + return await sc.PromptAsync(Actions.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); } catch (Exception ex) { @@ -461,7 +461,7 @@ public DeleteToDoItemDialog( state.TaskContent = null; // replace current dialog to continue deleting more tasks - return await sc.ReplaceDialogAsync(Action.DoDeleteTask); + return await sc.ReplaceDialogAsync(Actions.DoDeleteTask); } else { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/MainDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/MainDialog.cs index dc58dd69af..26da2a5d61 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/MainDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/MainDialog.cs @@ -12,11 +12,10 @@ using Microsoft.Bot.Builder.Solutions.Dialogs; using Microsoft.Bot.Builder.Solutions.Responses; using Microsoft.Bot.Schema; -using ToDoSkill.Common; using ToDoSkill.Models; using ToDoSkill.Responses.Main; -using ToDoSkill.ServiceClients; using ToDoSkill.Services; +using ToDoSkill.Utilities; namespace ToDoSkill.Dialogs { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/MarkToDoItemDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/MarkToDoItemDialog.cs index bab8f37fc4..3279080148 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/MarkToDoItemDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/MarkToDoItemDialog.cs @@ -12,8 +12,8 @@ using ToDoSkill.Models; using ToDoSkill.Responses.MarkToDo; using ToDoSkill.Responses.Shared; -using ToDoSkill.ServiceClients; using ToDoSkill.Services; +using ToDoSkill.Utilities; namespace ToDoSkill.Dialogs { @@ -67,21 +67,21 @@ public MarkToDoItemDialog( }; // Define the conversation flow using a waterfall model. - AddDialog(new WaterfallDialog(Action.DoMarkTask, doMarkTask) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.MarkTaskCompleted, markTask) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.CollectListTypeForComplete, collectListTypeForComplete) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.CollectTaskIndexForComplete, collectTaskIndexForComplete) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.ContinueMarkTask, continueMarkTask) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.DoMarkTask, doMarkTask) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.MarkTaskCompleted, markTask) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.CollectListTypeForComplete, collectListTypeForComplete) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.CollectTaskIndexForComplete, collectTaskIndexForComplete) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.ContinueMarkTask, continueMarkTask) { TelemetryClient = telemetryClient }); // Set starting dialog for component - InitialDialogId = Action.MarkTaskCompleted; + InitialDialogId = Actions.MarkTaskCompleted; } protected async Task DoMarkTask(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { - return await sc.BeginDialogAsync(Action.DoMarkTask); + return await sc.BeginDialogAsync(Actions.DoMarkTask); } catch (Exception ex) { @@ -157,7 +157,7 @@ public MarkToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.CollectListTypeForComplete); + return await sc.BeginDialogAsync(Actions.CollectListTypeForComplete); } catch (Exception ex) { @@ -174,7 +174,7 @@ public MarkToDoItemDialog( if (string.IsNullOrEmpty(state.ListType)) { var prompt = ResponseManager.GetResponse(MarkToDoResponses.ListTypePromptForComplete); - return await sc.PromptAsync(Action.Prompt, new PromptOptions() { Prompt = prompt }); + return await sc.PromptAsync(Actions.Prompt, new PromptOptions() { Prompt = prompt }); } else { @@ -195,7 +195,7 @@ public MarkToDoItemDialog( var state = await ToDoStateAccessor.GetAsync(sc.Context); if (string.IsNullOrEmpty(state.ListType)) { - return await sc.ReplaceDialogAsync(Action.CollectListTypeForComplete); + return await sc.ReplaceDialogAsync(Actions.CollectListTypeForComplete); } else { @@ -213,7 +213,7 @@ public MarkToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.CollectTaskIndexForComplete); + return await sc.BeginDialogAsync(Actions.CollectTaskIndexForComplete); } catch (Exception ex) { @@ -248,7 +248,7 @@ public MarkToDoItemDialog( prompt = ResponseManager.GetResponse(MarkToDoResponses.AskTaskIndexForComplete); } - return await sc.PromptAsync(Action.Prompt, new PromptOptions() { Prompt = prompt }); + return await sc.PromptAsync(Actions.Prompt, new PromptOptions() { Prompt = prompt }); } } catch (Exception ex) @@ -306,7 +306,7 @@ public MarkToDoItemDialog( state.TaskContentPattern = null; state.TaskContentML = null; state.CollectIndexRetry = true; - return await sc.ReplaceDialogAsync(Action.CollectTaskIndexForComplete); + return await sc.ReplaceDialogAsync(Actions.CollectTaskIndexForComplete); } } catch (Exception ex) @@ -320,7 +320,7 @@ public MarkToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.ContinueMarkTask); + return await sc.BeginDialogAsync(Actions.ContinueMarkTask); } catch (Exception ex) { @@ -335,7 +335,7 @@ public MarkToDoItemDialog( { var prompt = ResponseManager.GetResponse(MarkToDoResponses.CompleteAnotherTaskPrompt); var retryPrompt = ResponseManager.GetResponse(MarkToDoResponses.CompleteAnotherTaskConfirmFailed); - return await sc.PromptAsync(Action.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); + return await sc.PromptAsync(Actions.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); } catch (Exception ex) { @@ -360,7 +360,7 @@ public MarkToDoItemDialog( state.TaskContent = null; // replace current dialog to continue marking more tasks - return await sc.ReplaceDialogAsync(Action.DoMarkTask); + return await sc.ReplaceDialogAsync(Actions.DoMarkTask); } else { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/ShowToDoItemDialog.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/ShowToDoItemDialog.cs index 68e02778b9..05680ed614 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/ShowToDoItemDialog.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/ShowToDoItemDialog.cs @@ -11,8 +11,8 @@ using Microsoft.Bot.Schema; using ToDoSkill.Responses.Shared; using ToDoSkill.Responses.ShowToDo; -using ToDoSkill.ServiceClients; using ToDoSkill.Services; +using ToDoSkill.Utilities; namespace ToDoSkill.Dialogs { @@ -83,24 +83,24 @@ public ShowToDoItemDialog( }; // Define the conversation flow using a waterfall model. - AddDialog(new WaterfallDialog(Action.ShowTasks, showTasks) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.DoShowTasks, doShowTasks) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.FirstReadMoreTasks, firstReadMoreTasks) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.SecondReadMoreTasks, secondReadMoreTasks) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.CollectFirstReadMoreConfirmation, collectFirstReadMoreConfirmation) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.CollectSecondReadMoreConfirmation, collectSecondReadMoreConfirmation) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.CollectGoBackToStartConfirmation, collectGoBackToStartConfirmation) { TelemetryClient = telemetryClient }); - AddDialog(new WaterfallDialog(Action.CollectRepeatFirstPageConfirmation, collectRepeatFirstPageConfirmation) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.ShowTasks, showTasks) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.DoShowTasks, doShowTasks) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.FirstReadMoreTasks, firstReadMoreTasks) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.SecondReadMoreTasks, secondReadMoreTasks) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.CollectFirstReadMoreConfirmation, collectFirstReadMoreConfirmation) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.CollectSecondReadMoreConfirmation, collectSecondReadMoreConfirmation) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.CollectGoBackToStartConfirmation, collectGoBackToStartConfirmation) { TelemetryClient = telemetryClient }); + AddDialog(new WaterfallDialog(Actions.CollectRepeatFirstPageConfirmation, collectRepeatFirstPageConfirmation) { TelemetryClient = telemetryClient }); // Set starting dialog for component - InitialDialogId = Action.ShowTasks; + InitialDialogId = Actions.ShowTasks; } public async Task DoShowTasks(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { - return await sc.BeginDialogAsync(Action.DoShowTasks); + return await sc.BeginDialogAsync(Actions.DoShowTasks); } catch (Exception ex) { @@ -158,7 +158,7 @@ public ShowToDoItemDialog( if (state.IsLastPage) { state.IsLastPage = false; - return await sc.ReplaceDialogAsync(Action.CollectGoBackToStartConfirmation); + return await sc.ReplaceDialogAsync(Actions.CollectGoBackToStartConfirmation); } else { @@ -172,7 +172,7 @@ public ShowToDoItemDialog( await sc.Context.SendActivityAsync(cardReply); if ((state.ShowTaskPageIndex + 1) * state.PageSize >= state.AllTasks.Count) { - return await sc.ReplaceDialogAsync(Action.CollectGoBackToStartConfirmation); + return await sc.ReplaceDialogAsync(Actions.CollectGoBackToStartConfirmation); } } } @@ -181,7 +181,7 @@ public ShowToDoItemDialog( if (state.IsFirstPage) { state.IsFirstPage = false; - return await sc.ReplaceDialogAsync(Action.CollectRepeatFirstPageConfirmation); + return await sc.ReplaceDialogAsync(Actions.CollectRepeatFirstPageConfirmation); } else { @@ -225,7 +225,7 @@ public ShowToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.FirstReadMoreTasks); + return await sc.BeginDialogAsync(Actions.FirstReadMoreTasks); } catch (Exception ex) { @@ -238,7 +238,7 @@ public ShowToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.CollectFirstReadMoreConfirmation); + return await sc.BeginDialogAsync(Actions.CollectFirstReadMoreConfirmation); } catch (Exception ex) { @@ -253,7 +253,7 @@ public ShowToDoItemDialog( { var prompt = ResponseManager.GetResponse(ShowToDoResponses.ReadMoreTasksPrompt); var retryPrompt = ResponseManager.GetResponse(ShowToDoResponses.ReadMoreTasksConfirmFailed); - return await sc.PromptAsync(Action.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); + return await sc.PromptAsync(Actions.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); } catch (Exception ex) { @@ -310,7 +310,7 @@ public ShowToDoItemDialog( { await sc.Context.SendActivityAsync(cardReply); await sc.CancelAllDialogsAsync(); - return await sc.ReplaceDialogAsync(Action.CollectGoBackToStartConfirmation); + return await sc.ReplaceDialogAsync(Actions.CollectGoBackToStartConfirmation); } } @@ -318,7 +318,7 @@ public ShowToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.SecondReadMoreTasks); + return await sc.BeginDialogAsync(Actions.SecondReadMoreTasks); } catch (Exception ex) { @@ -331,7 +331,7 @@ public ShowToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.CollectSecondReadMoreConfirmation); + return await sc.BeginDialogAsync(Actions.CollectSecondReadMoreConfirmation); } catch (Exception ex) { @@ -346,7 +346,7 @@ public ShowToDoItemDialog( { var prompt = ResponseManager.GetResponse(ShowToDoResponses.ReadMoreTasksPrompt2); var retryPrompt = ResponseManager.GetResponse(ShowToDoResponses.RetryReadMoreTasksPrompt2); - return await sc.PromptAsync(Action.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); + return await sc.PromptAsync(Actions.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); } catch (Exception ex) { @@ -398,7 +398,7 @@ public ShowToDoItemDialog( { cardReply.InputHint = InputHints.IgnoringInput; await sc.Context.SendActivityAsync(cardReply); - return await sc.ReplaceDialogAsync(Action.SecondReadMoreTasks); + return await sc.ReplaceDialogAsync(Actions.SecondReadMoreTasks); } else { @@ -412,7 +412,7 @@ public ShowToDoItemDialog( { try { - return await sc.BeginDialogAsync(Action.CollectGoBackToStartConfirmation); + return await sc.BeginDialogAsync(Actions.CollectGoBackToStartConfirmation); } catch (Exception ex) { @@ -442,7 +442,7 @@ public ShowToDoItemDialog( retryPrompt = ResponseManager.GetResponse(ShowToDoResponses.GoBackToStartForTasksConfirmFailed, token); } - return await sc.PromptAsync(Action.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); + return await sc.PromptAsync(Actions.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); } catch (Exception ex) { @@ -459,7 +459,7 @@ public ShowToDoItemDialog( { state.ShowTaskPageIndex = 0; state.GoBackToStart = true; - return await sc.ReplaceDialogAsync(Action.DoShowTasks); + return await sc.ReplaceDialogAsync(Actions.DoShowTasks); } else { @@ -478,7 +478,7 @@ public ShowToDoItemDialog( var token = new StringDictionary() { { "listType", state.ListType }, { "taskCount", taskCount.ToString() } }; var prompt = ResponseManager.GetResponse(ShowToDoResponses.RepeatFirstPagePrompt, token); var retryPrompt = ResponseManager.GetResponse(ShowToDoResponses.RepeatFirstPageConfirmFailed, token); - return await sc.PromptAsync(Action.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); + return await sc.PromptAsync(Actions.ConfirmPrompt, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }); } catch (Exception ex) { @@ -495,7 +495,7 @@ public ShowToDoItemDialog( { state.ShowTaskPageIndex = 0; state.GoBackToStart = true; - return await sc.ReplaceDialogAsync(Action.DoShowTasks); + return await sc.ReplaceDialogAsync(Actions.DoShowTasks); } else { diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/ToDoSkillDialogBase.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/ToDoSkillDialogBase.cs index 6213a76fa1..f6192f23f0 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/ToDoSkillDialogBase.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/ToDoSkillDialogBase.cs @@ -17,8 +17,6 @@ using Microsoft.Bot.Builder.Solutions.Util; using Microsoft.Bot.Schema; using Microsoft.Recognizers.Text; -using Newtonsoft.Json.Linq; -using ToDoSkill.Dialogs.Shared; using ToDoSkill.Dialogs.Shared.Resources; using ToDoSkill.Models; using ToDoSkill.Responses.AddToDo; @@ -26,8 +24,8 @@ using ToDoSkill.Responses.MarkToDo; using ToDoSkill.Responses.Shared; using ToDoSkill.Responses.ShowToDo; -using ToDoSkill.ServiceClients; using ToDoSkill.Services; +using ToDoSkill.Utilities; namespace ToDoSkill.Dialogs { @@ -61,8 +59,8 @@ public ToDoSkillDialogBase( AddDialog(new EventPrompt(SkillModeAuth, "tokens/response", TokenResponseValidator)); AddDialog(new AuthDialog(services.CognitiveModelSets, settings.OAuthConnections, authenticationRequired: true)); - AddDialog(new TextPrompt(Action.Prompt)); - AddDialog(new ConfirmPrompt(Action.ConfirmPrompt, null, Culture.English) { Style = ListStyle.SuggestedAction }); + AddDialog(new TextPrompt(Actions.Prompt)); + AddDialog(new ConfirmPrompt(Actions.ConfirmPrompt, null, Culture.English) { Style = ListStyle.SuggestedAction }); } protected BotServices Services { get; set; } diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/IMailService.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/IMailService.cs index 4aba18942a..537b255798 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/IMailService.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/IMailService.cs @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -namespace ToDoSkill.ServiceClients +namespace ToDoSkill.Services { using System.Threading.Tasks; diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/IServiceManager.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/IServiceManager.cs index 56ed6ad51f..aea2941b7c 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/IServiceManager.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/IServiceManager.cs @@ -1,10 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -namespace ToDoSkill.ServiceClients +namespace ToDoSkill.Services { using System.Collections.Generic; - using global::ToDoSkill.Dialogs.Shared; using ToDoSkill.Models; public interface IServiceManager diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/ITaskService.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/ITaskService.cs index 6e8f11267f..6311fb93b2 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/ITaskService.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/ITaskService.cs @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -namespace ToDoSkill.ServiceClients +namespace ToDoSkill.Services { using System.Collections.Generic; using System.Net.Http; using System.Threading.Tasks; - using global::ToDoSkill.Models; + using ToDoSkill.Models; /// /// Task service. diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/MailService.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/MailService.cs index 1da990bdab..3fd69211bf 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/MailService.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/MailService.cs @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -namespace ToDoSkill.ServiceClients +namespace ToDoSkill.Services { using System.Collections.Generic; using System.Net.Http; diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/OneNoteService.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/OneNoteService.cs index 03b852cf2c..059c7ddaff 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/OneNoteService.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/OneNoteService.cs @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -namespace ToDoSkill.ServiceClients +namespace ToDoSkill.Services { using System; using System.Collections.Generic; @@ -9,11 +9,10 @@ namespace ToDoSkill.ServiceClients using System.Net.Http; using System.Threading.Tasks; using System.Xml; - using global::ToDoSkill.Dialogs.Shared.Resources; - using global::ToDoSkill.Models; using Microsoft.Graph; using Newtonsoft.Json; using Newtonsoft.Json.Linq; + using ToDoSkill.Models; using ToDoSkill.Responses.Shared; /// @@ -275,7 +274,7 @@ private async Task CreateOneNotePageAsync(string sectionUrl, string pageTi private async Task> GetOrCreatePageAsync(string sectionId, string pageTitle) { - bool pageNotExist = false; + var pageNotExist = false; var pagesUrl = $"{graphBaseUrl}/onenote/sections/{sectionId}/pages"; var onenotePage = await GetOneNotePageAsync($"{pagesUrl}?filter=title eq '{pageTitle}'"); if (onenotePage == null || onenotePage.Count == 0) @@ -372,7 +371,7 @@ private async Task ExecuteContentFetchAsync(string url) } else { - ServiceException serviceException = ServiceHelper.GenerateServiceException(responseContent); + var serviceException = ServiceHelper.GenerateServiceException(responseContent); throw serviceException; } } diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/OutlookService.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/OutlookService.cs index c5719eafbb..aff47682d6 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/OutlookService.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/OutlookService.cs @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -namespace ToDoSkill.ServiceClients +namespace ToDoSkill.Services { using System; using System.Collections.Generic; using System.Net.Http; using System.Threading.Tasks; - using global::ToDoSkill.Dialogs.Shared.Resources; - using global::ToDoSkill.Models; using Microsoft.Graph; using Newtonsoft.Json.Linq; + using ToDoSkill.Models; using ToDoSkill.Responses.Shared; /// @@ -187,7 +186,7 @@ public async Task GetTaskWebLink() private async Task> GetOrCreateTaskFolderAsync(string taskFolderName) { - bool folderNotExist = false; + var folderNotExist = false; var taskFolderId = await GetTaskFolderAsync(taskFolderName); if (string.IsNullOrEmpty(taskFolderId)) { @@ -230,7 +229,7 @@ private async Task GetTaskFolderAsync(string taskFolderName) private async Task GetTaskFolderByIdAsync(string taskFolderId) { var result = await this.httpClient.GetAsync(GraphBaseUrl + "taskFolders/" + taskFolderId); - string newTaskFolderId = string.Empty; + var newTaskFolderId = string.Empty; if (result.IsSuccessStatusCode) { dynamic responseContent = JObject.Parse(await result.Content.ReadAsStringAsync()); diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/ServiceHelper.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/ServiceHelper.cs index fd3fdc32e6..4134935087 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/ServiceHelper.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/ServiceHelper.cs @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -namespace ToDoSkill.ServiceClients +namespace ToDoSkill.Services { using System; using System.Collections.Generic; @@ -12,10 +12,10 @@ namespace ToDoSkill.ServiceClients using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Xml; - using global::ToDoSkill.Models; using Microsoft.Bot.Builder.Solutions.Skills; using Microsoft.Graph; using Newtonsoft.Json; + using ToDoSkill.Models; /// /// To Do skill helper class. diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/ServiceManager.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/ServiceManager.cs index 49bacd4211..02d7a8b332 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/ServiceManager.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Services/ServiceManager.cs @@ -1,10 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -namespace ToDoSkill.ServiceClients +namespace ToDoSkill.Services { using System.Collections.Generic; - using global::ToDoSkill.Dialogs.Shared; using ToDoSkill.Models; public class ServiceManager : IServiceManager diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Startup.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Startup.cs index 172a6e4cdb..682071005a 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Startup.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Startup.cs @@ -21,6 +21,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.IdentityModel.Tokens; using ToDoSkill.Adapters; +using ToDoSkill.Bots; using ToDoSkill.Dialogs; using ToDoSkill.Responses.AddToDo; using ToDoSkill.Responses.DeleteToDo; @@ -28,7 +29,6 @@ using ToDoSkill.Responses.MarkToDo; using ToDoSkill.Responses.Shared; using ToDoSkill.Responses.ShowToDo; -using ToDoSkill.ServiceClients; using ToDoSkill.Services; namespace ToDoSkill @@ -115,8 +115,8 @@ public void ConfigureServices(IServiceCollection services) }); // comment out for now to disable whitelist checking - //services.AddSingleton(); - //services.AddSingleton(); + // services.AddSingleton(); + // services.AddSingleton(); // Configure adapters services.AddTransient(); @@ -124,7 +124,7 @@ public void ConfigureServices(IServiceCollection services) // Configure bot services.AddTransient(); - services.AddTransient>(); + services.AddTransient>(); } /// diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/Action.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Utilities/Actions.cs similarity index 96% rename from solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/Action.cs rename to solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Utilities/Actions.cs index a1b4819dca..ccd69a9250 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Dialogs/Action.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Utilities/Actions.cs @@ -1,6 +1,6 @@ -namespace ToDoSkill.Dialogs +namespace ToDoSkill.Utilities { - public static class Action + public static class Actions { public const string Prompt = "prompt"; diff --git a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Common/ToDoCommonUtil.cs b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Utilities/ToDoCommonUtil.cs similarity index 74% rename from solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Common/ToDoCommonUtil.cs rename to solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Utilities/ToDoCommonUtil.cs index 096382697d..f5ede9ea10 100644 --- a/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Common/ToDoCommonUtil.cs +++ b/solutions/Virtual-Assistant/src/csharp/skills/todoskill/todoskill/Utilities/ToDoCommonUtil.cs @@ -1,4 +1,4 @@ -namespace ToDoSkill.Common +namespace ToDoSkill.Utilities { public class ToDoCommonUtil { diff --git a/templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Bots/DefaultAdapter.cs b/templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Adapters/DefaultAdapter.cs similarity index 100% rename from templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Bots/DefaultAdapter.cs rename to templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Adapters/DefaultAdapter.cs diff --git a/templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Bots/DefaultBot.cs b/templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Bots/DialogBot.cs similarity index 80% rename from templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Bots/DefaultBot.cs rename to templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Bots/DialogBot.cs index da70f839eb..1a4042a816 100644 --- a/templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Bots/DefaultBot.cs +++ b/templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Bots/DialogBot.cs @@ -8,20 +8,17 @@ using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Schema; using Microsoft.Extensions.DependencyInjection; -using VirtualAssistantTemplate.Services; namespace VirtualAssistantTemplate.Bots { - public class DefaultBot : ActivityHandler where T : Dialog + public class DialogBot : ActivityHandler where T : Dialog { private readonly IBotTelemetryClient _telemetryClient; private DialogSet _dialogs; - public DefaultBot(IServiceProvider serviceProvider, T dialog) + public DialogBot(IServiceProvider serviceProvider, T dialog) { - var services = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(BotServices)); var conversationState = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(ConversationState)); - var userState = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(UserState)); _telemetryClient = serviceProvider.GetService() ?? throw new ArgumentNullException(nameof(IBotTelemetryClient)); var dialogState = conversationState.CreateProperty(nameof(VirtualAssistantTemplate)); diff --git a/templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Startup.cs b/templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Startup.cs index cd45960023..194b250b63 100644 --- a/templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Startup.cs +++ b/templates/Virtual-Assistant-Template/VirtualAssistantTemplate/VirtualAssistantTemplate/Startup.cs @@ -80,7 +80,7 @@ public void ConfigureServices(IServiceCollection services) // Configure bot services.AddTransient(); - services.AddTransient>(); + services.AddTransient>(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.