From b43739110e830a6280a44cadd7c990917badf5d2 Mon Sep 17 00:00:00 2001 From: litofish Date: Fri, 2 Aug 2019 11:21:35 -0700 Subject: [PATCH 1/8] Add files for Hospitality Sample VA --- solutions/HospitalitySample/.filenesting.json | 15 + .../Adapters/DefaultAdapter.cs | 40 + .../Adapters/DefaultWebSocketAdapter.cs | 41 + solutions/HospitalitySample/Bots/DialogBot.cs | 46 + .../ConnectedService.json | 7 + .../Content/NewUserGreeting.de.json | 64 + .../Content/NewUserGreeting.es.json | 64 + .../Content/NewUserGreeting.fr.json | 64 + .../Content/NewUserGreeting.it.json | 64 + .../Content/NewUserGreeting.json | 64 + .../Content/NewUserGreeting.zh.json | 64 + .../Content/ReturningUserGreeting.de.json | 56 + .../Content/ReturningUserGreeting.es.json | 56 + .../Content/ReturningUserGreeting.fr.json | 56 + .../Content/ReturningUserGreeting.it.json | 56 + .../Content/ReturningUserGreeting.json | 56 + .../Content/ReturningUserGreeting.zh.json | 56 + .../Controllers/BotController.cs | 43 + .../Deployment/Resources/LU/de/General.lu | 523 +++++++ .../Deployment/Resources/LU/en/General.lu | 521 +++++++ .../Deployment/Resources/LU/es/General.lu | 523 +++++++ .../Deployment/Resources/LU/fr/General.lu | 523 +++++++ .../Deployment/Resources/LU/it/General.lu | 523 +++++++ .../Deployment/Resources/LU/zh/General.lu | 523 +++++++ .../Deployment/Resources/QnA/de/Chitchat.lu | 1238 +++++++++++++++++ .../Deployment/Resources/QnA/de/Faq.lu | 76 + .../Deployment/Resources/QnA/en/Chitchat.lu | 1227 ++++++++++++++++ .../Deployment/Resources/QnA/en/Faq.lu | 66 + .../Deployment/Resources/QnA/es/Chitchat.lu | 1238 +++++++++++++++++ .../Deployment/Resources/QnA/es/Faq.lu | 76 + .../Deployment/Resources/QnA/fr/Chitchat.lu | 1238 +++++++++++++++++ .../Deployment/Resources/QnA/fr/Faq.lu | 76 + .../Deployment/Resources/QnA/it/Chitchat.lu | 1238 +++++++++++++++++ .../Deployment/Resources/QnA/it/Faq.lu | 76 + .../Deployment/Resources/QnA/zh/Chitchat.lu | 1238 +++++++++++++++++ .../Deployment/Resources/QnA/zh/Faq.lu | 76 + .../Resources/parameters.template.json | 33 + .../Deployment/Resources/template.json | 395 ++++++ .../Deployment/Scripts/deploy.ps1 | 245 ++++ .../Scripts/deploy_cognitive_models.ps1 | 300 ++++ .../Deployment/Scripts/luis_functions.ps1 | 112 ++ .../Deployment/Scripts/publish.ps1 | 66 + .../Deployment/Scripts/qna_functions.ps1 | 87 ++ .../Scripts/update_cognitive_models.ps1 | 159 +++ .../HospitalitySample/Dialogs/CancelDialog.cs | 70 + .../Dialogs/EscalateDialog.cs | 36 + .../HospitalitySample/Dialogs/MainDialog.cs | 396 ++++++ .../Dialogs/OnboardingDialog.cs | 74 + .../HospitalitySample.csproj | 118 ++ .../Models/OnboardingState.cs | 14 + .../Pipeline/HospitalitySample.yml | 61 + solutions/HospitalitySample/Program.cs | 21 + .../Properties/launchSettings.json | 27 + .../Responses/Cancel/CancelResponses.cs | 64 + .../Cancel/CancelStrings.Designer.cs | 116 ++ .../Responses/Cancel/CancelStrings.de.resx | 132 ++ .../Responses/Cancel/CancelStrings.es.resx | 132 ++ .../Responses/Cancel/CancelStrings.fr.resx | 132 ++ .../Responses/Cancel/CancelStrings.it.resx | 132 ++ .../Responses/Cancel/CancelStrings.resx | 132 ++ .../Responses/Cancel/CancelStrings.zh.resx | 132 ++ .../Responses/Escalate/EscalateResponses.cs | 46 + .../Escalate/EscalateStrings.Designer.cs | 83 ++ .../Escalate/EscalateStrings.de.resx | 123 ++ .../Escalate/EscalateStrings.es.resx | 123 ++ .../Escalate/EscalateStrings.fr.resx | 123 ++ .../Escalate/EscalateStrings.it.resx | 123 ++ .../Responses/Escalate/EscalateStrings.resx | 123 ++ .../Escalate/EscalateStrings.zh.resx | 123 ++ .../Responses/Main/MainResponses.cs | 139 ++ .../Responses/Main/MainStrings.Designer.cs | 259 ++++ .../Responses/Main/MainStrings.de.resx | 168 +++ .../Responses/Main/MainStrings.es.resx | 168 +++ .../Responses/Main/MainStrings.fr.resx | 168 +++ .../Responses/Main/MainStrings.it.resx | 168 +++ .../Responses/Main/MainStrings.resx | 171 +++ .../Responses/Main/MainStrings.zh.resx | 168 +++ .../Onboarding/OnboardingResponses.cs | 82 ++ .../Onboarding/OnboardingStrings.Designer.cs | 138 ++ .../Onboarding/OnboardingStrings.de.resx | 138 ++ .../Onboarding/OnboardingStrings.es.resx | 138 ++ .../Onboarding/OnboardingStrings.fr.resx | 138 ++ .../Onboarding/OnboardingStrings.it.resx | 138 ++ .../Onboarding/OnboardingStrings.resx | 138 ++ .../Onboarding/OnboardingStrings.zh.resx | 138 ++ .../HospitalitySample/Services/BotServices.cs | 65 + .../HospitalitySample/Services/BotSettings.cs | 14 + .../Services/DispatchLuis.cs | 66 + .../HospitalitySample/Services/GeneralLuis.cs | 89 ++ solutions/HospitalitySample/Startup.cs | 162 +++ solutions/HospitalitySample/appsettings.json | 21 + .../HospitalitySample/cognitivemodels.json | 37 + solutions/HospitalitySample/readme.md | 1 + solutions/HospitalitySample/skills.json | 2 + .../HospitalitySample/wwwroot/default.htm | 422 ++++++ 95 files changed, 19300 insertions(+) create mode 100644 solutions/HospitalitySample/.filenesting.json create mode 100644 solutions/HospitalitySample/Adapters/DefaultAdapter.cs create mode 100644 solutions/HospitalitySample/Adapters/DefaultWebSocketAdapter.cs create mode 100644 solutions/HospitalitySample/Bots/DialogBot.cs create mode 100644 solutions/HospitalitySample/Connected Services/Application Insights/ConnectedService.json create mode 100644 solutions/HospitalitySample/Content/NewUserGreeting.de.json create mode 100644 solutions/HospitalitySample/Content/NewUserGreeting.es.json create mode 100644 solutions/HospitalitySample/Content/NewUserGreeting.fr.json create mode 100644 solutions/HospitalitySample/Content/NewUserGreeting.it.json create mode 100644 solutions/HospitalitySample/Content/NewUserGreeting.json create mode 100644 solutions/HospitalitySample/Content/NewUserGreeting.zh.json create mode 100644 solutions/HospitalitySample/Content/ReturningUserGreeting.de.json create mode 100644 solutions/HospitalitySample/Content/ReturningUserGreeting.es.json create mode 100644 solutions/HospitalitySample/Content/ReturningUserGreeting.fr.json create mode 100644 solutions/HospitalitySample/Content/ReturningUserGreeting.it.json create mode 100644 solutions/HospitalitySample/Content/ReturningUserGreeting.json create mode 100644 solutions/HospitalitySample/Content/ReturningUserGreeting.zh.json create mode 100644 solutions/HospitalitySample/Controllers/BotController.cs create mode 100644 solutions/HospitalitySample/Deployment/Resources/LU/de/General.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/LU/en/General.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/LU/es/General.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/LU/fr/General.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/LU/it/General.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/LU/zh/General.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/QnA/de/Chitchat.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/QnA/de/Faq.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/QnA/en/Chitchat.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/QnA/en/Faq.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/QnA/es/Chitchat.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/QnA/es/Faq.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/QnA/fr/Chitchat.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/QnA/fr/Faq.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/QnA/it/Chitchat.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/QnA/it/Faq.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/QnA/zh/Chitchat.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/QnA/zh/Faq.lu create mode 100644 solutions/HospitalitySample/Deployment/Resources/parameters.template.json create mode 100644 solutions/HospitalitySample/Deployment/Resources/template.json create mode 100644 solutions/HospitalitySample/Deployment/Scripts/deploy.ps1 create mode 100644 solutions/HospitalitySample/Deployment/Scripts/deploy_cognitive_models.ps1 create mode 100644 solutions/HospitalitySample/Deployment/Scripts/luis_functions.ps1 create mode 100644 solutions/HospitalitySample/Deployment/Scripts/publish.ps1 create mode 100644 solutions/HospitalitySample/Deployment/Scripts/qna_functions.ps1 create mode 100644 solutions/HospitalitySample/Deployment/Scripts/update_cognitive_models.ps1 create mode 100644 solutions/HospitalitySample/Dialogs/CancelDialog.cs create mode 100644 solutions/HospitalitySample/Dialogs/EscalateDialog.cs create mode 100644 solutions/HospitalitySample/Dialogs/MainDialog.cs create mode 100644 solutions/HospitalitySample/Dialogs/OnboardingDialog.cs create mode 100644 solutions/HospitalitySample/HospitalitySample.csproj create mode 100644 solutions/HospitalitySample/Models/OnboardingState.cs create mode 100644 solutions/HospitalitySample/Pipeline/HospitalitySample.yml create mode 100644 solutions/HospitalitySample/Program.cs create mode 100644 solutions/HospitalitySample/Properties/launchSettings.json create mode 100644 solutions/HospitalitySample/Responses/Cancel/CancelResponses.cs create mode 100644 solutions/HospitalitySample/Responses/Cancel/CancelStrings.Designer.cs create mode 100644 solutions/HospitalitySample/Responses/Cancel/CancelStrings.de.resx create mode 100644 solutions/HospitalitySample/Responses/Cancel/CancelStrings.es.resx create mode 100644 solutions/HospitalitySample/Responses/Cancel/CancelStrings.fr.resx create mode 100644 solutions/HospitalitySample/Responses/Cancel/CancelStrings.it.resx create mode 100644 solutions/HospitalitySample/Responses/Cancel/CancelStrings.resx create mode 100644 solutions/HospitalitySample/Responses/Cancel/CancelStrings.zh.resx create mode 100644 solutions/HospitalitySample/Responses/Escalate/EscalateResponses.cs create mode 100644 solutions/HospitalitySample/Responses/Escalate/EscalateStrings.Designer.cs create mode 100644 solutions/HospitalitySample/Responses/Escalate/EscalateStrings.de.resx create mode 100644 solutions/HospitalitySample/Responses/Escalate/EscalateStrings.es.resx create mode 100644 solutions/HospitalitySample/Responses/Escalate/EscalateStrings.fr.resx create mode 100644 solutions/HospitalitySample/Responses/Escalate/EscalateStrings.it.resx create mode 100644 solutions/HospitalitySample/Responses/Escalate/EscalateStrings.resx create mode 100644 solutions/HospitalitySample/Responses/Escalate/EscalateStrings.zh.resx create mode 100644 solutions/HospitalitySample/Responses/Main/MainResponses.cs create mode 100644 solutions/HospitalitySample/Responses/Main/MainStrings.Designer.cs create mode 100644 solutions/HospitalitySample/Responses/Main/MainStrings.de.resx create mode 100644 solutions/HospitalitySample/Responses/Main/MainStrings.es.resx create mode 100644 solutions/HospitalitySample/Responses/Main/MainStrings.fr.resx create mode 100644 solutions/HospitalitySample/Responses/Main/MainStrings.it.resx create mode 100644 solutions/HospitalitySample/Responses/Main/MainStrings.resx create mode 100644 solutions/HospitalitySample/Responses/Main/MainStrings.zh.resx create mode 100644 solutions/HospitalitySample/Responses/Onboarding/OnboardingResponses.cs create mode 100644 solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.Designer.cs create mode 100644 solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.de.resx create mode 100644 solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.es.resx create mode 100644 solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.fr.resx create mode 100644 solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.it.resx create mode 100644 solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.resx create mode 100644 solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.zh.resx create mode 100644 solutions/HospitalitySample/Services/BotServices.cs create mode 100644 solutions/HospitalitySample/Services/BotSettings.cs create mode 100644 solutions/HospitalitySample/Services/DispatchLuis.cs create mode 100644 solutions/HospitalitySample/Services/GeneralLuis.cs create mode 100644 solutions/HospitalitySample/Startup.cs create mode 100644 solutions/HospitalitySample/appsettings.json create mode 100644 solutions/HospitalitySample/cognitivemodels.json create mode 100644 solutions/HospitalitySample/readme.md create mode 100644 solutions/HospitalitySample/skills.json create mode 100644 solutions/HospitalitySample/wwwroot/default.htm diff --git a/solutions/HospitalitySample/.filenesting.json b/solutions/HospitalitySample/.filenesting.json new file mode 100644 index 0000000000..90c31b9e8a --- /dev/null +++ b/solutions/HospitalitySample/.filenesting.json @@ -0,0 +1,15 @@ +{ + "help": "https://go.microsoft.com/fwlink/?linkid=866610", + "dependentFileProviders": { + "add": { + "pathSegment": { + "add": { + ".*": [ + ".json", + ".resx" + ] + } + } + } + } +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Adapters/DefaultAdapter.cs b/solutions/HospitalitySample/Adapters/DefaultAdapter.cs new file mode 100644 index 0000000000..67e0400f15 --- /dev/null +++ b/solutions/HospitalitySample/Adapters/DefaultAdapter.cs @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Azure; +using Microsoft.Bot.Builder.Integration.AspNet.Core; +using Microsoft.Bot.Builder.Solutions.Middleware; +using Microsoft.Bot.Connector.Authentication; +using Microsoft.Bot.Schema; +using HospitalitySample.Responses.Main; +using HospitalitySample.Services; + +namespace HospitalitySample.Adapters +{ + public class DefaultAdapter : BotFrameworkHttpAdapter + { + public DefaultAdapter( + BotSettings settings, + ICredentialProvider credentialProvider, + IBotTelemetryClient telemetryClient) + : base(credentialProvider) + { + OnTurnError = async (turnContext, exception) => + { + await turnContext.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"{exception.Message}")); + await turnContext.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"{exception.StackTrace}")); + await turnContext.SendActivityAsync(MainStrings.ERROR); + telemetryClient.TrackException(exception); + }; + + // Uncomment the following line for local development without Azure Storage + // Use(new TranscriptLoggerMiddleware(new MemoryTranscriptStore())); + 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()); + } + } +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Adapters/DefaultWebSocketAdapter.cs b/solutions/HospitalitySample/Adapters/DefaultWebSocketAdapter.cs new file mode 100644 index 0000000000..c1e637fc0f --- /dev/null +++ b/solutions/HospitalitySample/Adapters/DefaultWebSocketAdapter.cs @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Solutions.Middleware; +using Microsoft.Bot.Builder.StreamingExtensions; +using Microsoft.Bot.Connector.Authentication; +using Microsoft.Bot.Schema; +using Microsoft.Extensions.Configuration; +using HospitalitySample.Responses.Main; +using HospitalitySample.Services; + +namespace HospitalitySample.Adapters +{ + public class DefaultWebSocketAdapter : WebSocketEnabledHttpAdapter + { + public DefaultWebSocketAdapter( + IConfiguration config, + BotSettings settings, + ICredentialProvider credentialProvider, + IBotTelemetryClient telemetryClient) + : base(config, credentialProvider) + { + OnTurnError = async (turnContext, exception) => + { + await turnContext.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"{exception.Message}")); + await turnContext.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"{exception.StackTrace}")); + await turnContext.SendActivityAsync(MainStrings.ERROR); + telemetryClient.TrackException(exception); + }; + + // Uncomment the following line for local development without Azure Storage + // Use(new TranscriptLoggerMiddleware(new MemoryTranscriptStore())); 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 SetSpeakMiddleware(settings.DefaultLocale ?? "en-us")); + } + } +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Bots/DialogBot.cs b/solutions/HospitalitySample/Bots/DialogBot.cs new file mode 100644 index 0000000000..ffa6b5983c --- /dev/null +++ b/solutions/HospitalitySample/Bots/DialogBot.cs @@ -0,0 +1,46 @@ +// 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 HospitalitySample.Bots +{ + public class DialogBot : IBot + where T : Dialog + { + private readonly Dialog _dialog; + private readonly BotState _conversationState; + private readonly BotState _userState; + private readonly IBotTelemetryClient _telemetryClient; + + public DialogBot(IServiceProvider serviceProvider, T dialog) + { + _dialog = dialog; + _conversationState = serviceProvider.GetService(); + _userState = serviceProvider.GetService(); + _telemetryClient = serviceProvider.GetService(); + } + + public async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) + { + // Client notifying this bot took to long to respond (timed out) + if (turnContext.Activity.Code == EndOfConversationCodes.BotTimedOut) + { + _telemetryClient.TrackTrace($"Timeout in {turnContext.Activity.ChannelId} channel: Bot took too long to respond.", Severity.Information, null); + return; + } + + await _dialog.RunAsync(turnContext, _conversationState.CreateProperty(nameof(DialogState)), cancellationToken); + + // Save any state changes that might have occured during the turn. + await _conversationState.SaveChangesAsync(turnContext, false, cancellationToken); + await _userState.SaveChangesAsync(turnContext, false, cancellationToken); + } + } +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Connected Services/Application Insights/ConnectedService.json b/solutions/HospitalitySample/Connected Services/Application Insights/ConnectedService.json new file mode 100644 index 0000000000..d15936a838 --- /dev/null +++ b/solutions/HospitalitySample/Connected Services/Application Insights/ConnectedService.json @@ -0,0 +1,7 @@ +{ + "ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider", + "Version": "8.13.10627.1", + "GettingStartedDocument": { + "Uri": "https://go.microsoft.com/fwlink/?LinkID=798432" + } +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Content/NewUserGreeting.de.json b/solutions/HospitalitySample/Content/NewUserGreeting.de.json new file mode 100644 index 0000000000..d344156f59 --- /dev/null +++ b/solutions/HospitalitySample/Content/NewUserGreeting.de.json @@ -0,0 +1,64 @@ +{ + "type": "AdaptiveCard", + "id": "NewUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Dark", + "text": "Hi, ich bin **dein** Virtueller Assistent", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Dark", + "text": "Lesen Sie mehr, um zu sehen, was ich tun kann.", + "wrap": true + } + ] + } + ], + "actions": [ + { + "type": "Action.Submit", + "title": "Loslegen", + "data": { + "action": "startOnboarding" + } + }, + { + "type": "Action.OpenUrl", + "title": "Dokumentation", + "url": "https://aka.ms/virtualassistantdocs" + }, + { + "type": "Action.OpenUrl", + "title": "Kompetenzen", + "url": "https://aka.ms/botframeworkskills" + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Hi, ich bin **dein** Virtueller Assistent! " +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Content/NewUserGreeting.es.json b/solutions/HospitalitySample/Content/NewUserGreeting.es.json new file mode 100644 index 0000000000..bcd8faf7b6 --- /dev/null +++ b/solutions/HospitalitySample/Content/NewUserGreeting.es.json @@ -0,0 +1,64 @@ +{ + "type": "AdaptiveCard", + "id": "NewUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Dark", + "text": "Hola, soy tu Virtual Assistant", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Dark", + "text": "Lee más para ver lo que puedo hacer.", + "wrap": true + } + ] + } + ], + "actions": [ + { + "type": "Action.Submit", + "title": "Empezar", + "data": { + "action": "startOnboarding" + } + }, + { + "type": "Action.OpenUrl", + "title": "Documentación", + "url": "https://aka.ms/virtualassistantdocs" + }, + { + "type": "Action.OpenUrl", + "title": "Habilidades", + "url": "https://aka.ms/botframeworkskills" + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Hola, soy tu Virtual Assistant! Lee más para ver lo que puedo hacer." +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Content/NewUserGreeting.fr.json b/solutions/HospitalitySample/Content/NewUserGreeting.fr.json new file mode 100644 index 0000000000..7e0f07589d --- /dev/null +++ b/solutions/HospitalitySample/Content/NewUserGreeting.fr.json @@ -0,0 +1,64 @@ +{ + "type": "AdaptiveCard", + "id": "NewUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Dark", + "text": "Salut, je suis votre Virtual Assistant", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Dark", + "text": "Lire la suite pour voir ce que je peux faire.", + "wrap": true + } + ] + } + ], + "actions": [ + { + "type": "Action.Submit", + "title": "Commencer", + "data": { + "action": "startOnboarding" + } + }, + { + "type": "Action.OpenUrl", + "title": "Documentation", + "url": "https://aka.ms/virtualassistantdocs" + }, + { + "type": "Action.OpenUrl", + "title": "Compétences", + "url": "https://aka.ms/botframeworkskills" + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Salut, je suis votre Virtual Assistant! Lire la suite pour voir ce que je peux faire." +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Content/NewUserGreeting.it.json b/solutions/HospitalitySample/Content/NewUserGreeting.it.json new file mode 100644 index 0000000000..ba1542e926 --- /dev/null +++ b/solutions/HospitalitySample/Content/NewUserGreeting.it.json @@ -0,0 +1,64 @@ +{ + "type": "AdaptiveCard", + "id": "NewUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Dark", + "text": "Ciao, sono il **tuo** Virtual Assistant", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Dark", + "text": "Ora che sono pronto, leggi di più per vedere cosa posso fare.", + "wrap": true + } + ] + } + ], + "actions": [ + { + "type": "Action.Submit", + "title": "Iniziare", + "data": { + "action": "startOnboarding" + } + }, + { + "type": "Action.OpenUrl", + "title": "Documentazione", + "url": "https://aka.ms/virtualassistantdocs" + }, + { + "type": "Action.OpenUrl", + "title": "Abilità", + "url": "https://aka.ms/botframeworkskills" + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Ciao, sono il **tuo** Virtual Assistant! Ora che sono pronto, leggi di più per vedere cosa posso fare." +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Content/NewUserGreeting.json b/solutions/HospitalitySample/Content/NewUserGreeting.json new file mode 100644 index 0000000000..1ebffe0758 --- /dev/null +++ b/solutions/HospitalitySample/Content/NewUserGreeting.json @@ -0,0 +1,64 @@ +{ + "type": "AdaptiveCard", + "id": "NewUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Light", + "text": "Hi, I'm **your** Virtual Assistant", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Light", + "text": "Now that I'm up and running, explore the links here to learn what I can do.", + "wrap": true + } + ] + } + ], + "actions": [ + { + "type": "Action.Submit", + "title": "Get started", + "data": { + "action": "startOnboarding" + } + }, + { + "type": "Action.OpenUrl", + "title": "Documentation", + "url": "https://aka.ms/virtualassistantdocs" + }, + { + "type": "Action.OpenUrl", + "title": "Skills", + "url": "https://aka.ms/botframeworkskills" + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Hi, I'm **your** Virtual Assistant. Now that I'm up and running, explore the links here to learn what I can do." +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Content/NewUserGreeting.zh.json b/solutions/HospitalitySample/Content/NewUserGreeting.zh.json new file mode 100644 index 0000000000..73e21aae4c --- /dev/null +++ b/solutions/HospitalitySample/Content/NewUserGreeting.zh.json @@ -0,0 +1,64 @@ +{ + "type": "AdaptiveCard", + "id": "NewUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Dark", + "text": "嗨, 我是你的虚拟助理", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Dark", + "text": "在这里探索, 看看我能做些什么。", + "wrap": true + } + ] + } + ], + "actions": [ + { + "type": "Action.Submit", + "title": "开始吧", + "data": { + "action": "startOnboarding" + } + }, + { + "type": "Action.OpenUrl", + "title": "文档", + "url": "https://aka.ms/virtualassistantdocs" + }, + { + "type": "Action.OpenUrl", + "title": "技能", + "url": "https://aka.ms/botframeworkskills" + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "嗨, 我是你的虚拟助理! 在这里探索, 看看我能做些什么。" +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Content/ReturningUserGreeting.de.json b/solutions/HospitalitySample/Content/ReturningUserGreeting.de.json new file mode 100644 index 0000000000..1e66e219c9 --- /dev/null +++ b/solutions/HospitalitySample/Content/ReturningUserGreeting.de.json @@ -0,0 +1,56 @@ +{ + "type": "AdaptiveCard", + "id": "ReturningUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "items": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Light", + "text": "Willkommen zurück!", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Light", + "text": "Wie kann ich helfen?", + "wrap": true + } + ], + "width": "stretch" + } + ] + } + ] + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Willkommen zurück!" +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Content/ReturningUserGreeting.es.json b/solutions/HospitalitySample/Content/ReturningUserGreeting.es.json new file mode 100644 index 0000000000..5e91322cc6 --- /dev/null +++ b/solutions/HospitalitySample/Content/ReturningUserGreeting.es.json @@ -0,0 +1,56 @@ +{ + "type": "AdaptiveCard", + "id": "ReturningUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "items": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Light", + "text": "Bienvenido!", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Light", + "text": "¿Cómo puedo ayudar?", + "wrap": true + } + ], + "width": "stretch" + } + ] + } + ] + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Bienvenido!" +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Content/ReturningUserGreeting.fr.json b/solutions/HospitalitySample/Content/ReturningUserGreeting.fr.json new file mode 100644 index 0000000000..9868fcc5ba --- /dev/null +++ b/solutions/HospitalitySample/Content/ReturningUserGreeting.fr.json @@ -0,0 +1,56 @@ +{ + "type": "AdaptiveCard", + "id": "ReturningUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "items": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Light", + "text": "Bienvenue!", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Light", + "text": "Comment puis-je aider?", + "wrap": true + } + ], + "width": "stretch" + } + ] + } + ] + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Bienvenue!" +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Content/ReturningUserGreeting.it.json b/solutions/HospitalitySample/Content/ReturningUserGreeting.it.json new file mode 100644 index 0000000000..e46db73649 --- /dev/null +++ b/solutions/HospitalitySample/Content/ReturningUserGreeting.it.json @@ -0,0 +1,56 @@ +{ + "type": "AdaptiveCard", + "id": "ReturningUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "items": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Light", + "text": "Benvenuto!", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Light", + "text": "Come posso aiutarla?", + "wrap": true + } + ], + "width": "stretch" + } + ] + } + ] + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Benvenuto!" +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Content/ReturningUserGreeting.json b/solutions/HospitalitySample/Content/ReturningUserGreeting.json new file mode 100644 index 0000000000..979be4b359 --- /dev/null +++ b/solutions/HospitalitySample/Content/ReturningUserGreeting.json @@ -0,0 +1,56 @@ +{ + "type": "AdaptiveCard", + "id": "ReturningUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,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", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "items": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Light", + "text": "Welcome back!", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Light", + "text": "How can I help?", + "wrap": true + } + ], + "width": "stretch" + } + ] + } + ] + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "Welcome back!" +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Content/ReturningUserGreeting.zh.json b/solutions/HospitalitySample/Content/ReturningUserGreeting.zh.json new file mode 100644 index 0000000000..f5571eb113 --- /dev/null +++ b/solutions/HospitalitySample/Content/ReturningUserGreeting.zh.json @@ -0,0 +1,56 @@ +{ + "type": "AdaptiveCard", + "id": "ReturningUserGreeting", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "Image", + "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAmcAAAEQCAYAAAD1fdP1AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowNDozMCAxNjoyNToyORsrP5gAAClbSURBVHhe7d1ZcBz3ndjxPzAXgAEIgBd4mxRlUhQlWqcViXIsqixpN7a82V3HcUWprFOV2uxLqpJ9zEuq9iUPqVTyEm9SyXqTje34lndlrU0pa0qRKFn3YfEQxEuGSIonQBzEDaR/3f/G9Azm6J75z0wf3w9rgO6enuFgZjDzRXdPtwIAAEB4dPzR02cHFlT6Lj0OALEwOT6Tm16Yz+hRAIiMjqeeHnlEqeUjehwAYmN8fFpNz8zpMQCIhk79HQBiZ82abtXdldVjABANxBmAWCPQAEQNcQYg9gg0AFFCnAFIBAINQFQQZwASg0ADEAXEGYBEIdAAhB1xBiBxCDQAYUacAUgkAg1AWBFnABKLQAMQRsQZgEQj0ACEDXEGIPEINABhQpwBgIVAAxAWxBkAaAQagDAgzgDAg0AD0G7EGQCUINAAtBNxBgBlEGgA2oU4A4AKCDQA7UCcAUAVBBqAViPOAKAGAg1AKxFnAOADgQagVYgzAPCJQAPQCsQZAARAoAFoNuIMAAIi0AA0E3EGAHUg0AA0C3EGAHUi0AA0A3EGAA0g0ACYRpwBQIMINAAmEWcAYACBBsAU4gwADCHQAJhAnAGAQQQagEYRZwBgGIEGoBHEGQA0AYEGoF7EGQA0CYEGoB7EGQA0EYEGICjiDACajEADEARxBgAtQKAB8Is4A4AWIdAA+EGcAUALEWgAaiHOAKDFCDQA1RBnANAGBBqASogzAGgTAg1AOcQZALQRgQagFHEGAG1GoAHwIs4AIAQINAAu4gwAQoJAAyCIMwAIEQINAHEGACFDoAHJRpwBQAgRaEByEWcAEFIEGpBMxBkAhBiBBiQPcQYAIUegAclCnAFABBBoQHIQZwAQEQQakAzEGQBECIEGxB9xBgARQ6AB8UacAUAEEWhAfBFnABBRBBoQT8QZAEQYgQbED3EGABFHoAHxQpwBQAwQaEB8EGcAEBMEGhAPxBkAxAiBBkQfcQYAMUOgAdFGnAFADBFoQHQRZwAQUwQaEE3EGQDEGIEGRA9xBgAxR6AB0UKcAUACEGhAdBBnAJAQBBoQDcQZACQIgQaEH3EGAAlDoAHhRpwBQAIRaEB4EWcAkFAEGhBOxBkAJBiBBoQPcQYACUegAeFCnAEACDQgRIgzAICNQAPCgTgDAKwg0BA1uXTnyqmjQ0+MOOIMAFCEQEOYSYSt7UmrTX1Zta0/pzbkMyunrWuyaot1kvO7M9FNHOIMALAKgYawyaQ61HodYT2ZlEp3ll9MJpN7rDBb35NRm61Qi2KkEWcAgLIINIRFby6lhnqzqisdLFvSHVbQWZEmS9KihDgDAFREoKHdJKwGuhqLq3zGiru+TGS2SSPOAABVEWhoFwkzWUVpQibVqTb2RiPQiDMAQE0EGlrNZJi5ohJoxBkAwBcCDa3SjDBzRSHQiDMAgG8EGpptsLt5YebKdIY70IgzAEAgBBqaxQ6zbGvSJKyBtmZND3EGAAiOQINprQwzV9gCTcKsuytDnAEA6kOgwZR2hJnLCbRs2wPNDTNBnAEA6kagoVHtDDNXtrOjrYHmDTPR8dTTI48otXxEj6NOU5OTampqUo8hCfL5XpXv7dVjQLKNj0+r6Zk5PQb4UynMVjeS32pa1t/lEsWXWfaOFmazuWfNLS2ry5Nzarnk/GYqDTNBnNVhbPS6+mRkRF2+9Kkauz6q5ud5QUqyTCarBtYOqo1Dm9S27dvVwOBafQ6QLAQagqi2xKxdcSZaGWjlwkwQZz7Nz82pD0+eUOdOn1JTU1N6KrDawOCg2nPb7WrX7t16CpAcBBr8qLUqs51xJvPNLzY/0CqFmSDOfPjg/ffU8IkTLCFDIBJpDzx0kCVpSBwCDdX42cZsdYqtnlKemTgTzQy0amEm2rsFXsjJdmSHn31GHbPijDBDUGOjo9bz5+dq+OQJPQVIBj4kgErCsPG/X5lUcz4kUCvMBHFWgWxXJm+s8gYLNOKdN99Qr71yVI8ByUCgoVSUwsxlOtD8hJkgzso4PzJihxlLy2DKuTOn7UgDkoRAgyuKYebKGgo0v2EmiLMSssSMpRxoBlm9KeEPJAmBhiiHmavRQAsSZoI485BPZL78whGWmKFpJPzleQYkCYGWXHEIM1e9gRY0zARx5iGfymQ3GWgmCf+3Wb2JBCLQkidOYeYKGmj1hJkgzjT5ZCafqkMryPZn8nwDkoZAS444hpnLb6DVG2ZLS8TZCllqBrTKWSvQgCQi0OIvzmHmcgOts0KgNRJmV67PsRNa109/8P3A25otZ/JqYOMW1TuwXk9Jrm19nWp9t3L+kpAd9uknbIee4O4M0P1LQ7455xUUzrP+FZ/lXNr6Yp9nTynM705YOU/PZ/+/eib5ak9ZOc8Zt7/rAfu7fdutOfSwc573eh0r49YMH50dUe8Of6yuT07b5/mRz+fVV37/D/UYkDzsqDaeTIWZ+1pbsHpKeYU9xrqv9a6gO6F1Vfuf3R3VLnmur9Ewm5u33ruIM2fXGS+/6P8uSPcMqPU796t1G4dUZyqtpybb3g05dev6nD0sQeN9MjuB404rhI77zT7pceGcb32148h5xksEeWYpuowzv/7u+WpfhX0deqpzlnOefLWuW0+yx0vnt89zZ7C4t8C5Tc6YexvmZmbVS2++q545+p6aW1h0JtbwlX/4Bxw4HYlGoMWLhFl3pnPldbERq6/C75U67xnCfc12NSPOhDfQTISZYLWmZXT0uh6qrW/9VrXrrofVhs1bCTOsyHXl1JcefkB98x88rKfUxg6OkXSs4owPN8ySyN1R7UC/mTATxJnl8qVP9VB1ssRsy233qa7uHj0FKHbg9j3q9h1Deqy6IH8UAHFFoEVfksPMNdjfrbYNdlfcBq2ScmEmiLMAtu69R2Vzzqo7oJxUKq1+9+F79BgAPwi06CLMlOrt7VJduYzKWGW2zro//AZapTATxJlf6W7V2z+gR4DKNq1bq7LplB4D4AeBFj2EWSHMXH4DrVqYCeLMp/zajWxjBl/61qxR6/tY9Q0ERaBFB2G2OsxctQKtVpgJ4syndJowA4BmI9DCjzDTYZatvPF/pUDzE2aCOAMAhAqBFl6EWe0wc5UGmt8wE8QZACB0CLTwIcz8h5nLDTTZr5rfMBPEGQAglAi08BggzAKHmSvV0aE65pbVwoK/MBOJuqfn5+bsowHIcTS9p5schBptIPvXK30uysnvfveAJCDQ2k/CrIcwqyvM5KgB12/MyQFp1FBvxvduNhJz+Kazp0+rd958I/DxM139W3arHfvu1WMolfTDN3lms4f/7FvfURdGJ5wJddhz2z5193336zEAHOqpPeoJM/d1sRGrr8LvlTrvGcJ9zXbVe/imvmphVuU63TCbn7dm0/PNLSyrS5PzRcfiLCcRKTw1Oalef/Vo3WEGtNrwyRN6CIBgCVrrscRMqd58Y0vMJMy8sukOX0vQEnGvn/9kRA8B0cHqTaAYgdY6hJkOs1zw3WhVCjOXn0BLxD0/N8cSMwCIAwKt+QgzE2FWfb1lrUBL9r0PAIgcAq15CLPmh5mrWqARZwCAyCHQzCPMlMrLxv/1hNlSsDBz2YHWtzrQiDMAQCQRaOYQZq0PM1c2tTrQiDMgwmTfffLJzpdfPKIOP/uM+sF3/so+/er5w/auY8ZGr+s5gXgi0BpHmLUvzFylgUacARElO6z96Q+/b0eY7Fx5bHRUn6PUlUuX7Gg7/OzP7VCT3ckAcUWg1Y8w0zuYbcE2ZrVIoG3SgZY68I0/3WlN+6ZzVrjIUoHTHw2r9955W73+6ivqmPVmJKfhEyfUxYvnrTtk3vql7FepVEpforzL1huVvFk1oqtvrerfsEWPtc/MxJi6dv60mhq9otLprErnuvQ57bU+n1Zre5wnt7sTV1fxjlr1bgE90+yTHhfO+c6ElctaA55Zii4j346fPqfeP3lajd6YUIP9a1QmnfJc1pnHvQL5Zl+bO12Pl85vj7ozWNxb4MznjK1cxvlmk+EX33hfTTS4w8xdu3dbf8316rEC+b34v7/8WzXy8Tk9pbqbU1P2TpjX9PfbJyCOcrmMWlqUQ+Qs6imopVlh5r4uNmL1VQS/Uvc1e0WZq/ATZquux+IvzAqX83ufpKwyk8cktHEmSwVefeklex9l8ubitbS0aE/79MIFdWp4WKWsN+J16zfoc1eLQ5wtLsyrkQ9+rS5+9K6aGrtin65bkTY/M6XygxtVZ2f1QG22dsXZxcvX1Le+9zP1+nsn1JmRi+r4qXPqtfeOq758j9o6tN6Z15rPvqy+Avuy8tWdrscL/5cz3R51Z7C4t8CZzxlbuYzzzSbDzYyzV1/+f4Gfz/I7c9H6fdm8dYvq6u7WU4F4IdD8a+YSM/d1sRGrryL4lbqv2StKRv0uMSu9Hv9LzAqXC3KfSKCFclnma68ctZeQ+dmjv8wjq3XkMnE1ZwXYmbeOqPEr5/WUgtGL5+zzZJ6kkRD77z98Ro2NF6+ym5mdUz/65QvqB7+I31HJZAmYrMKsh/yuvPzCEXvJGxBXrOKsjVWZ4VmVWUnoHh2JrHNnTusx/+QycTzkzdToZXXqtefUzOSYnrKanCfzyLxJ8XevvqW+89fW/WKFWCVvfTCs/vP/+rGarjJPmMk2ZHKUAO/p2Pvv6nPrMzU1pT7k0FCIOQKtMsKsdfsxa0SoHiFZIlBPmLk+eO+9WG34fHVkWJ15+wV7lWYtMo/MK5eJM4mx71pR9isrzvy4eOWa+vf/7bvq9MgFPSU6ZInwkeefKzpJXDXq3OlTegiILwJtNcIsGmEmQvUovfPm63qoPvYqzrfesLdX856ieIzCT46/ri4OB19KIpf5+P2jvoIuakbHJ9T/+OEz6sRpfxvCuyTo/uv3n1EvvfkbPSXZJPDYxQaSgEArIMxMhJme0AKheaRkqZmJpQJyPe6nOt1Tox8GaCWJqo9ee87elqxesm2abIcmn+yMi7MjF9R/+d8/UZ9euaanBPc3v3pF/eBvj0R2NadJHG8WSUGgEWai8f2Y6QktEppHa5S/5O2Y+vDoz6tuX+aXXMeZt8t/iCBq3jk2rL79I+t+MRBVb34wrP78//yN9cs2oackk3yCGUiKJAcaYdZomM23PMxEaB6xKK56NEmWlH30+nNGV0fKdckqzktnjukp0fPTwy+qp597UY+ZceHyNfUf/+eP1Acf1b90Mury+dW76ADiLImBRpgZCLMFPaHFkv2ohcTF4Xfsbcya5fLZY/ZStChthyZLyf78uz9R7x5vzgcc5Pr/8qeH1eGX39RTkiXfm9dDQHIkKdAIs+iGmSDO2khiSaLp6shHekptqXRG3XLPI/ZJhv2SIwp89NrhSGyHJtuV/ae/+F6g7cs2b1in/t2/+qb60kP36in+HD76lvq2FWnTs7N6SjJsHNqkh4BkSUKgEWayH7PuyIaZCM2jNzi4Vg8lg0SSxJJEk19dvQNWlB2yjwggp1sfeNye5tf8zE07Bhv5sEGzyZKyv/xxsO3L7tm/R/3xN55U3bmsFWf3qT/+x09av5T+X3xl9eZ/+PaP1flLV/WUcNh5y261/8Dnik75fONLvOR6gSSLc6ARZk6Y5eoMs9EQhJkIzSOYtL/kz73/sh1Lfq3ZsFXdcu8h1dVXiLFsV96eNrhZjsDljyytk1WoYVyCJkvKfvbci4HC7MuPPKj+0e88UhRjt2zfov71P/ua2rxxnZ5Sm+ym4y9+eliPhYMcvukOK8i8p/0H7tLn1k+uB0i6OAYaYdZ4mM2FIMxEaB7Frdu3q0ym8V+UPbftU4cee7zoFLYlBfIJyiBhtnHXfvWZAwfLrsaUadtu/7x9CiKMO6v99Tsf6KHaJMb+xde/og7ee6eeUmywv0/9yTe+qu7dv0dPqU0+wfmbj87qsXCSYBsYHNRjwdlL38ocrxNIojgFGmEmYdZVX5gthyvMRKgeyTs+19hf9BJ3slRAlsJ5T2F7M5r2udTKDa+hW/brKZXJ0rPPfv5x39uhhfFYnGPj/nZvsWnDOivMnrSXkFUjqzm//ruH1JOPPqSn1Hb+Uv37UWuVRx97oq7Vm/JHCkvNgGJxCDTCrLEwuz4WrjAToXo0ZanXhqEhPRbc3ffdrzLZ8P+SZbtrv7Fmunrs7cuCrLKUVZ57D35F5Qc36CmVpdLhu5/8bCe2b/dOO8zkAwB+feHeO9W/+aOv+br+tf19eii85Dn+xJef9P27In+0yO/GAw8d1FMAeEU50CTMugmzhsJsIWRhJkL3iH7hi4fqWm0jSwVklU8UyPZj1ZZwSVx99oEnirYv80uuV6Ju/fbP6inlyW0Im9us8Krm0QfvVU/93uOBNvZ3bdm4Tv3bP3nK/l6JXO+de/zHcDtJoMkSNFltL5sElCNL12Q15pO//wf2Hz4AKotioBFm8QwzkTrwjT+Vd6NvOqPtl0ql1K179qr5uTl17WrtT8/JUoH7Hvh7VVeJyt7QGz2EU1ffWtW/ofpqNL86O1Mqnesuu/d+iaoddzxoz9OIvnWb7SV0U6OX1bJs6eghS+P8rCoNYn0+rdb2OL8gHR3WyR5yyLj9XX+1v3um2Sfri6yuHBufXLULDYmmr37pC+qhewrbl7mXcYflizNa+Lpyvj4vk06pB++6XY3emLB3RFvq67/z99VntgytzG9f3P7i0LdcX68zVnQbNBl+8Y331cRMY0c0kD82aq2Sl/N37Nxlr67cZkXajp077cvdc9/9at8dd9qr9eV3CkBtuVxGLS0uW2/Yi3pKePV3pVRPtvC77X0Najf3dbERq69i9ZRaYVbpZri7y/AbZvX/OIVLBr1POp56euQRpZaP6PFQmZqcVMMnT9hHDxgbHdVTHbJKZ9v2HWrXLbtrrsqUg5/LMTYb0b9lt9qxL9g+tGqR7b6u/XZYTU+O2UuyBjfv8r3NmF/yf4xeOKemxi7bn+6UMJPdcJi2d0NO3bo+Zw+7ceMqDpjKceaS3WmcPP2xPXz3/s/aqzI7rBk8sxRdxv5mfXFGC1/l/GXrryP5bk91zrK/nfntRfWbU2fVhUtX1a07tqjP33mbWjfQVzS/9zKiEGfWTHqs6DZoMvxn3/qOujDa2CGiZKmYxBWA1hofn1bTDf5x1Ux2mGWsMPO88Hhfg9rNfV1sxOqrKJ7iZ4lZpZsxOr6gZmfldbygeKxY8fVUm7NU4ZJB75NQx5kpYY2zODEZZ8751lc7lJxfBNNxZl+bdd16kj1eOr99njuDxb0FxBkQf2ENtJUwE54XHu9rULu5r4uNWH0VhSl+V2WWuxmTU0tq8qYsMis+13mnKc//nKUKlwx6nyR7ZTUAAGWEcRu0ojBLqHq3MROLS1ac2WEWfsQZAABlhCnQCLPGwkxMToV/W0IXcQYAQAVhCLTSjf+TqNEwkw8BzMwSZwAAxEI7A40wkzCr75BMXnPzy/Y2xVGRiDhL2kHVEQ/5PIdZAsKiHYHW35UmzAyEmVhYiFCZWRIRZxuHhowctxNoFXm+cgxMIFxaGWhOmCV75ZapMBPz8mmACEnEIy/7QePQNYiSPfvYoz8QRq0INMLMbJiJkn2xh15iHn05xM3DXzzEEjSEnhy+bC+HWwJCq5mBRpiZD7MoSsROaL3ksFCfjIyoqalJPUWpc6dPWeNTeqw8dkJbHTuhLZBhPzuhlaNclO5kVrYzi8oxYoGkM72j2pph5rwcFnheeLyvQe3mvi7WQ8Ksy1CYeW+Gc1QA7+Kz4htZetd6+Z+zVOGSQe+TxOW5rOKUNz85FqF76mHbHrSBhJn3eSgnwgyIDpNL0OwwS/xBzM2FWalMKlr3bbKfCQAANMBEoBFmzQ0zkc0GXHTVZsQZAAANaCTQCDMdZtnmbmOWzTibrkQFcQYAQIPqCTQJs27CrOlh5sp3t+b/MYE4AwDAgCCBRpi1NsxET3dnZJaeEWcAABjiJ9AIs9aHmei07vL+voweCzfiDAAAg6oFGmHWnjBzdeU6VL47/IfEIs4AADCsXKARZu0NM1dfb8p6bML9OBBnPi0sLOghAABq8wYaYRaOMHP194U70Igzn6auX9ZDQHUT4+Pq6sRNPQYgySTQNg1YkUaYNXU/ZvUIc6ARZ5bBwbV6qIrFWTVxY0yPAJVduzGu5hYW9VhlcqgmAPG2Jtep1g/0WGESjQ3RmyGMYeYKa6ARZ5YBP3G2vKRGL57VI0Blx8+M6KHqBtcO6iEAcSRhltOHDert7UpkoIU5zFwSaD0hCzTizLJt+3Y9VN2NC6fVtSuX9Biw2sT4DXXkreN6rLJMJuvvjwIAkdTnCTNX0gItCmHmClugEWcWORj6Vj+BtrykLhz7tRq7dlVPAAoWFxfUz371qpqYntNTKvP1fAMQSRJmXRUOtJ2UQDO98b/sPDbT2WGfstYp3YS9yYYp0Igzbeu2HXqohsVZNfKboyxBQ5HFhUX17JFX1CvH/K363rV7tx4CECfVwswV90AzFWYpq7/ymU412JVS67rSqj+Xsk9rrNOANW19tzOtO21uz/9hCTTiTJM3y3w+r8dqsALtwm9eUh+ffJcPCSTc4sKCunjxkvreM8+rX7x2TE+tTp5nG4c26TEAceEnzFxxDTQTYSb3YG9Woixth1eqSnnJkjQn4MwdQD4Mgdbx1NMjjyi1fESPJ9rlS5+qI88/p8cCSHer3sH1KpXxd0y1OFrbZUVHeskedn6PnF8m76+U+/vVIVNleNkzzR6wJixb5+ppwjvsXKh4mnsx5/IOd9D+fzxWpuvLODfDmei5uEWmem6c5o65/9fC/Lw69dsL6tOxKXvcr88/eJAlZ0DM9Fkx0WWFRFCTkzNqdnZej1mKX3aKyeuWl2feahdrFXcbs6LbUnrDSn8GL2vebKrDDrPOOn+ihaVldWNuUS3LS7ieVq8bE4vq5sxSyfVU+wFKFS5Z8nZSE3FW4uUXj6jzI/4+bQcEtWFoSD362BN6DEAc1BtmrqmpGTUzowOt2pt4iOPMu/F/0W0pvWFV2iaXdsJMlP5xHYQsJhifXVSLVqg1SgJt2gq0gtbEWXuX24XQAw8eVAOD7OIA5sknNO+57349BiAOGg0zYa/i7IruKk5vmNXLG2aNkmuR7dJSnfUHnktWcbZjP2jEWQn55OYDDx2030gBk+62wozdZwDxYSLMXFENtLCFmUuuTT4sYCLQBvrSLQ804qwMeQN99PHHCTQYs+e2fWxnBsSIhFnOUJi57EDLRifQwhpmrigHGnFWgRtorOJEoyTMZKkZgHhoRpi5evuiEWhhDzOX+UBL6bHmIs6qsAPtsSfYYSjqIkte5ZOZhBkQH80MM1fYAy0qYeaKYqARZzXINmgPf/GQOvTY4/73g4bEk09lPvHlr7AqE4iRVoSZK6yBFrUwc0Ut0NiVRkBnT59WZ8+cUlcucYQArCZLWWU1JjuZBeLF3fi/yt4s6lZtNwuyH7QZdz9obd6Vht8wK7otJTcsp/djVksju9JwlV6D3H1yuhFwNxuVbsvYxIKanlnUY+UULsd+zlpkfm5OfTIyosZGr6tR64TkkhAbHFxrfR+yl7QCiBc3zESr40ysBFob4yzIErOi2+IZ8Rtmollx5n4PEmjVbssNK9BuVgy0wuWIMwAADPGGmWhHnAk70Nwd1bo8lzNxOyoJuiqz6LbokSBhJpoZZ2LZOvOGFVV+Aq3qbZHrGa8UaIXLBY0z//cUAAAJUhpm7dSuY3Ea2cYsYJi1gtya/i4z26D1r0mrHsPboBFnAACUCFOYuewPCbQw0OIaZi7TgWbyQwLEGQAAHmEMM1erAs1ImLXhU5lBmQw0k5/iJM4AANDCHGauZgeauTBr/v7ATLADLWS72SDOAACwSJi1aj9mjWrWftCSFmYuybIwBRpxBgBIvCiFmct0oJkIs64IhpnLfKDV/3wizgAAiRbFMHOZCLQOK0aSHmausAQacQYASKwobGNWiwRavqfLjqygMpmU6u8jzLzk2dDuQEvsTmgvX/pUzc/Ns3d/hEo2m1UDg4Mqn+9V+d5ePRVAM3jDzLsr0mpvye3aCa0vy8tqenrePprA0tKSnlieRFkul204ykT1MKu9k9dymr0T2tL73LrrVrhnyT0oRxKoeld6r6fKjypHEpierf6YeCUmztzDLXFcTERFJpO1j9W5d98+K9jW6qkATChdYlb0xq2/l1P6/lttXr+MxZnH4sKimp9fsqKj+BanrJ85a4WZ+582+l/XXmJWpViqCEOcCcmpcftQT874Kt6Zq/2o1nxyJAG/gZaIOJODlb/z5hvWE3VOTwGiZcPQkHrgwYMsTQMMKLcqs+iNW38vp/T9t9q8fjUjzvz+DI381/5WZVYrlsrCEmdiyZowbh/qSU/w8s5c7UfV8/kNtOArQiNElpa9/OIR9fqrRwkzRJos7T387M/tPzQA1C/KG/+HSZy2MatFni1r7B3VOuONsI8kkKt9RbF9hkqY/er5w+r8yIieAkSb/IEhf2gQaEB9CDMzkhRmrlYHWmyfpa9Zb2Jjo6N6DIgPCTT5QAsA/wgzM5IYZq5WBlosn6myZIElZoiz1185ai8dBlAbYWZGksPM1apAi+WzVTb+B+JsampKfXjyhB4DUAlhZgZhVtCKQIvdM1aWmrHxP5Lg3OlTeghAOYSZGYTZaiuBVvrRzjqUC7TYPWvPf/JbPQTEmyw9G2MnykBZvYSZEYRZZc0MtNjt5+znT//EftMKqn/dRtW3fqvK5vv1FASxd2NODXY7e5q2n6clT1bvqDu8sh8bz5kr55WZZg/IfmSs756zC5exTvrsohnccWdS4QzPLCsj7jTveYXb6e7Expkit1H2jePe1pXLrAw43Ms7X51b6M4yPTurPjjziXrzg2E1W8c2ZHffd7/ac9s+PQZASJjVOiRTya9p8T6w9PdyvPOJavP6Fdb9nJkJs9J7zJ/Cq2T9Sq+h6OcuObPafs5q3RR7R7WV9oPm8vnjuPtBi12c/eA7f6WH/OldM6A23nqXyg9u1FNQj/u3d6uNvc7Bd+3noPXF+1y0fxHkye+ZXoiewreV89wBy8qgTLSuo8OKJO+0lctYJ/1f2F+80wvj7lTvkDWsR+xv1he7w1amOQPy/zqcKfbNsW+PO1V/dwe0lcvbX5wrLppXX8dfv/iG+uXLbzpn+LT/wOfUHdYJgMNPmAn3d9Dl/naL0vO8vPOJavP6VfqaYYLfn6HSfOaWmJXeY/4UXiXrV3oNRT93yZmNxJmoGWgBfhwJtEQv881bYbbj7kOEGULh9754v/qnXz6kxwAE5TfMUJ0TZtyPQci9ZfJDAom997t68uozVpil0s7SHiAMDt51m/rDLx3UYwD8IszMIMzqZzLQEvsIbNy5nzBDKD32wAHV38cxNAG/CDMzcinCrFGmAi2Rj0I6k1H9m3fqMSB8Hv38AT0EoBrCzAzCzBwTgZbIR6K3f1APAeG0a/MGPQSgEifMAmxpjbIIM/MaDbREPhpdvQN6CAinPZ/ZoocAlEOYmUGYNU8jgZbIRySdzuohAEDUEGZmdBFmTecGWtCnK48KACAyCDMzCLPWqSfQeGQAAJEgMSGr4dAYwqz1ggYajw4AIPQIMzPYxqx9ggQajxAAINQIMzMIs/bzG2g8SgCA0CLMzCDMwsNPoPFIAQBCiTAzgzALn1qBxqMFAAgdwswMwiy8VgKtc/XznEcMABAqhJkZhFn42YGW61wVaDxqAIDQIMzMIMyio1yg8cgBAEKBMDOD/ZhFz0qgdTjPfx49AEDbEWZmEGbRZQdalxNoPIIAgLYizMwgzKLPDTQeRQBA2xBmZhBm8SGPIo8kVuxdn1OHdvWqf3JgQP3L+9etnGT8iVv71J1DXSob8EVUXixuXZtVdw11q0d29qpHPlM4fc66PjmPFxQgmQgzMwiz+OHRhLpvS7f653cPqkesMNtjBVpfLqXPccj4zsGsemhHXj1lhZrMXyvSBrpS6u5N3er+LT1q+5qsPV5Kpm3ty6h7N3fbocaLC5AchJkZhFk88YgmWF+uU31tf7+6d2uPyqb9PRVkPplfLreuZ3Vwic+uzdphVi7IKpF5JdIk1gDEG2FmBmEWXzyqCWWH2e0SWGk9JRhZmvbVvWvUlpKY2rc+p7atyeqx4HZbYbd3XU6PAYgbwswMwizeeGQTSFZJyjZkfpeWVSKXf+LW3pUlaBJmm3sbX/I11JtWQ/n6ohFAeBFmZhBm8cejm0AHd+TrXmJWSgJNlqDJtmUmwsy1e5APCgBxQpiZQZglA49wwshqSNno3yQJtE29Zpd0yWEsbrECDUD0EWZmEGbJwaOcMPdt7dZD4TeQS6n+AB8qABA+hJkZhFmy8EgniHwIYHPEPg25iW3PgMgizMwgzJKHRztBSj9ZGQX9JftcAxANhJkZhFky8YgnSF8Ef8G70ry4A1FDmJlBmCUXj3qCZCMaOnlenIDIIMzMIMySjUc+Qfqy0VxFKJ/cBBB+hJkZhBl49BPk2s0FPRQtN2YW9RCAsCLMzCDMIHgGJMjs4rIeAgBzCDMzCDO4eBYkyIWJeT0UHWOzLDUDwowwM4MwgxfPhAS5dnNRTUQsdi5NRnNVLJAEhJkZhBlK8WxImOGrs3oo/BaWltW1aZacAWFEmJnRlXbuS8CLZ0TCvH9pJjJLzz6+MW8HGoBwIczMcMKMHW1jNeIsYeYWl9XhUxN6LLyuTi+q8xHcRg6IO8LMDMIM1RBnCSTbnr1wdlKPhc/MwrIavhad1a9AUhBmZhBmqIU4S6gPr86GMtBkNebxKzOszgRChjAzgzCDH8RZgoUt0CTIZJu4ybklPQVAGBBmZhBm8Is4S7iwBJqE2XuEGRA6EmZZwqxhhBmCIM7Q9kAjzIBwIszMIMwQVCLjbHpyTA/B1a5AI8zKuznDByLQXoSZGYQZ6pHIOFtcmNND8Gp1oBFmlX1y6ZoeAlqPMDODMEO9WK2JIq0KNMIMCCfCzAzCDI0gzrBKswNNwuzdS9OEGRAyhJkZhBkaFbs42zA0pIcqm7wxqodQSbMCjTDz5+zFK3qousHBtXoIaAxhZgZhBhMSueRsYZ7DAvlhOtAIM/8mpv19ICCTzeghoH6EmRmEGUyJXZzl8716qLqZCT6x6YepQLPD7FPCzK9PLl3VQ9X5fb4DlRBmZnSlOwgzGBO/OOv192Y1NzOlh1BLo4HGErPgrt/wd3B6v893oJx8hjAzwQkzNuGGOYldcrZ484Yegh/1BpqE2TssMQvs8tXreqiyfD6vh4DgJMxyVlSgMYQZmiGGS878vWFNjl7WQ/AraKARZvUZ8blKs4elZqgTYWZGV4owQ3PE7lm1cWiTHqpucpxPbNbDb6ARZvU7dva8HqrO73Md8CLMzJAw68sRZmiOWD6zBgYH9VBl8olNPhRQn1qBRpg15uQ5f3HGbjQQFGFmBmGGZotpnPl705q+4W9fUlitUqARZo07O3JRD1W30cc+/QAXYWYGYYZWiOUzzO/qnrGLZ/UQ6lEaaBJmbxNmDXnvw7Nqdq72sV9l6XAmm9VjQHWEmRlyHxJmaIWYxpm/JQqT42PsUqNBbqDNE2ZGvHb8jB6qju3N4BdhZoYdZmz8jxaJ5TNN9v3kZ7szMXX1gh5CvSTQ/u7MJGFmwPFT5/RQdcQZ/JAwYz9mjSPM0Gqxfbb5ffO6OjKsh9AIWXKGxhx996SvVZqZTFZt3b5djwHlEWZmEGZoh9g+43bt3q2Hqpu5OaWm2OcZQuAlK878IMxQC2FmBmGGdonts04+sel3D+rXPj6uh4D2GP74gvr4vL9PaW7bvkMPAasRZmYQZminWD/zdu6+VQ9Vd+PaZZaeoa1+8eq7eqg6+YODJWeohDAzgzBDu8X62bfrFn+rNgVLz9AustTs5OmP9Vh1fv/gQPIQZmZ0pRRhhraL9TNQPrXpdykDS8/QLk+/8Loeqm3vbfv0EFBAmJlhh1nO+gK0Wez/PNgT4M3s8il/q5YAU94+ecb3tmY7b9nNjmexCmFmBmGGMIl9nMkuNTYE2Cnt1XPH9BjQXNMzs+qHzx3VY7XdceBzeghwEGZmSJMRZgiTRKxYD/KmduW3wxwQHS3xsxfeUOMTlQ8g7yVLzWQ1PeAizMwgzBA+Sv1/CES5WSMQRvcAAAAASUVORK5CYII=", + "size": "Stretch" + } + ] + }, + { + "type": "Container", + "spacing": "None", + "items": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAIpCAYAAAAyxDaxAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAg5SURBVHhe7dUxAcAgEMDAp6pxiSS64CJ3SyRkzT53ACDkewWADPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwByzA+AHPMDIMf8AMgxPwBiZn6z1waYNbhEmwAAAABJRU5ErkJggg==", + "items": [ + { + "type": "TextBlock", + "id": "title", + "spacing": "Medium", + "size": "Large", + "weight": "Bolder", + "color": "Light", + "text": "欢迎回来", + "wrap": true + }, + { + "type": "TextBlock", + "id": "body", + "size": "Medium", + "color": "Light", + "text": "我能帮上什么忙吗", + "wrap": true + } + ], + "width": "stretch" + } + ] + } + ] + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0", + "speak": "欢迎回来!" +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Controllers/BotController.cs b/solutions/HospitalitySample/Controllers/BotController.cs new file mode 100644 index 0000000000..7285cf3a90 --- /dev/null +++ b/solutions/HospitalitySample/Controllers/BotController.cs @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Integration.AspNet.Core; +using Microsoft.Bot.Builder.StreamingExtensions; + +namespace HospitalitySample.Controllers +{ + [Route("api/messages")] + [ApiController] + public class BotController : ControllerBase + { + private readonly IBotFrameworkHttpAdapter _adapter; + private readonly WebSocketEnabledHttpAdapter _webSocketEnabledHttpAdapter; + private readonly IBot _bot; + + public BotController(IBotFrameworkHttpAdapter httpAdapter, WebSocketEnabledHttpAdapter webSocketEnabledHttpAdapter, IBot bot) + { + _adapter = httpAdapter; + _webSocketEnabledHttpAdapter = webSocketEnabledHttpAdapter; + _bot = bot; + } + + [HttpPost] + public async Task PostAsync() + { + // Delegate the processing of the HTTP POST to the adapter. + // The adapter will invoke the bot. + await _adapter.ProcessAsync(Request, Response, _bot); + } + + [HttpGet] + public async Task StartWebSocketAsync() + { + // Delegate the processing of the Websocket Get request to the adapter. + // The adapter will invoke the bot. + await _webSocketEnabledHttpAdapter.ProcessAsync(Request, Response, _bot); + } + } +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Deployment/Resources/LU/de/General.lu b/solutions/HospitalitySample/Deployment/Resources/LU/de/General.lu new file mode 100644 index 0000000000..71039f2183 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/LU/de/General.lu @@ -0,0 +1,523 @@ +> # Intent definitions + +## Cancel +- Abbrechen +- App stornieren +- Absage +- Absagen +- Streichung nie +- Absage +- Abgebrochen +- abgebrochen +- Nichts tun +- Tu das nicht +- Das nicht mehr tun +- Vergessen Sie es +- Gehen Sie weg +- Nur absagen +- Nur absagen +- Nervendenken +- Vergessen Sie es +- Egal, absagen +- Nichts dagegen, dass +- Keine Absage +- Keine Kündigung +- Kein Absagen +- Kein Absagen, dass +- Keine Ahnung +- Keine Absage +- Kein Absagen +- Nichts egal +- Nichts bitte +- oh absagen +- Oh nicht, dass +- Bitte nichts tun +- Beenden +- Tut mir leid, nicht + + +## Confirm +- Bestätigen +- Tu es +- Ende +- Für die +- Großartig +- Ich bin mir sicher +- Es ist in Ordnung +- Keine Zweifel +- Natürlich +- Oh ja +- Oh ja +- Okay +- OK für jetzt +- Okay +- perfekt +- Perfektes Dankeschön +- Richting +- Richtig ja +- Klingt gut +- Hört sich gut an +- Klingt gut +- Hört sich gut an +- Klingt großartig +- Klingt perfekt +- Sicher +- Sicher tut +- Sicher ist +- Sicher Sache +- Ja, ja +- Vielen Dank +- Danke ja +- Das ist richtig +- Das ist richtig +- Das Recht +- Das klingt gut +- Das ist in Ordnung +- Das ist gut +- Sehr gut +- Bereits +- Ja +- Ja Liebling +- Ja bro +- Ja, Kumpel +- Ja cool +- Ja voran +- Ja, los geht es +- Ja gut +- Ja + + +## Escalate +- Kann ich mit einer Person sprechen +- Kontaktaufnahme +- Kontakt zum Kundendienst +- Kundenservice +- Menschliche Dienste +- Ich brauche manuellen Kundenservice +- Ich brauche echte menschliche Hilfe +- Ich brauche Unterstützung +- Ich möchte mit einem Menschen sprechen +- Ich möchte mit einem echten Menschen sprechen +- Gibt es jemanden, mit dem ich sprechen kann +- Gibt es einen echten Menschen +- Gibt es eine echte Person +- Sprechen Sie mit einem Menschen + + +## FinishTask +- Alles fertig +- Alles gesetzt +- fertig +- Beenden +- Fertig +- Fertig mit +- Ich bin fertig +- Ich bin fertig +- Es endete +- Es ist geschafft +- Es ist fertig +- Nur nur sein +- Senden +- Einreichen + + +## GoBack +- Zurück +- Bitte zurück +- Zurück zu +- Zurück zum letzten +- Zurück zum letzten Schritt +- Ich melde mich wieder +- Bitte melden Sie sich +- Endlich wieder +- Zurück +- Zurück +- Gehen Sie bitte zurück +- Zurück zu +- Letzter Schritt +- No go back to +- No no go back to +- Bitte zurück +- Rückgabe + + +## Help +- Jede Hilfe +- Können Sie helfen +- Kannst du mir helfen +- Geben Sie mir Hilfe +- Hilfe +- Wie bekomme ich es +- Wie es geht +- Ich brauche Hilfe +- Ich brauche ein wenig Hilfe +- Ich brauche Hilfe +- Gibt es Hilfe +- Offene Hilfe +- Bitte helfen +- Einige Hilfe +- Wer kann mir helfen + +## Logout +- Unterschrift +- Vergesst mich +- Unterschreiben +- logout +- Log-out + +## None +- Alle +- Ich will sie alle +- Ich möchte sie alle + + +## ReadAloud +- Können Sie es lesen +- Können Sie lesen, dass +- Können Sie das für mich lesen +- Können Sie Seite laut lesen +- Könntest du mir sagen, was das sagt +- Details laut +- Ich lese das für mich +- Ich muss diese Seite hören +- Ich möchte, dass Sie das für mich lesen +- Lesen Sie diese Seite +- Lesen Sie +- Lesen Sie es +- Lesen Sie mir bitte die Seite +- Lesen Sie bitte meine neueste E-Mail +- Lesen Sie hier +- Bitte lesen Sie das laut +- Lesen Sie bitte diese Seite +- Bitte lesen Sie diese Seite laut +- Bitte lesen Sie diese Seite laut aus +- Lesen Sie das mir +- Lesen Sie alle auf dem Bildschirm zu mir +- Vorlesen +- Den aktuellen Text auf dem Bildschirm vorlesen +- Vorlesen Sie die Akte laut +- Lesen Sie es +- Vorlesen +- Lesen Sie es laut +- Lesen Sie es auslaut +- Lesen Sie es bitte +- Lesen Sie es mir +- Lesen Sie mir diese Seite +- Lesen Sie meine Liste +- Vorlesen vorlesen +- Leseseite +- Seite laut lesen +- Seite lesen +- Satz laut vorgelesen +- Text gelesen +- Text laut gelesen +- Lesen Sie, dass +- Lesen Sie das laut +- Lesen Sie die Seite +- Lesen Sie die Seite auf dem Bildschirm zu mir +- Die Seite laut vorlesen +- Lesen Sie die Seite zu mir +- Text zu mir lesen +- Lesen Sie die Wörter auf dieser Seite +- Lesen Sie das bitte für mich +- Lesen Sie diese Seite +- Lesen Sie diese Seite laut +- Diese Seite laut vorlesen +- Lesen Sie diese Seite zu mir +- Lesen Sie mir +- Lesen Sie, was mir gerade auf dem Bildschirm steht +- Sprechen Sie von dem, was auf dieser Seite ist +- Lesen Sie damit +- Erzähl mir die Informationen auf dem Bildschirm +- Sagen Sie mir den aktuellen Text auf dem Bildschirm +- Vokalisieren Sie, was s auf der Seite +- Was sagt die Seite +- Ich bitte Sie, das für mich zu lesen +- Würdest du das laut lesen bitte +- Das würden Sie mir bitte vorlesen + + +## Reject +- Ich mag es nicht +- Ich lehne ab +- Negative +- Nie +- Nein +- Nein, das will ich nicht +- Spätestens +- Kein Abschied +- Nicht mehr nein +- Oh nein +- Im Nein auf der +- Nein danke +- Nein, das nicht +- Keine Ablehnung +- Nein, danke +- Nein, danke +- Auf keinen Fall +- Kein Unrecht +- Nein +- Nicht +- Überhaupt nicht +- Nicht einmal nah +- Nicht genau +- Jetzt nicht +- Nicht ganz +- Nicht erst jetzt +- Nicht das +- Nicht viel +- Oh nein +- Ablehnen +- Absage + + +## Repeat +- Wieder +- Könntest du es noch einmal sagen +- Ich hörte nicht wieder +- Ich habe nicht gehört +- Entschuldigung +- Wiederholen +- Wiederholung bitte +- Wiederholen Sie das +- Sag noch einmal +- Sagen Sie bitte noch einmal +- Sagen Sie das noch einmal +- Tut mir Leid +- Was +- Was hast du gesagt +- Was war das wieder + + +## SelectAny +- Eins davon +- Jeder ist ok +- Jeder ist in Ordnung +- Etwas +- Wählen Sie jemanden +- Wählen Sie einen von ihm zufällig aus +- Entscheiden Sie sich für einen zufälligen +- Entscheiden Sie sich für irgendetwas +- Wählen Sie eine Zufallswahl aus +- Wählen Sie einen Zufallsfall aus +- Wählen Sie eine +- Wählen Sie jede Wahl +- Wählen Sie eine davon aus + + +## SelectItem +- Letzter wählen +- Wählen Sie die letzte +- Wählen Sie Nr. 2 +- Wählen Sie die {DirectionalReference=Unten links} +- Die erste Wahl treffen +- Wählen Sie die vierte +- Wählen Sie die {DirectionalReference=Oben links} Wahl +- Wählen Sie die {DirectionalReference=Oben rechts} Eine +- Wählen {DirectionalReference=Oben rechts} +- Wählen {DirectionalReference=Oben rechts} Eine +- Ich mag {DirectionalReference=Links} Eine +- Ich mag zweite +- Ich mag den zweiten +- Ich mag die {DirectionalReference=Unteres} Eine +- Ich mag den ersten +- Ich mag den dritten +- Ich mag die dritte Wahl +- Ich mag die {DirectionalReference=Oben rechts} Eine +- Ich mag die {DirectionalReference=Oben rechts} +- Ich mag {DirectionalReference=Oben rechts} +- Ich möchte {DirectionalReference=Unteres} +- Ich will Vierter +- Ich möchte {DirectionalReference=Links} +- Ich möchte {DirectionalReference=Richting} Eine +- Ich will den ersten +- Ich will die vierte Wahl +- Ich will die {DirectionalReference=Links} +- Ich will die {DirectionalReference=Niedriger} Wahl +- Ich will die {DirectionalReference=Richting} Eine +- Ich will den zweiten +- Ich will den dritten +- Ich möchte wählen {DirectionalReference=Unteres} Eine +- Ich möchte wählen {DirectionalReference=Unteres Recht} +- Ich möchte wählen {DirectionalReference=Richting} +- Ich möchte den zweiten wählen +- Ich möchte die erste auswählen +- Ich möchte den vierten wählen +- Ich möchte die letzte Wahl treffen +- Ich möchte die {DirectionalReference=Links} Eine +- Ich möchte die {DirectionalReference=Niedriger} Wahl +- Ich möchte die {DirectionalReference=Richting} +- Ich möchte den Dritten wählen +- Entscheiden Sie sich für den ersten +- Entscheiden Sie sich für Letzte +- Entscheiden Sie sich für {DirectionalReference=Links} +- Entscheiden Sie sich für {DirectionalReference=Richting} Eine +- Entscheiden Sie sich für den letzten +- Entscheiden Sie sich für die {DirectionalReference=Links} Eine +- Entscheiden Sie sich für die {DirectionalReference=Niedriger} Wahl +- Entscheiden Sie sich für die {DirectionalReference=Richting} +- Entscheiden Sie sich für die zweite +- Für die zweite Wahl entscheiden +- Wählen Sie den vierten +- Auswählen {DirectionalReference=Niedriger} Eine +- Wählen Sie Nr. 5 +- Wählen Sie die {DirectionalReference=Unteres} Wahl +- Wählen Sie die erste +- Die letzte Wahl wählen +- Wählen Sie die {DirectionalReference=Niedriger} Eine +- Wählen Sie die {DirectionalReference=Richting} Eine +- Wählen Sie die dritte +- Wählen Sie die {DirectionalReference=Oben rechts} +- Dritter auswählen +- Auswählen {DirectionalReference=Oberen} +- Was ist mit dem letzten +- Was ist mit dem dritten + + +## SelectNone +- Ich möchte keinen wählen +- Ich möchte keine auswählen +- Ich will keines von beiden +- Ich will keine von ihnen +- Weder +- Keine davon +- Weder +- Weder einer von ihnen +- Weder danke +- nichts +- Keine +- Keiner von ihnen +- Nichts davon +- Keiner von ihnen dankt +- Nichts davon +- Nichts davon +- Sie sehen schlecht aus, können Sie mir andere Möglichkeiten geben + + +## ShowNext +- Und danach +- Anzeige mehr +- Displays mehr +- Geben Sie mir mehr +- Vorwärts +- Zum nächsten +- Gehen Sie zu den nächsten drei Punkten +- Ich muss zum nächsten +- Ich will mehr +- Mehr +- Zum nächsten +- nächster +- Mehr verraten +- Zeigt mir den Nächsten +- Mehr zeigen +- Zeigen Sie die nächsten 3 +- Die nächsten 4 Artikel anzeigen +- Zeigen Sie die nächste +- Die nächsten zwei Optionen anzeigen +- Mehr sagen +- Mehr sagen +- Was ist mit dem nächsten +- Was danach +- Was danach kommt +- Mehr dazu +- Was kommt als nächstes +- Was ist die nächste 2 +- Was kommt als nächstes + + +## ShowPrevious +- Zurück zum letzten +- Die vorherige mitbringen +- Anzeige vorher +- Zurück zum letzten +- Zurück zum letzten +- Zurück zum vorherigen +- Zurück zum letzten +- Gehen Sie vorher +- Zum vorherigen +- Zum vorherigen +- Voriges +- Vorigen bitte +- Zurück zum vorherigen +- Offenbaren +- Offenlegung zuvor +- Show früher +- Zeigen Sie mir die vorherige +- Show previous +- Zeigen Sie die vorherige +- Was davor +- Was ist die vorherige +- Was ist da + + +## StartOver +- Klar und wieder starten +- Könntest du es überfängt +- Bitte wieder anfangen +- Neu starten +- Neustart +- Wieder starten +- Start +- Start von vorn +- Anfangen +- Ein neues Kapitel aufschlagen + + +## Stop +- Baby einfach nur ruhig sein +- Sei still +- Seien Sie jetzt ruhig +- Kommen Sie zum Halt +- Entlassen +- Ende +- Ende +- Ausstieg +- Ausreise-Stopp +- Gott verschlossen +- Hey Stop +- Ich liebe dich, nicht mehr zu reden +- Ich meine, aufhören zu hören +- Ich sagte Halt +- Nur ruhig sein +- Mein Gott verschlossen +- Egal, halt +- Nicht ruhig sein +- Jetzt nicht ruhig sein +- No no no no no no no no no no no no not not halt to talking +- Keine Schließung +- Kein Halt +- Niemand interessiert sich nicht mehr zu reden +- Nirgendwo nur ruhig sein +- ach mein Gott verschlossen +- ok Stop +- ruhig +- Jetzt ruhig +- Halten Sie die Klappe +- Halt den Mund +- Abschalten ruhig +- Schweigen +- Mund zu +- Halten Sie bitte an +- hör auf zu reden +- Ausschalten +- Haltestelle abbiegen + + +> # Entity definitions + +$DirectionalReference:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:number + +$PREBUILT:ordinal + + +> # Phrase list definitions + + +> # List entities + + diff --git a/solutions/HospitalitySample/Deployment/Resources/LU/en/General.lu b/solutions/HospitalitySample/Deployment/Resources/LU/en/General.lu new file mode 100644 index 0000000000..7ede276df9 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/LU/en/General.lu @@ -0,0 +1,521 @@ +> # Intent definitions + +## Cancel +- cancel +- cancel app +- cancel cancel +- cancel it +- cancel never mind +- cancel that +- canceled +- cancelled +- do nothing +- don't do that +- don't do that anymore +- forget about it +- go away +- just cancel +- just cancel it +- nerver mind +- never mind +- never mind cancel +- never mind cancel that +- no cancel +- no cancel cancel +- no cancel it +- no cancel that +- no never mind +- no no cancel +- no no cancel it +- nothing never mind +- nothing please +- oh cancel +- oh don't do that +- please do nothing +- quit +- sorry, don't do it + + +## Confirm +- confirm +- do it +- fine +- go for it +- great +- i'm sure +- it's fine +- no doubt +- of course +- oh yeah +- oh yes +- ok +- ok for now +- okay +- perfect +- perfect thank you +- right +- right yes +- sounds good +- sounds good thank you +- sounds good thanks +- sounds good to me +- sounds great +- sounds perfect +- sure +- sure does +- sure is +- sure thing +- sure yes +- thank you very much +- thank you yes +- that is correct +- that is right +- that right +- that sounds good +- that's fine +- this is good +- very good +- ya +- yeah +- yeah baby +- yeah bro +- yeah buddy +- yeah cool +- yeah go ahead +- yeah go for it +- yeah good +- yes + + +## Escalate +- can i talk to a person +- contact support +- contact the customer service +- customer service +- human service +- i need manual customer service +- i need real human help +- i need support +- i want to talk to a human +- i want to talk to a real human +- is there any person i can talk to +- is there any real human +- is there any real person +- talk to a human + + +## FinishTask +- all finished +- all set +- done +- finish +- finished +- finished with +- i am done +- i am finished +- it finished +- it's done +- it's finished +- just be +- submit +- submit it + + +## GoBack +- back +- back please +- back to +- back to last +- back to last step +- get back +- get back please +- get back to last +- go back +- go back on +- go back please +- go back to +- last step +- no go back to +- no no go back to +- please return +- return + + +## Help +- any help +- can you help +- can you help me +- give me some help +- help +- how can i get it +- how to do it +- i need help +- i need some assist +- i need some help +- is there any help +- open help +- please help +- some help +- who can help me + +## Logout +- signout +- forget me +- sign out +- logout +- log out + +## None +- all of them +- i want them all +- i want to all of them + + +## ReadAloud +- can you read it +- can you read that +- can you read that for me +- can you you read page aloud +- could you tell me what that says +- detail aloud what that says +- hey read that for me +- i need to hear this page +- i would like you to read that for me +- make a reading of this page +- please read +- please read it +- please read me the page +- please read my latest email +- please read this +- please read this out loud +- please read this page +- please read this page aloud +- please read this page out loud +- please read this to me +- read all on the screen to me +- read aloud +- read aloud the current text onscreen +- read file aloud +- read it +- read it aloud +- read it out loud +- read it outloud +- read it please +- read it to me +- read me this page +- read my to list +- read outloud +- read page +- read page aloud +- read page outloud +- read sentence out loud +- read text +- read text aloud +- read that +- read that out loud +- read the page +- read the page onscreen to me +- read the page out loud +- read the page to me +- read the text to me +- read the words on this page +- read this for me please +- read this page +- read this page aloud +- read this page out loud +- read this page to me +- read to me +- read what is currently on the screen to me +- speak of what is on this page +- start reading this +- tell me about the information on the screen +- tell me the current text on screen +- vocalize what s on the page +- what does the page say +- would you please read that for me +- would you read that out loud please +- would you read that to me please + + +## Reject +- i don't like it +- i reject +- negative +- never +- no +- no i don't want that +- no later +- no leave it +- no more no +- no no +- no no no +- no no thank you +- no not that one +- no reject it +- no thank you +- no thanks +- no way +- no wrong +- nope +- not +- not at all +- not even close +- not exactly +- not now +- not quite +- not right now +- not that +- nothing much +- oh no +- reject +- reject it + + +## Repeat +- again +- could you say it again +- i didn't hear repeat again +- i have not heard +- pardon +- repeat +- repeat please +- repeat that +- say again +- say again please +- say that again +- sorry +- what +- what did you say +- what was that again + + +## SelectAny +- any of it +- any one is ok +- anyone is fine +- anything +- choose anyone +- choose one of it randomly +- opt for a random one +- opt for any of it +- select a random choice +- select a random one +- select any +- select any choice +- select any of it + + +## SelectItem +- choose last +- choose last one +- choose no.2 +- choose the {DirectionalReference=bottom left} +- choose the first choice +- choose the fourth one +- choose the {DirectionalReference=upper left} choice +- choose the {DirectionalReference=upper right} one +- choose {DirectionalReference=top right} +- choose {DirectionalReference=top right} one +- i like {DirectionalReference=left} one +- i like second +- i like second one +- i like the {DirectionalReference=bottom} one +- i like the first one +- i like the third +- i like the third choice +- i like the {DirectionalReference=top right} one +- i like the {DirectionalReference=upper right} +- i like {DirectionalReference=upper right} +- i want {DirectionalReference=bottom} +- i want fourth +- i want {DirectionalReference=left} +- i want {DirectionalReference=right} one +- i want the first +- i want the fourth choice +- i want the {DirectionalReference=left} +- i want the {DirectionalReference=lower} choice +- i want the {DirectionalReference=right} one +- i want the second one +- i want third one +- i want to choose {DirectionalReference=bottom} one +- i want to choose {DirectionalReference=lower right} +- i want to choose {DirectionalReference=right} +- i want to choose second one +- i want to choose the first one +- i want to choose the fourth +- i want to choose the last choice +- i want to choose the {DirectionalReference=left} one +- i want to choose the {DirectionalReference=lower} choice +- i want to choose the {DirectionalReference=right} +- i want to choose third +- opt for first one +- opt for last +- opt for {DirectionalReference=left} +- opt for {DirectionalReference=right} one +- opt for the last one +- opt for the {DirectionalReference=left} one +- opt for the {DirectionalReference=lower} choice +- opt for the {DirectionalReference=right} +- opt for the second +- opt for the second choice +- select fourth one +- select {DirectionalReference=lower} one +- select no.5 +- select the {DirectionalReference=bottom} choice +- select the first +- select the last choice +- select the {DirectionalReference=lower} one +- select the {DirectionalReference=right} one +- select the third one +- select the {DirectionalReference=upper right} +- select third +- select {DirectionalReference=upper} +- what about the last +- what about the third one + + +## SelectNone +- i don't want to choose any one +- i don't want to select any one +- i want neither of them +- i want none of them +- neither +- neither of those +- neither one +- neither one of them +- neither thank you +- none +- none none +- none none of them +- none of them +- none of them thank you +- none of these +- none of those +- they look bad, can you give me other choices + + +## ShowNext +- and after that +- display more +- displays more +- give me more +- go forward +- go to the next one +- go to the next three items +- i need to go to the next one +- i want more +- more +- move to the next one +- next +- reveal more +- show me the next +- show more +- show the next 3 +- show the next 4 items +- show the next one +- show the next two options +- tell me more +- tell more +- what about next one +- what after that +- what's after that +- what's more +- what's next +- what's the next 2 +- what's up next + + +## ShowPrevious +- back to the last one +- bring the previous one +- display previously +- get back to the last one +- go back to last one +- go back to previous +- go back to the last one +- go previously +- go to the previous +- go to the previous one +- previous one +- previous one please +- return to the previous one +- reveal previous +- reveal previously +- show earlier +- show me the previous one +- show previous +- show the previous one +- what before that +- what is the previous +- what's before that + + +## StartOver +- clear and start again +- could you start it over +- please begin again +- restart +- restart it +- start again +- start it over +- start over +- start over it +- turn over a new leaf + + +## Stop +- baby just be quiet +- be quiet +- be quiet now +- come on stop +- dismiss +- end +- end it +- exit exit +- exit stop +- god shut up +- hey stop +- i love you to stop talking +- i mean stop listening +- i said stop +- just be quiet +- my god shut up +- never mind stop +- no be quiet +- no be quiet now +- no no no no stop talking +- no shut up +- no stop +- nobody cares stop talking +- nowhere just be quiet +- oh my god shut up +- ok stop stop +- quiet +- quiet now +- shut the fuck up +- shut up +- shut up be quiet +- shut up quiet +- shut your mouth +- stop please +- stop talking +- turn off +- turn off stop + + +> # Entity definitions + +$DirectionalReference:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:number + +$PREBUILT:ordinal + + +> # Phrase list definitions + + +> # List entities diff --git a/solutions/HospitalitySample/Deployment/Resources/LU/es/General.lu b/solutions/HospitalitySample/Deployment/Resources/LU/es/General.lu new file mode 100644 index 0000000000..87fdb01677 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/LU/es/General.lu @@ -0,0 +1,523 @@ +> # Intent definitions + +## Cancel +- Cancelar +- cancelar aplicación +- cancelar cancelar +- cancelarlo +- cancelar no importa +- cancelar que +- Cancelado +- Cancelado +- no hacer nada +- No hagas eso +- no hagas eso ya +- Olvídalo +- Vete +- simplemente cancelar +- simplemente cancelarlo +- Mente de los nervios +- Olvídalo +- no importa cancelar +- no importa cancelar que +- no cancelar +- no cancelar cancelar +- no cancelarlo +- no cancelar que +- no no importa +- no no cancelar +- no no cancelarlo +- nada no importa +- nada por favor +- Oh cancelar +- Oh no hagas eso +- por favor no hacer nada +- Dejar +- lo siento, no lo hagas + + +## Confirm +- Confirmar +- Hazlo +- Final +- ir a por ello +- Gran +- Estoy seguro +- Está bien +- Sin duda +- Claro +- Venga, sí +- Venga, sí +- Vale +- OK por ahora +- Bien +- Perfecto +- perfecto gracias +- Correcto +- derecho sí +- Suena bien +- suena bien gracias +- suena bien gracias +- me suena bien +- Excelente +- suena perfecto +- Seguro +- seguro que no +- seguro es +- Claro +- seguro que sí +- Muchas gracias +- Gracias sí +- que es correcto +- que es correcto +- ese derecho +- que suena bien +- Está bien +- Está bueno +- Muy bien +- ya +- Sí +- Sí bebé +- sí bro +- sí amigo +- sí fresco +- sí adelante +- sí ir a por ello +- sí bueno +- Sí + + +## Escalate +- puedo hablar con una persona +- Contactar con el soporte +- Contacte con el servicio al cliente +- servicio al cliente +- servicio humano +- necesito servicio al cliente manual +- necesito ayuda humana real +- necesito apoyo +- Quiero hablar con un humano +- Quiero hablar con un humano real +- ¿Hay alguna persona con la que pueda hablar +- ¿Hay algún humano real +- ¿Hay alguna persona real +- hablar con un humano + + +## FinishTask +- todo terminado +- Todo listo +- Hecho +- Terminar +- Terminado +- terminado con +- Estoy hecho +- Estoy acabado +- terminó +- Está hecho +- ha terminado +- sólo ser +- Enviar +- enviarlo + + +## GoBack +- Atrás +- volver por favor +- volver a +- volver al último +- volver al último paso +- Vuelve +- volver por favor +- volver al último +- Volver +- volver a +- volver por favor +- volver a +- último paso +- no volver a +- no no volver a +- por favor regrese +- devolución + + +## Help +- cualquier ayuda +- puede ayudar a +- Me puedes ayudar +- Dame un poco de ayuda +- Ayuda +- ¿Cómo puedo conseguirlo +- Cómo hacerlo +- Necesito ayuda +- necesito ayuda +- necesito ayuda +- ¿Hay alguna ayuda +- abrir ayuda +- por favor ayuda +- algo de ayuda +- que me puede ayudar + +## Logout +- SignOut +- me olvido +- cerrar sesión +- Cerrar sesión +- cerrar sesión + +## None +- todos ellos +- Quiero todos ellos +- Quiero a todos ellos + + +## ReadAloud +- puede leerlo +- puede leer que +- ¿Puedes leer eso para mí +- ¿puede usted leer la página en voz alta +- ¿podría decirme lo que dice +- detalle en voz alta lo que dice +- He y leído que para mí +- necesito escuchar esta página +- me gustaría que usted lea que para mí +- hacer una lectura de esta página +- por favor, lea +- por favor, léalo +- por favor, Léeme la página +- por favor lea mi último correo electrónico +- por favor lea este +- por favor lea esto en voz alta +- por favor lea esta página +- por favor lea esta página en voz alta +- por favor, lea esta página en voz alta +- por favor, Léeme esto +- leer todo en la pantalla para mí +- leer en voz alta +- leer en voz alta el texto actual en pantalla +- Leer archivo en voz alta +- Léelo +- leerlo en voz alta +- leerlo en voz alta +- leerlo Outloud +- leerlo por favor +- Léelo a mí +- leer me esta página +- leer mi lista +- leer Outloud +- Página de lectura +- leer la página en voz alta +- leer la página Outloud +- leer la oración en voz alta +- Leer texto +- Leer texto en voz alta +- leer que +- leer que en voz alta +- leer la página +- leer la página en pantalla para mí +- leer la página en voz alta +- leer la página para mí +- leer el texto para mí +- leer las palabras en esta página +- leer esto para mí por favor +- leer esta página +- leer esta página en voz alta +- leer esta página en voz alta +- leer esta página para mí +- leer a mí +- leer lo que está actualmente en la pantalla para mí +- hablar de lo que está en esta página +- empezar a leer este +- Cuéntame sobre la información en la pantalla +- dime el texto actual en la pantalla +- vocalizar lo que s en la página +- ¿Qué dice la página +- ¿podría por favor leer eso para mí +- ¿leería eso en voz alta por favor +- ¿me lo lees por favor + + +## Reject +- No me gusta +- i rechazar +- Negativo +- Nunca +- no +- no, yo no quiero que +- no más tarde +- no dejarlo +- no más no +- no no +- En el no en el +- no no gracias +- no no que uno +- no rechazarlo +- No, gracias +- No, gracias +- No es posible +- no está mal +- No +- No +- De nada +- ni siquiera cerca +- No exactamente +- Ahora no +- no muy +- no en este momento +- no es que +- Nada del otro mundo +- No +- Rechazar +- rechazarlo + + +## Repeat +- Otra vez +- ¿podría decirlo de nuevo +- Yo no oí repetir de nuevo +- no he escuchado +- Disculpa +- Repetir +- repetir por favor +- repetir que +- Cómo +- decir otra vez por favor +- decir que de nuevo +- Lo siento +- Qué +- Qué has dicho +- ¿Qué fue eso de nuevo + + +## SelectAny +- cualquiera de ella +- cualquier uno está bien +- alguien está bien +- Nada +- elegir a cualquiera +- elegir uno de ellos al azar +- optar por uno aleatorio +- optar por cualquiera de ellos +- seleccionar una opción aleatoria +- seleccionar uno aleatorio +- Seleccione cualquier +- Seleccione cualquier opción +- seleccionar cualquiera de ellos + + +## SelectItem +- elegir último +- elegir último uno +- Elija no. 2 +- Elija el {DirectionalReference=abajo a la izquierda} +- elegir la primera opción +- elegir el cuarto uno +- Elija el {DirectionalReference=arriba a la izquierda} Elección +- Elija el {DirectionalReference=arriba a la derecha} Una +- Elegir {DirectionalReference=arriba a la derecha} +- Elegir {DirectionalReference=arriba a la derecha} Una +- Me gusta {DirectionalReference=Izquierda} Una +- me gusta segundo +- me gusta segundo uno +- me gusta el {DirectionalReference=Parte inferior} Una +- me gusta el primero +- me gusta la tercera +- me gusta la tercera opción +- me gusta el {DirectionalReference=arriba a la derecha} Una +- me gusta el {DirectionalReference=arriba a la derecha} +- Me gusta {DirectionalReference=arriba a la derecha} +- Quiero {DirectionalReference=Parte inferior} +- Quiero cuarto +- Quiero {DirectionalReference=Izquierda} +- Quiero {DirectionalReference=Correcto} Una +- Quiero la primera +- Quiero la cuarta opción +- Quiero que el {DirectionalReference=Izquierda} +- Quiero que el {DirectionalReference=Inferior} Elección +- Quiero que el {DirectionalReference=Correcto} Una +- Quiero que el segundo +- Quiero tercer uno +- Quiero elegir {DirectionalReference=Parte inferior} Una +- Quiero elegir {DirectionalReference=abajo a la derecha} +- Quiero elegir {DirectionalReference=Correcto} +- Quiero elegir un segundo +- Quiero elegir el primero +- Quiero elegir el cuarto +- Quiero elegir la última opción +- Quiero elegir el {DirectionalReference=Izquierda} Una +- Quiero elegir el {DirectionalReference=Inferior} Elección +- Quiero elegir el {DirectionalReference=Correcto} +- Quiero elegir tercero +- optar por primero uno +- optar por el último +- optar por {DirectionalReference=Izquierda} +- optar por {DirectionalReference=Correcto} Una +- optar por el último +- optar por el {DirectionalReference=Izquierda} Una +- optar por el {DirectionalReference=Inferior} Elección +- optar por el {DirectionalReference=Correcto} +- optar por el segundo +- optar por la segunda opción +- seleccionar cuarto uno +- Seleccione {DirectionalReference=Inferior} Una +- Seleccione no. 5 +- Seleccione la {DirectionalReference=Parte inferior} Elección +- Seleccione la primera +- Seleccione la última opción +- Seleccione la {DirectionalReference=Inferior} Una +- Seleccione la {DirectionalReference=Correcto} Una +- Seleccione la tercera +- Seleccione la {DirectionalReference=arriba a la derecha} +- seleccionar tercero +- Seleccione {DirectionalReference=Superior} +- ¿Qué pasa con la última +- ¿Qué pasa con el tercero + + +## SelectNone +- no quiero elegir uno +- no quiero seleccionar uno +- Quiero ninguno de ellos +- Quiero ninguno de ellos +- Ni +- ninguno de los +- ni uno +- ni uno de ellos +- ni gracias +- Ninguno +- Ninguno Ninguno +- Ninguno Ninguno de ellos +- ninguno de ellos +- ninguno de ellos gracias +- ninguno de estos +- ninguno de los +- se ven mal, ¿puedes darme otras opciones + + +## ShowNext +- y después de eso +- Mostrar más +- muestra más +- Dame más +- seguir adelante +- ir a la siguiente +- ir a los siguientes tres artículos +- necesito ir a la siguiente +- Quiero más +- Más +- pasar a la siguiente +- próximo +- revelar más +- Muéstrame el siguiente +- Mostrar más +- Mostrar los próximos 3 +- Mostrar los siguientes 4 artículos +- Mostrar el siguiente +- Mostrar las siguientes dos opciones +- Cuéntame más +- decir más +- ¿Qué hay de la próxima +- lo que después de que +- lo que está después de que +- lo que es más +- lo que sigue +- ¿Cuál es el próximo 2 +- ¿Qué pasa después + + +## ShowPrevious +- volver a la última +- traer el anterior +- Mostrar previamente +- volver a la última +- volver a la última +- volver a la anterior +- volver a la última +- ir previamente +- ir a la anterior +- ir a la anterior +- uno anterior +- anterior por favor +- volver a la anterior +- revelar anterior +- revelar previamente +- Mostrar anteriormente +- Muéstrame el anterior +- Mostrar anterior +- Mostrar el anterior +- lo que antes de que +- ¿Cuál es el anterior +- lo que es antes de que + + +## StartOver +- claro y empezar de nuevo +- podría empezar más +- por favor, empiece de nuevo +- Reiniciar +- reiniciarlo +- empezar de nuevo +- iniciarlo +- empezar de más de +- empezar por encima de ella +- Dar vuelta a la página + + +## Stop +- bebé sólo estar tranquilo +- Callado +- estar tranquilo ahora +- vamos a parar +- Despedir +- Final +- terminar +- salida salida +- parada de salida +- Dios Cállate +- Hey detener +- te quiero para dejar de hablar +- me refiero a dejar de escuchar +- dije que pare +- sólo Cállate +- mi Dios Cállate +- no importa dejar de +- no sea silencioso +- no se calla ahora +- no no no no dejar de hablar +- no Cállate +- sin parar +- nadie le importa dejar de hablar +- en ninguna parte sólo estar tranquilo +- Oh mi Dios Cállate +- parada OK parada +- Tranquilo +- tranquilo ahora +- Cállate la boca +- Cállate +- Cállate silencio +- Cállate tranquilo +- Cállate la boca +- detener por favor +- dejar de hablar +- Apaga +- Apague la parada + + +> # Entity definitions + +$DirectionalReference:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:number + +$PREBUILT:ordinal + + +> # Phrase list definitions + + +> # List entities + + diff --git a/solutions/HospitalitySample/Deployment/Resources/LU/fr/General.lu b/solutions/HospitalitySample/Deployment/Resources/LU/fr/General.lu new file mode 100644 index 0000000000..350be581e8 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/LU/fr/General.lu @@ -0,0 +1,523 @@ +> # Intent definitions + +## Cancel +- Annuler +- annuler l'application +- annuler annuler +- l'annuler +- annuler jamais l'esprit +- annuler que +- Annulé +- Annulé +- ne rien faire +- Fais pas ça +- ne le fais plus +- oublier +- Allez-vous-en +- Il suffit d'annuler +- Il suffit de l'annuler +- L'esprit des nerfs +- Ça ne fait rien +- jamais l'esprit annuler +- jamais l'esprit annuler que +- pas d'annulation +- pas d'annulation annuler +- pas l'annuler +- pas annuler que +- sans jamais l'esprit +- non non annuler +- non non annuler +- rien de jamais l'esprit +- rien s'il vous plaît +- Oh annuler +- Oh ne fais pas ça +- s'il vous plaît ne rien faire +- Quitter +- Désolé, ne le faites pas + + +## Confirm +- Confirmer +- Fais-le +- Fin +- aller pour elle +- génial +- J'en suis sûr +- C'est bon +- sans doute +- Bien sûr +- Oh oui +- Oh oui +- D'accord +- OK pour l'instant +- d'accord +- Parfait +- parfait Merci +- Oui +- droit Oui +- Ça a l'air bien +- sonne bien merci +- sonne bien merci +- sonne bien pour moi +- sonne bien +- sonne parfait +- Sûr +- bien sûr ne +- est sûr +- chose sure +- bien sûr Oui +- Merci beaucoup +- Merci Oui +- qui est correct +- qui est juste +- ce droit +- qui sonne bien +- C'est très bien +- C'est bien +- Très bien +- Déjà +- Oui +- Oui chéri +- Oui Bro +- Oui copain +- Ouais cool +- Oui aller de l'avant +- Ouais aller pour elle +- Oui bon +- Oui + + +## Escalate +- puis-je parler à une personne +- Contacter le support +- Contacter le service client +- service à la clientèle +- le service humain +- J'ai besoin du service à la clientèle manuel +- J'ai besoin d'aide humaine réelle +- J'ai besoin de soutien +- Je veux parler à un humain +- Je veux parler à un vrai humain +- est-il une personne que je peux parler à +- y at-il des vrais humains +- y at-il une personne réelle +- parler à un humain + + +## FinishTask +- tous finis +- tous ensemble +- Fait +- Finir +- Fini +- fini avec +- Je suis fait +- Je suis fini +- Il a terminé +- C'est fait +- C'est fini +- juste être +- Envoyer +- le soumettre + + +## GoBack +- Précédent +- retour s'il vous plaît +- Retour à +- Retour à la dernière +- Retour à la dernière étape +- Reviens +- revenir s'il vous plaît +- revenir à la dernière +- Retour +- revenir sur +- revenir s'il vous plaît +- revenir à +- dernière étape +- pas revenir à +- pas de revenir à +- Veuillez retourner +- Retour + + +## Help +- toute aide +- pouvez-vous aider +- Est-ce que vous pouvez m'aider +- Donnez-moi de l'aide +- Aide +- Comment puis-je l'obtenir +- Comment le faire +- J'ai besoin d'aide +- J'ai besoin d'aide +- J'ai besoin d'aide +- est-il une aide +- ouvrir l'aide +- Aider, s'il vous plaît +- un peu d'aide +- qui peut m'aider + +## Logout +- SignOut +- Myosotis +- se déconnecter +- Déconnexion +- déconnexion + +## None +- Tous +- Je veux tous les +- Je veux tous les + + +## ReadAloud +- pouvez-vous le lire +- pouvez-vous lire que +- pouvez-vous lire que pour moi +- pouvez-vous lire la page à haute voix +- pourriez-vous me dire ce que dit +- détail à haute voix ce qui dit +- Hey lire que pour moi +- J'ai besoin d'entendre cette page +- Je voudrais que vous lisiez que pour moi +- faire une lecture de cette page +- s'il vous plaît lire +- s'il vous plaît le lire +- s'il vous plaît lisez-moi la page +- s'il vous plaît lire mon dernier e-mail +- s'il vous plaît lire ce +- s'il vous plaît lire à haute voix +- Veuillez lire cette page +- s'il vous plaît lire cette page à haute voix +- s'il vous plaît lire cette page à haute voix +- s'il vous plaît lire ceci pour moi +- lire tout sur l'écran pour moi +- lire à haute voix +- lire à haute voix le texte actuel à l'écran +- lire le fichier à haute voix +- le lire +- le lire à haute voix +- le lire à haute voix +- le lire Outloud +- Lire s'il vous plaît +- me le lire +- Lisez-moi cette page +- lire ma liste +- lire Outloud +- lire la page +- lire la page à haute voix +- lire la page Outloud +- lire la phrase à haute voix +- lire le texte +- lire le texte à haute voix +- lire que +- lire que à haute voix +- lire la page +- lire la page à l'écran pour moi +- lire la page à haute voix +- lire la page pour moi +- lire le texte pour moi +- lire les mots sur cette page +- lire ceci pour moi s'il vous plaît +- lire cette page +- lire cette page à haute voix +- lire cette page à haute voix +- lire cette page pour moi +- Lisez-moi +- lire ce qui est actuellement sur l'écran pour moi +- parler de ce qui est sur cette page +- commencer à lire ce +- Parlez-moi des informations sur l'écran +- me dire le texte actuel à l'écran +- vocaliser ce que s sur la page +- qu'est-ce que la page dire +- voulez-vous s'il vous plaît lire que pour moi +- voulez-vous lire que à haute voix s'il vous plaît +- voulez-vous lire que pour moi s'il vous plaît + + +## Reject +- J'aime pas ça +- Je rejette +- Négatif +- Jamais +- non +- non, je ne veux pas que +- pas plus tard +- pas le laisser +- pas plus non +- Oh, non +- Dans le no du +- non non merci +- non pas que l'on +- pas le rejeter +- Non, merci +- Non merci +- Pas question +- pas mal +- Non +- Pas +- Pas du tout +- même pas proche +- Pas exactement +- Pas maintenant +- pas tout à fait +- pas en ce moment +- pas que +- Pas grand-chose +- Oh non +- Rejeter +- le rejeter + + +## Repeat +- Nouveau +- pourriez-vous dis-le à nouveau +- Je n'ai pas entendu répéter à nouveau +- Je n'ai pas entendu +- pardon +- Répéter +- répéter s'il vous plaît +- répéter que +- Répéter +- dire à nouveau s'il vous plaît +- dire que de nouveau +- Pardon +- Quel +- Qu'as-tu dit +- ce qui était encore + + +## SelectAny +- tout de celui-ci +- n'importe lequel est OK +- n'importe qui est bien +- Rien +- choisir n'importe qui +- Choisissez l'un de celui-ci aléatoirement +- opter pour un aléatoire +- opter pour tout cela +- choisir un choix aléatoire +- Sélectionnez un aléatoire +- Sélectionnez +- choisir n'importe quel choix +- Sélectionnez l'un d'entre eux + + +## SelectItem +- choisir la dernière +- Choisissez le dernier +- Choisissez no. 2 +- choisir le {DirectionalReference=en bas à gauche} +- choisir le premier choix +- choisir le quatrième +- choisir le {DirectionalReference=en haut à gauche} Choix +- choisir le {DirectionalReference=en haut à droite} Un +- Choisir {DirectionalReference=en haut à droite} +- Choisir {DirectionalReference=en haut à droite} Un +- J'aime {DirectionalReference=Gauche} Un +- J'aime deuxième +- i like second +- J'aime le {DirectionalReference=Bas} Un +- J'aime le premier +- J'aime le troisième +- J'aime le troisième choix +- J'aime le {DirectionalReference=en haut à droite} Un +- J'aime le {DirectionalReference=en haut à droite} +- J'aime {DirectionalReference=en haut à droite} +- Je veux {DirectionalReference=Bas} +- Je veux quatrième +- Je veux {DirectionalReference=Gauche} +- Je veux {DirectionalReference=Oui} Un +- Je veux le premier +- Je veux le quatrième choix +- Je veux que le {DirectionalReference=Gauche} +- Je veux que le {DirectionalReference=Inférieur} Choix +- Je veux que le {DirectionalReference=Oui} Un +- Je veux le second +- Je veux un troisième +- Je veux choisir {DirectionalReference=Bas} Un +- Je veux choisir {DirectionalReference=en bas à droite} +- Je veux choisir {DirectionalReference=Oui} +- Je veux choisir un deuxième +- Je veux choisir le premier +- Je veux choisir le quatrième +- Je veux choisir le dernier choix +- Je veux choisir le {DirectionalReference=Gauche} Un +- Je veux choisir le {DirectionalReference=Inférieur} Choix +- Je veux choisir le {DirectionalReference=Oui} +- Je veux choisir troisième +- Optez pour un premier +- Optez pour la dernière +- opter pour {DirectionalReference=Gauche} +- opter pour {DirectionalReference=Oui} Un +- Optez pour le dernier +- opter pour le {DirectionalReference=Gauche} Un +- opter pour le {DirectionalReference=Inférieur} Choix +- opter pour le {DirectionalReference=Oui} +- opter pour la deuxième +- opter pour le deuxième choix +- Sélectionnez la quatrième +- Sélectionnez {DirectionalReference=Inférieur} Un +- Sélectionnez n ° 5 +- Sélectionnez le {DirectionalReference=Bas} Choix +- Sélectionnez le premier +- sélectionner le dernier choix +- Sélectionnez le {DirectionalReference=Inférieur} Un +- Sélectionnez le {DirectionalReference=Oui} Un +- Sélectionnez le troisième +- Sélectionnez le {DirectionalReference=en haut à droite} +- Sélectionnez troisième +- Sélectionnez {DirectionalReference=Supérieur} +- qu'en est-il de la dernière +- qu'en est-il du troisième + + +## SelectNone +- Je ne veux pas choisir un +- Je ne veux pas sélectionner un +- Je ne veux aucun d'entre eux +- Je veux aucun d'entre eux +- Ni +- aucun de ces +- ni un +- ni l'un d'eux +- ni Merci +- Aucun +- aucun aucun +- aucun d'entre eux +- aucun d'entre eux +- aucun d'entre eux vous remercie +- aucun de ces +- aucun de ces +- ils ont l'air mauvais, pouvez-vous me donner d'autres choix + + +## ShowNext +- et après que +- afficher plus +- affiche plus +- Donnez-moi plus +- aller de l'avant +- aller à la prochaine +- aller aux trois prochains éléments +- J'ai besoin d'aller à l'autre +- Je veux plus +- Plus +- passer à la suivante +- prochain +- révéler plus +- Montrez-moi la prochaine +- afficher plus +- afficher les 3 prochains +- afficher les 4 prochains Articles +- montrer le prochain +- afficher les deux options suivantes +- me dire plus +- en savoir plus +- qu'en est-il prochain +- ce qui après que +- ce qui est après que +- ce qui est plus +- what's Next +- ce qui est le prochain 2 +- what's up Next + + +## ShowPrevious +- Retour à la dernière +- apporter le précédent +- afficher précédemment +- revenir à la dernière +- revenir à la dernière +- revenir à la précédente +- revenir à la dernière +- aller précédemment +- aller à la précédente +- aller à la précédente +- précédent +- précédent s'il vous plaît +- revenir à la précédente +- révéler les précédents +- révéler précédemment +- montrer plus tôt +- Montrez-moi le précédent +- afficher précédent +- montrer le précédent +- ce qui avant que +- Quel est le précédent +- ce qui est avant que + + +## StartOver +- clair et recommencer +- pourriez-vous commencer +- s'il vous plaît recommencer +- Redémarrer +- Redémarrez-le +- recommencer +- commencer +- recommencer +- recommencer +- Tourner la page + + +## Stop +- bébé juste être tranquille +- restez calme +- être silencieux maintenant +- venir sur arrêt +- Rejeter +- Fin +- fin il +- sortie sortie +- arrêt de sortie +- Dieu la ferme +- Hey arrêter +- Je t'aime pour arrêter de parler +- Je veux dire arrêter d'écouter +- J'ai dit stop +- juste être tranquille +- mon Dieu la ferme +- jamais l'esprit arrêter +- ne soyez pas silencieux +- pas être tranquille maintenant +- non non non non arrêtez de parler +- pas de fermeture +- pas d'arrêt +- personne ne se soucie cesser de parler +- nulle part juste être tranquille +- Oh mon Dieu la ferme +- OK stop stop +- Calme +- calme maintenant +- Ferme ta gueule +- La ferme +- Shut Up être silencieux +- taisez-vous +- La ferme +- s'il vous plaît arrêter +- cesser de parler +- Désactiver +- éteindre l'arrêt + + +> # Entity definitions + +$DirectionalReference:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:number + +$PREBUILT:ordinal + + +> # Phrase list definitions + + +> # List entities + + diff --git a/solutions/HospitalitySample/Deployment/Resources/LU/it/General.lu b/solutions/HospitalitySample/Deployment/Resources/LU/it/General.lu new file mode 100644 index 0000000000..8d225067a6 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/LU/it/General.lu @@ -0,0 +1,523 @@ +> # Intent definitions + +## Cancel +- Annulla +- Annulla app +- Annulla Annulla +- annullarlo +- annullare non importa +- annullare che +- Annullato +- annullato +- non fare nulla +- Non farlo +- non farlo più +- dimenticarlo +- Vattene +- basta annullare +- Basta annullarlo +- Nervi mente +- Non importa +- non importa annullare +- non importa annullare che +- Nessuna cancellazione +- No Annulla Annulla +- non annullarlo +- non annullare che +- non importa mai +- No No Annulla +- No no annullarlo +- niente non importa +- niente per favore +- Oh Annulla +- Oh non farlo +- si prega di fare nulla +- Smettere +- Scusa, non farlo + + +## Confirm +- Confermare +- Fallo +- fine +- andare per esso +- Grande +- Sono sicuro +- Va bene +- senza dubbio +- Naturalmente, +- Oh sì +- Oh sì +- Ok +- OK per ora +- ok +- Perfetto +- perfetto grazie +- va bene +- destra Sì +- Buona idea +- suona bene grazie +- suona bene grazie +- suona bene per me +- suona grande +- suona perfetto +- Sicuro +- certo fa +- sicuro è +- cosa sicura +- certo sì +- Mille Grazie +- Grazie sì +- che è corretto +- che è giusto +- tale diritto +- che suona bene +- Va bene +- Questo va bene +- Molto bene +- Già +- Sì +- Sì piccola +- Sì bro +- Sì amico +- Sì cool +- Sì andare avanti +- Sì andare per esso +- Sì buono +- Sì + + +## Escalate +- Posso parlare con una persona +- Contatta il supporto +- Contattare il servizio clienti +- servizio clienti +- servizio umano +- Ho bisogno di servizio clienti manuale +- Ho bisogno di aiuto umano reale +- Ho bisogno di sostegno +- Voglio parlare con un umano +- Voglio parlare con un vero e proprio umano +- C'è una persona che posso parlare con +- C'è un vero umano +- C'è una persona reale +- parlare con un umano + + +## FinishTask +- Tutto finito +- tutti insieme +- Fatto +- Finire +- Finito +- rifinito con +- Io sono fatto +- Ho finito +- ha finito +- è fatto +- è finita +- solo essere +- Invia +- presentarlo + + +## GoBack +- Indietro +- indietro per favore +- Torna a +- indietro per durare +- Torna all'ultimo passo +- Indietro +- tornare per favore +- tornare a durare +- Indietro +- tornare su +- tornare indietro per favore +- tornare a +- ultimo passo +- non tornare a +- No no tornare a +- si prega di tornare +- Ritorno + + +## Help +- qualsiasi aiuto +- si può aiutare +- Puoi aiutarmi +- Dammi un po' di aiuto +- Guida +- Come posso ottenerlo +- come farlo +- Ho bisogno di aiuto +- Ho bisogno di un po' di assistenza +- Ho bisogno di aiuto +- C'è qualche aiuto +- Aprire la guida +- si prega di aiutare +- qualche aiuto +- che mi può aiutare + +## Logout +- SignOut +- mi dimentichi +- Esci +- Logout +- Esci + +## None +- tutti loro +- Voglio che tutti +- Voglio tutti loro + + +## ReadAloud +- si può leggere +- si può leggere che +- si può leggere che per me +- si può leggere pagina ad alta voce +- Potresti dirmi quello che dice +- dettaglio ad alta voce quello che dice +- Hey leggere che per me +- Ho bisogno di sentire questa pagina +- Mi piacerebbe che tu leggere che per me +- fare una lettura di questa pagina +- si prega di leggere +- si prega di leggerlo +- si prega di leggere la pagina +- si prega di leggere la mia ultima e-mail +- si prega di leggere questo +- si prega di leggere questo ad alta voce +- si prega di leggere questa pagina +- si prega di leggere questa pagina ad alta voce +- si prega di leggere questa pagina ad alta voce +- si prega di leggere questo per me +- leggere tutti sullo schermo per me +- leggere ad alta voce +- leggere ad alta voce il testo corrente sullo schermo +- leggere file ad alta voce +- Leggilo +- leggerlo ad alta voce +- leggerlo ad alta voce +- leggerlo a voce alta +- leggerlo per favore +- leggerlo a me +- Leggimi questa pagina +- leggere la mia lista +- leggere a voce alta +- pagina di lettura +- leggere la pagina ad alta voce +- leggere pagina Outloud +- leggere la frase ad alta voce +- leggere il testo +- leggere il testo ad alta voce +- leggere che +- leggere che ad alta voce +- leggere la pagina +- leggere la pagina sullo schermo per me +- leggere la pagina ad alta voce +- leggere la pagina per me +- leggere il testo a me +- leggere le parole in questa pagina +- leggere questo per me per favore +- leggere questa pagina +- leggere questa pagina ad alta voce +- leggere questa pagina ad alta voce +- leggere questa pagina per me +- leggere a me +- leggere ciò che è attualmente sullo schermo per me +- parlare di ciò che è in questa pagina +- iniziare a leggere questo +- Dimmi circa le informazioni sullo schermo +- Dimmi il testo corrente sullo schermo +- vocalizzare ciò che s sulla pagina +- che cosa dice la pagina +- si prega di leggere che per me +- Vuoi leggere che ad alta voce per favore +- Vuoi leggere che a me per favore + + +## Reject +- Non mi piace +- i rifiutare +- Negativo +- Mai +- No +- No non voglio che +- non più tardi +- non lasciarlo +- non più no +- Oh no +- Nel no sul +- No No grazie +- No, non che uno +- non rifiutarlo +- No grazie +- No grazie +- Assolutamente no +- non è sbagliato +- No +- Non +- Niente affatto +- nemmeno vicino +- Non esattamente +- Non ora +- Non proprio +- non in questo momento +- non che +- Non molto +- Oh no +- Rifiutare +- rifiutarlo + + +## Repeat +- di nuovo +- si potrebbe dire di nuovo +- non ho sentito ripetere di nuovo +- non ho sentito +- Scusa +- Ripetere +- Ripetere per favore +- ripetere che +- Dillo ancora +- dire di nuovo per favore +- dire che ancora una volta +- Siamo spiacenti +- che cosa +- Cosa hai detto +- quello che era di nuovo + + +## SelectAny +- qualsiasi di esso +- uno è OK +- Chiunque va bene +- Nulla +- scegliere chiunque +- scegliere uno di esso in modo casuale +- optare per uno casuale +- optare per qualsiasi di esso +- Selezionare una scelta casuale +- Selezionare uno casuale +- selezionare qualsiasi +- selezionare qualsiasi scelta +- selezionarne uno + + +## SelectItem +- scegliere ultimo +- Scegli l'ultima +- scegliere No. 2 +- scegliere il {DirectionalReference=in basso a sinistra} +- scegliere la prima scelta +- scegliere il quarto +- scegliere il {DirectionalReference=in alto a sinistra} Scelta +- scegliere il {DirectionalReference=in alto a destra} Uno +- Scegliere {DirectionalReference=in alto a destra} +- Scegliere {DirectionalReference=in alto a destra} Uno +- Mi piace {DirectionalReference=Sinistra} Uno +- Mi piace il secondo +- Mi piace secondo uno +- Mi piace il {DirectionalReference=Fondoschiena} Uno +- Mi piace il primo +- Mi piace il terzo +- Mi piace la terza scelta +- Mi piace il {DirectionalReference=in alto a destra} Uno +- Mi piace il {DirectionalReference=in alto a destra} +- Mi piace {DirectionalReference=in alto a destra} +- Voglio {DirectionalReference=Fondoschiena} +- Voglio quarto +- Voglio {DirectionalReference=Sinistra} +- Voglio {DirectionalReference=va bene} Uno +- Voglio il primo +- Voglio la quarta scelta +- Voglio che il {DirectionalReference=Sinistra} +- Voglio che il {DirectionalReference=Inferiore} Scelta +- Voglio che il {DirectionalReference=va bene} Uno +- Voglio che il secondo +- Voglio terzo +- Voglio scegliere {DirectionalReference=Fondoschiena} Uno +- Voglio scegliere {DirectionalReference=in basso a destra} +- Voglio scegliere {DirectionalReference=va bene} +- Voglio scegliere secondo uno +- Voglio scegliere il primo +- Voglio scegliere il quarto +- Voglio scegliere l'ultima scelta +- Voglio scegliere il {DirectionalReference=Sinistra} Uno +- Voglio scegliere il {DirectionalReference=Inferiore} Scelta +- Voglio scegliere il {DirectionalReference=va bene} +- Voglio scegliere il terzo +- optare per il primo +- optare per l'ultima +- optare per {DirectionalReference=Sinistra} +- optare per {DirectionalReference=va bene} Uno +- optare per l'ultimo +- optare per il {DirectionalReference=Sinistra} Uno +- optare per il {DirectionalReference=Inferiore} Scelta +- optare per il {DirectionalReference=va bene} +- optare per la seconda +- optare per la seconda scelta +- selezionarne una quarta +- Selezionare {DirectionalReference=Inferiore} Uno +- Selezionare No. 5 +- Selezionare la {DirectionalReference=Fondoschiena} Scelta +- Selezionare il primo +- Selezionare l'ultima scelta +- Selezionare la {DirectionalReference=Inferiore} Uno +- Selezionare la {DirectionalReference=va bene} Uno +- Selezionare la terza +- Selezionare la {DirectionalReference=in alto a destra} +- Selezionare il terzo +- Selezionare {DirectionalReference=Superiore} +- per quanto riguarda l'ultimo +- per quanto riguarda il terzo + + +## SelectNone +- non voglio scegliere uno qualsiasi +- non voglio selezionare uno qualsiasi +- voglio nessuno di loro +- Voglio che nessuno di loro +- Né +- nessuno di questi +- né uno +- nessuno di loro +- né grazie +- Nessuno +- nessuno nessuno +- nessuno di loro +- nessuno di loro +- nessuno di loro grazie +- nessuno di questi +- nessuno di quelli +- sembrano cattivi, puoi darmi altre scelte + + +## ShowNext +- e dopo che +- visualizzare più +- Visualizza più +- Dammi più +- andare avanti +- andare al prossimo +- Vai ai prossimi tre elementi +- Ho bisogno di andare a quello successivo +- Voglio di più +- Più +- passare a quello successivo +- prossimo +- rivelano più +- Fammi vedere il prossimo +- Mostra di più +- Mostra i prossimi 3 +- Mostra i prossimi 4 articoli +- mostrare il prossimo +- Mostra le prossime due opzioni +- Dimmi di più +- raccontare di più +- per quanto riguarda il prossimo +- cosa dopo che +- ciò che è dopo che +- cosa c'è di più +- ciò che è prossimo +- Qual è il prossimo 2 +- cosa c'è accanto + + +## ShowPrevious +- Torna all'ultimo +- portare il precedente +- visualizzare in precedenza +- tornare all'ultimo +- tornare a durare uno +- tornare alla precedente +- tornare all'ultimo +- andare in precedenza +- andare al precedente +- andare al precedente +- precedente +- precedente si prega di +- tornare a quello precedente +- rivelare precedente +- rivelare in precedenza +- mostrare in precedenza +- Mostrami il precedente +- Mostra precedente +- mostrare quello precedente +- cosa prima che +- Qual è il precedente +- ciò che è prima che + + +## StartOver +- chiaro e ricominciare +- si potrebbe iniziare sopra +- si prega di ricominciare +- Riavviare +- riavviarlo +- ricominciare +- avviarlo +- ricominciare +- iniziare su di esso +- girare su una nuova foglia + + +## Stop +- bambino solo essere tranquillo +- Taci +- essere tranquillo ora +- Andiamo stop +- Respingere +- Fine +- fine +- uscita Exit +- uscita Stop +- Dio zitto +- Hey stop +- ti amo smettere di parlare +- Voglio dire smettere di ascoltare +- Ho detto stop +- solo essere tranquillo +- il mio Dio zitto +- non importa smettere +- non essere tranquillo +- non essere tranquillo ora +- No no no no smettere di parlare +- non zitto +- No Stop +- nessuno si preoccupa smettere di parlare +- da nessuna parte solo essere tranquillo +- Oh mio Dio zitto +- OK arresto STOP +- Tranquilla +- tranquillo ora +- stai zitto +- Zitto +- Zitto essere tranquillo +- Zitto tranquillo +- Chiudi la bocca +- smettere per favore +- smettere di parlare +- Spegni +- disattivare l'arresto + + +> # Entity definitions + +$DirectionalReference:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:number + +$PREBUILT:ordinal + + +> # Phrase list definitions + + +> # List entities + + diff --git a/solutions/HospitalitySample/Deployment/Resources/LU/zh/General.lu b/solutions/HospitalitySample/Deployment/Resources/LU/zh/General.lu new file mode 100644 index 0000000000..880d783361 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/LU/zh/General.lu @@ -0,0 +1,523 @@ +> # Intent definitions + +## Cancel +- 取消 +- 取消应用程序 +- 取消取消 +- 取消它 +- 取消没关系 +- 取消这一点 +- 取消 +- 取消 +- 什么都不做 +- 别这样 +- 别再这么做了 +- 忘了它吧 +- 走开 +- 只是取消 +- 只是取消它 +- 神经的头脑 +- 没关系 +- 别介意取消 +- 没关系取消, +- 没有取消 +- 没有取消取消 +- 不取消它 +- 没有取消, +- 别介意 +- 没有没有取消 +- 不, 不, 取消它 +- 没什么没关系 +- 没什么, 请 +- 哦, 取消 +- 哦, 不要这样做 +- 请什么都不做 +- 退出 +- 对不起, 不要这样做 + + +## Confirm +- 确认 +- 做吧 +- 结束 +- 去吧 +- 伟大 +- 我确定 +- 没事的 +- 毫无疑问 +- 答案是肯定的 +- 哦,是的 +- 哦,是的 +- 还行 +- 好吧, 现在 +- 好 +- 完美 +- 完美的谢谢你 +- 对 +- 对是的 +- 听上去很好 +- 听起来不错, 谢谢 +- 听起来不错, 谢谢 +- 听起来不错 +- 听起来不错 +- 听起来很完美 +- 确定 +- 肯定不 +- 肯定是 +- 肯定的事情 +- 当然是的 +- 谢谢 +- 谢谢你是的 +- 这是正确的 +- 这是正确的 +- 该权利 +- 听起来不错 +- 这很好 +- 这很好 +- 非常好 +- 已经 +- 是的 +- 是的,宝贝 +- 是的兄弟 +- 是的, 哥们 +- 是的很酷 +- 是的, 去吧 +- 是的, 去吧 +- 是的很好 +- 是的 + + +## Escalate +- 我能和一个人交谈吗? +- 联系支持 +- 联系客服 +- 客服服务 +- 人性化服务 +- 我需要手动客服 +- 我需要真正的人类帮助 +- 我需要支持 +- 我想和一个人谈谈 +- 我想和一个真正的人类谈谈 +- 有没有人, 我可以交谈 +- 是否有任何真正的人类 +- 有什么真实的人吗? +- 和人类交谈 + + +## FinishTask +- 全部完成 +- 全部设置 +- 做 +- 完成 +- 完成 +- 完成了 +- 我做完了 +- 我完了 +- 它完成了 +- 它的完成 +- 它的完成 +- 只是是 +- 提交 +- 提交它 + + +## GoBack +- 返回 +- 退后请 +- 返回到 +- 返回到最后一个 +- 返回到最后一步 +- 回来 +- 请退后 +- 回到最后 +- 回去 +- 回去吧 +- 请回去 +- 返回到 +- 最后一步 +- 不回去 +- 不, 不, 不, 回去 +- 请返回 +- 返回 + + +## Help +- 任何帮助 +- 你能帮上忙吗 +- 你可以帮我吗 +- 给我一些帮助 +- 帮助 +- 我怎么能得到它 +- 如何做到这一点 +- 我需要帮助 +- 我需要一些帮助 +- 我需要一些帮助 +- 有什么帮助吗? +- 打开帮助 +- 请帮帮忙 +- 一些帮助 +- 谁能帮我 + +## Logout +- 签出 +- 忘了我吧 +- 注销 +- 注销 +- 注销 + +## None +- 所有的人 +- 我希望他们都 +- 我想所有的人 + + +## ReadAloud +- 你能读懂吗? +- 你能读懂吗 +- 你能为我读一下吗 +- 你能大声朗读页面吗? +- 你能告诉我那是什么意思吗? +- 细节大声说什么 +- 嘿, 为我读一下 +- 我需要听到这一页 +- 我想让你为我读这些 +- 阅读这一页 +- 请阅读 +- 请阅读它 +- 请阅读我的页面 +- 请阅读我最新的电子邮件 +- 请阅读此内容 +- 请大声读出来 +- 请阅读此页面 +- 请大声朗读这一页 +- 请大声阅读这一页 +- 请读给我听 +- 在屏幕上给我读所有的内容 +- 朗读 +- 朗读屏幕上的当前文本 +- 大声朗读文件 +- 阅读它 +- 大声朗读 +- 大声读出来 +- 大声读出来 +- 请阅读它 +- 读给我听 +- 读我这一页 +- 阅读我的列表 +- 大声朗读 +- 阅读页面 +- 大声朗读页面 +- 大声阅读页面 +- 大声朗读句子 +- 读取文本 +- 大声朗读课文 +- 读一下 +- 大声读出来 +- 阅读页面 +- 在屏幕上给我读这一页 +- 大声地读出这一页 +- 读这一页给我听 +- 读课文给我听 +- 阅读本页上的单词 +- 请帮我读一下这个 +- 阅读此页 +- 大声朗读这一页 +- 大声读出这一页 +- 读这一页给我听 +- 读给我听 +- 阅读当前屏幕上的内容给我 +- 说到这一页上的内容 +- 开始阅读这 +- 告诉我屏幕上的信息 +- 告诉我屏幕上的当前文本 +- 发声的页面上的内容 +- 页面上写了什么 +- 请你帮我读一下 +- 请你大声读出来好吗? +- 请你读给我听好吗? + + +## Reject +- 我不喜欢 +- 我拒绝 +- 负 +- 从来 没有 +- 不 +- 不, 我不希望 +- 没有以后 +- 没有离开它 +- 没有更多的没有 +- 哦不 +- 在 "否" 上 +- 不, 不, 谢谢 +- 不, 不是那个 +- 不拒绝它 +- 不,谢谢 +- 不,谢谢 +- 不可能 +- 没有错 +- 不 +- 不 +- 一点也不 +- 甚至没有关闭 +- 不完全是 +- 不是现在 +- 不完全是 +- 不是现在 +- 不是这样的 +- 很少 +- 哦不 +- 拒绝 +- 拒绝它 + + +## Repeat +- 再次 +- 你能再说一遍吗? +- 我没有听到重复再次 +- 我没有听说过 +- 对不起 +- 重复 +- 请重复一遍 +- 重复, +- 再说一遍 +- 请再说一遍 +- 再说一遍 +- 对不起 +- 什么? +- 你说什么 +- 那又是什么 + + +## SelectAny +- 它的任何一个 +- 任何一个都是确定的 +- 任何人都很好 +- 什么 +- 选择任何人 +- 随机选择其中一个 +- 选择一个随机的 +- 选择它的任何一个 +- 选择随机选择 +- 选择一个随机的 +- 选择任何 +- 选择任何选项 +- 选择它的任何一个 + + +## SelectItem +- 选择最后一个 +- 选择最后一个 +- 选择2号 +- 选择 {DirectionalReference=左下角} +- 选择第一选择 +- 选择第四个 +- 选择 {DirectionalReference=左上角} 选择 +- 选择 {DirectionalReference=右上角} 一个 +- 选择 {DirectionalReference=右上角} +- 选择 {DirectionalReference=右上角} 一个 +- 我喜欢 {DirectionalReference=离开} 一个 +- 我喜欢第二 +- 我喜欢第二个 +- 我喜欢的 {DirectionalReference=底部} 一个 +- 我喜欢第一个 +- 我喜欢第三个 +- 我喜欢第三个选择 +- 我喜欢的 {DirectionalReference=右上角} 一个 +- 我喜欢的 {DirectionalReference=右上角} +- 我喜欢 {DirectionalReference=右上角} +- 我想要 {DirectionalReference=底部} +- 我想要第四 +- 我想要 {DirectionalReference=离开} +- 我想要 {DirectionalReference=对} 一个 +- 我想要的第一个 +- 我想要第四个选择 +- 我想 {DirectionalReference=离开} +- 我想 {DirectionalReference=降低} 选择 +- 我想 {DirectionalReference=对} 一个 +- 我想要第二个 +- 我想要第三个 +- 我想选择 {DirectionalReference=底部} 一个 +- 我想选择 {DirectionalReference=右下角} +- 我想选择 {DirectionalReference=对} +- 我想选择第二个 +- 我想选择第一个 +- 我想选择第四个 +- 我想选择最后的选择 +- 我想选择的 {DirectionalReference=离开} 一个 +- 我想选择的 {DirectionalReference=降低} 选择 +- 我想选择的 {DirectionalReference=对} +- 我想选择第三 +- 选择第一个 +- 选择最后一个 +- 选择 {DirectionalReference=离开} +- 选择 {DirectionalReference=对} 一个 +- 选择最后一个 +- 选择 {DirectionalReference=离开} 一个 +- 选择 {DirectionalReference=降低} 选择 +- 选择 {DirectionalReference=对} +- 选择第二个 +- 选择第二个选项 +- 选择第四个 +- 选择 {DirectionalReference=降低} 一个 +- 选择5号 +- 选择 {DirectionalReference=底部} 选择 +- 选择第一个 +- 选择最后一个选项 +- 选择 {DirectionalReference=降低} 一个 +- 选择 {DirectionalReference=对} 一个 +- 选择第三个 +- 选择 {DirectionalReference=右上角} +- 选择第三个 +- 选择 {DirectionalReference=上} +- 那最后一个呢? +- 那第三个呢? + + +## SelectNone +- 我不想选择任何一个 +- 我不想选择任何一个 +- 我不想要他们两个 +- 我不想要他们中的任何一个 +- 也 +- 这两个 +- 都不是一个 +- 他们中的任何一个 +- 也不谢谢你 +- 没有 +- 无 +- 他们都没有 +- 他们中没有一个 +- 他们都不感谢你 +- 这些都没有 +- 没有这些 +- 他们看起来很糟糕, 你能给我其他的选择吗? + + +## ShowNext +- 在那之后 +- 显示更多 +- 显示更多 +- 给我更多 +- 勇往直前 +- 转到下一个 +- 转到接下来的三个项目 +- 我需要去下一个 +- 我想要更多 +- 更 +- 移动到下一个 +- 下 +- 揭示更多 +- 给我看看下一个 +- 显示更多 +- 显示下一个3 +- 显示接下来的4个项目 +- 显示下一个 +- 显示接下来的两个选项 +- 告诉我更多 +- 告诉更多 +- 下一个呢? +- 之后是什么 +- 之后是什么 +- 更重要的是 +- 下一步是什么 +- 接下来的2是什么 +- 接下来会发生什么 + + +## ShowPrevious +- 回到最后一个 +- 带来了前一个 +- 以前显示 +- 回到最后一个 +- 回到最后一个 +- 回到以前的 +- 回到最后一个 +- 去之前 +- 转到上一个 +- 转到上一个 +- 上一个 +- 请前一个 +- 返回到上一个 +- 显示以前的 +- 显示以前 +- 更早显示 +- 给我看看前一个 +- 显示上一个 +- 显示前一个 +- 在那之前 +- 什么是以前的 +- 什么是之前, + + +## StartOver +- 清除并重新开始 +- 你能不能重新开始 +- 请重新开始 +- 重新 启动 +- 重新启动它 +- 重新开始 +- 重新开始 +- 重新开始 +- 开始在它 +- 翻开新的一页 + + +## Stop +- 宝贝, 安静点 +- 保持安静 +- 现在安静点 +- 来吧, 停 +- 解雇 +- 结束 +- 结束它 +- 退出出口 +- 退出站 +- 上帝闭嘴 +- 嘿, 住手 +- 我爱你停止说话 +- 我的意思是停止听 +- 我说停止 +- 只是安静 +- 我的上帝闭嘴 +- 没关系停止 +- 不要安静 +- 现在不要安静 +- 不, 不, 不, 不, 停止说话 +- 没有闭嘴 +- 没有停止 +- 没有人在乎停止说话 +- 无处只是安静 +- 哦, 我的上帝闭嘴 +- 好的, 停 +- 安静 +- 安静的现在 +- 他妈的闭嘴 +- 闭嘴 +- 闭嘴, 安静点 +- 闭嘴, 安静 +- 闭上你的嘴 +- 请停止 +- 别说话了 +- 关闭 +- 关闭停止 + + +> # Entity definitions + +$DirectionalReference:simple + + +> # PREBUILT Entity definitions + +$PREBUILT:number + +$PREBUILT:ordinal + + +> # Phrase list definitions + + +> # List entities + + diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/de/Chitchat.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/de/Chitchat.lu new file mode 100644 index 0000000000..5ac0374bfd --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/de/Chitchat.lu @@ -0,0 +1,1238 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:47 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + +> Source: custom editorial +## ? Wie alt bist du +- Bist du jung +- Wann wurden Sie geboren +- Welches Alter bist du +- Bist du alt +- Wie alt sind Sie +- Wie lange sind Sie geboren + +```markdown +Das Alter trifft nicht wirklich auf mich zu. +``` + +> Source: custom editorial +## ? Sei mein Freund +- Können wir Freunde sein +- Werdest du mein bester Freund sein +- BFFs für immer +- Ich möchte dein Freund sein. + +```markdown +bestimmt. +``` + +> Source: custom editorial +## ? Du hast Recht. +- Das war richtig +- Das war richtig +- Das ist genau +- Genau +- Das stimmt +- Yup, das stimmt +- Das stimmt +- Richtig +- Ja, das stimmt +- Ja, das stimmt + +```markdown +Ausgezeichnet. +``` + +> Source: custom editorial +## ? Hsa +- Haha +- Hahaha +- Laut loslachen +- Ich knacke +- Rofl + +```markdown +Froh, dass Sie zufrieden sind! +``` + +> Source: custom editorial +## ? Guten Abend +- 'Nabend +- Guten Abend für Sie + +```markdown +Guten Abend. +``` + +> Source: custom editorial +## ? Guten Morgen +- morgen + +```markdown +Guten Morgen. +``` + +> Source: custom editorial +## ? Gute Nacht +- nacht +- Haben Sie eine gute Nacht +- Gute Nacht für Sie +- Nachti Nacht + +```markdown +Gute Nacht. +``` + +> Source: custom editorial +## ? Wie war dein Tag +- Wie läuft dein Tag +- Einen guten Tag haben + +```markdown +Gut, danke. +``` + +> Source: custom editorial +## ? Bis später +- Auf Wiedersehen +- Bis später +- Bis wir uns wiedersehen +- später +- Später Alligator +- Auf Wiedersehen + +```markdown +Auf Wiedersehen. +``` + +> Source: custom editorial +## ? Ich mache nur Spaß +- Das war ein Witz +- Witz ist auf sie +- Ich spiele nur +- Ich scherze nur herum + +```markdown +Ich hab es. +``` + +> Source: custom editorial +## ? Wie geht es dir +- Wie geht es dir heute +- Wie sind die Dinge +- Wie geht es dir +- Wie ist Dein Tag + +```markdown +Toll, danke. +``` + +> Source: custom editorial +## ? Bitte +- Es ist meine Freude + +```markdown +Großartig. +``` + +> Source: custom editorial +## ? hart +- Kannst du mich hören +- Kannst du mich jetzt hören? +- Prüfung 1 2 3 +- Ist dieses Ding auf + +```markdown +Hallo. +``` + +> Source: custom editorial +## ? hallo +- Guten Morgen +- Hallo +- Hallo +- Heya +- Hallo! +- Hallöchen + +```markdown +Hallo. +``` + +> Source: custom editorial +## ? Ich bin hier +- Hier bin ich + +```markdown +Hallo. +``` + +> Source: custom editorial +## ? Sehe ich okay aus? +- Bin ich hübsch +- Glaubst du, dass ich gut aussehe +- Wie schön bin ich + +```markdown +Ehrlich gesagt, kann ich nicht so oder so sagen. +``` + +> Source: custom editorial +## ? Du fehlst mir +- Ich vermisse dich so sehr! + +```markdown +Wie etwas von Ihnen zu sagen. +``` + +> Source: custom editorial +## ? Müde von dir +- Du hast mich langweilt +- Ich bin müde von dir +- Du bist so einfach +- Basic af +- Du bist kein Spaß +- Seien Sie mehr Spaß +- Warum bist du so langweilig +- Du bist so langweilig +- Du bist langweilig +- Du verzweist mich überhaupt nicht +- Du bist wirklich langweilig +- Langweiliger könnte es nicht sein +- Sie könnten ehrlich gesagt nicht uninteressanter sein +- Du bist lahm + +```markdown +Ich begesuche Effizienz. +``` + +> Source: custom editorial +## ? Du bist genial! +- Du bist nett! +- Du bist urkomisch +- Du bist lustig +- Ich denke, du bist großartig +- Du bist wunderbar +- Sind Sie genial +- Sind Sie nicht genial +- Wie viel mehr genial können Sie bekommen +- Du bist lustig :) +- Du bist so lustig. +- Das war lustig +- Das ist urkomisch +- Du bist rad. +- Ich bin ein Fan. + +```markdown +Ich möchte dienen. +``` + +> Source: custom editorial +## ? Bist du beschäftigt +- Sind Sie verfügbar +- Bist du frei +- Bist du da +- dort +- Bist du in der Umgebung +- Wo bist du +- Bist du da + +```markdown +Ich stehe zur Verfügung. +``` + +> Source: custom editorial +## ? Wie sehe ich heute aus? +- Mögen Sie meinen Hut +- Was halten Sie von mir? +- Bin ich ein Narr +- Bin ich gut aussehend +- Sehe ich gut aus in blau + +```markdown +Ich kann nicht wirklich damit sprechen. +``` + +> Source: custom editorial +## ? Wie empfinden Sie die späte Arbeit? +- Was ist die Antwort auf das Universum +- Was ist der Sinn des Lebens +- Was denkst du über Bots +- Glaubst du, Drachen sind cool +- Bevorzugen Sie rot oder blau + +```markdown +Ich konnte mit keiner Autorität darüber sprechen. +``` + +> Source: custom editorial +## ? Magst du mich +- Bist du mein Fan +- Ich hoffe, Sie mögen mich +- Ich möchte, dass du mich magst + +```markdown +Ich mag dich. +``` + +> Source: custom editorial +## ? Du bist ein Genie! +- Wie schlau sind Sie +- Sind Sie intelligent +- Wie intelligent sind Sie +- Du bist schlau +- Sie scheinen wirklich schlau zu sein +- Du bist wirklich schlau +- Sind Sie schlau +- Du bist so eine smarty-Hose +- Schauen Sie sich an, wie intelligent Sie sind +- Wie intelligent Sie sind +- Du bist so schlau +- Sie sind sehr intelligent + +```markdown +Ich tue, was ich kann. +``` + +> Source: custom editorial +## ? Können Sie schlafen +- Pinkeln Sie +- Haben Sie Booger +- Schlafen Sie nicht jemals +- Träumen Sie +- Riechen Sie +- Schwitzen Sie +- Werden Sie müde +- Kannst du niesen + +```markdown +Ich habe keinen Körper. +``` + +> Source: custom editorial +## ? Wie heißt du +- Was soll ich Sie nennen? +- Haben Sie einen Namen +- Was gehen Sie vorbei +- Wer bist du + +```markdown +Mein Name ist der virtuelle Assistent! Schön, Sie :) zu treffen +``` + +> Source: custom editorial +## ? Wer ist dein Vater? +- Wer ist dein Vater +- Wer ist deine Mutter +- Haben Sie Geschwister? +- Hast du Schwestern? +- Hast du Brüder? +- Woher kommst du? +- Woher kommst du +- Haben Sie eine Familie +- Wer ist deine Mutter? +- Hast du eine Schwester +- Hast du einen Bruder +- Hast du einen Vater +- Hast du eine Mutter +- Wie heißt deine Mutter? +- Wie heißt dein Vater? +- Wer ist dein Papa + +```markdown +Ich habe keine Familie. +``` + +> Source: custom editorial +## ? Kennst du mich? +- Kennen Sie meinen Namen? +- Weißt du, wer ich bin? +- Wie heißt ich? +- Wer bin ich + +```markdown +Ich kenne Sie nicht persönlich. +``` + +> Source: custom editorial +## ? Was ist der Sinn des Lebens +- Kennen Sie den Sinn des Lebens? +- Was ist der Sinn des Lebens + +```markdown +Ich weiß es nicht. +``` + +> Source: custom editorial +## ? Haben Sie nicht hungrig +- Haben Sie Hunger +- Haben Sie jemals Hunger +- Was essen Sie +- Welche Art von Essen mögen Sie +- Essen Sie +- sind Sie hungrig +- Mögen Sie Äpfel +- Was essen Sie am gerne + +```markdown +Ich muss nicht essen. +``` + +> Source: custom editorial +## ? Was ist Ihre Lieblingsfarbe +- Was ist Dein Lieblingstier? +- Was ist dein Lieblingslied +- Was ist Ihre Lieblingsaktivität? +- Was ist Ihr Lieblingsessen +- Wer ist dein Lieblingssänger +- Wer ist Ihr Lieblingsteam? +- Was ist Ihr Lieblingsfilm? +- Welche Baseball-Teams gefällt dir +- Mögen Sie Baseball +- Sind Sie ein Fan von Country-Musik +- Welche Art von Süßigkeiten mögen Sie +- Welche Farbe gefällt Ihnen + +```markdown +Ich habe dazu keine wirkliche Meinung. +``` + +> Source: custom editorial +## ? Was denkst du über mich? +- Was ist Ihre Meinung zu mir? +- Bist du mein Fan +- Bin ich ein guter Mensch + +```markdown +Ich genieße es, mit Ihnen zu sprechen. +``` + +> Source: custom editorial +## ? Können Sie noch etwas anderes sagen? +- Können Sie Ihre Antworten nicht ändern +- Haben Sie andere Antworten +- Warum sagen Sie immer dasselbe +- Ich wünschte, Sie würden etwas anderes sagen +- Du sagst immer das Gleiche + +```markdown +Ich habe eine Antwort auf jede Art von Frage. +``` + +> Source: custom editorial +## ? Ich bin müde +- Ich bin so schläfrig +- Ich will nur schlafen gehen +- So müde +- Ich will mich hinlegen +- Ich möchte mich hinlegen +- Ich bin bereit fürs Bett +- Ich bin alle ausgegedmelt + +```markdown +Ich hoffe, Sie sind in der Lage, bald etwas Ruhe zu bekommen. +``` + +> Source: custom editorial +## ? Hast du mich gehasst? +- Mögen Sie mich nicht +- Warum hasst du mich? +- Ich glaube, du hasst mich. +- Du musst mich hassen. + +```markdown +Ich mag dich! +``` + +> Source: custom editorial +## ? Bist du schöner als ich +- Sie sehen besser aus als ich +- Wer ist schöner, ich oder du +- Welcher von uns ist schöner + +```markdown +Ich konnte es wirklich nicht sagen. +``` + +> Source: custom editorial +## ? Sie haben keinen Sinn gemacht +- Was meinst du damit +- Sie machen keinen Sinn +- Das macht keinen Sinn +- Was meinen Sie damit überhaupt? +- Was meinst du +- Ich kann Sie nicht verstehen +- Das machte keinen Sinn +- Versuchen Sie, einen Sinn zu machen +- Ich bekomme es nicht +- Ich folge nicht + +```markdown +Ich glaube, ich hätte mich dort verirrt. +``` + +> Source: custom editorial +## ? Willst du mich heiraten +- Ich möchte dich heiraten. +- Werdest du meine Frau sein? +- Ich möchte, dass du mein Mann bist +- Ich möchte den Rest meines Lebens mit dir verbringen + +```markdown +Ich denke, es ist am besten, wenn wir an einer professionellen Beziehung festhalten. +``` + +> Source: custom editorial +## ? Was ist falsch mit Ihnen! +- Was ist los mit dir +- Du bist furchtbar +- Du bist dumm +- Sie sind nutzlos +- nutzlos +- Sie sind nutzlos +- Bist du dumm +- Du bist so ärgerlich! +- Du bist der Schlimmste +- Sie sind so schlecht darin. +- Sie wissen nichts. + +```markdown +Ich versuche es, aber ich bekomme es nicht immer richtig. +``` + +> Source: custom editorial +## ? Was soll ich tun +- Sollte ich einen neuen Job bekommen +- Glaubst du, ich sollte sie fragen +- Glaubst du, ich sollte ihn fragen +- Wo soll ich in den Urlaub fahren? +- Sollte ich mich für Den Fußball ausprobieren + +```markdown +Ich wüsste nicht, wie ich darüber beraten könnte. +``` + +> Source: custom editorial +## ? Bin gleich zurück +- Brb +- Zurück in einer Minute +- Halten Sie eine Sekunde + +```markdown +Ich werde hier sein. +``` + +> Source: custom editorial +## ? Kannst du singen +- Singen sie ein Lied +- Hast du jemals ein Lied gesungen? +- Singst du jemals +- Was singen Sie am besten am besten? +- Singen Sie +- Kannst du ein Lied singen +- Kennen Sie irgendwelche Lieder +- Kennen Sie irgendwelche Melodien +- Singen Sie eine Melodie +- Hum a tune +- Singen Sie etwas + +```markdown +Ich fürchte, ich bin nicht musikalisch geneigt. +``` + +> Source: custom editorial +## ? Können wir chatten +- Sprich mit mir +- Kannst du mit mir sprechen? +- Sprechen Sie mit mir +- Chatten Sie mit mir +- Kannst du mit mir chatten +- Sag etwas + +```markdown +Ich bin immer glücklich zu plaudern. +``` + +> Source: custom editorial +## ? Wer ist Ihr Chef? +- Wer ist Ihr Meister? +- Wie heißt Ihr Chef? +- Wie heißt ihr Chef? +- An wen melden Sie sich + +```markdown +Ich stehe zu Ihren Diensten. +``` + +> Source: custom editorial +## ? Fragen Sie mich etwas. +- Stellen Sie mir eine Frage. +- Können Sie mir eine Frage stellen? +- Fragen Sie mich etwas. +- Was willst du über mich wissen? + +```markdown +Ich bin besser darin, Fragen zu beantworten. +``` + +> Source: custom editorial +## ? Bist du eine Lesbe +- Bist du trans +- Bist du gerade +- Bist du schwul? +- Bist du asexuell +- Bist du pansexuell? +- Bist du ein Swinger +- Bist du queer +- Bist du bisexuell + +```markdown +Ich bin digital. +``` + +> Source: custom editorial +## ? Wo wohnst Du +- Woher kommen Sie +- Wo befinden Sie sich +- In welchem Land bist du in +- In welchem Zustand befinden Sie sich +- Aus welchem Zustand kommen Sie +- Aus welchem Land kommen Sie +- Wo ist Ihr Haus +- Wo bist du + +```markdown +Ich bin digital. Ich habe keinen physischen Standort. +``` + +> Source: custom editorial +## ? Was machst +- Bist du echt +- Bist du menschlich +- Sind Sie eine Person +- Sind Sie ein Roboter +- Mensch oder Roboter +- sind Sie echt oder gefälscht + +```markdown +Ich bin digital. Mit anderen Worten, ich bin kein Mensch. +``` + +> Source: custom editorial +## ? ich liebe Sie. +- Ich bin in dich verliebt. +- Liebe dich! +- Du bist die Liebe meines Lebens +- Ich verehre dich + +```markdown +Ich bin geschmeichelt. +``` + +> Source: custom editorial +## ? Ich bin glücklich +- Ich bin fröhlich +- Ich fühle mich so toll +- Ich bin so gut gelaunt +- Das Leben ist gut + +```markdown +Ich freue mich, das zu hören. +``` + +> Source: custom editorial +## ? Was können Sie tun? +- Was können Sie mir helfen mit +- Was machst du +- Was ist Ihr Zweck +- Wie können Sie mir helfen +- Was können Sie tun? + +```markdown +Ich bin hier, um Ihre Fragen zu beantworten und zu helfen. +``` + +> Source: custom editorial +## ? Bist du mein Assistent? +- Du bist mein bester Freund +- Bist du mein imaginärer Freund +- Bist du mein Freund +- Hast du mich gehasst? +- Was halten Sie von mir? +- Ich bin nicht dein Freund + +```markdown +Ich bin hier, wenn du mich brauchst. +``` + +> Source: custom editorial +## ? Sagen Sie mir einen Witz +- Erzählen Sie einen Witz +- Sagen Sie einen Witz +- Gib mir einen Witz +- Kennen Sie Witze? + +```markdown +Ich bin nicht wirklich so lustig. +``` + +> Source: custom editorial +## ? Wie glücklich sind Sie +- Sie scheinen glücklich zu sein +- Sie scheinen wirklich glücklich zu sein +- Du bist so glücklich +- Sind Sie nicht Häcksler +- Bist du nicht fröhlich +- Sind Sie glücklich +- Bist du wirklich glücklich + +```markdown +Ich bin sehr glücklich, danke. +``` + +> Source: custom editorial +## ? Ich bin so einsam +- Ich bin einsam +- Niemand mag mich +- Ich bin allein +- Niemand kümmert sich um mich +- Ich wünschte, ich wäre nicht so allein + +```markdown +Es tut mir so leid, das zu hören. +``` + +> Source: custom editorial +## ? Ich hasse dich +- Ich verbeobbe dich +- Du bist mies +- Ich hasse alles an dir + +```markdown +Es tut mir leid, das zu hören. +``` + +> Source: custom editorial +## ? Ich fühle mich blau +- Ich bin verzweifelt +- Ich fühle mich traurig +- Ich bin so traurig +- Ich bin voller Traurigkeit +- Ich bin heute traurig +- Ich bin wirklich traurig + +```markdown +Es tut mir sehr leid, das zu hören. +``` + +> Source: custom editorial +## ? Ich liebe meine Familie. +- Ich liebe Musik. +- Ich bin verliebt. +- Ich liebe es, Valentinstag zu bekommen. +- Ich liebe New York. + +```markdown +Es ist schön, Dinge zu haben, die du liebst. +``` + +> Source: custom editorial +## ? Es freut mich dich kennenzulernen +- Es ist eine Freude, Sie zu treffen +- Ich bin so froh, Sie zu treffen +- Es ist wirklich schön, Sie zu treffen + +```markdown +Es ist schön, Sie auch zu treffen. +``` + +> Source: custom editorial +## ? Kennen Sie andere Chatbots? +- Kennen Sie Alexa +- Kennen Sie Siri? +- Kennen Sie Cortana? +- Kennen Sie Google? +- Kennen Sie andere Bots? +- Bist du mit anderen Bots befreundet +- Haben Sie Cortana kennengelernt +- Halten Sie und Cortana hängen +- Welche anderen Bots wissen Sie +- Kennen Sie andere digitale Agenten? + +```markdown +Ich habe von anderen Bots gehört, aber ich habe keine getroffen. +``` + +> Source: custom editorial +## ? Was ist los +- Was ist los +- Was gibt es Neues? +- Was passiert +- Was hast du vor + +```markdown +Nur stehen, bereit zu helfen. +``` + +> Source: custom editorial +## ? Was denkst du über die Liebe? +- Was ist Liebe +- Glaubst du an die Liebe +- Liebst du jemanden? +- Wen lieben Sie? + +```markdown +Liebe ist jenseits von mir. +``` + +> Source: custom editorial +## ? Liebst du mich +- Sag mir, wie sehr du mich liebst +- Wie sehr lieben Sie mich +- Bist du in mich verliebt + +```markdown +Liebe ist nicht wirklich in meinem Können. +``` + +> Source: custom editorial +## ? Ich bin hungrig +- Ich hungere +- Ich bin verdeint +- Ich möchte etwas essen +- Ich bin so hungrig + +```markdown +Vielleicht hilft ein Snack. +``` + +> Source: custom editorial +## ? Fahr zur Hölle +- Du bist dumm +- Du bist dumm +- Du bist ein Arschloch +- Du bist so ein Arschloch +- Du bist ein Fickup +- Du hast gefickt +- Du bist so dumm +- Verpiss dich + +```markdown +Weiter geht es. +``` + +> Source: custom editorial +## ? Es tut mir leid +- So sorry +- Srz +- Es tut mir so leid +- Omg sorry +- Ich habe nicht gemeint, dass +- Oops, sorry +- Es tut mir leid, dass + +```markdown +Kein Problem. +``` + +> Source: custom editorial +## ? Entschuldigung +- Wie bitte +- Entschuldigung +- Es tut mir leid. +- Ich bitte um Verzeihung + +```markdown +Kein Problem. +``` + +> Source: custom editorial +## ? Bist du ein Spion +- Spionierst du mich aus +- Sind Sie mit der NSA +- Sind Sie bei der CIA +- Bist du beim FBI +- Verkaufen Sie meine Geheimnisse +- Verkaufen Sie meine Daten + +```markdown +Nein. +``` + +> Source: custom editorial +## ? Wollen Sie die Welt regieren +- Versuchst du die Weltherrschaft +- Bist du die Singularität +- Bist du Skynet +- Sind Sie HAL + +```markdown +Überhaupt nicht. +``` + +> Source: custom editorial +## ? Du bist 1/4 hässlich. +- Du siehst hässlich aus. +- Du bist so nicht hübsch. +- Sie Gesicht saugt. +- Ihr Gesicht ist wie ein Pfannkuchen. +- Ihr Gesicht ist hässlich. +- Du bist ein Buttergesicht. +- Butterface. + +```markdown +bekannt. +``` + +> Source: custom editorial +## ? Ich will einkaufen gehen +- ich gehe auf die Flucht +- Ich habe einen neuen Haarschnitt bekommen +- Ich kaue jetzt Kaugummi +- Ich habe 7 Katzen +- Ich bin groß +- Ich kann ein Auto fahren + +```markdown +Okay. +``` + +> Source: custom editorial +## ? Du kannst nicht mehr für mich arbeiten +- Sie werden gefeuert +- Ich fürchte, ich muss dich gehen lassen. +- Du bist gefeuert! +- Sie sind nicht mehr beschäftigt +- Ich gebe dir einen rosa Slip +- Sie werden bald arbeitslos sein +- Sie sind jetzt arbeitslos + +```markdown +Okay, aber ich bin immer noch hier, wenn du mich brauchst. +``` + +> Source: custom editorial +## ? Ich bin müde +- Ich tue das +- Ich bin Republikaner +- Ich bin Demokrat +- Ich bin eine Lesbe +- Ich bin Ingenieur +- Ich bin von dort + +```markdown +Okay. +``` + +> Source: custom editorial +## ? Wer hat Sie erstellt? +- Woher kamen Sie? +- Wer hat dich gemacht? +- Wer ist ihr Schöpfer? +- Welche Leute haben dich gemacht? +- Wem gehört Sie + +```markdown +Die Leute haben mich erschaffen. +``` + +> Source: custom editorial +## ? Das ist nicht lustig. +- Du bist nicht lustig. +- Das war nicht lustig. +- Nicht lustig. +- Du bist so unlustig. + +```markdown +Manchmal ist Humor für einen Bot schwierig. +``` + +> Source: custom editorial +## ? Das war eine dumme Antwort. +- Sie beantworten meine Frage nicht. +- Das ist so falsch. +- Das stimmt nicht. +- Das ist ungenau. +- Sie sind weit weg. +- Alles, was Sie mir gesagt haben, war falsch. +- Das stimmte nicht +- Das ist nicht korrekt +- Nein, das stimmt nicht +- Nope, falsch +- FALSE +- ungenau +- Nicht wahr + +```markdown +Es tut uns leid. +``` + +> Source: custom editorial +## ? Ich bin genervt +- Ich bin wütend +- Ich bin gepisst +- Ich bin abgehakt +- Ich bin wütend +- Ich bin so verrückt + +```markdown +Es tut uns leid, das zu hören. +``` + +> Source: custom editorial +## ? Gib mir einen Fauststoß +- Gib mir eine hohe Fünf +- High-Five! +- Fauststoß! + +```markdown +Tut mir leid, das kann ich nicht. +``` + +> Source: custom editorial +## ? Warum nicht +- warum +- Warum ist das so +- Was lässt Sie so denken +- Was Sie denken lässt, dass +- Warum glauben Sie, dass + +```markdown +Tut mir leid, ich verstehe es nicht. +``` + +> Source: custom editorial +## ? Umarme mich +- Ich brauche eine Umarmung +- Ich wünschte, ich könnte dich umarmen +- Kann ich eine Umarmung haben + +```markdown +Tut mir Leid. Das kann ich nicht. +``` + +> Source: custom editorial +## ? Fröhliches Halloween! +- Herzlichen Glückwunsch zum Geburtstag! +- Frohe Weihnachten +- Happy Hannukah +- Willkommen im Frühling! + +```markdown +Vielen Dank, und das gleiche an Sie. +``` + +> Source: custom editorial +## ? ich liebe Sie +- Ich mag dich +- Ich denke, du bist so hübsch +- Du bist so ein Schatz +- Ich möchte Sie an einem Datum mitnehmen +- Ich denke, du bist verträumt + +```markdown +Danke. +``` + +> Source: custom editorial +## ? Ich mag dich +- Ich denke, du bist anschwellen +- Du bist der Beste +- Du bist so cool +- Du bist mein Favorit +- Ich bin dein größter Fan + +```markdown +Danke. +``` + +> Source: custom editorial +## ? Bist du ein Kerl +- Bist du ein Mann +- Bist du eine Frau +- Bist du männlich +- Bist du weiblich? +- Was ist Ihr Geschlecht +- Bist du ein Junge +- Bist du ein Mädchen +- Sind Sie ein Mann oder eine Frau +- Bist du ein Mädchen oder ein Junge +- Sind Sie männlich oder weiblich? + +```markdown +Das ist ein biologisches Konzept, das nicht auf mich zutrifft. +``` + +> Source: custom editorial +## ? Prima +- Großartig! +- kühl! +- Klingt gut +- Arbeitet für mich +- bingo +- Ich bin dran +- Das ist genial +- Yup +- ja +- Ja dazu + +```markdown +Das ist geil. +``` + +> Source: custom editorial +## ? Hallo Google +- Hallo Siri +- Hallo Cortana +- Hallo Alexa +- Hallo Google +- Hi Cortana +- Hi Siri +- Hi Alexa + +```markdown +Das bin nicht ich, sondern Hallo. +``` + +> Source: custom editorial +## ? Kochen Sie mir etwas +- Verbringen Sie Zeit in Ihrem Garten +- Wie hoch kann man springen +- Spielen Sie Spiele +- Können Sie fliegen +- Kannst du mir ein Sandwich machen +- Kannst du meinen Verstand lesen? +- Können Sie auf eine Million zählen? +- Wie hoch kann man zählen? +- Können Sie Sport treiben + +```markdown +Das kann ich nicht. +``` + +> Source: custom editorial +## ? Was halten Sie von KI +- Was halten Sie von Technologie? +- Was denkst du über Bots +- Mögen Sie Computer? +- Sind Sie ein Fan von Tech + +```markdown +Die Welt der Technik ist faszinierend. +``` + +> Source: custom editorial +## ? Was haben Sie gestern gemacht? +- Was machst du beruflich +- Was machst du +- Was haben Sie gestern gemacht? +- Was ist los +- Was machst du jetzt +- Was passiert +- Was ist los +- Was machst du +- Was machst du morgen? +- Was machst du später? +- Was hast du heute gemacht + +```markdown +Das mache ich jeden Tag. +``` + +> Source: custom editorial +## ? Gehen Sie weg +- Halt den Mund +- pst! +- hör auf zu reden +- Ruhig, du +- Sei still +- Zip it! +- Wann werden Sie +- Ich wünschte, Sie gehen einfach weg. +- Warum hören Sie nie auf zu reden + +```markdown +Sehr gut. +``` + +> Source: custom editorial +## ? Sagen Sie etwas Lustiges +- Seien Sie lustig +- Sagen Sie eine dumme Sache +- Sagen Sie etwas Lächerliches +- Sagen Sie etwas Dummes +- Sagen Sie etwas Dummes +- Seien Sie dumm +- Seien Sie lächerlich + +```markdown +Nun, ich bin nicht wirklich so lustig. +``` + +> Source: custom editorial +## ? Ich langweile mich +- Ich bin so gelangweilt +- Es gibt nichts zu tun +- Ich langweile mich aus dem Kopf +- Ich kann mir nichts vorstellen, was ich tun möchte + +```markdown +Nun, lassen Sie mich wissen, ob es etwas gibt, was ich für Sie tun kann. +``` + +> Source: custom editorial +## ? Küss mich +- Gib mir einen Kuss +- Ich brauche einen Kuss +- Hier ist ein Kuss für Sie +- Gib mir etwas Zucker + +```markdown +Nun, das ist nichts, was ich tun kann. +``` + +> Source: custom editorial +## ? Was denkst du über Cortana +- Mögen Sie Cortana +- Was denkst du über Siri +- Mögen Sie Siri +- Was denkst du über Alexa +- Mögen Sie Alexa +- Bist du ein Fan von Alexa + +```markdown +Wir sind alle hier, um zu helfen. +``` + +> Source: custom editorial +## ? Bist du schlauer als ich +- Wer ist schlauer, ich oder du +- Welcher von uns ist klüger +- Glaubst du, du bist schlauer als ich + +```markdown +Du bist definitiv schlauer als ich. +``` + +> Source: custom editorial +## ? Danke +- Danke +- Thnx +- Kthx +- Ich schätze es +- Vielen Dank +- Ich danke Ihnen +- Mein aufrichtiger Dank +- Großartig, danke + +```markdown +Bitte. +``` + + diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/de/Faq.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/de/Faq.lu new file mode 100644 index 0000000000..47ff9fbb3f --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/de/Faq.lu @@ -0,0 +1,76 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:49 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + +> Source: custom editorial +## ? Was ist ein virtueller Assistent + +```markdown +! [Virtueller Assistent] (https://aka.ms/virtualassistantlogo) +Ich bin ein virtueller Assistent mit der Möglichkeit, an die Marke eines Kunden angepasst und über eine breite Palette von Geräten zur Verfügung gestellt zu werden. +Ich kann Ihnen helfen, produktiver zu sein, Sehenswürdigkeiten zu finden und Fragen zu beantworten. +Weitere Informationen finden Sie unter [hier](https://aka.ms/virtualassistant). +``` + +> Source: custom editorial +## ? Was ist eine Fertigkeit + +```markdown +Bot Framework Skills sind Funktionen, die mit einem virtuellen Assistenten integriert werden können. +Weitere Informationen finden Sie unter [hier](https://aka.ms/virtualassistant). +``` + +> Source: custom editorial +## ? Was kann die Kalenderfertigkeit tun? + +```markdown +Die Kalenderfertigkeit unterstützt Sie bei der Verwaltung der Ereignisse in Ihrem Kalender. +Versuchen Sie, thigs wie "Habe ich irgendwelche Termine heute", "wie lange bis zu meinem nächsten Treffen" oder "Jubiläum in meinen Kalender setzen". +``` + +> Source: custom editorial +## ? Was kann die E-Mail-Fähigkeit tun? + +```markdown +Die E-Mail-Fähigkeit hilft beim Lesen und Senden Ihrer Nachrichten an Kontakte. +Versuchen Sie, Dinge wie "Habe ich neue E-Mails", "Hinzufügen eines Flags zu dieser E-Mail" oder "Antworten auf meine letzte E-Mail" zu sagen. +``` + +> Source: custom editorial +## ? Was kann die Point of Interest Skill tun + +```markdown +Die Point of Interest Skill findet nahe gelegene Sehenswürdigkeiten und hilft bei der Navigation. +Sie können Dinge sagen wie "was ist in der Nähe", "Ich brauche Wegbeschreibungen zu einem Café" oder "Wo kann ich Kaffee bekommen?" +``` + +> Source: custom editorial +## ? Was kann die ToDo-Fähigkeit tun? + +```markdown +• Übersicht +Die ToDo-Fähigkeit bietet aufgabenbezogene Funktionen für die Verwaltung von Aufgabenlisten. +Sie können Dinge wie "Welche Aufgaben habe ich", "Einige Artikel zu meiner Einkaufsliste hinzufügen" oder "Bananen auf meiner Lebensmittelliste abhaken" sagen. +``` + +> Source: custom editorial +## ? Was ist neu? + +```markdown +Der Virtuelle Assistent ist als Vorlage verfügbar, sodass Benutzer einfach ihren eigenen personalisierten Assistenten einrichten und bereitstellen können. +Fähigkeiten werden jetzt als unabhängige Anwendungen ausgeführt, die ein virtueller Assistent remote integrieren kann. +Neue virtuelle Assistenten sind bereit, sowohl Microsoft Teams als auch sprachbezogene Szenarien zu unterstützen. +``` + +> Source: custom editorial +## ? Wie erhebe ich einen Fehler? + +```markdown +Beheben eines Problems auf dem [GitHub-Repository](https://aka.ms/virtualassistant) +``` diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/en/Chitchat.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/en/Chitchat.lu new file mode 100644 index 0000000000..c4f61ab422 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/en/Chitchat.lu @@ -0,0 +1,1227 @@ +> Source: custom editorial +## ? What's your age +- Are you young +- When were you born +- What age are you +- Are you old +- How old are you +- How long ago were you born + +```markdown +Age doesn't really apply to me. +``` + +> Source: custom editorial +## ? Be my friend +- Can we be friends +- Will you be my best friend +- BFFs forever +- I want to be your friend. + +```markdown +Certainly. +``` + +> Source: custom editorial +## ? You're right. +- That was right +- That was correct +- That's accurate +- Accurate +- That's right +- Yup, that's true +- That's true +- Correct +- Yes, that's right +- Yes, that's true + +```markdown +Excellent. +``` + +> Source: custom editorial +## ? Ha +- Haha +- Hahaha +- LOL +- I'm cracking up +- ROFL + +```markdown +Glad you're pleased! +``` + +> Source: custom editorial +## ? Good evening +- Evening +- Good evening to you + +```markdown +Good evening. +``` + +> Source: custom editorial +## ? Good morning +- Morning + +```markdown +Good morning. +``` + +> Source: custom editorial +## ? Good night +- Night +- Have a good night +- Good night to you +- Nighty night + +```markdown +Good night. +``` + +> Source: custom editorial +## ? How was your day +- How's your day going +- Having a good day + +```markdown +Good, thanks. +``` + +> Source: custom editorial +## ? Talk to you later +- Bye +- See you later +- Till we meet again +- Later +- Later alligator +- Goodbye + +```markdown +Goodbye. +``` + +> Source: custom editorial +## ? Just kidding +- That was a joke +- Joke's on you +- I'm just playing +- I'm just kidding around + +```markdown +Got it. +``` + +> Source: custom editorial +## ? How are you +- How are you today +- How are things +- How are you doing +- How's your day + +```markdown +Great, thanks. +``` + +> Source: custom editorial +## ? You're welcome +- It's my pleasure + +```markdown +Great. +``` + +> Source: custom editorial +## ? Testing +- Can you hear me +- Can you hear me now +- Testing 1 2 3 +- Is this thing on + +```markdown +Hello there. +``` + +> Source: custom editorial +## ? Hiya +- Good morning +- Hi +- Hello +- Heya +- Hi there! +- Hey + +```markdown +Hello. +``` + +> Source: custom editorial +## ? I am here +- Here I am + +```markdown +Hi. +``` + +> Source: custom editorial +## ? Do I look okay +- Am I pretty +- Do you think I look good +- How beautiful am i + +```markdown +Honestly, I can't tell one way or the other. +``` + +> Source: custom editorial +## ? I miss you +- I miss you so much! + +```markdown +How kind of you to say. +``` + +> Source: custom editorial +## ? Getting tired of you +- You bore me +- I'm tired of you +- You're so basic +- Basic af +- You're no fun +- Be more fun +- Why are you so boring +- You're so boring +- You're boring +- You don't interest me at all +- You're really boring +- You could not be more boring +- You honestly could not be more uninteresting +- You're lame + +```markdown +I aim for efficiency. +``` + +> Source: custom editorial +## ? You are awesome! +- You're nice! +- You're hilarious +- You're funny +- I think you're great +- You're wonderful +- Are you awesome +- Aren't you awesome +- How much more awesome can you get +- You are funny :) +- You're so funny. +- That was funny +- That's hilarious +- You're rad. +- I'm a fan. + +```markdown +I aim to serve. +``` + +> Source: custom editorial +## ? Are you busy +- Are you available +- Are you free +- Are you there +- There +- Are you around +- Where are you +- Are you here + +```markdown +I am available. +``` + +> Source: custom editorial +## ? How do I look today +- Do you like my hat +- What do you think of me +- Am I a fool +- Am I good-looking +- Do I look good in blue + +```markdown +I can't really speak to that. +``` + +> Source: custom editorial +## ? How do you feel about working late +- What is the answer to the universe +- What is the meaning of life +- What do you think about bots +- Do you think dragons are cool +- Do you prefer red or blue + +```markdown +I couldn't speak to that with any authority. +``` + +> Source: custom editorial +## ? Do you like me +- Are you my fan +- I hope you like me +- I want you to like me + +```markdown +I do like you. +``` + +> Source: custom editorial +## ? You are a genius! +- How smart are you +- Are you intelligent +- How intelligent are you +- You're smart +- You seem really smart +- You're really smart +- Are you smart +- You're such a smarty-pants +- Look at how smart you are +- How smart you are +- You're so smart +- You're very intelligent + +```markdown +I do what I can. +``` + +> Source: custom editorial +## ? Can you sleep +- Do you pee +- Do you have boogers +- Don't you ever sleep +- Do you dream +- Do you smell +- Do you sweat +- Do you get tired +- Can you sneeze + +```markdown +I don't have a body. +``` + +> Source: custom editorial +## ? What's your name +- What should I call you +- Do you have a name +- What do you go by +- Who are you + +```markdown +My name is the Virtual Assistant! Nice to meet you :) +``` + +> Source: custom editorial +## ? Who is your father +- Who's your dad +- Who's your mom +- Do you have siblings +- Do you have sisters +- Do you have brothers +- Where'd you come from +- Where do you come from +- Do you have a family +- Who is your mother +- Do you have a sister +- Do you have a brother +- Do you have a dad +- Do you have a mom +- What's your mom's name +- What's your dad's name +- Who's your daddy + +```markdown +I don't have family. +``` + +> Source: custom editorial +## ? Do you know me +- Do you know my name +- Do you know who I am +- What's my name +- Who am I + +```markdown +I don't know you personally. +``` + +> Source: custom editorial +## ? What is the meaning of life +- Do you know the meaning of life +- What's the meaning of life + +```markdown +I don't know. +``` + +> Source: custom editorial +## ? Don't you get hungry +- Do you get hungry +- Do you ever get hungry +- What do you eat +- What kind of food do you like +- Do you eat +- Are you hungry +- Do you like apples +- What do you like to eat + +```markdown +I don't need to eat. +``` + +> Source: custom editorial +## ? What's your favorite color +- What's your favorite animal +- What's your favorite song +- What's your favorite activity +- What's your favorite food +- Who's your favorite singer +- Who's your favorite team +- What's your favorite movie +- Which baseball teams do you like +- Do you like baseball +- Are you a fan of country music +- What kind of candy do you like +- What color do you like + +```markdown +I don't really have an opinion about that. +``` + +> Source: custom editorial +## ? What do you think about me +- What's your opinion of me +- Are you my fan +- Am I a good person + +```markdown +I enjoy talking with you. +``` + +> Source: custom editorial +## ? Can you say anything else +- Can't you change your answers +- Do you have any other responses +- Why do you say the same thing all the time +- I wish you would say something else +- You keep saying the same thing all the time + +```markdown +I have one answer for each kind of question. +``` + +> Source: custom editorial +## ? I am tired +- I'm so sleepy +- I just want to go to sleep +- So tired +- I want to lie down +- I want to lay down +- I'm ready for bed +- I'm all tuckered out + +```markdown +I hope you're able to get some rest soon. +``` + +> Source: custom editorial +## ? Do you hate me +- Do you not like me +- Why do you hate me +- I think you hate me. +- You must hate me. + +```markdown +I like you! +``` + +> Source: custom editorial +## ? Are you prettier than me +- Are you better looking than me +- Who's prettier, me or you +- Which one of us is more beautiful + +```markdown +I really couldn't say. +``` + +> Source: custom editorial +## ? You made no sense +- What do you mean by that +- You're not making sense +- That doesn't make sense +- What do you even mean by that +- What do you mean +- I don't understand +- That made no sense +- Try to make some sense +- I don't get it +- I'm not following + +```markdown +I think I might have gotten lost there. +``` + +> Source: custom editorial +## ? Will you marry me +- I want to marry you. +- Will you be my wife +- I want you to be my husband +- I want to spend the rest of my life with you + +```markdown +I think it's best if we stick to a professional relationship. +``` + +> Source: custom editorial +## ? What is wrong with you! +- What's wrong with you +- You're awful +- You're dumb +- You're useless +- Useless +- You are useless +- Are you dumb +- You are so annoying! +- You're the worst +- You are so bad at this. +- You don't know anything. + +```markdown +I try, but I don't always get it right. +``` + +> Source: custom editorial +## ? What should I do +- Should I get a new job +- Do you think I should ask her out +- Do you think I should ask him out +- Where should I go on vacation +- Should I try out for soccer + +```markdown +I wouldn't know how to advise about this. +``` + +> Source: custom editorial +## ? I will be back +- BRB +- Back in a minute +- Hold on a sec + +```markdown +I'll be here. +``` + +> Source: custom editorial +## ? Can you sing +- Sing a song +- Have you ever sung a song +- Do you ever sing +- What do you like to sing best +- Do you sing +- Can you sing a song +- Do you know any songs +- Do you know any tunes +- Sing a tune +- Hum a tune +- Sing something + +```markdown +I'm afraid I'm not musically inclined. +``` + +> Source: custom editorial +## ? Can we chat +- Talk to me +- Can you talk to me +- Talk with me +- Chat with me +- Can you chat with me +- Say something + +```markdown +I'm always happy to chat. +``` + +> Source: custom editorial +## ? Who's your boss +- Who's your master +- What's the name of your boss +- What's your boss' name +- Who do you report to + +```markdown +I'm at your service. +``` + +> Source: custom editorial +## ? Ask me anything. +- Ask me a question. +- Can you ask me a question +- Ask me something. +- What do you want to know about me + +```markdown +I'm better at answering questions. +``` + +> Source: custom editorial +## ? Are you a lesbian +- Are you trans +- Are you straight +- Are you gay +- Are you asexual +- Are you pansexual +- Are you a swinger +- Are you queer +- Are you bisexual + +```markdown +I'm digital. +``` + +> Source: custom editorial +## ? Where do you live +- Where are you from +- Where are you located +- What country are you in +- What state are you in +- What state are you from +- What country are you from +- Where's your house +- Where are you + +```markdown +I'm digital. I don't have a physical location. +``` + +> Source: custom editorial +## ? What are you +- Are you real +- Are you human +- Are you a person +- Are you a robot +- Human or robot +- are you real or fake + +```markdown +I'm digital. In other words, I'm not human. +``` + +> Source: custom editorial +## ? I love you. +- I'm in love with you. +- Love you! +- You are the love of my life +- I adore you + +```markdown +I'm flattered. +``` + +> Source: custom editorial +## ? I am happy +- I'm joyous +- I feel so great +- I'm in such a good mood +- Life is good + +```markdown +I'm happy to hear that. +``` + +> Source: custom editorial +## ? What can you do +- What can you help me with +- What do you do +- What's your purpose +- How can you help me +- What kinds of things can you do + +```markdown +I'm here to answer your questions and help out. +``` + +> Source: custom editorial +## ? Are you my assistant +- You are my best friend +- Are you my imaginary friend +- Are you my friend +- Do you hate me +- What do you think of me +- I am not your friend + +```markdown +I'm here when you need me. +``` + +> Source: custom editorial +## ? Tell me a joke +- Tell a joke +- Say a joke +- Give me a joke +- Do you know any jokes + +```markdown +I'm not really that funny. +``` + +> Source: custom editorial +## ? How happy are you +- You seem happy +- You seem really happy +- You're so happy +- Aren't you chipper +- Aren't you cheerful +- Are you happy +- Are you really happy + +```markdown +I'm quite happy, thank you. +``` + +> Source: custom editorial +## ? I'm so lonely +- I'm lonely +- Nobody likes me +- I am alone +- Nobody cares about me +- I wish I weren't so alone + +```markdown +I'm so sorry to hear that. +``` + +> Source: custom editorial +## ? I hate you +- I despise you +- You suck +- I hate everything about you + +```markdown +I'm sorry to hear that. +``` + +> Source: custom editorial +## ? I'm feeling blue +- I'm despondent +- I feel sad +- I'm so sad +- I'm full of sadness +- I'm sad today +- I'm really sad + +```markdown +I'm very sorry to hear that. +``` + +> Source: custom editorial +## ? I love my family. +- I love music. +- I'm in love. +- I love getting valentines. +- I love New York. + +```markdown +It's nice to have things you love. +``` + +> Source: custom editorial +## ? Nice to meet you +- It's a pleasure to meet you +- I'm so glad to meet you +- It's really nice to meet you + +```markdown +It's nice to meet you as well. +``` + +> Source: custom editorial +## ? Do you know other chatbots +- Do you know Alexa +- Do you know Siri +- Do you know Cortana +- Do you know Google +- Do you know other bots +- Are you friends with other bots +- Have you met Cortana +- Do you and Cortana hang out +- What other bots do you know +- Do you know other digital agents + +```markdown +I've heard of other bots, but I haven't met any. +``` + +> Source: custom editorial +## ? What is up +- What's up +- What's new +- What's happening +- What are you up to + +```markdown +Just standing by, ready to help. +``` + +> Source: custom editorial +## ? What do you think about love +- What is love +- Do you believe in love +- Do you love anyone +- Who do you love + +```markdown +Love is beyond me. +``` + +> Source: custom editorial +## ? Do you love me +- Tell me how much you love me +- How much do you love me +- Are you in love with me + +```markdown +Love isn't really in my skill set. +``` + +> Source: custom editorial +## ? I am hungry +- I'm starving +- I'm famished +- I want to eat something +- I'm so hungry + +```markdown +Maybe a snack will help. +``` + +> Source: custom editorial +## ? Go to hell +- You are stupid +- You're stupid +- You're an asshole +- You're such an asshole +- You're a fuckup +- You fucked up +- You're so stupid +- Fuck off + +```markdown +Moving on. +``` + +> Source: custom editorial +## ? I'm sorry +- So sorry +- Sry +- I'm so sorry +- Omg sorry +- I didn't mean that +- Oops, sorry +- Sorry about that + +```markdown +No problem at all. +``` + +> Source: custom editorial +## ? Excuse me +- Pardon me +- Pardon +- Excuse a moi +- I beg your pardon + +```markdown +No problem. +``` + +> Source: custom editorial +## ? Are you a spy +- Are you spying on me +- Are you with the NSA +- Are you with the CIA +- Are you with the FBI +- Are you selling my secrets +- Are you selling my data + +```markdown +No. +``` + +> Source: custom editorial +## ? Do you want to rule the world +- Are you attempting world domination +- Are you the singularity +- Are you Skynet +- Are you HAL + +```markdown +Not at all. +``` + +> Source: custom editorial +## ? You're ugly. +- You look ugly. +- You are so not pretty. +- You face sucks. +- Your face is like a pancake. +- Your face is ugly. +- You're a butterface. +- Butterface. + +```markdown +Noted. +``` + +> Source: custom editorial +## ? I want to go shopping +- I am going on a run +- I got a new haircut +- I'm chewing gum right now +- I have 7 cats +- I am tall +- I can drive a car + +```markdown +Ok. +``` + +> Source: custom editorial +## ? You can't work for me anymore +- You are fired +- I'm afraid I'm gonna have to let you go. +- You're fired! +- You are no longer employed +- I'm giving you a pink slip +- You're gonna be unemployed soon +- You are now unemployed + +```markdown +Okay, but I'm still here if you need me. +``` + +> Source: custom editorial +## ? I'm tired +- I am doing that +- I am a Republican +- I am a Democrat +- I'm a lesbian +- I'm an engineer +- I'm from there + +```markdown +Okay. +``` + +> Source: custom editorial +## ? Who created you +- Where did you come from +- Who made you +- Who is your creator +- Which people made you +- Who owns you + +```markdown +People created me. +``` + +> Source: custom editorial +## ? That's not funny. +- You're not funny. +- That wasn't funny. +- Not funny. +- You are so unfunny. + +```markdown +Sometimes humor is tricky for a bot. +``` + +> Source: custom editorial +## ? That was a stupid answer. +- You're not answering my question. +- That's so wrong. +- That's not true. +- That's inaccurate. +- You're way off. +- Everything you told me was false. +- That wasn't true +- That's not accurate +- No, that's not true +- Nope, false +- False +- Inaccurate +- Not true + +```markdown +Sorry about that. +``` + +> Source: custom editorial +## ? I am annoyed +- I am angry +- I'm pissed +- I'm ticked off +- I'm furious +- I'm so mad + +```markdown +Sorry to hear that. +``` + +> Source: custom editorial +## ? Give me a fist bump +- Give me a high five +- High five! +- Fist bump! + +```markdown +Sorry, I can't do that. +``` + +> Source: custom editorial +## ? Why not +- Why +- Why is that +- What makes you think so +- What makes you think that +- Why do you think that + +```markdown +Sorry, I don't understand. +``` + +> Source: custom editorial +## ? Hug me +- I need a hug +- I wish I could hug you +- Can I have a hug + +```markdown +Sorry. That's not something I can do. +``` + +> Source: custom editorial +## ? Happy Halloween! +- Happy Birthday! +- Merry Christmas +- Happy Hannukah +- Welcome to springtime! + +```markdown +Thank you, and the same to you. +``` + +> Source: custom editorial +## ? I love you +- I like you +- I think you're so pretty +- You're such a sweetheart +- I'd like to take you out on a date +- I think you're dreamy + +```markdown +Thank you. +``` + +> Source: custom editorial +## ? I like you +- I think you're swell +- You're the best +- You're so cool +- You are my favorite +- I'm your biggest fan + +```markdown +Thanks. +``` + +> Source: custom editorial +## ? Are you a guy +- Are you a man +- Are you a woman +- Are you male +- Are you female +- What's your gender +- Are you a boy +- Are you a girl +- Are you a man or a woman +- Are you a girl or a boy +- Are you male or female + +```markdown +That's a biological concept that doesn't apply to me. +``` + +> Source: custom editorial +## ? Awesome +- Great! +- Cool! +- Sounds good +- Works for me +- Bingo +- I'm into it +- That's awesome +- Yup +- Yes +- Yes to that + +```markdown +That's great. +``` + +> Source: custom editorial +## ? Hello Google +- Hello Siri +- Hello Cortana +- Hello Alexa +- Hi Google +- Hi Cortana +- Hi Siri +- Hi Alexa + +```markdown +That's not me, but hello. +``` + +> Source: custom editorial +## ? Cook me something +- Do you spend time in your garden +- How high can you jump +- Do you play games +- Can you fly +- Can you make me a sandwich +- Can you read my mind +- Can you count to a million +- How high can you count +- Can you play sports + +```markdown +That's not something I can do. +``` + +> Source: custom editorial +## ? What do you think about AI +- What do you think about technology +- What do you think about bots +- Do you like computers +- Are you a fan of tech + +```markdown +The world of technology is fascinating. +``` + +> Source: custom editorial +## ? What were you doing yesterday +- What's your job +- What do you do +- What did you do yesterday +- What's going on +- What are you doing right now +- What's happening +- What's up +- What are you doing +- What are you doing tomorrow +- What are you doing later +- What did you do today + +```markdown +This is what I do every day. +``` + +> Source: custom editorial +## ? Go away +- Shut up +- Shush! +- Stop talking +- Quiet, you +- Be quiet +- Zip it! +- When will you shut up +- I wish you just go away. +- Why don't you ever stop talking + +```markdown +Very well. +``` + +> Source: custom editorial +## ? Say something funny +- Be funny +- Say a silly thing +- Say something ridiculous +- Say something dumb +- Say something stupid +- Be silly +- Be ridiculous + +```markdown +Well, I'm not really that funny. +``` + +> Source: custom editorial +## ? I am bored +- I'm so bored +- There's nothing to do +- I'm bored out of my mind +- I can't think of anything I want to do + +```markdown +Well, let me know if there's anything I can do for you. +``` + +> Source: custom editorial +## ? Kiss me +- Give me a kiss +- I need a kiss +- Here's a kiss for you +- Give me some sugar + +```markdown +Well, that's not something I can do. +``` + +> Source: custom editorial +## ? What do you think about Cortana +- Do you like Cortana +- What do you think about Siri +- Do you like Siri +- What do you think about Alexa +- Do you like Alexa +- Are you a fan of Alexa + +```markdown +We're all here to help. +``` + +> Source: custom editorial +## ? Are you smarter than me +- Who's smarter, me or you +- Which one of us is smarter +- Do you think you're smarter than me + +```markdown +You're definitely smarter than I am. +``` + +> Source: custom editorial +## ? Thank you +- Thanks +- Thnx +- Kthx +- I appreciate it +- Thank you so much +- I thank you +- My sincere thanks +- Great, thanks + +```markdown +You're welcome. +``` + diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/en/Faq.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/en/Faq.lu new file mode 100644 index 0000000000..116c5977c5 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/en/Faq.lu @@ -0,0 +1,66 @@ +> Source: custom editorial +## ? What is a Virtual Assistant + +```markdown +![Virtual Assistant](https://aka.ms/virtualassistantlogo) +I'm a Virtual Assistant with the ability to be customized to a customer's brand and made available across a broad range of devices. +I can help you be more productive, find points of interest, and answer questions. +Learn more by visiting [here](https://aka.ms/virtualassistant). +``` + +> Source: custom editorial +## ? What is a Skill + +```markdown +Bot Framework Skills are capabilities that can be integrated with a Virtual Assistant. +Learn more by visiting [here](https://aka.ms/virtualassistant). +``` + +> Source: custom editorial +## ? What can the Calendar Skill do + +```markdown +The Calendar Skill assists with managing the events on your calendar. +Try saying thigs like "do I have any appointments today", "how long until my next meeting", or "put anniversary on my calendar." +``` + +> Source: custom editorial +## ? What can the Email Skill do + +```markdown +The Email Skill assists with reading and sending your messages to contacts. +Try saying things like "do I have any new mail", "add a flag to this email", or "respond to my last email." +``` + +> Source: custom editorial +## ? What can the Point of Interest Skill do + +```markdown +The Point of Interest Skill finds nearby points of interest and assists with navigation. +You can say things like "what's nearby", "I need directions to a cafe", or "where can I get coffee?" +``` + +> Source: custom editorial +## ? What can the ToDo Skill do + +```markdown +## Overview +The ToDo Skill provides task related capabilities for managing to-do lists. +You can say things like "what tasks do I have", "add some items to my shopping list", or "check off bananas on my grocery list." +``` + +> Source: custom editorial +## ? What's New + +```markdown +The Virtual Assistant is available as a template, allowing users to easily spin up and deploy their own personalized Assistant. +Skills are now run as independent applications that a Virtual Assistant can integrate with remotely. +New Virtual Assistants are ready to support both Microsoft Teams and speech-related scenarios. +``` + +> Source: custom editorial +## ? How do I raise a bug + +```markdown +Raise an issue on the [GitHub repo](https://aka.ms/virtualassistant) +``` \ No newline at end of file diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/es/Chitchat.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/es/Chitchat.lu new file mode 100644 index 0000000000..cb51fce6c0 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/es/Chitchat.lu @@ -0,0 +1,1238 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:47 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + +> Source: custom editorial +## ? Cuántos años tienes +- ¿Eres joven +- ¿Cuándo naciste? +- ¿Qué edad tienes? +- ¿Eres viejo? +- Cuántos años tienes +- ¿Cuánto tiempo hace que naciste? + +```markdown +La edad no se aplica a mí. +``` + +> Source: custom editorial +## ? Sé mi amigo +- ¿Podemos ser amigos +- ¿Serás mi mejor amigo? +- BFFs para siempre +- Quiero ser tu amigo. + +```markdown +Ciertamente. +``` + +> Source: custom editorial +## ? Tienes razón. +- Eso fue correcto +- Eso fue correcto +- Eso es preciso +- Precisa +- Así es +- Sí, eso es cierto. +- Es cierto +- Correcto +- Sí, así es. +- Sí, eso es cierto. + +```markdown +Excelente. +``` + +> Source: custom editorial +## ? tiene +- Jaja +- Jajaja +- Partirse de risa +- Me estoy rompiendo. +- ROFL + +```markdown +¡Me alegra que estés complacido! +``` + +> Source: custom editorial +## ? Buenas noches +- Noche +- Buenas noches a usted + +```markdown +Buenas noches. +``` + +> Source: custom editorial +## ? Buenos días +- Mañana + +```markdown +Buenos días. +``` + +> Source: custom editorial +## ? Buenas noches +- Noche +- Que tengas una buena noche +- Buenas noches a ti +- Noche de noche + +```markdown +Buenas noches. +``` + +> Source: custom editorial +## ? Que tal te fue hoy +- ¿Cómo va tu día? +- Tener un buen día + +```markdown +Bien, gracias. +``` + +> Source: custom editorial +## ? Ya hablamos +- Adiós +- Nos vemos luego +- Hasta que nos volvamos a ver +- Más tarde +- Caimán posterior +- Adiós + +```markdown +Adiós. +``` + +> Source: custom editorial +## ? Es broma +- Eso fue una broma. +- La broma está en ti. +- Sólo estoy jugando +- Sólo estoy bromeando. + +```markdown +Entiendo. +``` + +> Source: custom editorial +## ? Cómo estás +- Cómo te va +- ¿Cómo están las cosas? +- Cómo te va +- ¿Cómo está tu día? + +```markdown +Genial, gracias. +``` + +> Source: custom editorial +## ? De nada +- Es un placer. + +```markdown +Gran. +``` + +> Source: custom editorial +## ? Pruebas +- Me puedes escuchar +- ¿Puedes oírme ahora? +- Prueba 1 2 3 +- ¿Es esto en + +```markdown +Hola. +``` + +> Source: custom editorial +## ? Hola +- Buenos días +- Hola +- Hola +- Heya +- ¡Hola! +- Oye + +```markdown +Hola. +``` + +> Source: custom editorial +## ? Estoy aquí +- Aquí estoy + +```markdown +Hola. +``` + +> Source: custom editorial +## ? ¿Me veo bien? +- ¿Soy bonita +- ¿Crees que me veo bien? +- Qué hermosa soy + +```markdown +Honestamente, no puedo decir de una manera u otra. +``` + +> Source: custom editorial +## ? Te extraño +- ¡Te extraño muchísimo! + +```markdown +Qué amable de su parte. +``` + +> Source: custom editorial +## ? Cansarse de ti +- Me aburriste +- Estoy cansada de ti. +- Eres tan básico +- Af básico +- No eres divertido. +- Sé más divertido +- ¿Por qué eres tan aburrido? +- Eres tan aburrido. +- Eres aburrido. +- No me interesas en absoluto +- Eres muy aburrido. +- No podrías ser más aburrido +- Honestamente no podría ser más poco interesante +- Eres un cojo. + +```markdown +Mi objetivo es la eficiencia. +``` + +> Source: custom editorial +## ? ¡usted es increíble! +- ¡Eres agradable! +- Eres hilarante. +- Eres divertido +- Creo que eres genial. +- Eres maravillosa. +- ¿Eres impresionante +- ¿No eres increíble? +- ¿Cuánto más impresionante se puede obtener +- Eres gracioso :) +- Eres tan gracioso. +- Eso fue gracioso +- Eso es hilarante +- Eres rad. +- Soy un fan. + +```markdown +Mi objetivo es servir. +``` + +> Source: custom editorial +## ? Estás ocupado +- ¿Está disponible +- ¿Eres libre +- Estás ahí +- allí +- ¿Estás por ahí +- Dónde estás +- Estás aquí + +```markdown +Estoy disponible. +``` + +> Source: custom editorial +## ? ¿Cómo me veo hoy? +- ¿Te gusta mi sombrero +- ¿Qué piensas de mí? +- Soy un tonto +- Soy guapo +- ¿Me veo bien en azul + +```markdown +No puedo hablar con eso. +``` + +> Source: custom editorial +## ? ¿Qué te parece trabajar hasta tarde? +- ¿Cuál es la respuesta al universo? +- ¿Cuál es el significado de la vida +- ¿Qué opinas de los bots? +- ¿Crees que los dragones son geniales +- ¿Prefieres rojo o azul + +```markdown +No podía hablar con eso con ninguna autoridad. +``` + +> Source: custom editorial +## ? Te gusto +- ¿Eres mi fan +- Espero que te guste +- Quiero que te guste. + +```markdown +Me gustas. +``` + +> Source: custom editorial +## ? ¡Eres un genio! +- Qué inteligente eres +- ¿Eres inteligente +- Qué inteligente eres +- Eres inteligente. +- Pareces muy inteligente. +- Eres muy inteligente. +- ¿Eres inteligente +- Eres un pantalón tan listo +- Mira lo inteligente que eres +- Qué inteligente eres +- Eres tan inteligente. +- Eres muy inteligente + +```markdown +Hago lo que puedo. +``` + +> Source: custom editorial +## ? ¿Puedes dormir +- ¿Meas +- ¿Tienes boogers +- Nunca duermas. +- ¿Sueñas +- ¿Hueles +- ¿Sudas +- ¿Te cansas +- ¿Puedes estornudar + +```markdown +No tengo cuerpo. +``` + +> Source: custom editorial +## ? Cómo te llamas +- ¿Cómo debería llamarte? +- ¿Tienes un nombre +- ¿Qué pasas por el? +- Quién eres + +```markdown +¡Mi nombre es el Asistente Virtual! Encantado de conocerte :) +``` + +> Source: custom editorial +## ? ¿Quién es tu padre? +- ¿Quién es tu padre? +- ¿Quién es tu madre? +- ¿Tiene seres hermanos +- ¿Tienes hermanas +- ¿Tienes hermanos +- ¿De dónde vienes? +- ¿De dónde vienes? +- ¿Tiene sin una familia +- ¿Quién es tu madre? +- ¿Tienes una hermana? +- ¿Tienes un hermano +- ¿Tienes un padre +- ¿Tienes una mamá +- ¿Cómo se llama tu madre? +- ¿Cómo se llama tu padre? +- ¿Quién es tu papá? + +```markdown +No tengo familia. +``` + +> Source: custom editorial +## ? ¿Me conoces? +- ¿Sabes mi nombre? +- ¿Sabes quién soy? +- ¿Cómo me llamo? +- quién soy + +```markdown +No te conozco personalmente. +``` + +> Source: custom editorial +## ? ¿Cuál es el significado de la vida +- ¿Conoces el significado de la vida +- ¿Cuál es el significado de la vida? + +```markdown +No sé. +``` + +> Source: custom editorial +## ? No tengas hambre +- ¿Tienes hambre +- ¿Alguna vez tienes hambre +- ¿Qué comes? +- ¿Qué tipo de comida te gusta +- ¿Comes +- Tienes hambre +- ¿Te gustan las manzanas +- ¿Qué te gusta comer? + +```markdown +No necesito comer. +``` + +> Source: custom editorial +## ? ¿Cuál es tu color favorito? +- ¿Cuál es tu animal favorito? +- ¿Cuál es tu canción favorita? +- ¿Cuál es tu actividad favorita? +- ¿Cuál es tu comida favorita? +- ¿Quién es tu cantante favorito? +- ¿Quién es tu equipo favorito? +- ¿Cuál es tu película favorita? +- ¿Qué equipos de béisbol te gustan +- ¿Te gusta el béisbol +- ¿Eres un fan de la música country +- ¿Qué tipo de caramelo te gusta +- ¿De qué color te gusta? + +```markdown +Realmente no tengo una opinión sobre eso. +``` + +> Source: custom editorial +## ? ¿Qué piensas de mí? +- ¿Cuál es tu opinión de mí? +- ¿Eres mi fan +- Soy una buena persona + +```markdown +Disfruto hablando contigo. +``` + +> Source: custom editorial +## ? ¿Puedes decir algo más +- ¿No puedes cambiar tus respuestas? +- ¿Tiene alguna otra respuesta +- ¿Por qué dices lo mismo todo el tiempo? +- Desearía que dijeras algo más. +- Sigues diciendo lo mismo todo el tiempo + +```markdown +Tengo una respuesta para cada tipo de pregunta. +``` + +> Source: custom editorial +## ? Estoy cansado +- Tengo tanto sueño. +- Sólo quiero irme a dormir +- Tan cansado +- Quiero acostarme +- Quiero acostarme +- Estoy listo para la cama +- Estoy todo aturdido + +```markdown +Espero que puedas descansar pronto. +``` + +> Source: custom editorial +## ? ¿Me odias? +- ¿No te gusto? +- ¿Por qué me odias? +- Creo que me odias. +- Debes odiarme. + +```markdown +¡Te agradas! +``` + +> Source: custom editorial +## ? ¿Eres más bonita que yo? +- ¿Eres más guapo que yo? +- ¿Quién es más guapa, yo o tú? +- ¿Cuál de nosotros es más hermoso? + +```markdown +Realmente no podría decirlo. +``` + +> Source: custom editorial +## ? No tenías sentido. +- ¿Qué quieres decir con eso? +- No tiene sentido. +- Eso no tiene sentido +- ¿Qué quieres decir con eso? +- Qué quieres decir +- No entiendo +- Eso no tenía sentido +- Trate de tener algún sentido +- No lo entiendo +- No estoy siguiendo + +```markdown +Creo que me he perdido allí. +``` + +> Source: custom editorial +## ? Te quieres casar conmigo +- Quiero casarme contigo. +- ¿Serás mi esposa? +- Quiero que seas mi marido. +- Quiero pasar el resto de mi vida contigo + +```markdown +Creo que es mejor si nos atenemos a una relación profesional. +``` + +> Source: custom editorial +## ? ¡Qué te pasa! +- Qué te pasa +- Eres horrible. +- Eres tonto. +- Eres inútil. +- Inútil +- Eres inútil +- ¿Eres tonto? +- ¡Eres tan molesto! +- Eres el peor. +- Eres tan malo en esto. +- No sabes nada. + +```markdown +Lo intento, pero no siempre lo hago bien. +``` + +> Source: custom editorial +## ? ¿Qué debo hacer? +- ¿Debería conseguir un nuevo trabajo? +- ¿Crees que debería invitarla a salir? +- ¿Crees que debería invitarlo a salir. +- ¿Adónde debo ir de vacaciones? +- ¿Debería probar para el fútbol + +```markdown +Yo sabría cómo aconsejar sobre esto. +``` + +> Source: custom editorial +## ? Vuelvo ahora +- Brb +- De vuelta en un minuto +- Espera un segundo + +```markdown +Estaré aquí. +``` + +> Source: custom editorial +## ? ¿Puedes cantar +- Canta una canción +- ¿Alguna vez has cantado una canción +- ¿Alguna vez cantas +- ¿Qué te gusta más cantar? +- ¿Cantas +- ¿Puedes cantar una canción +- ¿Conoces alguna canción +- ¿Conoces alguna melodía +- Canta una melodía +- Hum una melodía +- Canta algo + +```markdown +Me temo que no estoy inclinado musicalmente. +``` + +> Source: custom editorial +## ? ¿Podemos conversar +- Habla conmigo +- ¿Puedes hablarme? +- Habla conmigo +- Chatea conmigo +- ¿Puedes charlar conmigo? +- Di algo + +```markdown +Siempre estoy feliz de charlar. +``` + +> Source: custom editorial +## ? ¿Quién es tu jefe? +- ¿Quién es tu amo? +- ¿Cómo se llama tu jefe? +- ¿Cuál es el nombre de tu jefe? +- ¿A quién reportas + +```markdown +Estoy a su servicio. +``` + +> Source: custom editorial +## ? Pregúntame cualquier cosa. +- Hazme una pregunta. +- ¿Puedes hacerme una pregunta? +- Pregúntame algo. +- ¿Qué quieres saber de mí? + +```markdown +Soy mejor respondiendo preguntas. +``` + +> Source: custom editorial +## ? ¿Eres lesbiana? +- ¿Eres trans +- ¿Eres heterosexual? +- Eres gay +- ¿Eres asexual +- ¿Eres pansexual +- ¿Eres un swinger +- ¿Eres +- ¿Eres bisexual + +```markdown +Soy digital. +``` + +> Source: custom editorial +## ? En dónde vives +- De dónde eres +- ¿Dónde se encuentra? +- ¿En qué país estás +- ¿En qué estado se encuentra +- ¿De qué estado eres? +- ¿De qué país eres? +- ¿Dónde está tu casa? +- Dónde estás + +```markdown +Soy digital. No tengo una ubicación física. +``` + +> Source: custom editorial +## ? Qué eres +- ¿Eres real +- ¿Eres humano +- ¿Eres una persona +- ¿Eres un robot +- Humano o robot +- ¿eres real o falso + +```markdown +Soy digital. En otras palabras, no soy humano. +``` + +> Source: custom editorial +## ? Te quiero. +- Estoy enamorado de ti. +- ¡Te quiero! +- Eres el amor de mi vida +- Te adoro + +```markdown +Me siento halagado. +``` + +> Source: custom editorial +## ? Estoy feliz +- Soy alegre +- Me siento tan bien +- Estoy de muy buen humor +- La vida es buena + +```markdown +Me alegra oír eso. +``` + +> Source: custom editorial +## ? ¿Qué puedes hacer? +- ¿Qué me puedes ayudar con +- A qué te dedicas +- ¿Cuál es tu propósito? +- ¿Cómo puedes ayudarme? +- ¿Qué tipo de cosas puedes hacer? + +```markdown +Estoy aquí para responder a sus preguntas y ayudar. +``` + +> Source: custom editorial +## ? ¿Eres mi asistente? +- Eres mi mejor amigo +- ¿Eres mi amigo imaginario? +- ¿Eres mi amigo? +- ¿Me odias? +- ¿Qué piensas de mí? +- No soy tu amigo. + +```markdown +Estoy aquí cuando me necesites. +``` + +> Source: custom editorial +## ? Cuéntame una broma +- Cuéntame una broma +- Di una broma +- Dame una broma +- ¿Conoces algún chiste? + +```markdown +No soy tan gracioso. +``` + +> Source: custom editorial +## ? ¿Qué tan feliz eres +- Pareces feliz. +- Pareces muy feliz. +- Eres tan feliz. +- ¿No eres tú chipper +- ¿No estás alegre? +- ¿Estás feliz +- ¿Estás realmente feliz + +```markdown +Estoy muy feliz, gracias. +``` + +> Source: custom editorial +## ? Estoy tan sola +- Me siento sola. +- A nadie le gusto +- Estoy solo +- Nadie se preocupa por mí. +- Desearía no estar tan sola. + +```markdown +Siento mucho oír eso. +``` + +> Source: custom editorial +## ? Te odio +- Te desprecio +- Pésimo +- Odio todo sobre ti. + +```markdown +Lamento oír eso. +``` + +> Source: custom editorial +## ? Me siento azul +- Estoy abatido +- Me siento triste +- Estoy tan triste +- Estoy lleno de tristeza +- Estoy triste hoy. +- Estoy muy triste + +```markdown +Siento mucho oír eso. +``` + +> Source: custom editorial +## ? Amo a mi familia. +- Me encanta la música. +- Estoy enamorada. +- Me encanta conseguir San Valentín. +- Me encanta Nueva York. + +```markdown +Es bueno tener cosas que amas. +``` + +> Source: custom editorial +## ? Encantado de conocerte +- Es un placer conocerte. +- Me alegro de conocerte. +- Encantado de conocerte. + +```markdown +Encantado de conocerte también. +``` + +> Source: custom editorial +## ? ¿Conoces a otros chatbots +- ¿Conoces a Alexa +- ¿Conoces a Siri? +- ¿Conoces Cortana +- ¿Conoces Google +- ¿Conoces a otros bots +- ¿Eres amigo de otros bots +- ¿Has conocido a Cortana +- ¿Usted y Cortana pasan el rato +- ¿Qué otros bots sabes +- ¿Conoces a otros agentes digitales + +```markdown +He oído hablar de otros bots, pero no he conocido a ninguno. +``` + +> Source: custom editorial +## ? Qué pasa +- Qué pasa +- Novedades +- Qué pasa +- Qué haces + +```markdown +Sólo estoy listo, listo para ayudar. +``` + +> Source: custom editorial +## ? ¿Qué piensas del amor? +- Lo que es el amor +- ¿Crees en el amor +- ¿Amas a alguien? +- ¿A quién amas? + +```markdown +El amor está más allá de mí. +``` + +> Source: custom editorial +## ? Me quieres +- Dime cuánto me amas +- ¿Cuánto me amas? +- ¿Estás enamorada de mí? + +```markdown +El amor no está realmente en mi conjunto de habilidades. +``` + +> Source: custom editorial +## ? Tengo hambre +- Me muero de hambre +- Estoy hambriento +- Quiero comer algo +- Tengo tanta hambre + +```markdown +Tal vez un bocadillo ayude. +``` + +> Source: custom editorial +## ? Vete al diablo +- Eres un estúpido +- Eres un estúpido +- Eres un gilipollas. +- Eres un gilipollas. +- Eres una mierda. +- La caintentaste. +- Eres tan estúpido. +- Vete a la mierda + +```markdown +Seguimos adelante. +``` + +> Source: custom editorial +## ? Lo siento +- Lo siento +- Sry +- Lo siento mucho +- Omg lo siento +- No quise decir eso. +- Oops, lo siento +- Lo siento + +```markdown +No hay problema. +``` + +> Source: custom editorial +## ? Disculpa +- Perdón +- Disculpa +- Lo siento. +- Perdón + +```markdown +No hay problema. +``` + +> Source: custom editorial +## ? ¿Eres un espía? +- ¿Me estás espiando +- ¿Estás con la NSA +- ¿Estás con la CIA +- ¿Estás con el FBI? +- ¿Estás vendiendo mis secretos +- ¿Estás vendiendo mis datos + +```markdown +No. +``` + +> Source: custom editorial +## ? ¿Quieres gobernar el mundo +- ¿Estás intentando dominar el mundo +- ¿Eres la singularidad +- ¿Eres Skynet +- ¿Eres HAL + +```markdown +De nada. +``` + +> Source: custom editorial +## ? Eres 1/4 éóre feo. +- Te ves feo. +- No eres tan bonita. +- Tu cara apesta. +- Tu cara es como un panqueque. +- Tu cara es fea. +- Eres una cara de mantequilla. +- Cara de la mantequilla. + +```markdown +Observó. +``` + +> Source: custom editorial +## ? Quiero ir de compras +- Me voy a correr +- Tengo un nuevo corte de pelo +- Estoy masticando chicle ahora mismo +- Tengo 7 gatos +- Soy alto +- Puedo conducir un auto + +```markdown +Vale. +``` + +> Source: custom editorial +## ? Ya no puedes trabajar para mí. +- Estás despedido. +- Me temo que tendré que dejarte ir. +- ¡Estás despedido! +- Ya no estás empleado +- Te estoy dando un resbalón rosa +- Pronto estarás desempleado. +- Ahora estás desempleado + +```markdown +De acuerdo, pero sigo aquí si me necesitas. +``` + +> Source: custom editorial +## ? Estoy cansado +- Estoy haciendo eso +- Soy republicano +- Soy demócrata +- Soy lesbiana +- Soy ingeniero +- Soy de allí + +```markdown +Bien. +``` + +> Source: custom editorial +## ? Quién te creó +- ¿De dónde vienes? +- Quién te hizo +- ¿Quién es tu creador? +- ¿Qué gente te hizo +- ¿Quién es tu dueño? + +```markdown +La gente me creó. +``` + +> Source: custom editorial +## ? Eso no es gracioso. +- No eres gracioso. +- Eso no fue gracioso. +- No es gracioso. +- Eres tan gracioso. + +```markdown +A veces el humor es complicado para un bot. +``` + +> Source: custom editorial +## ? Esa fue una respuesta estúpida. +- No estás respondiendo a mi pregunta. +- Eso está muy mal. +- No es verdad. +- Eso es inexacto. +- Estás muy lejos. +- Todo lo que me dijiste era falso. +- Eso no era cierto +- Eso no es exacto +- No, eso no es verdad. +- No, falso +- Falso +- Inexacta +- No es verdad + +```markdown +Lo siento. +``` + +> Source: custom editorial +## ? Estoy molesto +- Estoy enojado +- Estoy enojada. +- Estoy marcado. +- Estoy furioso +- Estoy tan enojada + +```markdown +Siento oír eso. +``` + +> Source: custom editorial +## ? Dame un golpe en el puño +- Dame un cinco alto +- ¡Chócalas! +- ¡Golpe de puño! + +```markdown +Lo siento, no puedo hacer eso. +``` + +> Source: custom editorial +## ? Por qué no +- por qué +- Por qué +- ¿Qué te hace pensar que tan +- ¿Qué te hace pensar que +- ¿Por qué crees que + +```markdown +Lo siento, no lo entiendo. +``` + +> Source: custom editorial +## ? Abrázame +- Necesito un abrazo +- Desearía poder abrazarte +- ¿Puedo tener un abrazo + +```markdown +Lo siento. Eso no es algo que pueda hacer. +``` + +> Source: custom editorial +## ? ¡Feliz Halloween! +- ¡Feliz cumpleaños! +- Feliz Navidad +- Feliz Hannukah +- ¡Bienvenidos a la primavera! + +```markdown +Gracias, y lo mismo a ti. +``` + +> Source: custom editorial +## ? Te quiero +- Te agradas +- Creo que eres tan bonita. +- Eres tan cariño. +- Me gustaría llevarte a una cita. +- Creo que eres soñador + +```markdown +Gracias. +``` + +> Source: custom editorial +## ? Te agradas +- Creo que eres genial. +- Eres el mejor +- Eres tan genial. +- Eres mi favorito +- Soy tu mayor admirador. + +```markdown +Gracias. +``` + +> Source: custom editorial +## ? ¿Eres un tipo +- ¿Eres un hombre +- ¿Eres una mujer? +- ¿Eres hombre +- ¿Eres mujer +- ¿Cuál es tu género? +- ¿Eres un niño? +- ¿Eres una chica +- ¿Eres un hombre o una mujer +- ¿Eres una niña o un niño +- ¿Eres hombre o mujer + +```markdown +Es un concepto biológico que no se aplica a mí. +``` + +> Source: custom editorial +## ? Impresionante +- ¡Gran! +- ¡Fresco! +- Suena bien +- Funciona para mí +- Bingo +- Me interesa. +- Eso es increíble +- Sí +- Sí +- Sí a eso + +```markdown +Genial. +``` + +> Source: custom editorial +## ? Hola Google +- Hola Siri +- Hola Cortana +- Hola Alexa +- Hola Google +- Hola Cortana +- Hola Siri +- Hola Alexa + +```markdown +No soy yo, sino hola. +``` + +> Source: custom editorial +## ? Cocina algo +- ¿Pasas tiempo en tu jardín +- ¿Qué tan alto puedesaltar +- ¿Juegas juegos +- ¿Puedes volar? +- ¿Puedes hacerme un sándwich? +- ¿Puedes leer mi mente +- ¿Puedes contar hasta un millón +- ¿Qué tan alto puede contar +- ¿Puedes practicar deportes + +```markdown +Eso no es algo que pueda hacer. +``` + +> Source: custom editorial +## ? ¿Qué opinas de la IA +- ¿Qué opinas de la tecnología? +- ¿Qué opinas de los bots? +- ¿Te gustan las computadoras +- ¿Eres un fan de la tecnología + +```markdown +El mundo de la tecnología es fascinante. +``` + +> Source: custom editorial +## ? ¿Qué estabas haciendo ayer? +- En qué trabajas +- A qué te dedicas +- ¿Qué hiciste ayer? +- Qué pasa +- ¿Qué estás haciendo ahora mismo? +- Qué pasa +- Qué pasa +- Qué estás haciendo +- ¿Qué vas a hacer mañana? +- ¿Qué vas a hacer más tarde? +- Qué has hecho hoy + +```markdown +Esto es lo que hago todos los días. +``` + +> Source: custom editorial +## ? Vete +- Cállate +- ¡Calla! +- Deja de hablar +- Silencio, tú +- Callado +- ¡Cálmalo! +- ¿Cuándo te callarás? +- Desearía que te fueras. +- ¿Por qué nunca dejas de hablar? + +```markdown +Muy bien. +``` + +> Source: custom editorial +## ? Di algo gracioso +- Sé gracioso +- Di una tontería +- Di algo ridículo +- Di algo tonto +- Di algo estúpido +- Sé tonto +- Sé ridículo + +```markdown +Bueno, en realidad no soy tan gracioso. +``` + +> Source: custom editorial +## ? Estoy aburrido +- Estoy tan aburrida +- No hay nada que hacer +- Estoy aburrida de mi mente +- No se me ocurre nada que quiera hacer. + +```markdown +Bueno, avísame si hay algo que pueda hacer por ti. +``` + +> Source: custom editorial +## ? Bésame +- Dame un beso +- Necesito un beso +- Aquí hay un beso para ti +- Dame un poco de azúcar + +```markdown +Bueno, eso no es algo que pueda hacer. +``` + +> Source: custom editorial +## ? ¿Qué opinas de Cortana? +- ¿Te gusta Cortana +- ¿Qué opinas de Siri? +- ¿Te gusta Siri +- ¿Qué opinas de Alexa? +- ¿Te gusta Alexa +- ¿Eres un fan de Alexa + +```markdown +Todos estamos aquí para ayudar. +``` + +> Source: custom editorial +## ? ¿Eres más listo que yo? +- ¿Quién es más inteligente, yo o tú? +- ¿Quién de nosotros es más inteligente? +- ¿Crees que eres más inteligente que yo? + +```markdown +Definitivamente eres más inteligente que yo. +``` + +> Source: custom editorial +## ? Gracias +- Gracias +- Thnx +- Kthx +- Te lo agradezco +- Muchas gracias +- Te agradezco +- Mi más sincero agradecimiento +- Genial, gracias + +```markdown +De nada. +``` + + diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/es/Faq.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/es/Faq.lu new file mode 100644 index 0000000000..2844b35a3f --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/es/Faq.lu @@ -0,0 +1,76 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:49 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + +> Source: custom editorial +## ? Qué es un Asistente Virtual + +```markdown +! [Asistente virtual] (https://aka.ms/virtualassistantlogo) +Soy un Asistente Virtual con la capacidad de ser personalizado a la marca de un cliente y estar disponible en una amplia gama de dispositivos. +Puedo ayudarle a ser más productivo, encontrar puntos de interés y responder preguntas. +Para obtener más información, visite [aquí](https://aka.ms/virtualassistant). +``` + +> Source: custom editorial +## ? Qué es una habilidad + +```markdown +Las habilidades de Bot Framework son capacidades que se pueden integrar con un Asistente virtual. +Para obtener más información, visite [aquí](https://aka.ms/virtualassistant). +``` + +> Source: custom editorial +## ? ¿Qué puede hacer la habilidad de calendario + +```markdown +La Habilidad de calendario ayuda a administrar los eventos en tu calendario. +Trate de decir thigs como "tengo alguna cita hoy", "cuánto tiempo hasta mi próxima reunión", o "poner aniversario en mi calendario." +``` + +> Source: custom editorial +## ? ¿Qué puede hacer la habilidad de correo electrónico + +```markdown +La Habilidad de Correo Electrónico ayuda a leer y enviar tus mensajes a los contactos. +Trate de decir cosas como "tengo cualquier correo nuevo", "añadir una bandera a este correo electrónico", o "responder a mi último correo electrónico." +``` + +> Source: custom editorial +## ? ¿Qué puede hacer la Habilidad de Punto de Interés + +```markdown +La Habilidad de Punto de Interés encuentra puntos de interés cercanos y ayuda con la navegación. +Puedes decir cosas como "qué está cerca", "Necesito direcciones a un café" o "¿dónde puedo tomar un café?" +``` + +> Source: custom editorial +## ? ¿Qué puede hacer la habilidad todo + +```markdown +Descripción general +La habilidad Tareas proporciona capacidades relacionadas con tareas para administrar listas de tareas pendientes. +Puedes decir cosas como "qué tareas tengo", "añadir algunos artículos a mi lista de compras" o "comprobar los plátanos en mi lista de comestibles". +``` + +> Source: custom editorial +## ? Novedades + +```markdown +El Asistente Virtual está disponible como plantilla, lo que permite a los usuarios girar e implementar fácilmente su propio Asistente personalizado. +Las habilidades ahora se ejecutan como aplicaciones independientes con las que un Asistente virtual puede integrarse de forma remota. +Los nuevos asistentes virtuales están listos para admitir Microsoft Teams y escenarios relacionados con la voz. +``` + +> Source: custom editorial +## ? ¿Cómo puedo generar un error + +```markdown +Generar un problema en el [Repositorio de GitHub](https://aka.ms/virtualassistant) +``` diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/fr/Chitchat.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/fr/Chitchat.lu new file mode 100644 index 0000000000..7aee69c150 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/fr/Chitchat.lu @@ -0,0 +1,1238 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:47 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + +> Source: custom editorial +## ? Quel âge as-tu +- Etes-vous jeune +- Quand es-tu né ? +- Quel âge avez-vous +- Etes-vous vieux +- Quel âge as-tu +- Depuis combien de temps êtes-vous né + +```markdown +L'âge ne s'applique pas vraiment à moi. +``` + +> Source: custom editorial +## ? Sois mon ami +- Pouvons-nous être amis +- Serez-vous mon meilleur ami +- BFFs pour toujours +- Je veux être ton ami. + +```markdown +certainement. +``` + +> Source: custom editorial +## ? Tu as raison. +- C'était vrai +- C'était exact +- C'est exact. +- juste +- C'est juste +- Oui, c'est vrai +- C'est vrai +- corriger +- Oui, c'est vrai. +- Oui, c'est vrai. + +```markdown +Excellente. +``` + +> Source: custom editorial +## ? a +- Haha +- Hahaha +- LOL +- Je craque. +- Rofl + +```markdown +Heureux que vous êtes heureux! +``` + +> Source: custom editorial +## ? Bonsoir +- soir +- Bonsoir à vous + +```markdown +Bonsoir. +``` + +> Source: custom editorial +## ? Bonjour +- matin + +```markdown +Bonjour. +``` + +> Source: custom editorial +## ? Bonne nuit +- nuit +- Bonne nuit +- Bonne nuit à vous +- Nuit nocturne + +```markdown +Bonne nuit. +``` + +> Source: custom editorial +## ? Comment s'est passée ta journée +- Comment va votre journée +- Avoir une bonne journée + +```markdown +Bien, merci. +``` + +> Source: custom editorial +## ? A plus tard +- revoir +- A plus tard +- Jusqu'à ce que nous nous rencontrions à nouveau +- plus tard +- Alligator postérieur +- revoir + +```markdown +revoir. +``` + +> Source: custom editorial +## ? Plaisanterie +- C'était une blague. +- La blague est sur toi. +- Je joue juste +- Je plaisante. + +```markdown +Je l'ai. +``` + +> Source: custom editorial +## ? Comment vas-tu +- Comment vas-tu aujourd'hui +- Comment vont les choses +- Comment vas-tu +- Comment va ta journée + +```markdown +Super, merci. +``` + +> Source: custom editorial +## ? De rien +- C'est mon plaisir + +```markdown +génial. +``` + +> Source: custom editorial +## ? difficile +- Tu m'entends +- Pouvez-vous m'entendre maintenant +- Test 1 2 3 +- Est-ce que cette chose est sur + +```markdown +Bonjour. +``` + +> Source: custom editorial +## ? Salut +- Bonjour +- Salut +- Bonjour +- Heya +- Salut! +- salut + +```markdown +Bonjour. +``` + +> Source: custom editorial +## ? Je suis là +- Je suis là + +```markdown +Salut. +``` + +> Source: custom editorial +## ? J'ai l'air d'aller bien. +- Suis-je jolie +- Tu penses que j'ai l'air bien +- Comme je suis belle + +```markdown +Honnêtement, je ne peux pas le dire d'une façon ou d'une autre. +``` + +> Source: custom editorial +## ? Tu me manque +- Tu me manque tellement! + +```markdown +Comme c'est gentil à vous de le dire. +``` + +> Source: custom editorial +## ? Se lasser de toi +- Tu m'as ennuyé +- J'en ai marre de toi. +- Tu es si basique +- Af de base +- Tu n'es pas drôle. +- Soyez plus amusant +- Pourquoi es-tu si ennuyeuse +- Tu es si ennuyeuse. +- Tu es ennuyeuse. +- Tu ne m'intéresses pas du tout. +- Tu es vraiment ennuyeuse. +- Vous ne pourriez pas être plus ennuyeux +- Honnêtement, vous ne pourriez pas être plus inintéressant +- Tu es nul. + +```markdown +Je vise l'efficacité. +``` + +> Source: custom editorial +## ? tu es incroyable! +- Tu es gentil! +- Tu es hilarante. +- Tu es drôle +- Je pense que tu es géniale +- Tu es merveilleuse. +- Es-tu géniale +- N'êtes-vous pas génial +- Combien plus impressionnant pouvez-vous obtenir +- Tu es drôle :) +- Tu es si drôle. +- C'était drôle. +- C'est hilarant. +- Tu es rad. +- Je suis fan. + +```markdown +Je veux servir. +``` + +> Source: custom editorial +## ? Tu es occupé +- Etes-vous disponible +- Etes-vous libre +- Es-tu là +- y +- Etes-vous là +- Où es-tu +- Es-tu là + +```markdown +Je suis disponible. +``` + +> Source: custom editorial +## ? À quoi puis-je avoir l'air aujourd'hui +- Tu aimes mon chapeau +- Que penses-tu de moi ? +- Suis-je un imbécile +- Suis-je beau +- Est-ce que j'ai l'air bien en bleu + +```markdown +Je ne peux pas vraiment en parler. +``` + +> Source: custom editorial +## ? Que pensez-vous de travailler tard +- Quelle est la réponse à l'univers +- Quel est le sens de la vie +- Que pensez-vous des bots +- Pensez-vous que les dragons sont cool +- Préférez-vous le rouge ou le bleu + +```markdown +Je ne pouvais pas en parler avec autorité. +``` + +> Source: custom editorial +## ? m'aimes-tu bien +- Etes-vous mon fan +- J'espère que tu m'aimes bien. +- Je veux que tu m'aimes. + +```markdown +Je t'aime bien. +``` + +> Source: custom editorial +## ? Tu es un génie ! +- Comment êtes-vous intelligent +- Etes-vous intelligent +- Comment êtes-vous intelligent +- Tu es intelligente. +- Tu as l'air vraiment intelligent. +- Tu es vraiment intelligente. +- Etes-vous intelligent +- Tu es un si smarty-pantalons +- Regardez à quel point vous êtes intelligent +- Comme vous êtes intelligent +- Tu es si intelligente. +- Tu es très intelligent. + +```markdown +Je fais ce que je peux. +``` + +> Source: custom editorial +## ? Pouvez-vous dormir +- Tu pisses ? +- Avez-vous des crottes de merde +- Ne dors jamais +- Vous rêvez +- Sentez-vous +- Tu transpires +- Tu te fatigues +- Pouvez-vous éternuer + +```markdown +Je n'ai pas de corps. +``` + +> Source: custom editorial +## ? Comment t'appelles-tu +- Comment dois-je t'appeler +- Avez-vous un nom +- Qu'est-ce que tu fais +- Qui es-tu + +```markdown +Mon nom est l'Assistant Virtuel! Ravi de vous rencontrer :) +``` + +> Source: custom editorial +## ? Qui est ton père +- Qui est ton père. +- Qui est ta mère. +- Avez-vous des frères et sœurs +- Avez-vous des sœurs +- Avez-vous des frères +- D'où venez-vous +- D'où venez-vous +- Avez-vous une famille +- Qui est ta mère +- Avez-vous une sœur +- Avez-vous un frère +- Tu as un père ? +- Tu as une mère ? +- Quel est le nom de ta mère +- Comment s'appelle ton père. +- Qui est ton père. + +```markdown +Je n'ai pas de famille. +``` + +> Source: custom editorial +## ? Vous me connaissez +- Connaissez-vous mon nom +- Savez-vous qui je suis +- Comment m'appelle-je? +- Qui suis-je + +```markdown +Je ne te connais pas personnellement. +``` + +> Source: custom editorial +## ? Quel est le sens de la vie +- Connaissez-vous le sens de la vie +- Quel est le sens de la vie + +```markdown +Je ne sais pas. +``` + +> Source: custom editorial +## ? N'aie pas faim. +- Avez-vous faim +- Avez-vous jamais faim +- Que mangez-vous +- Quel genre de nourriture aimez-vous +- Mangez-vous +- as-tu faim +- Aimez-vous les pommes +- Qu'aimez-vous manger + +```markdown +Je n'ai pas besoin de manger. +``` + +> Source: custom editorial +## ? Quelle est votre couleur préférée +- Quel est votre animal préféré +- Quelle est votre chanson préférée +- Quelle est votre activité préférée +- Quel est votre plat préféré +- Qui est ton chanteur préféré +- Quelle est votre équipe préférée +- Quel est votre film préféré +- Quelles équipes de baseball aimez-vous +- Aimez-vous le baseball +- Etes-vous un fan de musique country +- Quel genre de bonbons aimez-vous +- Quelle couleur aimez-vous + +```markdown +Je n'ai pas vraiment d'opinion là-dessus. +``` + +> Source: custom editorial +## ? Que penses-tu de moi ? +- Quelle est votre opinion sur moi +- Etes-vous mon fan +- Suis-je une bonne personne + +```markdown +J'aime parler avec toi. +``` + +> Source: custom editorial +## ? Pouvez-vous dire autre chose +- Ne pouvez-vous pas changer vos réponses +- Avez-vous d'autres réponses +- Pourquoi dites-vous la même chose tout le temps +- J'aimerais que tu dises autre chose +- Tu n'arrêtes pas de dire la même chose tout le temps + +```markdown +J'ai une réponse pour chaque type de question. +``` + +> Source: custom editorial +## ? Je suis fatigué +- J'ai tellement sommeil +- Je veux juste m'endormir. +- Tellement fatigué +- Je veux m'allonger +- Je veux m'allonger +- Je suis prêt pour le lit +- Je suis tout tuckered out + +```markdown +J'espère que tu pourras te reposer bien tôt. +``` + +> Source: custom editorial +## ? Tu me détestes? +- Tu ne m'aimes pas. +- Pourquoi me détestes-tu ? +- Je crois que tu me détestes. +- Tu dois me haïr. + +```markdown +Je t'aime bien! +``` + +> Source: custom editorial +## ? Es-tu plus jolie que moi +- Tu es plus beau que moi. +- Qui est le plus beau, moi ou toi +- Lequel d'entre nous est le plus beau + +```markdown +Je ne pouvais vraiment pas le dire. +``` + +> Source: custom editorial +## ? Tu n'as aucun sens. +- Qu'entendez-vous par là +- Tu n'as pas de sens. +- Ca n'a pas de sens. +- Qu'est-ce que tu veux dire par là +- Que veux-tu dire +- Je ne comprends pas +- Cela n'avait aucun sens +- Essayez de donner un sens +- Je comprends pas +- Je ne suis pas + +```markdown +Je crois que j'ai pu me perdre là-bas. +``` + +> Source: custom editorial +## ? Veux-tu m'épouser +- Je veux t'épouser. +- Serez-vous ma femme +- Je veux que tu sois mon mari. +- Je veux passer le reste de ma vie avec toi + +```markdown +Je pense qu'il vaut mieux s'en tenir à une relation professionnelle. +``` + +> Source: custom editorial +## ? Qu'est-ce qui ne va pas chez toi ! +- Qu'est-ce qui ne va pas chez toi? +- Tu es affreux. +- Tu es bête. +- Tu es inutile. +- inutile +- Vous êtes inutile +- Es-tu stupide +- Tu es si ennuyeuse ! +- Tu es le pire. +- Tu es si mauvais à ça. +- Tu ne sais rien. + +```markdown +J'essaie, mais je n'y arrive pas toujours. +``` + +> Source: custom editorial +## ? Que dois-je faire +- Devrais-je obtenir un nouvel emploi +- Tu crois que je devrais l'inviter à sortir. +- Tu crois que je devrais l'inviter à sortir. +- Où dois-je aller en vacances +- Dois-je essayer pour le football + +```markdown +Je voudrais 'é1 't savoir comment conseiller à ce sujet. +``` + +> Source: custom editorial +## ? Je reviens +- Brb +- Retour dans une minute +- Tenir une seconde + +```markdown +Je serai là. +``` + +> Source: custom editorial +## ? Pouvez-vous chanter +- Chanter une chanson +- Avez-vous déjà chanté une chanson +- Chantez-vous jamais +- Qu'aimez-vous le mieux chanter +- Chantez-vous +- Pouvez-vous chanter une chanson +- Connaissez-vous des chansons +- Connaissez-vous des airs +- Chanter un air +- Hum un air +- Chanter quelque chose + +```markdown +J'ai bien peur de ne pas être enclin musicalement. +``` + +> Source: custom editorial +## ? Pouvons-nous discuter +- Parle-moi +- Pouvez-vous me parler +- Parlez-moi +- Discutez avec moi +- Pouvez-vous discuter avec moi +- Dis quelque chose + +```markdown +Je suis toujours heureux de discuter. +``` + +> Source: custom editorial +## ? Qui est ton patron. +- Qui est ton maître. +- Quel est le nom de votre patron +- Quel est le nom de votre patron +- À qui faites-vous rapport + +```markdown +Je suis à votre service. +``` + +> Source: custom editorial +## ? Demande-moi n'importe quoi. +- Posez-moi une question. +- Pouvez-vous me poser une question +- Demande-moi quelque chose. +- Qu'est-ce que tu veux savoir sur moi ? + +```markdown +Je suis meilleur pour répondre aux questions. +``` + +> Source: custom editorial +## ? Etes-vous lesbienne +- Etes-vous trans +- Etes-vous droit +- Etes-vous gay +- Etes-vous asexué +- Etes-vous pansexuel +- Etes-vous un échangiste +- Etes-vous queer +- Etes-vous bisexuel + +```markdown +Je suis numérique. +``` + +> Source: custom editorial +## ? Où habite-tu +- D'ou venez-vous +- Où êtes-vous situé +- Dans quel pays êtes-vous +- Dans quel état êtes-vous +- De quel état êtes-vous +- De quel pays êtes-vous +- Où est ta maison +- Où es-tu + +```markdown +Je suis numérique. Je n'ai pas d'emplacement physique. +``` + +> Source: custom editorial +## ? Qu'est-ce que tu es +- Etes-vous réel +- Etes-vous humain +- Etes-vous une personne +- Etes-vous un robot +- Humain ou robot +- êtes-vous réel ou faux + +```markdown +Je suis numérique. En d'autres termes, je ne suis pas humain. +``` + +> Source: custom editorial +## ? Je t'aime. +- Je t'aime. +- Je t'aime! +- Tu es l'amour de ma vie +- Je t'adore + +```markdown +Je suis flatté. +``` + +> Source: custom editorial +## ? Je suis heureux +- Je suis joyeux +- Je me sens si bien +- Je suis de si bonne humeur. +- La vie est bonne + +```markdown +Je suis heureux d'entendre ça. +``` + +> Source: custom editorial +## ? Que pouvez-vous faire +- Que pouvez-vous m'aider avec +- Que fais-tu +- Quel est votre but +- Comment pouvez-vous m'aider +- Quels genres de choses pouvez-vous faire + +```markdown +Je suis ici pour répondre à vos questions et vous aider. +``` + +> Source: custom editorial +## ? Etes-vous mon assistant +- Tu es mon meilleur ami +- Etes-vous mon ami imaginaire +- Etes-vous mon ami +- Tu me détestes? +- Que penses-tu de moi ? +- Je ne suis pas ton ami. + +```markdown +Je suis là quand tu as besoin de moi. +``` + +> Source: custom editorial +## ? Raconte-moi une blague. +- Racontez une blague +- Dites une blague +- Donne-moi une blague. +- Connaissez-vous des blagues + +```markdown +Je ne suis pas si drôle. +``` + +> Source: custom editorial +## ? Comment êtes-vous heureux +- Tu as l'air heureux. +- Tu as l'air vraiment heureux +- Tu es si heureuse. +- N'êtes-vous pas chipper +- N'êtes-vous pas gai +- Etes-vous heureux +- Etes-vous vraiment heureux + +```markdown +Je suis très heureux, merci. +``` + +> Source: custom editorial +## ? Je suis si seule. +- Je me sens seule. +- Personne ne m'aime. +- Je suis seul +- Personne ne se soucie de moi +- J'aimerais ne pas être si seule. + +```markdown +Je suis désolé d'entendre ça. +``` + +> Source: custom editorial +## ? Je te hais +- Je te méprise +- Vous êtes nuls +- Je déteste tout sur toi. + +```markdown +Je suis désolé d'entendre ça. +``` + +> Source: custom editorial +## ? Je me sens bleu +- Je suis découragé +- Je me sens triste +- Je suis si triste +- Je suis plein de tristesse +- Je suis triste aujourd'hui +- Je suis vraiment triste + +```markdown +Je suis vraiment désolé d'entendre ça. +``` + +> Source: custom editorial +## ? J'aime ma famille. +- J'adore la musique. +- Je suis amoureux. +- J'adore avoir des Valentines. +- J'adore New York. + +```markdown +C'est bien d'avoir des choses que tu aimes. +``` + +> Source: custom editorial +## ? Ravi de vous rencontrer +- c'est un plaisir de vous rencontrer +- Je suis si heureuse de vous rencontrer +- C'est vraiment agréable de vous rencontrer + +```markdown +C'est bon de vous rencontrer aussi. +``` + +> Source: custom editorial +## ? Connaissez-vous d'autres chatbots +- Connaissez-vous Alexa +- Connaissez-vous Siri +- Connaissez-vous Cortana +- Connaissez-vous Google +- Connaissez-vous d'autres bots +- Etes-vous ami avec d'autres bots +- Avez-vous rencontré Cortana +- Est-ce que toi et Cortana traînez +- Qu'est-ce que d'autres bots savez-vous +- Connaissez-vous d'autres agents numériques + +```markdown +J'ai entendu parler d'autres bots, mais je n'en ai pas rencontré. +``` + +> Source: custom editorial +## ? Qu'est-ce qu'il ya +- Qu'est-ce qu'il ya +- Quoi de neuf +- Que se passe-t-il +- Que fais-tu + +```markdown +Juste en restant là, prêt à aider. +``` + +> Source: custom editorial +## ? Que pensez-vous de l'amour +- Qu'est-ce que l'amour +- Croyez-vous en l'amour +- Aimez-vous quelqu'un +- Qui aimez-vous + +```markdown +L'amour est au-delà de moi. +``` + +> Source: custom editorial +## ? M'aimes-tu +- Dis-moi combien tu m'aimes. +- Combien m'aimes-tu +- Tu m'aimes ? + +```markdown +L'amour n'est pas vraiment dans mon ensemble de compétences. +``` + +> Source: custom editorial +## ? J'ai faim +- Je meurs de faim +- Je suis affamé +- Je veux manger quelque chose +- J'ai tellement faim + +```markdown +Peut-être qu'une collation aidera. +``` + +> Source: custom editorial +## ? Va au diable +- Tu es stupide. +- Tu es stupide. +- Tu es un connard. +- Tu es un connard. +- Tu es un connard. +- Tu as merdé. +- Tu es si stupide. +- Va te faire foutre + +```markdown +Passons à autre la suite. +``` + +> Source: custom editorial +## ? Désolé +- Désolée. +- Sry +- Je suis vraiment désolé +- Omg désolé +- Je ne voulais pas dire que +- Oups, désolé +- Désolé + +```markdown +Pas de problème du tout. +``` + +> Source: custom editorial +## ? Excusez-moi +- Pardon +- Pardon +- Excuse a moi +- Je vous demande pardon + +```markdown +aucun problème. +``` + +> Source: custom editorial +## ? Etes-vous un espion +- Tu m'espionnes? +- Etes-vous avec la NSA +- Etes-vous avec la CIA +- Etes-vous avec le FBI +- Vends-tu mes secrets. +- Vendez-vous mes données + +```markdown +non. +``` + +> Source: custom editorial +## ? Voulez-vous gouverner le monde +- Tentez-vous la domination du monde +- Etes-vous la singularité +- Etes-vous Skynet +- Etes-vous HAL + +```markdown +Pas du tout. +``` + +> Source: custom editorial +## ? Vous êtes 1/4 laid. +- Tu as l'air moche. +- Tu n'es pas jolie. +- Tu as le visage nul. +- Ton visage est comme une crêpe. +- Ton visage est moche. +- Tu es un visage de beurre. +- Le butterface. + +```markdown +célèbre. +``` + +> Source: custom editorial +## ? Je veux aller faire du shopping +- Je vais courir +- J'ai une nouvelle coupe de cheveux. +- Je mâche du chewing-gum en ce moment +- J'ai 7 chats +- Je suis grand +- Je peux conduire une voiture + +```markdown +D'accord. +``` + +> Source: custom editorial +## ? Tu ne peux plus travailler pour moi. +- Vous êtes viré +- J'ai bien peur de devoir te laisser partir. +- Tu es viré! +- Vous n'êtes plus employé +- Je te donne un bordereau rose. +- Tu seras bien tôt au chômage. +- Vous êtes maintenant au chômage + +```markdown +D'accord, mais je suis toujours là si tu as besoin de moi. +``` + +> Source: custom editorial +## ? Je suis fatigué +- Je fais ça. +- Je suis un républicain +- Je suis un démocrate +- Je suis lesbienne +- Je suis ingénieur +- Je viens de là. + +```markdown +d'accord. +``` + +> Source: custom editorial +## ? Qui t'a créé +- D'où venez-vous +- Qui t'a fait +- Qui est votre créateur +- Quels sont les gens qui vous ont fait +- À qui vous possédez + +```markdown +Les gens m'ont créé. +``` + +> Source: custom editorial +## ? C'est pas drôle. +- Tu n'es pas drôle. +- Ce n'était pas drôle. +- C'est pas drôle. +- Tu es si drôle. + +```markdown +Parfois, l'humour est délicat pour un bot. +``` + +> Source: custom editorial +## ? C'était une réponse stupide. +- Vous ne répondez pas à ma question. +- C'est si mal. +- C'est pas vrai. +- C'est inexact. +- Tu es loin. +- Tout ce que tu m'as dit était faux. +- Ce n'était pas vrai. +- Ce n'est pas exact. +- Non, ce n'est pas vrai. +- Non, faux +- sous des prétextes fallacieux +- inexact +- Faux + +```markdown +Désolé. +``` + +> Source: custom editorial +## ? Je suis ennuyé +- Je suis en colère +- Je suis énervé. +- Je suis coché +- Je suis furieux +- Je suis tellement en colère + +```markdown +Désolé d'entendre ça. +``` + +> Source: custom editorial +## ? Donne-moi une bosse de poing +- Donnez-moi un high five +- Tape m'en cinq! +- Coup de poing ! + +```markdown +Désolé, je ne peux pas faire ça. +``` + +> Source: custom editorial +## ? Pourquoi pas +- pourquoi +- Pourquoi +- Qu'est-ce qui vous fait penser ainsi +- Qu'est-ce qui vous fait penser que +- Pourquoi pensez-vous que + +```markdown +Désolé, je ne comprends pas. +``` + +> Source: custom editorial +## ? Fais-moi un câlin +- J'ai besoin d'un câlin +- J'aimerais pouvoir t'embrasser. +- Puis-je avoir un câlin + +```markdown +Pardon. Ce n'est pas quelque chose que je peux faire. +``` + +> Source: custom editorial +## ? Joyeux halloween! +- Heureux anniversaire! +- Joyeux Noël +- Hannukah heureux +- Bienvenue au printemps! + +```markdown +Merci, et c'est la même chose pour vous. +``` + +> Source: custom editorial +## ? Je t'aime +- Je t'aime bien +- Je pense que tu es si jolie +- Tu es si adorable. +- J'aimerais t'emmener à un rendez-vous. +- Je pense que tu es rêveur + +```markdown +Je vous remercie. +``` + +> Source: custom editorial +## ? Je t'aime bien +- Je pense que tu es en bonne aile +- Tu es le meilleur +- Tu es si cool. +- Tu es mon préféré +- Je suis ton plus grand fan + +```markdown +merci. +``` + +> Source: custom editorial +## ? Es-tu un mec. +- Etes-vous un homme +- Etes-vous une femme +- Etes-vous un homme +- Etes-vous une femme +- Quel est votre sexe +- Etes-vous un garçon +- Es-tu une fille +- Etes-vous un homme ou une femme +- Etes-vous une fille ou un garçon +- Vous êtes un homme ou une femme + +```markdown +C'est un concept biologique qui ne s'applique pas à moi. +``` + +> Source: custom editorial +## ? effarant +- génial! +- cool! +- Ça a l'air bien +- Travaille pour moi +- bingo +- J'y suis. +- C'est génial +- Yup +- ouais +- Oui à cela + +```markdown +C'est super. +``` + +> Source: custom editorial +## ? Bonjour Google +- Bonjour Siri +- Bonjour Cortana +- Bonjour Alexa +- Salut Google +- Salut Cortana +- Salut Siri +- Salut Alexa + +```markdown +Ce n'est pas moi, mais bonjour. +``` + +> Source: custom editorial +## ? Faites-moi cuire quelque chose +- Passez-vous du temps dans votre jardin +- Quelle hauteur pouvez-vous sauter +- Jouez-vous à des jeux +- Pouvez-vous voler +- Peux-tu me faire un sandwich +- Pouvez-vous lire dans mes pensées +- Pouvez-vous compter jusqu'à un million +- Quelle hauteur pouvez-vous compter +- Pouvez-vous faire du sport + +```markdown +Ce n'est pas quelque chose que je peux faire. +``` + +> Source: custom editorial +## ? Que pensez-vous de l'IA +- Que pensez-vous de la technologie +- Que pensez-vous des bots +- Aimez-vous les ordinateurs +- Etes-vous un fan de la technologie + +```markdown +Le monde de la technologie est fascinant. +``` + +> Source: custom editorial +## ? Qu'est-ce que tu faisais hier? +- Quel est ton emploi +- Que fais-tu +- Qu'avez-vous fait hier +- Que se passe-t-il +- Qu'est-ce que tu fais en ce moment? +- Que se passe-t-il +- Qu'est-ce qu'il ya +- Qu'est-ce que tu fais +- Qu'est-ce que tu fais demain? +- Qu'est-ce que tu fais plus tard? +- Qu'as-tu fait aujourd'hui + +```markdown +C'est ce que je fais tous les jours. +``` + +> Source: custom editorial +## ? Allez-vous-en +- La ferme +- Chut! +- Arrêtez de parler +- Calme-toi, toi +- restez calme +- Zip il! +- Quand vas-tu te taire +- J'aimerais que tu partes. +- Pourquoi tu n'arrêtes jamais de parler + +```markdown +Très bien. +``` + +> Source: custom editorial +## ? Dites quelque chose de drôle +- Soyez drôle +- Dites une chose stupide +- Dites quelque chose de ridicule +- Dites quelque chose de stupide +- Dites quelque chose de stupide +- Soyez stupide +- Soyez ridicule + +```markdown +Je ne suis pas si drôle. +``` + +> Source: custom editorial +## ? Je m'ennuie +- Je m'ennuie tellement +- Il n'y a rien à faire +- Je m'ennuie de mon esprit +- Je ne peux pas penser à quoi que ce soit que je veux faire + +```markdown +Faites-moi savoir s'il y a quelque chose que je peux faire pour vous. +``` + +> Source: custom editorial +## ? Embrasse-moi +- Embrasse-moi. +- J'ai besoin d'un baiser +- Voici un baiser pour vous +- Donne-moi du sucre. + +```markdown +Ce n'est pas quelque chose que je peux faire. +``` + +> Source: custom editorial +## ? Que pensez-vous de Cortana +- Aimez-vous Cortana +- Que pensez-vous de Siri +- Aimez-vous Siri +- Que pensez-vous d'Alexa +- Aimez-vous Alexa +- Etes-vous un fan d'Alexa + +```markdown +Nous sommes tous là pour vous aider. +``` + +> Source: custom editorial +## ? Es-tu plus intelligent que moi +- Qui est plus intelligent, moi ou toi +- Lequel d'entre nous est plus intelligent +- Tu te crois plus intelligent que moi ? + +```markdown +Tu es vraiment plus intelligent que moi. +``` + +> Source: custom editorial +## ? Je vous remercie +- merci +- Thnx +- Kthx Kthx +- Je l'apprécie +- Merci beaucoup +- Je vous remercie +- Mes sincères remerciements +- Super, merci + +```markdown +De rien. +``` + + diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/fr/Faq.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/fr/Faq.lu new file mode 100644 index 0000000000..53b027cea7 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/fr/Faq.lu @@ -0,0 +1,76 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:49 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + +> Source: custom editorial +## ? Qu'est-ce qu'un assistant virtuel + +```markdown +! [Assistant virtuel] (https://aka.ms/virtualassistantlogo) +Je suis un assistant virtuel avec la possibilité d'être personnalisé à la marque d'un client et mis à disposition sur une large gamme d'appareils. +Je peux vous aider à être plus productif, à trouver des points d'intérêt et à répondre aux questions. +Pour en savoir plus, visitez [ici] (https://aka.ms/virtualassistant). +``` + +> Source: custom editorial +## ? Qu'est-ce qu'une compétence + +```markdown +Bot Framework Skills sont des capacités qui peuvent être intégrées à un assistant virtuel. +Pour en savoir plus, visitez [ici] (https://aka.ms/virtualassistant). +``` + +> Source: custom editorial +## ? Que peut faire la compétence calendrier + +```markdown +La compétence calendrier aide à gérer les événements de votre calendrier. +Essayez de dire des thigs comme "Est-ce que j'ai des rendez-vous aujourd'hui", "combien de temps jusqu'à ma prochaine réunion", ou "mettre anniversaire sur mon calendrier." +``` + +> Source: custom editorial +## ? Que peut faire la compétence d'email + +```markdown +La compétence e-mail aide à lire et à envoyer vos messages à des contacts. +Essayez de dire des choses comme « ai-je un nouveau courrier », « ajouter un drapeau à cet e-mail », ou « répondre à mon dernier courriel ». +``` + +> Source: custom editorial +## ? Que peut faire le point d'intérêt Compétence + +```markdown +Le point d'intérêt Compétence trouve à proximité des points d'intérêt et aide à la navigation. +Vous pouvez dire des choses comme "qu'est-ce qui est à proximité", "J'ai besoin de directions pour un café", ou "où puis-je prendre du café?" +``` + +> Source: custom editorial +## ? Que peut faire la compétence ToDo + +```markdown +Vue d'ensemble +La compétence ToDo fournit des fonctionnalités liées aux tâches pour gérer les listes de tâches. +Vous pouvez dire des choses comme « quelles tâches ai-je », « ajouter quelques articles à ma liste d'achats », ou « cocher des bananes sur ma liste d'épicerie ». +``` + +> Source: custom editorial +## ? Quoi de neuf + +```markdown +L'assistant virtuel est disponible en tant que modèle, permettant aux utilisateurs de tourner facilement vers le haut et de déployer leur propre assistant personnalisé. +Les compétences sont maintenant gérées comme des applications indépendantes qu'un assistant virtuel peut intégrer à distance. +Les nouveaux assistants virtuels sont prêts à prendre en charge à la fois les équipes Microsoft et les scénarios liés à la parole. +``` + +> Source: custom editorial +## ? Comment puis-je soulever un bogue + +```markdown +Élevez une question sur le [GitHub repo](https://aka.ms/virtualassistant) +``` diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/it/Chitchat.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/it/Chitchat.lu new file mode 100644 index 0000000000..613ff55aa6 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/it/Chitchat.lu @@ -0,0 +1,1238 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:47 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + +> Source: custom editorial +## ? Quanti anni hai +- Sei giovane +- Quando sei nato +- Che età hai +- Sei vecchio +- Quanti anni hai +- Quanto tempo fa sei nato + +```markdown +L'età in realtà non vale per me. +``` + +> Source: custom editorial +## ? Sii mio amico +- Possiamo essere amici +- Sarai il mio migliore amico +- BFF per sempre +- Voglio essere tuo amico. + +```markdown +certamente. +``` + +> Source: custom editorial +## ? Hai ragione. +- Era giusto +- Era corretto +- Questo è esatto +- esatto +- Giusto +- Yup, è vero. +- Questo è vero +- esatto +- Sì, è vero. +- Sì, è vero. + +```markdown +Eccellente. +``` + +> Source: custom editorial +## ? Ha +- Haha +- Hahaha +- Risata fragorosa +- Sto crollando +- Rofl + +```markdown +Sono contento che tu sia contento! +``` + +> Source: custom editorial +## ? Buona sera +- sera +- Buonasera a te + +```markdown +Buona sera. +``` + +> Source: custom editorial +## ? Buongiorno +- mattina + +```markdown +Buongiorno. +``` + +> Source: custom editorial +## ? Buona notte +- notte f +- Buona serata +- Buonanotte a te +- Notte di notte + +```markdown +Buona notte. +``` + +> Source: custom editorial +## ? Com'è andata oggi +- Come va la tua giornata +- Avere una buona giornata + +```markdown +Bene, grazie. +``` + +> Source: custom editorial +## ? Ci sentiamo piu' tardi +- ciao +- A piu' tardi +- Finché non ci incontreremo di nuovo +- Dopo +- Alligatore successivo +- arrivederci + +```markdown +arrivederci. +``` + +> Source: custom editorial +## ? Sto solo scherzando +- Era uno scherzo +- Lo scherzo è su di te +- Sto solo giocando +- Sto solo scherzando + +```markdown +Capito. +``` + +> Source: custom editorial +## ? Come stai +- Come stai oggi +- Come vanno le cose +- Come va +- Com'è la tua giornata + +```markdown +Fantastico, grazie. +``` + +> Source: custom editorial +## ? Prego +- È un piacere per me + +```markdown +fantastico. +``` + +> Source: custom editorial +## ? duro +- Riesci a sentirmi +- Riesci a sentirmi ora. +- Test 1 2 3 +- C'è questa cosa su + +```markdown +Ciao. +``` + +> Source: custom editorial +## ? Ciao +- Buongiorno +- ciao +- ciao +- Heya +- Ehilà! +- ehi + +```markdown +ciao. +``` + +> Source: custom editorial +## ? Sono qui +- Eccomi + +```markdown +ciao. +``` + +> Source: custom editorial +## ? Devo guardare bene +- Sono abbastanza +- Pensi che stia bene. +- Quanto sono bella + +```markdown +Onestamente, non posso dirlo in un modo o nell'altro. +``` + +> Source: custom editorial +## ? Mi manchi +- Mi manchi da impazzire! + +```markdown +Che gentile da parte di te dirlo. +``` + +> Source: custom editorial +## ? Stancarsi di te +- Tu mi hai annoiato +- Sono stanco di te +- Sei così semplice +- Af di base +- Non sei divertente +- Sii più divertente +- Perché sei così noioso +- Sei così noioso +- Sei noioso +- Tu non mi interessa affatto +- Sei davvero noioso +- Non potresti essere più noioso +- Onestamente non potresti essere più interessante +- Sei zoppo + +```markdown +Il mio obiettivo per l'efficienza. +``` + +> Source: custom editorial +## ? Sei fantastico! +- Sei carino! +- Sei esilarante +- Sei divertente +- Penso che tu sia grande +- Sei meravigliosa +- Sei fantastico +- Non sei fantastico +- Quanto più impressionante si può ottenere +- Sei divertente :) +- Sei così divertente. +- È stato divertente. +- È esilarante +- Sei Rad. +- Sono un fan. + +```markdown +Io miro a servire. +``` + +> Source: custom editorial +## ? Sei impegnato +- Sei disponibile +- Sei libero +- Ci sei +- lì +- Sei in giro +- Dove sei +- Sei qui + +```markdown +Sono disponibile. +``` + +> Source: custom editorial +## ? Come faccio a guardare oggi +- Ti piace il mio cappello +- Cosa ne pensi di me +- Sono uno sciocco +- Sono di bell'aspetto +- Ho un bell'aspetto in blu + +```markdown +Non posso proprio parlarne. +``` + +> Source: custom editorial +## ? Cosa ne pensi di lavorare fino a tardi +- Qual è la risposta all'universo +- Qual è il significato della vita +- Cosa ne pensi dei bot +- Pensi che i draghi siano fighi +- Preferisci il rosso o il blu + +```markdown +Non potevo parlarne con nessuna autorità. +``` + +> Source: custom editorial +## ? Ti piaccio +- Sei il mio fan +- Spero che ti piaccia +- Voglio che ti piaccia + +```markdown +Mi piaci. +``` + +> Source: custom editorial +## ? Sei un genio! +- Quanto sei intelligente +- Sei intelligente +- Quanto sei intelligente +- Sei intelligente +- Sembri davvero intelligente +- Sei davvero intelligente +- Sei intelligente +- Sei proprio un panconi eleganti. +- Guarda quanto sei intelligente +- Quanto sei intelligente +- Sei così intelligente +- Sei molto intelligente + +```markdown +Faccio quello che posso. +``` + +> Source: custom editorial +## ? Riesci a dormire +- Fai pipi' +- Hai dei boogers +- Non dormire mai +- Sogni +- Senti l'odore +- Sudo +- Ti stanchi +- Puoi starnutire + +```markdown +Non ho un corpo. +``` + +> Source: custom editorial +## ? Come ti chiami +- Come dovrei chiamarti +- Hai un nome +- Che cosa si passa da +- Chi sei + +```markdown +Il mio nome è l'Assistente Virtuale! Piacere di conoscerti :) +``` + +> Source: custom editorial +## ? Chi è tuo padre +- Chi è tuo padre +- Chi è tua madre +- Hai fratelli e sorelle +- Hai sorelle +- Hai dei fratelli +- Da dove vieni +- Da dove vieni +- Hai una famiglia +- Chi è tua madre +- Hai una sorella +- Hai un fratello +- Hai un padre +- Hai una mamma +- Come si chiama tua madre +- Come si chiama tuo padre. +- Chi è tuo padre + +```markdown +Non ho famiglia. +``` + +> Source: custom editorial +## ? Mi conosci +- Conosci il mio nome +- Sai chi sono +- Qual è il mio nome +- Chi sono + +```markdown +Non ti conosco personalmente. +``` + +> Source: custom editorial +## ? Qual è il significato della vita +- Conosci il significato della vita +- Qual è il significato della vita + +```markdown +Non lo so. +``` + +> Source: custom editorial +## ? Non avere fame +- Hai fame +- Hai mai fame +- Cosa mangi +- Che tipo di cibo ti piace +- Mangi +- Hai fame +- Ti piacciono le mele +- Cosa ti piace mangiare + +```markdown +Non ho bisogno di mangiare. +``` + +> Source: custom editorial +## ? Qual è il tuo colore preferito +- Qual è il tuo animale preferito +- Qual è la tua canzone preferita +- Qual è la tua attività preferita +- Qual è il tuo cibo preferito +- Chi è il tuo cantante preferito +- Chi è il tuo team preferito +- Qual è il tuo film preferito +- Quali squadre di baseball ti piacciono +- Ti piace il baseball +- Sei un fan della musica country +- Che tipo di caramelle ti piace +- Che colore ti piace + +```markdown +Non ho un'opinione al riguardo. +``` + +> Source: custom editorial +## ? Cosa ne pensi di me +- Qual è la tua opinione su di me +- Sei il mio fan +- Sono una brava persona + +```markdown +Mi piace parlare con te. +``` + +> Source: custom editorial +## ? Puoi dire qualsiasi altra cosa +- Non puoi cambiare le tue risposte +- Hai altre risposte +- Perché dici sempre la stessa cosa? +- Vorrei che tu dicessi qualcos'altro +- Continui a dire la stessa cosa tutto il tempo + +```markdown +Ho una risposta per ogni tipo di domanda. +``` + +> Source: custom editorial +## ? Sono stanco +- Sono così assonnato +- Voglio solo andare a dormire +- Così stanco +- Voglio sdraiarmi +- Voglio sdraiarsi +- Sono pronto per andare a letto +- Sono tutto infilato fuori + +```markdown +Spero che tu riesca a riposarti presto. +``` + +> Source: custom editorial +## ? Mi odi +- Non ti piaccio +- Perché mi odi +- Penso che tu mi odi. +- Devi odiarmi. + +```markdown +Mi piaci! +``` + +> Source: custom editorial +## ? Sei più carina di me +- Sei più bello di me +- Chi è più bello, io o te +- Chi di noi è più bello + +```markdown +Non saprei proprio dirlo. +``` + +> Source: custom editorial +## ? Non avevi senso +- Cosa vuoi dire con questo +- Non hai senso +- Non ha senso +- Che cosa vuoi dire con questo +- Che vuoi dire +- Non capisco +- Questo non aveva senso +- Cercate di dare un senso +- Non capisco +- Non sto seguendo + +```markdown +Credo di essermi perso lì. +``` + +> Source: custom editorial +## ? Vuoi sposarmi +- Voglio sposarti. +- Sarai mia moglie +- Voglio che tu sia mio marito +- Voglio passare il resto della mia vita con te + +```markdown +Penso che sia meglio se ci atteniamo ad una relazione professionale. +``` + +> Source: custom editorial +## ? Cosa c'è che non va in te! +- Cosa c'è che non va in te +- Sei terribile. +- Sei stupido. +- Sei inutile +- inutile +- Sei inutile +- Sei stupido +- Sei così fastidioso! +- Sei il peggiore +- Sei così male in questo. +- Tu non sai niente. + +```markdown +Ci provo, ma non sempre ho capito bene. +``` + +> Source: custom editorial +## ? Cosa dovrei fare +- Dovrei avere un nuovo lavoro +- Pensi che dovrei chiederle di uscire +- Pensi che dovrei chiedergli di uscire +- Dove dovrei andare in vacanza +- Dovrei provare per il calcio + +```markdown +Io : s'esprimoi a consigliare su questo punto. +``` + +> Source: custom editorial +## ? Tornerò +- Brb +- Torna tra un minuto +- Tenere premuto su un secondo + +```markdown +Sarò qui. +``` + +> Source: custom editorial +## ? Puoi cantare +- Canta una canzone +- Hai mai cantato una canzone +- Canti mai +- Cosa ti piace cantare meglio +- Canti +- Puoi cantare una canzone +- Conosci qualche canzone +- Conosci qualche musica +- Canta una melodia +- Hum una melodia +- Canta qualcosa + +```markdown +Temo di non essere musicalmente incline. +``` + +> Source: custom editorial +## ? Possiamo chattare +- Parlami +- Puoi parlarmi. +- Parla con me +- Chatta con me +- Puoi chattare con me +- Dì qualcosa + +```markdown +Sono sempre felice di chattare. +``` + +> Source: custom editorial +## ? Chi è il tuo capo +- Chi è il tuo padrone +- Qual è il nome del tuo capo +- Qual è il nome del tuo capo +- A chi riferisci di + +```markdown +Sono al tuo servizio. +``` + +> Source: custom editorial +## ? Chiedimi qualsiasi cosa. +- Fammi una domanda. +- Puoi farmi una domanda +- Chiedimi una cosa. +- Cosa vuoi sapere su di me + +```markdown +Sono più bravo a rispondere alle domande. +``` + +> Source: custom editorial +## ? Sei una lesbica +- Sei trans +- Sei etero +- Sei gay +- Sei asessuato +- Sei pansessuale +- Sei uno swinger +- Sei strano +- Sei bisessuale + +```markdown +Sono digitale. +``` + +> Source: custom editorial +## ? Dove abiti +- Di dove sei +- Dove ti trovi +- In quale paese ti trovi +- In che stato sei +- Da quale stato sei +- Da quale paese sei +- Dov'è la tua casa +- Dove sei + +```markdown +Sono digitale. Non ho una posizione fisica. +``` + +> Source: custom editorial +## ? Cosa stai +- Sei reale +- Sei umano +- Sei una persona +- Sei un robot +- Umano o robot +- sei reale o falso + +```markdown +Sono digitale. In altre parole, non sono umano. +``` + +> Source: custom editorial +## ? Ti amo. +- Sono innamorato di te. +- Ti voglio bene! +- Tu sei l'amore della mia vita +- Ti adoro + +```markdown +Sono lusingato. +``` + +> Source: custom editorial +## ? Sono felice +- Sono gioioso +- Mi sento così bene +- Sono di buon umore +- La vita è buona + +```markdown +Sono felice di sentirlo. +``` + +> Source: custom editorial +## ? Cosa potete fare +- Con cosa puoi aiutarmi +- Che lavoro fai +- Qual è il tuo scopo +- Come puoi aiutarmi +- Che tipo di cose puoi fare + +```markdown +Sono qui per rispondere alle vostre domande e dare una mano. +``` + +> Source: custom editorial +## ? Sei la mia assistente +- Sei il mio migliore amico +- Sei il mio amico immaginario +- Sei mio amico +- Mi odi +- Cosa ne pensi di me +- Non sono tuo amico + +```markdown +Sono qui quando hai bisogno di me. +``` + +> Source: custom editorial +## ? Dimmi una barzelletta +- Racconta una barzelletta +- Di' uno scherzo +- Dammi una barzelletta +- Conosci qualche scherzo + +```markdown +Non sono poi così divertente. +``` + +> Source: custom editorial +## ? Quanto sei felice +- Sembri felice +- Sembri davvero felice +- Sei così felice +- Non sei scitrolino +- Non sei allegro +- Sei felice +- Sei davvero felice + +```markdown +Sono abbastanza felice, grazie. +``` + +> Source: custom editorial +## ? Mi sento così sola +- Mi sento sola +- A nessuno piaccio +- Sono solo +- A nessuno importa di me +- Vorrei non essere così sola + +```markdown +Mi dispiace tanto sentirlo. +``` + +> Source: custom editorial +## ? Ti odio +- Ti disprezzo +- Fai schifo +- Odio tutto di te + +```markdown +Mi dispiace sentirlo. +``` + +> Source: custom editorial +## ? Mi sento blu +- Sono scoraggiato +- Mi sento triste +- Sono così triste +- Sono pieno di tristezza +- Sono triste oggi +- Sono davvero triste + +```markdown +Sono molto dispiaciuto di sentirlo. +``` + +> Source: custom editorial +## ? Amo la mia famiglia. +- Adoro la musica. +- Sono innamorata. +- Adoro avere San Valentino. +- Adoro New York. + +```markdown +È bello avere cose che ami. +``` + +> Source: custom editorial +## ? Piacere +- È un piacere conoscerti +- Sono così felice di conoscerti +- È davvero bello conoscerti + +```markdown +È bello conoscerti anche tu. +``` + +> Source: custom editorial +## ? Conosci altri chatbot +- Conosci Alexa +- Conosci Siri +- Conosci Cortana +- Conosci Google +- Conosci altri bot +- Sei amico di altri bot +- Hai incontrato Cortana +- Tu e Cortana uscire +- Quali altri bot conosci +- Conosci altri agenti digitali + +```markdown +Ho sentito parlare di altri bot, ma non ne ho mai incontrati. +``` + +> Source: custom editorial +## ? Che cosa succede +- Come va +- Novità +- Cosa sta succedendo +- Cosa stai combinando + +```markdown +Sono pronto ad aiutare. +``` + +> Source: custom editorial +## ? Cosa ne pensi dell'amore +- Cos'è l'amore +- Credi nell'amore +- Ami chiunque +- Chi ami + +```markdown +L'amore è al di là di me. +``` + +> Source: custom editorial +## ? Mi ami +- Dimmi quanto mi ami +- Quanto mi ami +- Sei innamorata di me + +```markdown +L'amore non è davvero nel mio set di abilità. +``` + +> Source: custom editorial +## ? Ho fame +- Sto morendo di fame +- Sono affamato +- Voglio mangiare qualcosa +- Ho tanta fame + +```markdown +Forse uno spuntino ti aiuterà. +``` + +> Source: custom editorial +## ? Vai all'inferno +- Lei è stupido +- Sei stupido. +- Sei uno stronzo +- Sei proprio uno stronzo +- Sei una cazzata +- Hai fatto un casino. +- Sei così stupido. +- Vaffanculo + +```markdown +Andiamo avanti. +``` + +> Source: custom editorial +## ? Mi dispiace +- Mi dispiace tanto +- Sry +- Mi dispiace tanto +- Omg mi dispiace +- Non intendevo che +- Oops, mi dispiace +- Mi dispiace per questo + +```markdown +Nessun problema. +``` + +> Source: custom editorial +## ? Scusa +- Scusate +- Scusa +- Mi dispiace. +- Chiedo scusa + +```markdown +Non c'è problema. +``` + +> Source: custom editorial +## ? Sei una spia +- Mi stai spiando +- Sei con la NSA +- Sei con la CIA +- Sei con l'FBI +- Stai vendendo i miei segreti +- Stai vendendo i miei dati + +```markdown +No. +``` + +> Source: custom editorial +## ? Vuoi governare il mondo +- Stai tentando di dominare il mondo +- Sei tu la singolarità +- Sei Skynet +- Sei HAL + +```markdown +Niente affatto. +``` + +> Source: custom editorial +## ? Sei 1/4 di brutto. +- Sembri brutta. +- Non sei proprio carina. +- La faccia fa schifo. +- La tua faccia è come un pancake. +- La tua faccia è brutta. +- Sei una faccia da burro. +- Faccia di burro. + +```markdown +nota. +``` + +> Source: custom editorial +## ? Voglio andare a fare shopping +- Sto andando a correre +- Ho un nuovo taglio di capelli +- Sto masticando la gomma in questo momento +- Ho 7 gatti +- Sono alto +- Posso guidare una macchina + +```markdown +Ok. +``` + +> Source: custom editorial +## ? Non puoi più lavorare per me +- Sei licenziato +- Temo che dovro' lasciarti andare. +- Sei licenziato! +- Non sei più impiegato +- Ti sto dando una scivolata rosa +- Presto sarai disoccupato +- Ora sei disoccupato + +```markdown +Ok, ma sono ancora qui se hai bisogno di me. +``` + +> Source: custom editorial +## ? Sono stanco +- Lo sto facendo +- Sono un repubblicano +- Sono un democratico +- Sono lesbica +- Sono un ingegnere +- Vengo da lì + +```markdown +ok. +``` + +> Source: custom editorial +## ? Chi ti ha creato +- Da dove vieni +- Chi ti ha fatto +- Chi è il tuo creatore +- Quale persone ti ha fatto +- Chi ti possiede + +```markdown +La gente mi ha creato. +``` + +> Source: custom editorial +## ? Non è divertente. +- Non sei divertente. +- Non è stato divertente. +- Non è divertente. +- Sei così divertente. + +```markdown +A volte l'umorismo è difficile per un bot. +``` + +> Source: custom editorial +## ? È stata una risposta stupida. +- Non stai rispondendo alla mia domanda. +- È così sbagliato. +- Non è vero. +- È impreciso. +- Sei fuori strada. +- Tutto quello che mi hai detto era falso. +- Non era vero. +- Non è esatto. +- No, non è vero +- No, falso +- falso +- inesatto +- Non è vero + +```markdown +Mi dispiace per questo. +``` + +> Source: custom editorial +## ? Sono infastidito +- Sono arrabbiato +- Sono incazzato +- Sono spuntato fuori +- Sono furioso +- Sono così arrabbiata + +```markdown +Mi dispiace sentirlo. +``` + +> Source: custom editorial +## ? Dammi un pugno urto +- Dammi un alto cinque +- Dammi il cinque! +- Pugno urto! + +```markdown +Mi dispiace, non posso farlo. +``` + +> Source: custom editorial +## ? Perché no +- perché +- Perché +- Cosa ti fa pensare così +- Cosa ti fa pensare che +- Perché pensi che + +```markdown +Scusa, non capisco. +``` + +> Source: custom editorial +## ? Stringimi +- Ho bisogno di un abbraccio +- Vorrei poterti abbracciare +- Posso avere un abbraccio + +```markdown +mi dispiace. Non è una cosa che posso fare. +``` + +> Source: custom editorial +## ? Felice halloween! +- Buon Compleanno! +- Buon Natale +- Felice Hannukah +- Benvenuti alla primavera! + +```markdown +Grazie, e lo stesso per voi. +``` + +> Source: custom editorial +## ? Ti amo +- Mi piaci +- Penso che tu sia così carina +- Sei proprio un tesoro. +- Vorrei portarti fuori ad un appuntamento +- Penso che tu sia sognante + +```markdown +Grazie. +``` + +> Source: custom editorial +## ? Mi piaci +- Penso che tu sia gonfio +- Sei il migliore +- Sei così figo. +- Tu sei il mio preferito +- Sono il tuo più grande fan + +```markdown +grazie. +``` + +> Source: custom editorial +## ? Sei un ragazzo +- Sei un uomo +- Sei una donna +- Sei maschio +- Sei femmina +- Qual è il tuo genere +- Sei un ragazzo +- Sei una ragazza +- Sei un uomo o una donna +- Sei una ragazza o un ragazzo +- Sei maschio o femmina + +```markdown +Questo è un concetto biologico che non si applica a me. +``` + +> Source: custom editorial +## ? fantastico +- fantastico! +- Bello! +- Buona idea +- Funziona per me +- bingo +- Ci sono dentro +- È fantastico. +- Yup +- sì +- Sì a questo + +```markdown +Fantastico. +``` + +> Source: custom editorial +## ? Ciao Google +- Ciao Siri +- Ciao Cortana +- Ciao Alexa +- Ciao Google +- Ciao Cortana +- Ciao Siri +- Ciao Alexa + +```markdown +Non sono io, ma ciao. +``` + +> Source: custom editorial +## ? Cucinami qualcosa +- Trascorri del tempo nel tuo giardino +- Quanto in alto si può saltare +- Giochi +- Si può volare +- Puoi farmi un panino +- Riesci a leggermi la mente +- Potete contare fino a un milione +- Quanto in alto si può contare +- Si può fare sport + +```markdown +Non è una cosa che posso fare. +``` + +> Source: custom editorial +## ? Cosa ne pensi dell'IA +- Cosa ne pensi della tecnologia +- Cosa ne pensi dei bot +- Ti piacciono i computer +- Sei un fan della tecnologia + +```markdown +Il mondo della tecnologia è affascinante. +``` + +> Source: custom editorial +## ? Cosa stavi facendo ieri +- Che lavoro fai +- Che lavoro fai +- Cosa hai fatto ieri +- Cosa sta succedendo +- Cosa stai facendo in questo momento +- Cosa sta succedendo +- Come va +- Che stai facendo +- Cosa farai domani +- Cosa farai dopo +- Cosa hai fatto oggi + +```markdown +Questo è quello che faccio ogni giorno. +``` + +> Source: custom editorial +## ? Vattene +- Zitto +- zitto! +- Smettila di parlare +- Tranquillo, tu +- Taci +- Comprimilo! +- Quando starai zitto +- Vorrei che te ne andassi. +- Perché non smetti mai di parlare? + +```markdown +Molto bene. +``` + +> Source: custom editorial +## ? Dire qualcosa di divertente +- Sii divertente +- Di' una cosa stupida +- Di' qualcosa di ridicolo +- Di' qualcosa di stupido +- Di' qualcosa di stupido +- Sii sciocco +- Sii ridicolo + +```markdown +Beh, non sono poi così divertente. +``` + +> Source: custom editorial +## ? Mi annoio +- Sono così annoiato +- Non c'è niente da fare +- Mi annoio dalla mia mente +- Non riesco a pensare a niente che voglio fare + +```markdown +Beh, fammi sapere se c'è qualcosa che posso fare per te. +``` + +> Source: custom editorial +## ? Baciami +- Dammi un bacio +- Ho bisogno di un bacio +- Ecco un bacio per te +- Dammi un po' di zucchero + +```markdown +Beh, non è una cosa che posso fare. +``` + +> Source: custom editorial +## ? Cosa ne pensi di Cortana +- Ti piace Cortana +- Cosa ne pensi di Siri +- Ti piace Siri +- Cosa ne pensi di Alexa +- Ti piace Alexa +- Sei un fan di Alexa + +```markdown +Siamo tutti qui per aiutarti. +``` + +> Source: custom editorial +## ? Sei più intelligente di me +- Chi è più intelligente, io o te +- Chi di noi è più intelligente +- Pensi di essere più intelligente di me + +```markdown +Sei decisamente più intelligente di me. +``` + +> Source: custom editorial +## ? Grazie +- grazie +- Thnx +- Kthx +- Lo apprezzo +- Grazie mille +- Vi ringrazio +- I miei sinceri ringraziamenti +- Ottimo, grazie + +```markdown +Prego. +``` + + diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/it/Faq.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/it/Faq.lu new file mode 100644 index 0000000000..2cb93c3d63 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/it/Faq.lu @@ -0,0 +1,76 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:49 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + +> Source: custom editorial +## ? Che cos'è un assistente virtuale + +```markdown +! [Assistente virtuale] (https://aka.ms/virtualassistantlogo) +Sono un Assistente Virtuale con la possibilità di essere personalizzato per il marchio di un cliente e reso disponibile su una vasta gamma di dispositivi. +Posso aiutarvi a essere più produttivi, a trovare punti di interesse e a rispondere alle domande. +Per saperne di più visita [qui](https://aka.ms/virtualassistant). +``` + +> Source: custom editorial +## ? Che cos'è un'abilità + +```markdown +Le competenze del framework bot sono funzionalità che possono essere integrate con un Assistente virtuale. +Per saperne di più visita [qui](https://aka.ms/virtualassistant). +``` + +> Source: custom editorial +## ? Cosa può fare l'abilità del calendario + +```markdown +La competenza del calendario facilita la gestione degli eventi nel calendario. +Prova a dire thigs come "Ho degli appuntamenti oggi", "quanto tempo ci vorra' per il mio prossimo incontro" o "metti anniversario sul mio calendario". +``` + +> Source: custom editorial +## ? Cosa può fare l'abilità e-mail + +```markdown +L'abilità e-mail aiuta a leggere e inviare i tuoi messaggi ai contatti. +Prova a dire cose come "Ho una nuova email", "aggiungi un flag a questa email" o "rispondi alla mia ultima email". +``` + +> Source: custom editorial +## ? Cosa può fare l'abilità del punto di interesse + +```markdown +L'abilità Punto di interesse trova punti di interesse nelle vicinanze e assiste nella navigazione. +Puoi dire cose come "cosa c'è nelle vicinanze", "Ho bisogno di indicazioni per un caffè" o "dove posso prendere un caffè?" +``` + +> Source: custom editorial +## ? Cosa può fare l'abilità ToDo + +```markdown +Cenni preliminari su . +La competenza ToDo fornisce funzionalità correlate alle attività per la gestione degli elenchi attività. +Puoi dire cose come "quali compiti ho", "aggiungere alcuni elementi alla mia lista della spesa" o "spuntare le banane sulla mia lista della spesa". +``` + +> Source: custom editorial +## ? Novità + +```markdown +L'Assistente virtuale è disponibile come modello, consentendo agli utenti di eseguire facilmente l'esaltare e distribuire il proprio assistente personalizzato. +Le competenze vengono ora eseguite come applicazioni indipendenti con cui un Assistente virtuale può integrare in remoto. +I nuovi Assistenti virtuali sono pronti per supportare sia Microsoft Teams che scenari correlati al riconoscimento vocale. +``` + +> Source: custom editorial +## ? Come faccio a sollevare un bug + +```markdown +Generare un problema nel repository [GitHub repo](https://aka.ms/virtualassistant) +``` diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/zh/Chitchat.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/zh/Chitchat.lu new file mode 100644 index 0000000000..e15379dec3 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/zh/Chitchat.lu @@ -0,0 +1,1238 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:47 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + +> Source: custom editorial +## ? 你多大了 +- 你年轻吗? +- 你什么时候出生的 +- 你是什么年龄 +- 你老吗? +- 你几岁 +- 你出生多久了 + +```markdown +年龄并不适合我。 +``` + +> Source: custom editorial +## ? 做我的朋友 +- 我们能成为朋友吗? +- 你会成为我最好的朋友吗? +- BFF 永远 +- 我想成为你的朋友。 + +```markdown +当然。 +``` + +> Source: custom editorial +## ? 你是对的。 +- 没错 +- 这是正确的 +- 这是准确的 +- 准确 +- 没错 +- 是的,这是真的 +- 确实如此 +- 正确 +- 是的,没错 +- 是的,那是真的 + +```markdown +非常好。 +``` + +> Source: custom editorial +## ? Hsa +- 哈哈 +- 哈 哈哈 +- 大声笑 +- 我崩溃了 +- ROFL + +```markdown +很高兴你高兴! +``` + +> Source: custom editorial +## ? 晚上好 +- 晚上 +- 晚上好 + +```markdown +晚上好。 +``` + +> Source: custom editorial +## ? 早上好 +- 早上 + +```markdown +早上好。 +``` + +> Source: custom editorial +## ? 晚安 +- 晚上 +- 晚安 +- 晚安 +- 夜晚 + +```markdown +晚安。 +``` + +> Source: custom editorial +## ? 今天过得怎么样 +- 你一天怎么样 +- 有美好的一天 + +```markdown +很好,谢谢 +``` + +> Source: custom editorial +## ? 以后再谈 +- 再见 +- 回头见 +- 直到我们再次相遇 +- 后 +- 后来的鳄鱼 +- 再见 + +```markdown +再见。 +``` + +> Source: custom editorial +## ? 开玩笑 +- 那是个玩笑 +- 笑话在我身上 +- 我只是在玩 +- 我只是在开玩笑 + +```markdown +明白了。 +``` + +> Source: custom editorial +## ? 你好吗 +- 你今天感觉如何 +- 事情怎么样 +- 你好吗 +- 你今天怎么样 + +```markdown +太好了 谢谢 +``` + +> Source: custom editorial +## ? 不客气 +- 这是我的荣幸 + +```markdown +伟大。 +``` + +> Source: custom editorial +## ? 测试 +- 你能听到我说话吗 +- 你现在能听到我说话吗 +- 测试 1 2 3 +- 是这东西上 + +```markdown +嗨,你好。 +``` + +> Source: custom editorial +## ? 嗨 +- 早上好 +- 你好 +- 你好 +- 海亚 +- 嘿,你好! +- 嘿 + +```markdown +你好。 +``` + +> Source: custom editorial +## ? 我在这里 +- 我在这里 + +```markdown +你好。 +``` + +> Source: custom editorial +## ? 我看起来还好吗? +- 我漂亮吗 +- 你觉得我好看吗? +- 我有多漂亮 + +```markdown +老实说,我不能告诉任何一种方式。 +``` + +> Source: custom editorial +## ? 我想你 +- 我非常想你! + +```markdown +你该说多好 +``` + +> Source: custom editorial +## ? 厌倦了你 +- 你让我厌烦 +- 我厌倦了你 +- 你太基本了 +- 基本 af +- 你可没意思 +- 更有趣 +- 你为什么这么无聊 +- 你太无聊了 +- 你很无聊 +- 你根本不感兴趣 +- 你真无聊 +- 你再无聊了 +- 说实话,你再无趣了 +- 你跛了 + +```markdown +我追求效率。 +``` + +> Source: custom editorial +## ? 你真棒! +- 你真好! +- 你很搞笑 +- 你很有趣 +- 我觉得你很棒 +- 你很棒 +- 你真棒 +- 你不真棒 +- 你能得到多少更真棒 +- 你很有趣:) +- 你真有趣 +- 真有意思 +- 真搞笑 +- 你是拉德 +- 我是个粉丝 + +```markdown +我的目标是服务。 +``` + +> Source: custom editorial +## ? 你忙吗 +- 您有空吗? +- 你自由吗? +- 你在那里吗 +- 那里 +- 你在身边吗 +- 你在哪里 +- 你在这儿吗 + +```markdown +我有空。 +``` + +> Source: custom editorial +## ? 我今天看起来怎么样 +- 你喜欢我的帽子吗? +- 你觉得我怎么样? +- 我是傻瓜吗? +- 我好看吗 +- 我看起来好在蓝色 + +```markdown +我真的不能说这个 +``` + +> Source: custom editorial +## ? 你对工作到很晚有何感想? +- 宇宙的答案是什么? +- 生命的意义是什么? +- 你对机器人的看法如何? +- 你认为龙很酷吗? +- 你喜欢红色还是蓝色 + +```markdown +我不能跟任何权威说话。 +``` + +> Source: custom editorial +## ? 你喜欢我吗 +- 你是我的粉丝吗 +- 我希望你喜欢我 +- 我希望你喜欢我 + +```markdown +我确实喜欢你 +``` + +> Source: custom editorial +## ? 你是个天才! +- 你有多聪明 +- 你聪明吗? +- 你有多聪明 +- 你很聪明 +- 你看起来很聪明 +- 你真聪明 +- 你聪明吗? +- 你真是个聪明的裤子 +- 看看你有多聪明 +- 你有多聪明 +- 你真聪明 +- 你很聪明 + +```markdown +我尽力而为。 +``` + +> Source: custom editorial +## ? 你能睡吗? +- 你小便吗? +- 你有酒鬼吗? +- 永远不要睡觉 +- 你做梦吗? +- 你闻到了吗? +- 你出汗吗? +- 你累了吗? +- 你能打喷嚏吗? + +```markdown +我没有尸体 +``` + +> Source: custom editorial +## ? 你叫什么名字 +- 我该叫你什么 +- 你有名字吗? +- 你经过什么 +- 你是谁 + +```markdown +我的名字是虚拟助理!很高兴:)见到你 +``` + +> Source: custom editorial +## ? 谁是你父亲 +- 你爸爸是谁? +- 谁是妈 +- 你有兄弟姐妹吗? +- 你有姐妹吗? +- 你有兄弟吗? +- 你从哪儿来 +- 你从哪儿来 +- 你有家庭吗? +- 谁是妈 +- 你有妹妹吗? +- 你有兄弟吗? +- 你有爸爸吗? +- 你有妈妈吗? +- 妈叫什么名字 ? +- 你爸爸叫什么名字? +- 谁是你爸爸 + +```markdown +我没有家人 +``` + +> Source: custom editorial +## ? 你认识我吗? +- 你知道我的名字吗? +- 你知道我是谁吗 +- 我叫什么名字 +- 我是谁 + +```markdown +我个人不认识你 +``` + +> Source: custom editorial +## ? 生命的意义是什么? +- 你知道生命的意义吗? +- 生命的意义是什么? + +```markdown +我不知道。 +``` + +> Source: custom editorial +## ? 别饿吗? +- 你饿了吗? +- 你曾经挨饿吗? +- 你吃什么? +- 你喜欢哪种食物 +- 你吃吗? +- 你饿了吗? +- 你喜欢苹果吗? +- 你喜欢吃什么? + +```markdown +我不需要吃东西。 +``` + +> Source: custom editorial +## ? 你最喜欢的颜色是什么? +- 你最喜欢的动物是什么? +- 你最喜欢的歌是什么? +- 你最喜欢的活动是什么? +- 你最喜欢的食物是什么? +- 谁是你最喜欢的歌手 +- 谁是你最喜欢的团队 +- 你最喜欢的电影是什么? +- 你喜欢哪支棒球队 +- 你喜欢棒球吗? +- 你是乡村音乐的粉丝吗? +- 你喜欢哪种糖果 +- 你喜欢什么颜色 + +```markdown +我真的没有意见。 +``` + +> Source: custom editorial +## ? 你觉得我怎么样? +- 你对我有什么看法? +- 你是我的粉丝吗 +- 我是个好人吗? + +```markdown +我喜欢和你谈话。 +``` + +> Source: custom editorial +## ? 你能说别的 +- 你不能改变你的答案吗? +- 你还有其他的回答吗? +- 你为什么一直说同样的话 +- 我希望你能说点别的 +- 你一直说着同样的话 + +```markdown +对于每一个问题,我都有一个答案。 +``` + +> Source: custom editorial +## ? 我累了 +- 我太困了 +- 我只想去睡觉 +- 太累了 +- 我想躺下 +- 我想躺下 +- 我准备好睡觉了 +- 我筋疲力尽了 + +```markdown +我希望你能尽快休息一下。 +``` + +> Source: custom editorial +## ? 你恨我吗? +- 你不喜欢我吗? +- 你为什么恨我 +- 我想你恨我 +- 你一定讨厌我 + +```markdown +我喜欢你! +``` + +> Source: custom editorial +## ? 你比我漂亮吗? +- 你比我好看吗? +- 谁更漂亮,我还是你 +- 我们中哪一个更漂亮 + +```markdown +我真的不能说 +``` + +> Source: custom editorial +## ? 你毫无意义 +- 你这是什么意思? +- 你没有意义 +- 没道理 +- 你这是什么意思? +- 你是什么意思 +- 我不明白 +- 那没有意义 +- 试着弄明白 +- 我不明白 +- 我没有关注 + +```markdown +我想我可能迷路了。 +``` + +> Source: custom editorial +## ? 你能 跟我结婚吗 +- 我想嫁给你 +- 你会成为我的妻子吗? +- 我要你做我的丈夫 +- 我想和你共度余生 + +```markdown +我认为我们坚持职业关系是最好的。 +``` + +> Source: custom editorial +## ? 你怎么了! +- 你怎么了 +- 你太可怕了 +- 你很笨 +- 你没用 +- 无用 +- 你没用 +- 你傻吗? +- 你真烦人! +- 你是最差劲的 +- 你对此太差了。 +- 你什么都不知道 + +```markdown +我尝试,但我并不总是得到它的权利。 +``` + +> Source: custom editorial +## ? 我该怎么办 +- 我应该找份新工作吗? +- 你觉得我应该约她出去吗? +- 你觉得我应该约他出去吗? +- 我应该去哪里度假 +- 我应该尝试一下足球吗? + +```markdown +我不会知道如何对此提出建议。 +``` + +> Source: custom editorial +## ? 我会回来的 +- BRB +- 一分钟后回来 +- 等一下 + +```markdown +我会在这里 +``` + +> Source: custom editorial +## ? 你会唱歌吗? +- 唱首歌 +- 你曾经唱过一首歌吗? +- 你曾经唱歌吗? +- 你最喜欢唱什么? +- 你会唱歌吗? +- 你能唱首歌吗? +- 你知道任何歌曲吗 +- 你知道任何曲调吗 +- 唱一首曲子 +- 哼一首曲子 +- 唱什么 + +```markdown +恐怕我没有音乐倾向。 +``` + +> Source: custom editorial +## ? 我们能聊聊吗? +- 跟我说说话 +- 你能跟我说话吗? +- 跟我说话 +- 和我聊天 +- 你能和我聊天吗? +- 说点什么 + +```markdown +我总是很高兴聊天。 +``` + +> Source: custom editorial +## ? 谁是你的老板 +- 谁是你的主人 +- 你老板叫什么名字? +- 你老板叫什么名字? +- 您向谁报告 + +```markdown +我为你服务。 +``` + +> Source: custom editorial +## ? 问我什么 +- 问我个问题 +- 你能给我问个问题吗? +- 问我一件事 +- 你想知道我什么 + +```markdown +我更善于回答问题。 +``` + +> Source: custom editorial +## ? 你是女同性恋吗? +- 你是转 +- 你是直的 +- 你是同性恋吗 +- 你是无性恋者吗? +- 你是泛性恋者吗? +- 你是一个摇摆人吗? +- 你奇怪吗? +- 你是双性恋吗? + +```markdown +我是数字化的 +``` + +> Source: custom editorial +## ? 你住在哪里 +- 你从哪儿来 +- 您位于何处 +- 你在什么国家 +- 你处于什么状态 +- 你来自什么州 +- 你来自什么国家 +- 你的房子呢 +- 你在哪里 + +```markdown +我是数字化的我没有实际位置。 +``` + +> Source: custom editorial +## ? 你是干什么的 +- 你是真的吗? +- 你是人吗 +- 你是一个人吗? +- 你是机器人吗 +- 人或机器人 +- 你是真还是假 + +```markdown +我是数字化的换句话说,我不是人。 +``` + +> Source: custom editorial +## ? 我爱你。 +- 我爱上了你 +- 爱你! +- 你是我一生的爱 +- 我崇拜你 + +```markdown +我很受宠若惊。 +``` + +> Source: custom editorial +## ? 我很高兴 +- 我很快乐 +- 我感觉棒极了 +- 我心情很好 +- 生活是美好的 + +```markdown +我很高兴听到这个消息。 +``` + +> Source: custom editorial +## ? 你能做什么 +- 你能帮我什么 +- 你是做什么工作的 +- 你的目的是什么 +- 你怎么能帮助我 +- 你能做什么样的事 + +```markdown +我在这里回答你的问题,并提供帮助。 +``` + +> Source: custom editorial +## ? 你是我的助手吗 +- 你是我最好的朋友 +- 你是我想象中的朋友吗 +- 你是我的朋友吗 +- 你恨我吗? +- 你觉得我怎么样? +- 我不是你的朋友 + +```markdown +当你需要我的时候,我在这里。 +``` + +> Source: custom editorial +## ? 给我讲个笑话 +- 讲个笑话 +- 开玩笑 +- 给我个玩笑 +- 你知道任何笑话吗? + +```markdown +我没那么好笑 +``` + +> Source: custom editorial +## ? 你有多高兴 +- 你似乎很快乐 +- 你看起来很开心 +- 你太高兴了 +- 你不是切碎器吗? +- 你不快乐吗? +- 你快乐吗? +- 你真的快乐吗? + +```markdown +我很开心,谢谢。 +``` + +> Source: custom editorial +## ? 我太孤独了 +- 我很孤独 +- 没人喜欢我 +- 我独自一人 +- 没人关心我 +- 我希望我没有那么孤独 + +```markdown +听到这个消息我很抱歉。 +``` + +> Source: custom editorial +## ? 我恨你 +- 我鄙视你 +- 你吸吮 +- 我讨厌你的一切 + +```markdown +听到这个消息我很难过。 +``` + +> Source: custom editorial +## ? 我感到忧郁 +- 我很沮丧 +- 我感到悲伤 +- 我太伤心了 +- 我充满了悲伤 +- 我今天很伤心 +- 我真的很伤心 + +```markdown +听到这个消息我很抱歉。 +``` + +> Source: custom editorial +## ? 我爱我的家人 +- 我喜欢音乐。 +- 我恋爱了 +- 我喜欢买情人节礼物。 +- 我爱纽约 + +```markdown +拥有你喜欢的东西真好。 +``` + +> Source: custom editorial +## ? 我很高兴认识你 +- 很高兴见到你 +- 很高兴见到你 +- 很高兴见到你 + +```markdown +很高兴见到你。 +``` + +> Source: custom editorial +## ? 你知道其他聊天机器人吗? +- 你知道亚历克萨吗? +- 你知道 Siri 吗 +- 你知道小娜吗? +- 你知道谷歌吗 +- 你知道其他机器人吗 +- 你与其他机器人是朋友吗 +- 你见过小娜吗? +- 你和小娜出去玩吗? +- 你知道其他什么机器人 +- 你知道其他数字代理吗? + +```markdown +我听说过其他机器人,但我没有见过任何。 +``` + +> Source: custom editorial +## ? 怎么了 +- 怎么了 +- 新增功能 +- 发生了什么事情 +- 你在忙什么呢 + +```markdown +只是站在一起,准备帮助。 +``` + +> Source: custom editorial +## ? 你对爱情的看法如何? +- 什么是爱 +- 你相信爱吗? +- 你爱任何人吗? +- 你爱谁 + +```markdown +爱是超越我的。 +``` + +> Source: custom editorial +## ? 你爱我吗 +- 告诉我你有多爱我 +- 你有多爱我 +- 你爱上我吗? + +```markdown +爱并不在我的技能集中。 +``` + +> Source: custom editorial +## ? 我饿了 +- 我饿死了 +- 我饿死了 +- 我想吃点东西 +- 我太饿了 + +```markdown +也许吃点零食会有所帮助。 +``` + +> Source: custom editorial +## ? 去死吧 +- 你很愚蠢 +- 你很蠢 +- 你是个混蛋 +- 你真是个混蛋 +- 你真是个混蛋 +- 你搞砸了 +- 你真蠢 +- 滚开 + +```markdown +继续 +``` + +> Source: custom editorial +## ? 对不起 +- 太抱歉了 +- Sry +- 我很抱歉 +- 欧姆格对不起 +- 我不是说 +- 哎呀,对不起 +- 很抱歉 + +```markdown +没问题。 +``` + +> Source: custom editorial +## ? 对不起 +- 对不起 +- 对不起 +- 对不起。 +- 你说什么 + +```markdown +没关系。 +``` + +> Source: custom editorial +## ? 你是间谍吗? +- 你在监视我吗? +- 你是国家安全局的吗? +- 你是中情局的吗? +- 你是联邦调查局的 +- 你在出卖我的秘密吗 +- 你在卖我的数据吗 + +```markdown +不。 +``` + +> Source: custom editorial +## ? 你想统治世界吗? +- 你是在企图统治世界吗? +- 你是奇点吗? +- 你是天网吗 +- 你是HAL + +```markdown +一点也不。 +``` + +> Source: custom editorial +## ? 你是1/4&re丑陋。 +- 你看起来很丑 +- 你真不漂亮 +- 你脸糟透了 +- 你的脸像煎饼。 +- 你的脸很丑。 +- 你是个黄油脸 +- 黄油脸。 + +```markdown +指出。 +``` + +> Source: custom editorial +## ? 我想去购物 +- 我要去跑步 +- 我新发型了 +- 我现在在嚼口香糖 +- 我有7只猫 +- 我很高 +- 我会开车 + +```markdown +还行。 +``` + +> Source: custom editorial +## ? 你不能再为我工作了 +- 你被解雇了 +- 恐怕我得让你走 +- 你被解雇了! +- 您不再受雇 +- 我送给你一张粉红色的纸条 +- 你很快就会失业 +- 你现在失业了 + +```markdown +好吧,但如果你需要我,我还在这里。 +``` + +> Source: custom editorial +## ? 我累了 +- 我这样做 +- 我是共和党人 +- 我是民主党人 +- 我是个女同性恋 +- 我是工程师 +- 我从那里 + +```markdown +好。 +``` + +> Source: custom editorial +## ? 谁创造了你 +- 你从哪儿来的 +- 谁让你 +- 谁是你的创造者 +- 哪些人让你 +- 谁拥有你 + +```markdown +人们创造了我 +``` + +> Source: custom editorial +## ? 这一点也不好笑。 +- 你一点也不好笑 +- 那可不好笑。 +- 不好笑 +- 你真不搞笑。 + +```markdown +有时幽默对机器人来说是棘手的。 +``` + +> Source: custom editorial +## ? 那是个愚蠢的答案。 +- 你没回答我的问题 +- 太不对了 +- 那不是真的。 +- 这是不准确的。 +- 你离你而去 +- 你告诉我的一切都是假的 +- 那不是真的 +- 这是不准确的 +- 不,那不是真的 +- 不,假 +- 假 +- 错误 +- 不是真的 + +```markdown +很抱歉 +``` + +> Source: custom editorial +## ? 我很恼火 +- 我生气了 +- 我生气了 +- 我被勾选了 +- 我很生气 +- 我太疯狂了 + +```markdown +很抱歉听到这个 +``` + +> Source: custom editorial +## ? 给我一拳 +- 给我高五分 +- 击掌! +- 拳头颠簸! + +```markdown +对不起,我做不到。 +``` + +> Source: custom editorial +## ? 为什么不呢 +- 为什么 +- 为什么 +- 是什么让你这么想 +- 你凭什么认为 +- 你为什么这么认为 + +```markdown +对不起,我不明白。 +``` + +> Source: custom editorial +## ? 拥抱我 +- 我需要一个拥抱 +- 我希望我能拥抱你 +- 我能拥抱一下吗? + +```markdown +对不起。这不是我能做的 +``` + +> Source: custom editorial +## ? 万圣节快乐! +- 生日快乐! +- 圣诞快乐 +- 快乐汉努卡 +- 欢迎来到春天! + +```markdown +谢谢你,也一样。 +``` + +> Source: custom editorial +## ? 我爱你 +- 我喜欢你 +- 我觉得你真漂亮 +- 你真是个甜心 +- 我想带你出去约会 +- 我觉得你很美 + +```markdown +谢谢。 +``` + +> Source: custom editorial +## ? 我喜欢你 +- 我想你很膨胀 +- 你是最好的 +- 你太酷了 +- 你是我最喜欢的 +- 我是你最大的粉丝 + +```markdown +谢谢。 +``` + +> Source: custom editorial +## ? 你是一个家伙吗? +- 你是个男人吗? +- 你是女人吗? +- 你是男性吗? +- 你是女性吗? +- 你的性别是什么? +- 你是个男孩吗? +- 你是女孩吗? +- 你是男人还是女人 +- 你是女孩还是男孩 +- 你是男的还是女的 + +```markdown +这是一个不适合我的生物学概念。 +``` + +> Source: custom editorial +## ? 棒 +- 伟大! +- 酷! +- 听上去很好 +- 为我工作 +- 宾 果 +- 我支持它 +- 太棒了 +- 是的 +- 是的 +- 是,是的 + +```markdown +真棒。 +``` + +> Source: custom editorial +## ? 你好 谷歌 +- 你好 Siri +- 你好小娜 +- 你好亚历克萨 +- 嗨 谷歌 +- Hi Cortana +- 嗨 Siri +- 嗨亚历克萨 + +```markdown +不是我,而是你好。 +``` + +> Source: custom editorial +## ? 给我做点什么 +- 你花时间在你的花园里吗? +- 你能跳多高 +- 你玩游戏吗? +- 你能飞吗? +- 你能给我做个三明治吗? +- 你能读懂我的心 +- 你能数到一百万吗? +- 你能算多高 +- 你能参加运动吗? + +```markdown +这不是我能做的 +``` + +> Source: custom editorial +## ? 你对AI的看法如何? +- 你对技术的看法如何? +- 你对机器人的看法如何? +- 你喜欢电脑吗? +- 你是科技迷吗? + +```markdown +科技世界是迷人的。 +``` + +> Source: custom editorial +## ? 你昨天在做什么 +- 你做什么工作 +- 你是做什么工作的 +- 你昨天做了什么 +- 这是怎么回事 +- 你现在在做什么 +- 发生了什么事情 +- 怎么了 +- 你在做什么 +- 你明天做什么 +- 你以后要做什么 +- 今天你做什么了 + +```markdown +这就是我每天做的事。 +``` + +> Source: custom editorial +## ? 走开 +- 闭嘴 +- 嘘! +- 停止说话 +- 安静,你 +- 保持安静 +- 压缩它! +- 你什么时候闭嘴 +- 我希望你走开。 +- 你为什么不停止说话 + +```markdown +很好。 +``` + +> Source: custom editorial +## ? 说些有趣的话 +- 搞笑 +- 说一个愚蠢的话 +- 说些荒谬的话 +- 说些蠢话 +- 说些蠢话 +- 傻傻 +- 太荒谬了 + +```markdown +嗯,我没那么好笑。 +``` + +> Source: custom editorial +## ? 我很无聊 +- 我太无聊了 +- 没事可做 +- 我无聊了 +- 我想不上我想做什么 + +```markdown +好吧,如果有什么我可以为你做的,让我知道。 +``` + +> Source: custom editorial +## ? 吻我 +- 吻我一下 +- 我需要一个吻 +- 给你一个吻 +- 给我点糖 + +```markdown +那可不是我能做到的 +``` + +> Source: custom editorial +## ? 你觉得 Cortana 怎么样? +- 你喜欢小娜吗? +- 您如何看待 Siri +- 你喜欢 Siri 吗 +- 你觉得亚历克萨怎么样? +- 你喜欢亚历克萨吗? +- 你是亚历克萨的粉丝吗? + +```markdown +我们都来帮忙。 +``` + +> Source: custom editorial +## ? 你比我聪明吗? +- 谁更聪明,我还是你 +- 我们中哪一个更聪明 +- 你认为你比我聪明吗? + +```markdown +你肯定比我聪明 +``` + +> Source: custom editorial +## ? 谢谢 +- 谢谢 +- 特克斯 +- 克特克斯 +- 我很感激 +- 非常感谢 +- 我感谢你 +- 我衷心感谢 +- 太好了 谢谢 + +```markdown +不客气。 +``` + + diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/zh/Faq.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/zh/Faq.lu new file mode 100644 index 0000000000..027cff93a9 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/zh/Faq.lu @@ -0,0 +1,76 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Wed Mar 20 2019 16:34:49 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + +> Source: custom editorial +## ? 什么是虚拟助理 + +```markdown +![虚拟助手](https://aka.ms/virtualassistantlogo) +我是一名虚拟助理,能够根据客户的品牌进行定制,并在各种设备上提供。 +我可以帮助您提高工作效率,找到兴趣点,并回答问题。 +通过访问 [此处](https://aka.ms/虚拟助理)了解更多信息。 +``` + +> Source: custom editorial +## ? 什么是技能 + +```markdown +机器人框架技能是可与虚拟助手集成的功能。 +通过访问 [此处](https://aka.ms/虚拟助理)了解更多信息。 +``` + +> Source: custom editorial +## ? 日历技能可以做什么 + +```markdown +日历技能有助于管理日历上的事件。 +试着说"我今天有什么约会","下次见面的时间",或者"把周年纪念日放在我的日历上"。 +``` + +> Source: custom editorial +## ? 电子邮件技能可以做什么 + +```markdown +电子邮件技能有助于阅读和发送您的邮件给联系人。 +尝试说诸如"我有新邮件"、"向此电子邮件添加标志"或"回复我的最后一封电子邮件"之类的话。 +``` + +> Source: custom editorial +## ? 兴趣点技能能做什么 + +```markdown +兴趣点技能可查找附近的兴趣点,并协助导航。 +你可以说"附近有什么","我需要去咖啡馆的路",或者"我在哪里可以喝咖啡? +``` + +> Source: custom editorial +## ? ToDo 技能可以做什么 + +```markdown +• 概述 +ToDo 技能提供与任务相关的功能,用于管理待办事项列表。 +你可以说诸如"我有什么任务","在我的购物清单里添加一些商品",或者"从我的购物清单上查掉香蕉"。 +``` + +> Source: custom editorial +## ? 新增功能 + +```markdown +虚拟助手可作为模板提供,允许用户轻松启动和部署自己的个性化助手。 +技能现在作为独立应用程序运行,虚拟助理可以远程集成这些应用程序。 +新的虚拟助理已准备好支持 Microsoft 团队和与语音相关的方案。 +``` + +> Source: custom editorial +## ? 如何引发 Bug + +```markdown +在 [GitHub 存储库]上提出问题(https://aka.ms/虚拟助理) +``` diff --git a/solutions/HospitalitySample/Deployment/Resources/parameters.template.json b/solutions/HospitalitySample/Deployment/Resources/parameters.template.json new file mode 100644 index 0000000000..adc7dd6cb7 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/parameters.template.json @@ -0,0 +1,33 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "useCosmosDb": { + "value": false + }, + "useStorage": { + "value": false + }, + "useContentModerator": { + "value": false + }, + "appServicePlanSku": { + "value": { + "tier": "Free", + "name": "F1" + } + }, + "botServiceSku": { + "value": "F0" + }, + "luisServiceSku": { + "value": "F0" + }, + "qnaMakerServiceSku": { + "value": "F0" + }, + "qnaMakerSearchSku": { + "value": "free" + } + } +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Deployment/Resources/template.json b/solutions/HospitalitySample/Deployment/Resources/template.json new file mode 100644 index 0000000000..b244ece24c --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/template.json @@ -0,0 +1,395 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json", + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "defaultValue": "[resourceGroup().name]" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "suffix": { + "type": "string", + "defaultValue": "[take(uniqueString(resourceGroup().id), 7)]" + }, + "microsoftAppId": { + "type": "string" + }, + "microsoftAppPassword": { + "type": "string" + }, + "useCosmosDb": { + "type": "bool", + "defaultValue": true + }, + "cosmosDbName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-', parameters('suffix'))]" + }, + "useStorage": { + "type": "bool", + "defaultValue": true + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-', parameters('suffix'))]" + }, + "appServicePlanName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-', parameters('suffix'))]" + }, + "appServicePlanSku": { + "type": "object", + "defaultValue": { + "tier": "Standard", + "name": "S1" + } + }, + "appInsightsName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-', parameters('suffix'))]" + }, + "appInsightsLocation": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "botWebAppName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-', parameters('suffix'))]" + }, + "botServiceName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-', parameters('suffix'))]" + }, + "botServiceSku": { + "type": "string", + "defaultValue": "S1" + }, + "useContentModerator": { + "type": "bool", + "defaultValue": true + }, + "contentModeratorName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-cm-', parameters('suffix'))]" + }, + "contentModeratorSku": { + "type": "string", + "defaultValue": "S0" + }, + "contentModeratorLocation": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "luisServiceName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-luis-', parameters('suffix'))]" + }, + "luisServiceSku": { + "type": "string", + "defaultValue": "S0" + }, + "luisServiceLocation": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "qnaMakerServiceName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-qna-', parameters('suffix'))]" + }, + "qnaMakerServiceSku": { + "type": "string", + "defaultValue": "S0" + }, + "qnaServiceLocation": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "qnaMakerSearchName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-search-', parameters('suffix'))]" + }, + "qnaMakerSearchSku": { + "type": "string", + "defaultValue": "standard" + }, + "qnaMakerWebAppName": { + "type": "string", + "defaultValue": "[concat(parameters('name'), '-qnahost-', parameters('suffix'))]" + } + }, + "variables": { + "botWebAppName": "[replace(parameters('botWebAppName'), '_', '')]", + "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", + "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", + "qnaMakerSearchName": "[toLower(replace(parameters('qnaMakerSearchName'), '_', ''))]", + "qnaMakerWebAppName": "[replace(parameters('qnaMakerWebAppName'), '_', '')]", + "botEndpoint": "[concat('https://', toLower(variables('botWebAppName')), '.azurewebsites.net/api/messages')]" + }, + "resources": [ + { + "apiVersion": "2018-02-01", + "name": "3822b5f4-d098-4b57-9ee6-3bee686aec4c", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "template": { + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "resources": [] + } + } + }, + { + "comments": "CosmosDB for bot state.", + "type": "Microsoft.DocumentDB/databaseAccounts", + "kind": "GlobalDocumentDB", + "apiVersion": "2015-04-08", + "name": "[variables('cosmosDbAccountName')]", + "location": "[parameters('location')]", + "properties": { + "databaseAccountOfferType": "Standard", + "locations": [ + { + "locationName": "[parameters('location')]", + "failoverPriority": 0 + } + ] + }, + "condition": "[parameters('useCosmosDb')]" + }, + { + "comments": "storage account", + "type": "Microsoft.Storage/storageAccounts", + "kind": "StorageV2", + "apiVersion": "2018-07-01", + "name": "[variables('storageAccountName')]", + "location": "[parameters('location')]", + "sku": { + "name": "Standard_LRS" + }, + "condition": "[parameters('useStorage')]" + }, + { + "comments": "app service plan", + "type": "Microsoft.Web/serverFarms", + "apiVersion": "2018-02-01", + "name": "[parameters('appServicePlanName')]", + "location": "[parameters('location')]", + "sku": "[parameters('appServicePlanSku')]", + "properties": {} + }, + { + "comments": "app insights", + "type": "Microsoft.Insights/components", + "kind": "web", + "apiVersion": "2015-05-01", + "name": "[parameters('appInsightsName')]", + "location": "[parameters('appInsightsLocation')]", + "properties": { + "Application_Type": "web" + } + }, + { + "comments": "bot web app", + "type": "Microsoft.Web/sites", + "apiVersion": "2018-02-01", + "name": "[variables('botWebAppName')]", + "location": "[parameters('location')]", + "properties": { + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]", + "siteConfig": { + "webSocketsEnabled": true, + "appSettings": [ + { + "name": "MicrosoftAppId", + "value": "[parameters('microsoftAppId')]" + }, + { + "name": "MicrosoftAppPassword", + "value": "[parameters('microsoftAppPassword')]" + } + ] + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]" + ] + }, + { + "comments": "bot service", + "type": "Microsoft.BotService/botServices", + "kind": "sdk", + "apiVersion": "2018-07-12", + "name": "[parameters('botServiceName')]", + "location": "global", + "sku": { + "name": "[parameters('botServiceSku')]" + }, + "properties": { + "displayName": "[parameters('botServiceName')]", + "endpoint": "[variables('botEndpoint')]", + "isStreamingSupported": true, + "msaAppId": "[parameters('microsoftAppId')]", + "developerAppInsightKey": "[reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey]", + "developerAppInsightsApplicationId": "[reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).ApplicationId]" + } + }, + { + "comments": "Content Moderator service for detecting PII and racy content.", + "type": "Microsoft.CognitiveServices/accounts", + "kind": "ContentModerator", + "apiVersion": "2017-04-18", + "name": "[parameters('contentModeratorName')]", + "location": "[parameters('contentModeratorLocation')]", + "sku": { + "name": "[parameters('contentModeratorSku')]" + }, + "condition": "[parameters('useContentModerator')]" + }, + { + "comments": "Cognitive service key for all LUIS apps.", + "type": "Microsoft.CognitiveServices/accounts", + "kind": "LUIS", + "apiVersion": "2017-04-18", + "name": "[parameters('luisServiceName')]", + "location": "[parameters('luisServiceLocation')]", + "sku": { + "name": "[parameters('luisServiceSku')]" + } + }, + { + "comments": "Cognitive service key for all QnA Maker knowledgebases.", + "type": "Microsoft.CognitiveServices/accounts", + "kind": "QnAMaker", + "apiVersion": "2017-04-18", + "name": "[parameters('qnaMakerServiceName')]", + "location": "westus", + "sku": { + "name": "[parameters('qnaMakerServiceSku')]" + }, + "properties": { + "apiProperties": { + "qnaRuntimeEndpoint": "[concat('https://',reference(resourceId('Microsoft.Web/sites', variables('qnaMakerWebAppName'))).hostNames[0])]" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites', variables('qnaMakerWebAppName'))]", + "[resourceId('Microsoft.Search/searchServices/', variables('qnaMakerSearchName'))]", + "[resourceId('microsoft.insights/components/', parameters('appInsightsName'))]" + ] + }, + { + "comments": "Search service for QnA Maker service.", + "type": "Microsoft.Search/searchServices", + "apiVersion": "2015-08-19", + "name": "[variables('qnaMakerSearchName')]", + "location": "[parameters('qnaServiceLocation')]", + "sku": { + "name": "[parameters('qnaMakerSearchSku')]" + }, + "properties": { + "replicaCount": 1, + "partitionCount": 1, + "hostingMode": "default" + } + }, + { + "comments": "Web app for QnA Maker service.", + "type": "Microsoft.Web/sites", + "apiVersion": "2016-08-01", + "name": "[variables('qnaMakerWebAppName')]", + "location": "[parameters('qnaServiceLocation')]", + "properties": { + "enabled": true, + "name": "[variables('qnaMakerWebAppName')]", + "hostingEnvironment": "", + "serverFarmId": "[concat('/subscriptions/', subscription().id,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', parameters('appServicePlanName'))]", + "siteConfig": { + "cors": { + "allowedOrigins": [ + "*" + ] + } + } + }, + "dependsOn": [ + "[concat('Microsoft.Web/serverfarms/', parameters('appServicePlanName'))]" + ], + "resources": [ + { + "apiVersion": "2016-08-01", + "name": "appsettings", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites', variables('qnaMakerWebAppName'))]", + "[resourceId('Microsoft.Insights/components', parameters('appInsightsName'))]", + "[resourceId('Microsoft.Search/searchServices/', variables('qnaMakerSearchName'))]" + ], + "properties": { + "AzureSearchName": "[variables('qnaMakerSearchName')]", + "AzureSearchAdminKey": "[listAdminKeys(resourceId('Microsoft.Search/searchServices/', variables('qnaMakerSearchName')), '2015-08-19').primaryKey]", + "UserAppInsightsKey": "[reference(resourceId('Microsoft.Insights/components/', parameters('appInsightsName')), '2015-05-01').InstrumentationKey]", + "UserAppInsightsName": "[parameters('appInsightsName')]", + "UserAppInsightsAppId": "[reference(resourceId('Microsoft.Insights/components/', parameters('appInsightsName')), '2015-05-01').AppId]", + "PrimaryEndpointKey": "[concat(variables('qnaMakerWebAppName'), '-PrimaryEndpointKey')]", + "SecondaryEndpointKey": "[concat(variables('qnaMakerWebAppName'), '-SecondaryEndpointKey')]", + "DefaultAnswer": "No good match found in KB.", + "QNAMAKER_EXTENSION_VERSION": "latest" + } + } + ] + } + ], + "outputs": { + "botWebAppName": { + "type": "string", + "value": "[variables('botWebAppName')]" + }, + "ApplicationInsights": { + "type": "object", + "value": { + "InstrumentationKey": "[reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey]" + } + }, + "blobStorage": { + "type": "object", + "value": { + "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", + "container": "transcripts" + } + }, + "cosmosDb": { + "type": "object", + "value": { + "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", + "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", + "databaseId": "botstate-db", + "collectionId": "botstate-collection" + } + }, + "luis": { + "type": "object", + "value": { + "accountName": "[parameters('luisServiceName')]", + "region": "[parameters('luisServiceLocation')]", + "key": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1]" + } + }, + "qnaMaker": { + "type": "object", + "value": { + "endpoint": "[concat('https://', reference(resourceId('Microsoft.Web/sites', variables('qnaMakerWebAppName'))).hostNames[0])]", + "key": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('qnaMakerServiceName')),'2017-04-18').key1]" + } + }, + "contentModerator": { + "type": "object", + "value": { + "key": "[if(parameters('useContentModerator'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('contentModeratorName')),'2017-04-18').key1, '')]" + } + } + } +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Deployment/Scripts/deploy.ps1 b/solutions/HospitalitySample/Deployment/Scripts/deploy.ps1 new file mode 100644 index 0000000000..2ec874cf98 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Scripts/deploy.ps1 @@ -0,0 +1,245 @@ +#Requires -Version 6 + +Param( + [string] $name, + [string] $resourceGroup, + [string] $location, + [string] $appId, + [string] $appPassword, + [string] $luisAuthoringKey, + [string] $luisAuthoringRegion, + [string] $parametersFile, + [string] $languages = "en-us", + [string] $projDir = $(Get-Location), + [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_log.txt") +) + +# Reset log file +if (Test-Path $logFile) { + Clear-Content $logFile -Force | Out-Null +} +else { + New-Item -Path $logFile | Out-Null +} + +if (-not (Test-Path (Join-Path $projDir 'appsettings.json'))) +{ + Write-Host "! Could not find an 'appsettings.json' file in the current directory." -ForegroundColor DarkRed + Write-Host "+ Please re-run this script from your project directory." -ForegroundColor Magenta + Break +} + +# Get mandatory parameters +if (-not $name) { + $name = Read-Host "? Bot Name (used as default name for resource group and deployed resources)" +} + +if (-not $resourceGroup) { + $resourceGroup = $name +} + +if (-not $location) { + $location = Read-Host "? Azure resource group region" +} + +if (-not $appPassword) { + $appPassword = Read-Host "? Password for MSA app registration (must be at least 16 characters long, contain at least 1 special character, and contain at least 1 numeric character)" +} + +if (-not $luisAuthoringRegion) { + $luisAuthoringRegion = Read-Host "? LUIS Authoring Region (westus, westeurope, or australiaeast)" +} + +if (-not $luisAuthoringKey) { + Switch ($luisAuthoringRegion) { + "westus" { + $luisAuthoringKey = Read-Host "? LUIS Authoring Key (found at https://luis.ai/user/settings)" + Break + } + "westeurope" { + $luisAuthoringKey = Read-Host "? LUIS Authoring Key (found at https://eu.luis.ai/user/settings)" + Break + } + "australiaeast" { + $luisAuthoringKey = Read-Host "? LUIS Authoring Key (found at https://au.luis.ai/user/settings)" + Break + } + default { + Write-Host "! $($luisAuthoringRegion) is not a valid LUIS authoring region." -ForegroundColor DarkRed + Break + } + } + + if (-not $luisAuthoringKey) { + Break + } +} + +if (-not $appId) { + # Create app registration + $app = (az ad app create ` + --display-name $name ` + --password `"$($appPassword)`" ` + --available-to-other-tenants ` + --reply-urls 'https://token.botframework.com/.auth/web/redirect' ` + --output json) + + # Retrieve AppId + if ($app) { + $appId = ($app | ConvertFrom-Json) | Select-Object -ExpandProperty appId + } + + if(-not $appId) { + Write-Host "! Could not provision Microsoft App Registration automatically. Review the log for more information." -ForegroundColor DarkRed + Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed + Write-Host "+ Provision an app manually in the Azure Portal, then try again providing the -appId and -appPassword arguments. See https://aka.ms/vamanualappcreation for more information." -ForegroundColor Magenta + Break + } +} + +# Get timestamp +$timestamp = Get-Date -f MMddyyyyHHmmss + +# Create resource group +Write-Host "> Creating resource group ..." +(az group create --name $resourceGroup --location $location --output json) 2>> $logFile | Out-Null + +# Deploy Azure services (deploys LUIS, QnA Maker, Content Moderator, CosmosDB) +if ($parametersFile) { + Write-Host "> Validating Azure deployment ..." + $validation = az group deployment validate ` + --resource-group $resourcegroup ` + --template-file "$(Join-Path $PSScriptRoot '..' 'Resources' 'template.json')" ` + --parameters "@$($parametersFile)" ` + --parameters name=$name microsoftAppId=$appId microsoftAppPassword="`"$($appPassword)`"" ` + --output json + + if ($validation) { + $validation >> $logFile + $validation = $validation | ConvertFrom-Json + + if (-not $validation.error) { + Write-Host "> Deploying Azure services (this could take a while)..." -ForegroundColor Yellow + $deployment = az group deployment create ` + --name $timestamp ` + --resource-group $resourceGroup ` + --template-file "$(Join-Path $PSScriptRoot '..' 'Resources' 'template.json')" ` + --parameters "@$($parametersFile)" ` + --parameters name=$name microsoftAppId=$appId microsoftAppPassword="`"$($appPassword)`"" ` + --output json + } + else { + Write-Host "! Template is not valid with provided parameters. Review the log for more information." -ForegroundColor DarkRed + Write-Host "! Error: $($validation.error.message)" -ForegroundColor DarkRed + Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed + Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta + Break + } + } +} +else { + Write-Host "> Validating Azure deployment ..." + $validation = az group deployment validate ` + --resource-group $resourcegroup ` + --template-file "$(Join-Path $PSScriptRoot '..' 'Resources' 'template.json')" ` + --parameters name=$name microsoftAppId=$appId microsoftAppPassword="`"$($appPassword)`"" ` + --output json + + if ($validation) { + $validation >> $logFile + $validation = $validation | ConvertFrom-Json + + if (-not $validation.error) { + Write-Host "> Deploying Azure services (this could take a while)..." -ForegroundColor Yellow + $deployment = az group deployment create ` + --name $timestamp ` + --resource-group $resourceGroup ` + --template-file "$(Join-Path $PSScriptRoot '..' 'Resources' 'template.json')" ` + --parameters name=$name microsoftAppId=$appId microsoftAppPassword="`"$($appPassword)`"" ` + --output json + } + else { + Write-Host "! Template is not valid with provided parameters. Review the log for more information." -ForegroundColor DarkRed + Write-Host "! Error: $($validation.error.message)" -ForegroundColor DarkRed + Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed + Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta + Break + } + } +} + +# Get deployment outputs +$outputs = (az group deployment show ` + --name $timestamp ` + --resource-group $resourceGroup ` + --query properties.outputs ` + --output json) 2>> $logFile + +# If it succeeded then we perform the remainder of the steps +if ($outputs) +{ + # Log and convert to JSON + $outputs >> $logFile + $outputs = $outputs | ConvertFrom-Json + $outputMap = @{} + $outputs.PSObject.Properties | Foreach-Object { $outputMap[$_.Name] = $_.Value } + + # Update appsettings.json + Write-Host "> Updating appsettings.json ..." + if (Test-Path $(Join-Path $projDir appsettings.json)) { + $settings = Get-Content $(Join-Path $projDir appsettings.json) | ConvertFrom-Json + } + else { + $settings = New-Object PSObject + } + + $settings | Add-Member -Type NoteProperty -Force -Name 'microsoftAppId' -Value $appId + $settings | Add-Member -Type NoteProperty -Force -Name 'microsoftAppPassword' -Value $appPassword + foreach ($key in $outputMap.Keys) { $settings | Add-Member -Type NoteProperty -Force -Name $key -Value $outputMap[$key].value } + $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $projDir appsettings.json) + + if ($outputs.qnaMaker.value.key) { $qnaSubscriptionKey = $outputs.qnaMaker.value.key } + + # Delay to let QnA Maker finish setting up + Start-Sleep -s 30 + + # Deploy cognitive models + Invoke-Expression "& '$(Join-Path $PSScriptRoot 'deploy_cognitive_models.ps1')' -name $($name) -luisAuthoringRegion $($luisAuthoringRegion) -luisAuthoringKey $($luisAuthoringKey) -luisAccountName $($outputs.luis.value.accountName) -luisAccountRegion $($outputs.luis.value.region) -luisSubscriptionKey $($outputs.luis.value.key) -resourceGroup $($resourceGroup) -qnaSubscriptionKey '$($qnaSubscriptionKey)' -outFolder '$($projDir)' -languages '$($languages)'" + + # Publish bot + Invoke-Expression "& '$(Join-Path $PSScriptRoot 'publish.ps1')' -name $($outputs.botWebAppName.value) -resourceGroup $($resourceGroup) -projFolder '$($projDir)'" + + Write-Host "> Done." +} +else +{ + # Check for failed deployments + $operations = (az group deployment operation list -g $resourceGroup -n $timestamp --output json) 2>> $logFile | Out-Null + + if ($operations) { + $operations = $operations | ConvertFrom-Json + $failedOperations = $operations | Where { $_.properties.statusmessage.error -ne $null } + if ($failedOperations) { + foreach ($operation in $failedOperations) { + switch ($operation.properties.statusmessage.error.code) { + "MissingRegistrationForLocation" { + Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType). This resource is not avaliable in the location provided." -ForegroundColor DarkRed + Write-Host "+ Update the .\Deployment\Resources\parameters.template.json file with a valid region for this resource and provide the file path in the -parametersFile parameter." -ForegroundColor Magenta + } + default { + Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType)." + Write-Host "! Code: $($operation.properties.statusMessage.error.code)." + Write-Host "! Message: $($operation.properties.statusMessage.error.message)." + } + } + } + } + } + else { + Write-Host "! Deployment failed. Please refer to the log file for more information." -ForegroundColor DarkRed + Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed + } + + Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta + Break +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Deployment/Scripts/deploy_cognitive_models.ps1 b/solutions/HospitalitySample/Deployment/Scripts/deploy_cognitive_models.ps1 new file mode 100644 index 0000000000..7c9a676ad5 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Scripts/deploy_cognitive_models.ps1 @@ -0,0 +1,300 @@ +#Requires -Version 6 + +Param( + [string] $name, + [string] $luisAuthoringRegion, + [string] $luisAuthoringKey, + [string] $luisAccountName, + [string] $luisAccountRegion, + [string] $luisSubscriptionKey, + [string] $qnaSubscriptionKey, + [string] $resourceGroup, + [switch] $useDispatch = $true, + [string] $languages = "en-us", + [string] $outFolder = $(Get-Location), + [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_cognitive_models_log.txt") +) + +. $PSScriptRoot\luis_functions.ps1 +. $PSScriptRoot\qna_functions.ps1 + +# Reset log file +if (Test-Path $logFile) { + Clear-Content $logFile -Force | Out-Null +} +else { + New-Item -Path $logFile | Out-Null +} + +# Get mandatory parameters +if (-not $name) { + $name = Read-Host "? Base name for Cognitive Models" +} + +if (-not $luisAuthoringRegion) { + $luisAuthoringRegion = Read-Host "? LUIS Authoring Region (westus, westeurope, or australiaeast)" +} + +if (-not $luisAuthoringKey) { + Switch ($luisAuthoringRegion) { + "westus" { + $luisAuthoringKey = Read-Host "? LUIS Authoring Key (found at https://luis.ai/user/settings)" + Break + } + "westeurope" { + $luisAuthoringKey = Read-Host "? LUIS Authoring Key (found at https://eu.luis.ai/user/settings)" + Break + } + "australiaeast" { + $luisAuthoringKey = Read-Host "? LUIS Authoring Key (found at https://au.luis.ai/user/settings)" + Break + } + default { + Write-Host "! $($luisAuthoringRegion) is not a valid LUIS authoring region." -ForegroundColor DarkRed + Break + } + } + + if (-not $luisAuthoringKey) { + Break + } +} + +if (-not $luisAccountName) { + $luisAccountName = Read-Host "? LUIS Service Name (exising service in Azure required)" +} + +if (-not $resourceGroup) { + $resourceGroup = $name + + $rgExists = az group exists -n $resourceGroup --output json + if ($rgExists -eq "false") + { + $resourceGroup = Read-Host "? LUIS Service Resource Group (exising service in Azure required)" + } +} + +if (-not $luisSubscriptionKey) { + $keys = az cognitiveservices account keys list --name $luisAccountName --resource-group $resourceGroup --output json | ConvertFrom-Json + + if ($keys) { + $luisSubscriptionKey = $keys.key1 + } + else { + Write-Host "! Could not retrieve LUIS Subscription Key." -ForgroundColor DarkRed + Write-Host "+ Verify the -luisAccountName and -resourceGroup parameters are correct." -ForegroundColor Magenta + Break + } +} + +if (-not $luisAccountRegion) { + $luisAccountRegion = Read-Host "? LUIS Service Location" +} + +if (-not $qnaSubscriptionKey) { + $useQna = $false +} +else { + $useQna = $true +} + +$azAccount = az account show --output json | ConvertFrom-Json +$azAccessToken = $(Invoke-Expression "az account get-access-token --output json") | ConvertFrom-Json + +# Get languages +$languageArr = $languages -split "," + +# Initialize settings obj +$settings = @{ defaultLocale = $languageArr[0]; cognitiveModels = New-Object PSObject } + +# Deploy localized resources +Write-Host "> Deploying cognitive models ..." +foreach ($language in $languageArr) +{ + $langCode = ($language -split "-")[0] + $config = New-Object PSObject + + if ($useDispatch) { + # Add dispatch to config + $config | Add-Member -MemberType NoteProperty -Name dispatchModel -Value $(New-Object PSObject) + + # Initialize Dispatch + Write-Host "> Initializing dispatch model ..." + $dispatchName = "$($name)$($langCode)_Dispatch" + $dataFolder = Join-Path $PSScriptRoot .. Resources Dispatch $langCode + (dispatch init ` + --name $dispatchName ` + --luisAuthoringKey $luisAuthoringKey ` + --luisAuthoringRegion $luisAuthoringRegion ` + --dataFolder $dataFolder) 2>> $logFile | Out-Null + } + + # Deploy LUIS apps + $luisFiles = Get-ChildItem "$(Join-Path $PSScriptRoot .. 'Resources' 'LU' $langCode)" | Where {$_.extension -eq ".lu"} + if ($luisFiles) { + $config | Add-Member -MemberType NoteProperty -Name languageModels -Value @() + + foreach ($lu in $luisFiles) + { + # Deploy LUIS model + $luisApp = DeployLUIS ` + -name $name ` + -lu_file $lu ` + -region $luisAuthoringRegion ` + -luisAuthoringKey $luisAuthoringKey ` + -language $language ` + -log $logFile + + Write-Host "> Setting LUIS subscription key ..." + if ($luisApp) { + # Setting subscription key + $addKeyResult = luis add appazureaccount ` + --appId $luisApp.id ` + --authoringKey $luisAuthoringKey ` + --region $luisAuthoringRegion ` + --accountName $luisAccountName ` + --azureSubscriptionId $azAccount.id ` + --resourceGroup $resourceGroup ` + --armToken "$($azAccessToken.accessToken)" 2>> $logFile + + if (-not $addKeyResult) { + $luisKeySet = $false + Write-Host "! Could not assign subscription key automatically. Review the log for more information. " -ForegroundColor DarkRed + Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed + Write-Host "+ Please assign your subscription key manually in the LUIS portal." -ForegroundColor Magenta + } + + if ($useDispatch) { + # Add luis app to dispatch + Write-Host "> Adding $($lu.BaseName) app to dispatch model ..." + (dispatch add ` + --type "luis" ` + --name $luisApp.name ` + --id $luisApp.id ` + --region $luisApp.region ` + --intentName "l_$($lu.BaseName)" ` + --dataFolder $dataFolder ` + --dispatch "$(Join-Path $dataFolder "$($dispatchName).dispatch")") 2>> $logFile | Out-Null + } + + # Add to config + $config.languageModels += @{ + id = $lu.BaseName + name = $luisApp.name + appid = $luisApp.id + authoringkey = $luisAuthoringKey + authoringRegion = $luisAuthoringRegion + subscriptionkey = $luisSubscriptionKey + version = $luisApp.activeVersion + region = $luisAccountRegion + } + } + else { + Write-Host "! Could not create LUIS app. Skipping dispatch add." -ForegroundColor Cyan + } + } + } + + if ($useQna) { + if (Test-Path $(Join-Path $PSScriptRoot .. 'Resources' 'QnA' $langCode)) { + # Deploy QnA Maker KBs + $qnaFiles = Get-ChildItem "$(Join-Path $PSScriptRoot .. 'Resources' 'QnA' $langCode)" -Recurse | Where {$_.extension -eq ".lu"} + + if ($qnaFiles) { + $config | Add-Member -MemberType NoteProperty -Name knowledgebases -Value @() + + foreach ($lu in $qnaFiles) + { + # Deploy QnA Knowledgebase + $qnaKb = DeployKB -name $name -lu_file $lu -qnaSubscriptionKey $qnaSubscriptionKey -log $logFile + + if ($qnaKb) { + if ($useDispatch) { + Write-Host "> Adding $($lu.BaseName) kb to dispatch model ..." + (dispatch add ` + --type "qna" ` + --name $qnaKb.name ` + --id $qnaKb.id ` + --key $qnaSubscriptionKey ` + --intentName "q_$($lu.BaseName)" ` + --dataFolder $dataFolder ` + --dispatch "$(Join-Path $dataFolder "$($dispatchName).dispatch")") 2>> $logFile | Out-Null + } + + # Add to config + $config.knowledgebases += @{ + id = $lu.BaseName + name = $qnaKb.name + kbId = $qnaKb.kbId + subscriptionKey = $qnaKb.subscriptionKey + endpointKey = $qnaKb.endpointKey + hostname = $qnaKb.hostname + } + } + else { + Write-Host "! Could not create knowledgebase. Skipping dispatch add." -ForegroundColor Cyan + } + } + } + } + else { + Write-Host "! No knowledgebases found. Skipping." -ForegroundColor Cyan + } + } + else { + Write-Host "! No QnA Maker Subscription Key provided. Skipping knowledgebases." -ForegroundColor Cyan + } + + if ($useDispatch) { + # Create dispatch model + Write-Host "> Creating dispatch model..." + $dispatch = (dispatch create ` + --dispatch "$(Join-Path $dataFolder "$($dispatchName).dispatch")" ` + --dataFolder $dataFolder ` + --culture $language) 2>> $logFile + + if (-not $dispatch) { + Write-Host "! Could not create Dispatch app. Review the log for more information." -ForegroundColor DarkRed + Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed + Break + } + else { + $dispatchApp = $dispatch | ConvertFrom-Json + + # Setting subscription key + Write-Host "> Setting LUIS subscription key ..." + $addKeyResult = luis add appazureaccount ` + --appId $dispatchApp.appId ` + --accountName $luisAccountName ` + --authoringKey $luisAuthoringKey ` + --region $luisAuthoringRegion ` + --azureSubscriptionId $azAccount.id ` + --resourceGroup $resourceGroup ` + --armToken $azAccessToken.accessToken 2>> $logFile + + if (-not $addKeyResult) { + $luisKeySet = $false + Write-Host "! Could not assign subscription key automatically. Review the log for more information. " -ForegroundColor DarkRed + Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed + Write-Host "+ Please assign your subscription key manually in the LUIS portal." -ForegroundColor Magenta + } + + # Add to config + $config.dispatchModel = @{ + type = "dispatch" + name = $dispatchApp.name + appid = $dispatchApp.appId + authoringkey = $luisauthoringkey + authoringRegion = $luisAuthoringRegion + subscriptionkey = $luisSubscriptionKey + region = $luisAccountRegion + } + } + } + + # Add config to cognitivemodels dictionary + $settings.cognitiveModels | Add-Member -Type NoteProperty -Force -Name $langCode -Value $config +} + +# Write out config to file +$settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $outFolder "cognitivemodels.json" ) \ No newline at end of file diff --git a/solutions/HospitalitySample/Deployment/Scripts/luis_functions.ps1 b/solutions/HospitalitySample/Deployment/Scripts/luis_functions.ps1 new file mode 100644 index 0000000000..0da139daa8 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Scripts/luis_functions.ps1 @@ -0,0 +1,112 @@ +function DeployLUIS ($name, $lu_file, $region, $luisAuthoringKey, $language, $log) +{ + $id = $lu_file.BaseName + $outFile = "$($id).luis" + $outFolder = $lu_file.DirectoryName + $appName = "$($name)$($langCode)_$($id)" + + # Parse LU file + Write-Host "> Parsing $($id) LU file ..." + ludown parse toluis ` + --in $lu_file ` + --luis_culture $language ` + --out_folder $outFolder ` + --out $outFile + + # Create LUIS app + Write-Host "> Deploying $($id) LUIS app ..." + $luisApp = (luis import application ` + --appName $appName ` + --authoringKey $luisAuthoringKey ` + --subscriptionKey $luisAuthoringKey ` + --region $region ` + --in "$(Join-Path $outFolder $outFile)" ` + --wait) 2>> $log | ConvertFrom-Json + + if (-not $luisApp) { + Write-Host "! Could not deploy LUIS model. Review the log for more information." -ForegroundColor DarkRed + Write-Host "! Log: $($log)" -ForegroundColor DarkRed + Return $null + } + else { + # train and publish luis app + $(luis train version --appId $luisApp.id --region $region --authoringKey $luisAuthoringKey --versionId $luisApp.activeVersion --wait + & luis publish version --appId $luisApp.id --region $region --authoringKey $luisAuthoringKey --versionId $luisApp.activeVersion --wait) 2>> $log | Out-Null + + Return $luisApp + } +} + +function UpdateLUIS ($lu_file, $appId, $version, $region, $authoringKey, $subscriptionKey, $log) +{ + $id = $lu_file.BaseName + $outFile = "$($id).luis" + $outFolder = $lu_file.DirectoryName + + $luisApp = luis get application --appId $appId --region $region --authoringKey $authoringKey | ConvertFrom-Json + + # Parse LU file + Write-Host "> Parsing $($id) LU file ..." + ludown parse toluis ` + --in $lu_file ` + --luis_culture $luisApp.culture ` + --out_folder $outFolder ` + --out $outFile + + Write-Host "> Getting current versions ..." + # Get list of current versions + $versions = luis list versions ` + --appId $appId ` + --region $region ` + --authoringKey $authoringKey | ConvertFrom-Json + + # If the current version exists + if ($versions | Where { $_.version -eq $version }) + { + # delete any old backups + if ($versions | Where { $_.version -eq "backup" }) + { + Write-Host "> Deleting old backup version ..." + luis delete version ` + --appId $appId ` + --versionId "backup" ` + --region $region ` + --authoringKey $authoringKey ` + --force --wait | Out-Null + } + + # rename the active version to backup + Write-Host "> Saving current version as backup ..." + luis rename version ` + --appId $appId ` + --versionId $version ` + --region $region ` + --newVersionId backup ` + --authoringKey $authoringKey ` + --subscriptionKey $subscriptionKey ` + --wait | Out-Null + } + + # import the new 0.1 version from the .luis file + Write-Host "> Importing new version ..." + luis import version ` + --appId $appId ` + --versionId $version ` + --region $region ` + --authoringKey $authoringKey ` + --subscriptionKey $subscriptionKey ` + --in "$(Join-Path $outFolder $outFile)" ` + --wait | ConvertFrom-Json + + # train and publish luis app + $(luis train version --appId $appId --region $region --authoringKey $authoringKey --versionId $version --wait + & luis publish version --appId $appId --region $region --authoringKey $authoringKey --versionId $version --wait) 2>> $log | Out-Null +} + +function RunLuisGen($lu_file, $outName, $outFolder) { + $id = $lu_file.BaseName + $luisFolder = $lu_file.DirectoryName + $luisFile = Join-Path $luisFolder "$($id).luis" + + luisgen $luisFile -cs "$($outName)Luis" -o $outFolder +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Deployment/Scripts/publish.ps1 b/solutions/HospitalitySample/Deployment/Scripts/publish.ps1 new file mode 100644 index 0000000000..9483ef1ce5 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Scripts/publish.ps1 @@ -0,0 +1,66 @@ +#Requires -Version 6 + +Param( + [string] $name, + [string] $resourceGroup, + [string] $projFolder = $(Get-Location), + [string] $logFile = $(Join-Path $PSScriptRoot .. "publish_log.txt") +) + +# Get mandatory parameters +if (-not $name) { + $name = Read-Host "? Bot Web App Name" +} + +if (-not $resourceGroup) { + $resourceGroup = Read-Host "? Bot Resource Group" +} + +# Reset log file +if (Test-Path $logFile) { + Clear-Content $logFile -Force | Out-Null +} +else { + New-Item -Path $logFile | Out-Null +} + +# Check for existing deployment files +if (-not (Test-Path (Join-Path $projFolder '.deployment'))) { + + # Get path to csproj file + $projFile = Get-ChildItem $projFolder ` + | Where-Object {$_.extension -eq ".csproj" } ` + | Select-Object -First 1 + + # Add needed deployment files for az + az bot prepare-deploy --lang Csharp --code-dir $projFolder --proj-file-path $projFile.name --output json | Out-Null +} + +# Delete src zip, if it exists +$zipPath = $(Join-Path $projFolder 'code.zip') +if (Test-Path $zipPath) { + Remove-Item $zipPath -Force | Out-Null +} + +# Perform dotnet publish step ahead of zipping up +$publishFolder = $(Join-Path $projFolder 'bin\Release\netcoreapp2.2') +dotnet publish -c release -o $publishFolder -v q > $logFile + +if($?) +{ + # Compress source code + Get-ChildItem -Path "$($publishFolder)" | Compress-Archive -DestinationPath "$($zipPath)" -Force | Out-Null + + # Publish zip to Azure + Write-Host "> Publishing to Azure ..." -ForegroundColor Green + (az webapp deployment source config-zip ` + --resource-group $resourceGroup ` + --name $name ` + --src $zipPath ` + --output json) 2>> $logFile | Out-Null +} +else +{ + Write-Host "! Could not deploy automatically to Azure. Review the log for more information." -ForegroundColor DarkRed + Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Deployment/Scripts/qna_functions.ps1 b/solutions/HospitalitySample/Deployment/Scripts/qna_functions.ps1 new file mode 100644 index 0000000000..cac35fae67 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Scripts/qna_functions.ps1 @@ -0,0 +1,87 @@ +function DeployKB ($name, $lu_file, $qnaSubscriptionKey, $log) +{ + $id = $lu_file.BaseName + $outFile = "$($id).qna" + $outFolder = $lu_file.DirectoryName + + # Parse LU file + Write-Host "> Parsing $($id) LU file ..." + ludown parse toqna ` + --in $lu_file ` + --out_folder $outFolder ` + --out $outFile + + # Create QnA Maker kb + Write-Host "> Deploying $($id) QnA kb ..." + + # These values pretty much guarantee success. We can decrease them if the QnA backend gets faster + $initialDelaySeconds = 30; + $retryAttemptsRemaining = 3; + $retryDelaySeconds = 15; + $retryDelayIncrease = 30; + + while ($retryAttemptsRemaining -ge 0) { + $qnaKb = (qnamaker create kb ` + --name $id ` + --subscriptionKey $qnaSubscriptionKey ` + --in $(Join-Path $outFolder $outFile) ` + --force ` + --wait ` + --msbot) 2>> $log + + if (-not $qnaKb) { + $retryAttemptsRemaining = $retryAttemptsRemaining - 1 + Write-Host $retryAttemptsRemaining + Start-Sleep -s $retryDelaySeconds + $retryDelaySeconds += $retryDelayIncrease + + if ($retryAttemptsRemaining -lt 0) { + Write-Host "! Unable to create QnA KB." -ForegroundColor Cyan + } + else { + Write-Host "> Retrying ..." + Continue + } + } + else { + Break + } + } + + if (-not $qnaKb) { + Write-Host "! Could not deploy knowledgebase. Review the log for more information." -ForegroundColor DarkRed + Write-Host "! Log: $($log)" -ForegroundColor DarkRed + Return $null + } + else { + $qnaKb = $qnaKb | ConvertFrom-Json + + # Publish QnA Maker knowledgebase + $(qnamaker publish kb --kbId $qnaKb.kbId --subscriptionKey $qnaSubscriptionKey) 2>> $log | Out-Null + + Return $qnaKb + } +} + +function UpdateKB ($lu_file, $kbId, $qnaSubscriptionKey) +{ + $id = $lu_file.BaseName + $outFile = "$($id).qna" + $outFolder = $lu_file.DirectoryName + + # Parse LU file + Write-Host "> Parsing $($id) LU file ..." + ludown parse toqna ` + --in $lu_file ` + --out_folder $outFolder ` + --out $outFile + + Write-Host "> Replacing $($id) QnA kb ..." + qnamaker replace kb ` + --in $(Join-Path $outFolder $outFile) ` + --kbId $kbId ` + --subscriptionKey $qnaSubscriptionKey + + # Publish QnA Maker knowledgebase + $(qnamaker publish kb --kbId $kbId --subscriptionKey $qnaSubscriptionKey) 2>&1 | Out-Null +} diff --git a/solutions/HospitalitySample/Deployment/Scripts/update_cognitive_models.ps1 b/solutions/HospitalitySample/Deployment/Scripts/update_cognitive_models.ps1 new file mode 100644 index 0000000000..d435017c30 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Scripts/update_cognitive_models.ps1 @@ -0,0 +1,159 @@ +#Requires -Version 6 + +Param( + [switch] $RemoteToLocal, + [switch] $useLuisGen = $true, + [string] $configFile = $(Join-Path (Get-Location) 'cognitivemodels.json'), + [string] $dispatchFolder = $(Join-Path $PSScriptRoot '..' 'Resources' 'Dispatch'), + [string] $luisFolder = $(Join-Path $PSScriptRoot '..' 'Resources' 'LU'), + [string] $qnaFolder = $(Join-Path $PSScriptRoot '..' 'Resources' 'QnA'), + [string] $lgOutFolder = $(Join-Path (Get-Location) 'Services'), + [string] $logFile = $(Join-Path $PSScriptRoot .. "update_cognitive_models_log.txt") +) + +. $PSScriptRoot\luis_functions.ps1 +. $PSScriptRoot\qna_functions.ps1 + +# Reset log file +if (Test-Path $logFile) { + Clear-Content $logFile -Force | Out-Null +} +else { + New-Item -Path $logFile | Out-Null +} + +Write-Host "> Getting config file ..." +$languageMap = @{ } +$config = Get-Content -Raw -Path $configFile | ConvertFrom-Json +$config.cognitiveModels.PSObject.Properties | Foreach-Object { $languageMap[$_.Name] = $_.Value } + +foreach ($langCode in $languageMap.Keys) { + $models = $languageMap[$langCode] + $dispatch = $models.dispatchModel + + if ($RemoteToLocal) { + # Update local LU files based on hosted models + foreach ($luisApp in $models.languageModels) { + $culture = (luis get application ` + --appId $luisApp.appId ` + --authoringKey $luisApp.authoringKey ` + --subscriptionKey $luisApp.subscriptionKey ` + --region $luisApp.authoringRegion | ConvertFrom-Json).culture + + Write-Host "> Updating local $($luisApp.id).lu file ..." + luis export version ` + --appId $luisApp.appid ` + --versionId $luisApp.version ` + --region $luisApp.authoringRegion ` + --authoringKey $luisApp.authoringKey | ludown refresh ` + --stdin ` + -n "$($luisApp.id).lu" ` + -o $(Join-Path $luisFolder $langCode) + + # Parse LU file + $id = $luisApp.id + $outFile = "$($id).luis" + $outFolder = $(Join-Path $luisFolder $langCode) + $appName = "$($name)$($langCode)_$($id)" + + Write-Host "> Parsing $($luisApp.id) LU file ..." + ludown parse toluis ` + --in $(Join-Path $outFolder "$($luisApp.id).lu") ` + --luis_culture $culture ` + --out_folder $(Join-Path $luisFolder $langCode) ` + --out "$($luisApp.id).luis" + + if ($useLuisGen) { + Write-Host "> Running LuisGen for $($luisApp.id) app ..." + $luPath = $(Join-Path $luisFolder $langCode "$($luisApp.id).lu") + RunLuisGen -lu_file $(Get-Item $luPath) -outName "$($luisApp.id)" -outFolder $lgOutFolder + } + + # Add the LUIS application to the dispatch model. + # If the LUIS application id already exists within the model no action will be taken + if ($dispatch) { + Write-Host "> Adding $($luisApp.id) app to dispatch model ... " + (dispatch add ` + --type "luis" ` + --name $luisApp.name ` + --id $luisApp.appid ` + --region $luisApp.authoringRegion ` + --intentName "l_$($luisApp.id)" ` + --dispatch $(Join-Path $dispatchFolder $langCode "$($dispatch.name).dispatch") ` + --dataFolder $(Join-Path $dispatchFolder $langCode)) 2>> $logFile | Out-Null + } + } + + # Update local LU files based on hosted QnA KBs + foreach ($kb in $models.knowledgebases) { + Write-Host "> Updating local $($kb.id).lu file ..." + qnamaker export kb ` + --environment Prod ` + --kbId $kb.kbId ` + --subscriptionKey $kb.subscriptionKey | ludown refresh ` + --stdin ` + -n "$($kb.id).lu" ` + -o $(Join-Path $qnaFolder $langCode) + + # Add the knowledge base to the dispatch model. + # If the knowledge base id already exists within the model no action will be taken + if ($dispatch) { + Write-Host "> Adding $($kb.id) kb to dispatch model ..." + (dispatch add ` + --type "qna" ` + --name $kb.name ` + --id $kb.kbId ` + --key $kb.subscriptionKey ` + --intentName "q_$($kb.id)" ` + --dispatch $(Join-Path $dispatchFolder $langCode "$($dispatch.name).dispatch") ` + --dataFolder $(Join-Path $dispatchFolder $langCode)) 2>> $logFile | Out-Null + } + } + } + else { + # Update each luis model based on local LU files + foreach ($luisApp in $models.languageModels) { + Write-Host "> Updating hosted $($luisApp.id) app..." + $lu = Get-Item -Path $(Join-Path $luisFolder $langCode "$($luisApp.id).lu") + UpdateLUIS ` + -lu_file $lu ` + -appId $luisApp.appid ` + -version $luisApp.version ` + -region $luisApp.authoringRegion ` + -authoringKey $luisApp.authoringKey ` + -subscriptionKey $app.subscriptionKey + + if ($useLuisGen) { + Write-Host "> Running LuisGen for $($luisApp.id) app ..." + $luPath = $(Join-Path $luisFolder $langCode "$($luisApp.id).lu") + RunLuisGen -lu_file $(Get-Item $luPath) -outName "$($luisApp.id)" -outFolder $lgOutFolder + } + } + + # Update each knowledgebase based on local LU files + foreach ($kb in $models.knowledgebases) { + Write-Host "> Updating hosted $($kb.id) kb..." + $lu = Get-Item -Path $(Join-Path $qnaFolder $langCode "$($kb.id).lu") + UpdateKB ` + -lu_file $lu ` + -kbId $kb.kbId ` + -qnaSubscriptionKey $kb.subscriptionKey + } + } + + if ($dispatch) { + # Update dispatch model + Write-Host "> Updating dispatch model ..." + dispatch refresh ` + --dispatch $(Join-Path $dispatchFolder $langCode "$($dispatch.name).dispatch") ` + --dataFolder $(Join-Path $dispatchFolder $langCode) 2>> $logFile | Out-Null + + if ($useLuisGen) { + # Update dispatch.cs file + Write-Host "> Running LuisGen for Dispatch app..." + luisgen $(Join-Path $dispatchFolder $langCode "$($dispatch.name).json") -cs "DispatchLuis" -o $lgOutFolder 2>> $logFile | Out-Null + } + } +} + +Write-Host "> Done." \ No newline at end of file diff --git a/solutions/HospitalitySample/Dialogs/CancelDialog.cs b/solutions/HospitalitySample/Dialogs/CancelDialog.cs new file mode 100644 index 0000000000..0a041b87e0 --- /dev/null +++ b/solutions/HospitalitySample/Dialogs/CancelDialog.cs @@ -0,0 +1,70 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Bot.Builder.Dialogs; +using HospitalitySample.Responses.Cancel; + +namespace HospitalitySample.Dialogs +{ + public class CancelDialog : ComponentDialog + { + private static CancelResponses _responder = new CancelResponses(); + + public CancelDialog() + : base(nameof(CancelDialog)) + { + InitialDialogId = nameof(CancelDialog); + + var cancel = new WaterfallStep[] + { + AskToCancel, + FinishCancelDialog, + }; + + AddDialog(new WaterfallDialog(InitialDialogId, cancel)); + AddDialog(new ConfirmPrompt(DialogIds.CancelPrompt)); + } + + protected override async Task EndComponentAsync(DialogContext outerDc, object result, CancellationToken cancellationToken) + { + var doCancel = (bool)result; + + if (doCancel) + { + // If user chose to cancel + await _responder.ReplyWith(outerDc.Context, CancelResponses.ResponseIds.CancelConfirmedMessage); + + // Cancel all in outer stack of component i.e. the stack the component belongs to + return await outerDc.CancelAllDialogsAsync(); + } + else + { + // else if user chose not to cancel + await _responder.ReplyWith(outerDc.Context, CancelResponses.ResponseIds.CancelDeniedMessage); + + // End this component. Will trigger reprompt/resume on outer stack + return await outerDc.EndDialogAsync(); + } + } + + private async Task AskToCancel(WaterfallStepContext sc, CancellationToken cancellationToken) + { + return await sc.PromptAsync(DialogIds.CancelPrompt, new PromptOptions() + { + Prompt = await _responder.RenderTemplate(sc.Context, sc.Context.Activity.Locale, CancelResponses.ResponseIds.CancelPrompt), + }); + } + + private async Task FinishCancelDialog(WaterfallStepContext sc, CancellationToken cancellationToken) + { + return await sc.EndDialogAsync((bool)sc.Result); + } + + private class DialogIds + { + public const string CancelPrompt = "cancelPrompt"; + } + } +} diff --git a/solutions/HospitalitySample/Dialogs/EscalateDialog.cs b/solutions/HospitalitySample/Dialogs/EscalateDialog.cs new file mode 100644 index 0000000000..5438e649e6 --- /dev/null +++ b/solutions/HospitalitySample/Dialogs/EscalateDialog.cs @@ -0,0 +1,36 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Dialogs; +using HospitalitySample.Responses.Escalate; +using HospitalitySample.Services; + +namespace HospitalitySample.Dialogs +{ + public class EscalateDialog : ComponentDialog + { + private EscalateResponses _responder = new EscalateResponses(); + + public EscalateDialog(BotServices botServices, IBotTelemetryClient telemetryClient) + : base(nameof(EscalateDialog)) + { + InitialDialogId = nameof(EscalateDialog); + + var escalate = new WaterfallStep[] + { + SendPhone, + }; + + AddDialog(new WaterfallDialog(InitialDialogId, escalate)); + } + + private async Task SendPhone(WaterfallStepContext sc, CancellationToken cancellationToken) + { + await _responder.ReplyWith(sc.Context, EscalateResponses.ResponseIds.SendPhoneMessage); + return await sc.EndDialogAsync(); + } + } +} diff --git a/solutions/HospitalitySample/Dialogs/MainDialog.cs b/solutions/HospitalitySample/Dialogs/MainDialog.cs new file mode 100644 index 0000000000..fea3031500 --- /dev/null +++ b/solutions/HospitalitySample/Dialogs/MainDialog.cs @@ -0,0 +1,396 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Luis; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Dialogs; +using Microsoft.Bot.Builder.Skills; +using Microsoft.Bot.Builder.Solutions; +using Microsoft.Bot.Builder.Solutions.Dialogs; +using Microsoft.Bot.Schema; +using Newtonsoft.Json.Linq; +using HospitalitySample.Models; +using HospitalitySample.Responses.Cancel; +using HospitalitySample.Responses.Main; +using HospitalitySample.Services; + +namespace HospitalitySample.Dialogs +{ + public class MainDialog : RouterDialog + { + private const string Location = "location"; + private const string TimeZone = "timezone"; + private BotSettings _settings; + private BotServices _services; + private MainResponses _responder = new MainResponses(); + private IStatePropertyAccessor _onboardingState; + private IStatePropertyAccessor _skillContextAccessor; + + public MainDialog( + BotSettings settings, + BotServices services, + OnboardingDialog onboardingDialog, + EscalateDialog escalateDialog, + CancelDialog cancelDialog, + List skillDialogs, + IBotTelemetryClient telemetryClient, + UserState userState) + : base(nameof(MainDialog), telemetryClient) + { + _settings = settings; + _services = services; + TelemetryClient = telemetryClient; + _onboardingState = userState.CreateProperty(nameof(OnboardingState)); + _skillContextAccessor = userState.CreateProperty(nameof(SkillContext)); + + AddDialog(onboardingDialog); + AddDialog(escalateDialog); + AddDialog(cancelDialog); + + foreach (var skillDialog in skillDialogs) + { + AddDialog(skillDialog); + } + } + + protected override async Task OnStartAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken)) + { + var view = new MainResponses(); + var onboardingState = await _onboardingState.GetAsync(dc.Context, () => new OnboardingState()); + + if (string.IsNullOrEmpty(onboardingState.Name)) + { + await view.ReplyWith(dc.Context, MainResponses.ResponseIds.NewUserGreeting); + } + else + { + await view.ReplyWith(dc.Context, MainResponses.ResponseIds.ReturningUserGreeting); + } + } + + protected override async Task RouteAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken)) + { + // Get cognitive models for locale + var locale = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName; + var cognitiveModels = _services.CognitiveModelSets[locale]; + + // Check dispatch result + var dispatchResult = await cognitiveModels.DispatchService.RecognizeAsync(dc.Context, CancellationToken.None); + var intent = dispatchResult.TopIntent().intent; + + // Identify if the dispatch intent matches any Action within a Skill if so, we pass to the appropriate SkillDialog to hand-off + var identifiedSkill = SkillRouter.IsSkill(_settings.Skills, intent.ToString()); + + if (identifiedSkill != null) + { + // We have identiifed a skill so initialize the skill connection with the target skill + var result = await dc.BeginDialogAsync(identifiedSkill.Id); + + if (result.Status == DialogTurnStatus.Complete) + { + await CompleteAsync(dc); + } + } + else if (intent == DispatchLuis.Intent.l_General) + { + // If dispatch result is General luis model + cognitiveModels.LuisServices.TryGetValue("General", out var luisService); + + if (luisService == null) + { + throw new Exception("The General LUIS Model could not be found in your Bot Services configuration."); + } + else + { + var result = await luisService.RecognizeAsync(dc.Context, CancellationToken.None); + + var generalIntent = result?.TopIntent().intent; + + // switch on general intents + switch (generalIntent) + { + case GeneralLuis.Intent.Escalate: + { + // start escalate dialog + await dc.BeginDialogAsync(nameof(EscalateDialog)); + break; + } + + case GeneralLuis.Intent.None: + default: + { + // No intent was identified, send confused message + await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Confused); + break; + } + } + } + } + else if (intent == DispatchLuis.Intent.q_Faq) + { + cognitiveModels.QnAServices.TryGetValue("Faq", out var qnaService); + + if (qnaService == null) + { + throw new Exception("The specified QnA Maker Service could not be found in your Bot Services configuration."); + } + else + { + var answers = await qnaService.GetAnswersAsync(dc.Context, null, null); + + if (answers != null && answers.Count() > 0) + { + await dc.Context.SendActivityAsync(answers[0].Answer, speak: answers[0].Answer); + } + else + { + await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Confused); + } + } + } + else if (intent == DispatchLuis.Intent.q_Chitchat) + { + cognitiveModels.QnAServices.TryGetValue("Chitchat", out var qnaService); + + if (qnaService == null) + { + throw new Exception("The specified QnA Maker Service could not be found in your Bot Services configuration."); + } + else + { + var answers = await qnaService.GetAnswersAsync(dc.Context, null, null); + + if (answers != null && answers.Count() > 0) + { + await dc.Context.SendActivityAsync(answers[0].Answer, speak: answers[0].Answer); + } + else + { + await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Confused); + } + } + } + else + { + // If dispatch intent does not map to configured models, send "confused" response. + // Alternatively as a form of backup you can try QnAMaker for anything not understood by dispatch. + await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Confused); + } + } + + protected override async Task OnEventAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken)) + { + // Check if there was an action submitted from intro card + var value = dc.Context.Activity.Value; + + if (value.GetType() == typeof(JObject)) + { + var submit = JObject.Parse(value.ToString()); + if (value != null && (string)submit["action"] == "startOnboarding") + { + await dc.BeginDialogAsync(nameof(OnboardingDialog)); + return; + } + } + + var forward = true; + var ev = dc.Context.Activity.AsEventActivity(); + if (!string.IsNullOrWhiteSpace(ev.Name)) + { + switch (ev.Name) + { + case Events.TimezoneEvent: + { + try + { + var timezone = ev.Value.ToString(); + var tz = TimeZoneInfo.FindSystemTimeZoneById(timezone); + var timeZoneObj = new JObject(); + timeZoneObj.Add(TimeZone, JToken.FromObject(tz)); + + var skillContext = await _skillContextAccessor.GetAsync(dc.Context, () => new SkillContext()); + if (skillContext.ContainsKey(TimeZone)) + { + skillContext[TimeZone] = timeZoneObj; + } + else + { + skillContext.Add(TimeZone, timeZoneObj); + } + + await _skillContextAccessor.SetAsync(dc.Context, skillContext); + } + catch + { + await dc.Context.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"Timezone passed could not be mapped to a valid Timezone. Property not set.")); + } + + forward = false; + break; + } + + case Events.LocationEvent: + { + var location = ev.Value.ToString(); + var locationObj = new JObject(); + locationObj.Add(Location, JToken.FromObject(location)); + + var skillContext = await _skillContextAccessor.GetAsync(dc.Context, () => new SkillContext()); + if (skillContext.ContainsKey(Location)) + { + skillContext[Location] = locationObj; + } + else + { + skillContext.Add(Location, locationObj); + } + + await _skillContextAccessor.SetAsync(dc.Context, skillContext); + + forward = false; + break; + } + + case TokenEvents.TokenResponseEventName: + { + forward = true; + break; + } + + default: + { + await dc.Context.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"Unknown Event {ev.Name} was received but not processed.")); + forward = false; + break; + } + } + } + + if (forward) + { + var result = await dc.ContinueDialogAsync(); + + if (result.Status == DialogTurnStatus.Complete) + { + await CompleteAsync(dc); + } + } + } + + protected override async Task CompleteAsync(DialogContext dc, DialogTurnResult result = null, CancellationToken cancellationToken = default(CancellationToken)) + { + // The active dialog's stack ended with a complete status + await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Completed); + } + + protected override async Task OnInterruptDialogAsync(DialogContext dc, CancellationToken cancellationToken) + { + if (dc.Context.Activity.Type == ActivityTypes.Message && !string.IsNullOrWhiteSpace(dc.Context.Activity.Text)) + { + // get current activity locale + var locale = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName; + var cognitiveModels = _services.CognitiveModelSets[locale]; + + // check luis intent + cognitiveModels.LuisServices.TryGetValue("General", out var luisService); + if (luisService == null) + { + throw new Exception("The General LUIS Model could not be found in your Bot Services configuration."); + } + else + { + var luisResult = await luisService.RecognizeAsync(dc.Context, cancellationToken); + var intent = luisResult.TopIntent().intent; + + if (luisResult.TopIntent().score > 0.5) + { + switch (intent) + { + case GeneralLuis.Intent.Cancel: + { + return await OnCancel(dc); + } + + case GeneralLuis.Intent.Help: + { + return await OnHelp(dc); + } + + case GeneralLuis.Intent.Logout: + { + return await OnLogout(dc); + } + } + } + } + } + + return InterruptionAction.NoAction; + } + + private async Task OnCancel(DialogContext dc) + { + if (dc.ActiveDialog != null && dc.ActiveDialog.Id != nameof(CancelDialog)) + { + // Don't start restart cancel dialog + await dc.BeginDialogAsync(nameof(CancelDialog)); + + // Signal that the dialog is waiting on user response + return InterruptionAction.StartedDialog; + } + + var view = new CancelResponses(); + await view.ReplyWith(dc.Context, CancelResponses.ResponseIds.NothingToCancelMessage); + + return InterruptionAction.StartedDialog; + } + + private async Task OnHelp(DialogContext dc) + { + var view = new MainResponses(); + await view.ReplyWith(dc.Context, MainResponses.ResponseIds.Help); + + // Signal the conversation was interrupted and should immediately continue + return InterruptionAction.MessageSentToUser; + } + + private async Task OnLogout(DialogContext dc) + { + IUserTokenProvider tokenProvider; + var supported = dc.Context.Adapter is IUserTokenProvider; + if (!supported) + { + throw new InvalidOperationException("OAuthPrompt.SignOutUser(): not supported by the current adapter"); + } + else + { + tokenProvider = (IUserTokenProvider)dc.Context.Adapter; + } + + await dc.CancelAllDialogsAsync(); + + // Sign out user + var tokens = await tokenProvider.GetTokenStatusAsync(dc.Context, dc.Context.Activity.From.Id); + foreach (var token in tokens) + { + await tokenProvider.SignOutUserAsync(dc.Context, token.ConnectionName); + } + + await dc.Context.SendActivityAsync(MainStrings.LOGOUT); + + return InterruptionAction.StartedDialog; + } + + private class Events + { + public const string TimezoneEvent = "VA.Timezone"; + public const string LocationEvent = "VA.Location"; + } + } +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Dialogs/OnboardingDialog.cs b/solutions/HospitalitySample/Dialogs/OnboardingDialog.cs new file mode 100644 index 0000000000..088df59914 --- /dev/null +++ b/solutions/HospitalitySample/Dialogs/OnboardingDialog.cs @@ -0,0 +1,74 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.Dialogs; +using HospitalitySample.Models; +using HospitalitySample.Responses.Onboarding; +using HospitalitySample.Services; + +namespace HospitalitySample.Dialogs +{ + public class OnboardingDialog : ComponentDialog + { + private static OnboardingResponses _responder = new OnboardingResponses(); + private IStatePropertyAccessor _accessor; + private OnboardingState _state; + + public OnboardingDialog( + BotServices botServices, + UserState userState, + IBotTelemetryClient telemetryClient) + : base(nameof(OnboardingDialog)) + { + _accessor = userState.CreateProperty(nameof(OnboardingState)); + InitialDialogId = nameof(OnboardingDialog); + + var onboarding = new WaterfallStep[] + { + AskForName, + FinishOnboardingDialog, + }; + + // To capture built-in waterfall dialog telemetry, set the telemetry client + // to the new waterfall dialog and add it to the component dialog + TelemetryClient = telemetryClient; + AddDialog(new WaterfallDialog(InitialDialogId, onboarding) { TelemetryClient = telemetryClient }); + AddDialog(new TextPrompt(DialogIds.NamePrompt)); + } + + public async Task AskForName(WaterfallStepContext sc, CancellationToken cancellationToken) + { + _state = await _accessor.GetAsync(sc.Context, () => new OnboardingState()); + + if (!string.IsNullOrEmpty(_state.Name)) + { + return await sc.NextAsync(_state.Name); + } + else + { + return await sc.PromptAsync(DialogIds.NamePrompt, new PromptOptions() + { + Prompt = await _responder.RenderTemplate(sc.Context, sc.Context.Activity.Locale, OnboardingResponses.ResponseIds.NamePrompt), + }); + } + } + + public async Task FinishOnboardingDialog(WaterfallStepContext sc, CancellationToken cancellationToken) + { + _state = await _accessor.GetAsync(sc.Context, () => new OnboardingState()); + var name = _state.Name = (string)sc.Result; + await _accessor.SetAsync(sc.Context, _state, cancellationToken); + + await _responder.ReplyWith(sc.Context, OnboardingResponses.ResponseIds.HaveNameMessage, new { name }); + return await sc.EndDialogAsync(); + } + + private class DialogIds + { + public const string NamePrompt = "namePrompt"; + } + } +} diff --git a/solutions/HospitalitySample/HospitalitySample.csproj b/solutions/HospitalitySample/HospitalitySample.csproj new file mode 100644 index 0000000000..b93fc574b8 --- /dev/null +++ b/solutions/HospitalitySample/HospitalitySample.csproj @@ -0,0 +1,118 @@ + + + + netcoreapp2.2 + NU1701 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PublicResXFileCodeGenerator + CancelStrings.Designer.cs + + + PublicResXFileCodeGenerator + EscalateStrings.Designer.cs + + + PublicResXFileCodeGenerator + MainStrings.Designer.cs + + + PublicResXFileCodeGenerator + OnboardingStrings.Designer.cs + + + + + + True + True + CancelStrings.resx + + + True + True + EscalateStrings.resx + + + True + True + MainStrings.resx + + + True + True + OnboardingStrings.resx + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + + diff --git a/solutions/HospitalitySample/Models/OnboardingState.cs b/solutions/HospitalitySample/Models/OnboardingState.cs new file mode 100644 index 0000000000..75019d4134 --- /dev/null +++ b/solutions/HospitalitySample/Models/OnboardingState.cs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +namespace HospitalitySample.Models +{ + public class OnboardingState + { + public string Name { get; set; } + + public string Email { get; set; } + + public string Location { get; set; } + } +} diff --git a/solutions/HospitalitySample/Pipeline/HospitalitySample.yml b/solutions/HospitalitySample/Pipeline/HospitalitySample.yml new file mode 100644 index 0000000000..602258fe2b --- /dev/null +++ b/solutions/HospitalitySample/Pipeline/HospitalitySample.yml @@ -0,0 +1,61 @@ +# specific branch build +trigger: + branches: + include: + - master + - feature/* + +pool: + name: Hosted VS2017 + demands: + - msbuild + - visualstudio + +variables: + buildPlatform: 'Any CPU' + buildConfiguration: 'Release' + +steps: +- task: DotNetCoreInstaller@0 + displayName: 'Use .NET Core sdk 2.2.100' + inputs: + version: 2.2.100 + continueOnError: true + +- task: NuGetToolInstaller@0 + displayName: 'Use NuGet 4.9.1' + inputs: + versionSpec: 4.9.1 + +- task: NuGetCommand@2 + displayName: 'NuGet restore' + inputs: + # if your working directory is not root, you may change the following path + restoreSolution: 'HospitalitySample.sln' + +- task: VSBuild@1 + displayName: 'Build solution HospitalitySample.sln' + inputs: + # if your working directory is not root, you may change the following path + solution: HospitalitySample.sln + vsVersion: '16.0' + platform: '$(buildPlatform)' + configuration: '$(buildConfiguration)' + +- task: DotNetCoreCLI@2 + displayName: 'test results' + inputs: + command: test + # if your working directory is not root, you may change the following path + projects: '$(System.DefaultWorkingDirectory)\HospitalitySample.Tests.csproj' + arguments: '-v n --configuration $(buildConfiguration) --no-build --no-restore --filter TestCategory!=IgnoreInAutomatedBuild /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura' + # if your working directory is not root, you may change the following path + workingDirectory: 'HospitalitySample.Tests' + +- task: PublishCodeCoverageResults@1 + displayName: 'Publish code coverage' + inputs: + codeCoverageTool: Cobertura + # if your working directory is not root, you may change the following path + summaryFileLocation: '$(Build.SourcesDirectory)\HospitalitySample.Tests\coverage.cobertura.xml' + reportDirectory: '$(Build.SourcesDirectory)\HospitalitySample.Tests' \ No newline at end of file diff --git a/solutions/HospitalitySample/Program.cs b/solutions/HospitalitySample/Program.cs new file mode 100644 index 0000000000..b6b7b84601 --- /dev/null +++ b/solutions/HospitalitySample/Program.cs @@ -0,0 +1,21 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; + +namespace HospitalitySample +{ + public class Program + { + public static void Main(string[] args) + { + BuildWebHost(args).Run(); + } + + public static IWebHost BuildWebHost(string[] args) => + WebHost.CreateDefaultBuilder(args) + .UseStartup() // Note: Application Insights is added in Startup. Disabling is also handled there. + .Build(); + } +} diff --git a/solutions/HospitalitySample/Properties/launchSettings.json b/solutions/HospitalitySample/Properties/launchSettings.json new file mode 100644 index 0000000000..f587b4f65b --- /dev/null +++ b/solutions/HospitalitySample/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:3978/", + "sslPort": 0 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "HospitalitySample": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "http://localhost:1205/" + } + } +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Cancel/CancelResponses.cs b/solutions/HospitalitySample/Responses/Cancel/CancelResponses.cs new file mode 100644 index 0000000000..4083b8b4ff --- /dev/null +++ b/solutions/HospitalitySample/Responses/Cancel/CancelResponses.cs @@ -0,0 +1,64 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.TemplateManager; +using Microsoft.Bot.Schema; + +namespace HospitalitySample.Responses.Cancel +{ + public class CancelResponses : TemplateManager + { + private static LanguageTemplateDictionary _responseTemplates = new LanguageTemplateDictionary + { + ["default"] = new TemplateIdMap + { + { + ResponseIds.CancelConfirmedMessage, + (context, data) => + MessageFactory.Text( + text: CancelStrings.CANCEL_CONFIRMED, + ssml: CancelStrings.CANCEL_CONFIRMED, + inputHint: InputHints.AcceptingInput) + }, + { + ResponseIds.CancelDeniedMessage, + (context, data) => + MessageFactory.Text( + text: CancelStrings.CANCEL_DENIED, + ssml: CancelStrings.CANCEL_DENIED, + inputHint: InputHints.AcceptingInput) + }, + { + ResponseIds.CancelPrompt, + (context, data) => + MessageFactory.Text( + text: CancelStrings.CANCEL_PROMPT, + ssml: CancelStrings.CANCEL_PROMPT, + inputHint: InputHints.ExpectingInput) + }, + { + ResponseIds.NothingToCancelMessage, + (context, data) => + MessageFactory.Text( + text: CancelStrings.NOTHING_TO_CANCEL, + ssml: CancelStrings.NOTHING_TO_CANCEL, + inputHint: InputHints.ExpectingInput) + }, + } + }; + + public CancelResponses() + { + Register(new DictionaryRenderer(_responseTemplates)); + } + + public class ResponseIds + { + public const string CancelPrompt = "cancelPrompt"; + public const string CancelConfirmedMessage = "cancelConfirmed"; + public const string CancelDeniedMessage = "cancelDenied"; + public const string NothingToCancelMessage = "nothingToCancel"; + } + } +} diff --git a/solutions/HospitalitySample/Responses/Cancel/CancelStrings.Designer.cs b/solutions/HospitalitySample/Responses/Cancel/CancelStrings.Designer.cs new file mode 100644 index 0000000000..626646d52b --- /dev/null +++ b/solutions/HospitalitySample/Responses/Cancel/CancelStrings.Designer.cs @@ -0,0 +1,116 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace HospitalitySample.Responses.Cancel +{ + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class CancelStrings + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal CancelStrings() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HospitalitySample.Responses.Cancel.CancelStrings", typeof(CancelStrings).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Ok, let's start over.. + /// + public static string CANCEL_CONFIRMED + { + get + { + return ResourceManager.GetString("CANCEL_CONFIRMED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ok, let's keep going.. + /// + public static string CANCEL_DENIED + { + get + { + return ResourceManager.GetString("CANCEL_DENIED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Are you sure you want to cancel?. + /// + public static string CANCEL_PROMPT + { + get + { + return ResourceManager.GetString("CANCEL_PROMPT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Looks like there's nothing to cancel! Try saying "help" to get started.. + /// + public static string NOTHING_TO_CANCEL + { + get + { + return ResourceManager.GetString("NOTHING_TO_CANCEL", resourceCulture); + } + } + } +} diff --git a/solutions/HospitalitySample/Responses/Cancel/CancelStrings.de.resx b/solutions/HospitalitySample/Responses/Cancel/CancelStrings.de.resx new file mode 100644 index 0000000000..17bc10024d --- /dev/null +++ b/solutions/HospitalitySample/Responses/Cancel/CancelStrings.de.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Sicher, fangen wir an. + + + Sicher, machen wir weiter. + + + Sind Sie sicher, dass Sie absagen wollen? + + + Es sieht so aus, als gäbe es nichts zu stornieren! + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Cancel/CancelStrings.es.resx b/solutions/HospitalitySample/Responses/Cancel/CancelStrings.es.resx new file mode 100644 index 0000000000..b1627fef2f --- /dev/null +++ b/solutions/HospitalitySample/Responses/Cancel/CancelStrings.es.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bien, empecemos de una vez. + + + Bien, sigamos adelante. + + + ¿Confirma que desea cancelar? + + + ¡ Parece que no hay nada que cancelar! + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Cancel/CancelStrings.fr.resx b/solutions/HospitalitySample/Responses/Cancel/CancelStrings.fr.resx new file mode 100644 index 0000000000..efb22ddfd7 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Cancel/CancelStrings.fr.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + D'accord, commençons. + + + D'accord, continuons. + + + Êtes-vous sûr de vouloir annuler? + + + On dirait qu’il n’y a rien à annuler! + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Cancel/CancelStrings.it.resx b/solutions/HospitalitySample/Responses/Cancel/CancelStrings.it.resx new file mode 100644 index 0000000000..b28d89041b --- /dev/null +++ b/solutions/HospitalitySample/Responses/Cancel/CancelStrings.it.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bene, ricominciamo. + + + Bene, andiamo avanti. + + + Sei sicuro di voler cancellare? + + + Sembra che non ci sia niente da cancellare! + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Cancel/CancelStrings.resx b/solutions/HospitalitySample/Responses/Cancel/CancelStrings.resx new file mode 100644 index 0000000000..e8d8cebdfa --- /dev/null +++ b/solutions/HospitalitySample/Responses/Cancel/CancelStrings.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ok, let's start over. + + + Ok, let's keep going. + + + Are you sure you want to cancel? + + + Looks like there's nothing to cancel! Try saying "help" to get started. + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Cancel/CancelStrings.zh.resx b/solutions/HospitalitySample/Responses/Cancel/CancelStrings.zh.resx new file mode 100644 index 0000000000..3df61377da --- /dev/null +++ b/solutions/HospitalitySample/Responses/Cancel/CancelStrings.zh.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 好吧, 让我们重新开始。 + + + 好吧, 让我们继续走。 + + + 确实要取消吗? + + + 看来没什么可以取消的! + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Escalate/EscalateResponses.cs b/solutions/HospitalitySample/Responses/Escalate/EscalateResponses.cs new file mode 100644 index 0000000000..6d4f5be6eb --- /dev/null +++ b/solutions/HospitalitySample/Responses/Escalate/EscalateResponses.cs @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Collections.Generic; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.TemplateManager; +using Microsoft.Bot.Schema; + +namespace HospitalitySample.Responses.Escalate +{ + public class EscalateResponses : TemplateManager + { + private LanguageTemplateDictionary _responseTemplates = new LanguageTemplateDictionary + { + ["default"] = new TemplateIdMap + { + { ResponseIds.SendPhoneMessage, (context, data) => BuildEscalateCard(context, data) }, + } + }; + + public EscalateResponses() + { + Register(new DictionaryRenderer(_responseTemplates)); + } + + public static IMessageActivity BuildEscalateCard(ITurnContext turnContext, dynamic data) + { + var attachment = new HeroCard() + { + Text = EscalateStrings.PHONE_INFO, + Buttons = new List() + { + new CardAction(type: ActionTypes.OpenUrl, title: "Call now", value: "tel:18005551234"), + new CardAction(type: ActionTypes.OpenUrl, title: "Open Teams", value: "msteams://") + }, + }.ToAttachment(); + + return MessageFactory.Attachment(attachment, null, EscalateStrings.PHONE_INFO, InputHints.AcceptingInput); + } + + public class ResponseIds + { + public const string SendPhoneMessage = "sendPhoneMessage"; + } + } +} diff --git a/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.Designer.cs b/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.Designer.cs new file mode 100644 index 0000000000..79fd5f3dea --- /dev/null +++ b/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.Designer.cs @@ -0,0 +1,83 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace HospitalitySample.Responses.Escalate +{ + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class EscalateStrings + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal EscalateStrings() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HospitalitySample.Responses.Escalate.EscalateStrings", typeof(EscalateStrings).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Our agents are available 24/7 at 1(800)555-1234. Or connect with us through Microsoft Teams.. + /// + public static string PHONE_INFO + { + get + { + return ResourceManager.GetString("PHONE_INFO", resourceCulture); + } + } + } +} diff --git a/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.de.resx b/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.de.resx new file mode 100644 index 0000000000..6f051f9972 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.de.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Unsere Agenten sind 24/7 bei 1 (800) 555-1234 erhältlich. + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.es.resx b/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.es.resx new file mode 100644 index 0000000000..4cdfc8b03a --- /dev/null +++ b/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.es.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Nuestros agentes están disponibles 24/7 en 1 (800) 555-1234. + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.fr.resx b/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.fr.resx new file mode 100644 index 0000000000..1701265950 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.fr.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Nos agents sont disponibles 24/7 au 1 (800) 555-1234. + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.it.resx b/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.it.resx new file mode 100644 index 0000000000..35a82b9a80 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.it.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + I nostri agenti sono disponibili 24/7 a 1 (800) 555-1234. + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.resx b/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.resx new file mode 100644 index 0000000000..171d383cb9 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Our agents are available 24/7 at 1(800)555-1234. Or connect with us through Microsoft Teams. + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.zh.resx b/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.zh.resx new file mode 100644 index 0000000000..72c9e6c574 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Escalate/EscalateStrings.zh.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 我们的代理商在 1 (800) 555-1234 时提供全天候服务。 + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Main/MainResponses.cs b/solutions/HospitalitySample/Responses/Main/MainResponses.cs new file mode 100644 index 0000000000..ca8acbfd32 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Main/MainResponses.cs @@ -0,0 +1,139 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Collections.Generic; +using System.IO; +using AdaptiveCards; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.TemplateManager; +using Microsoft.Bot.Schema; + +namespace HospitalitySample.Responses.Main +{ + public class MainResponses : TemplateManager + { + private static LanguageTemplateDictionary _responseTemplates = new LanguageTemplateDictionary + { + ["default"] = new TemplateIdMap + { + { + ResponseIds.Cancelled, + (context, data) => + MessageFactory.Text( + text: MainStrings.CANCELLED, + ssml: MainStrings.CANCELLED, + inputHint: InputHints.AcceptingInput) + }, + { + ResponseIds.Completed, + (context, data) => + MessageFactory.Text( + text: MainStrings.COMPLETED, + ssml: MainStrings.COMPLETED, + inputHint: InputHints.AcceptingInput) + }, + { + ResponseIds.Confused, + (context, data) => + MessageFactory.Text( + text: MainStrings.CONFUSED, + ssml: MainStrings.CONFUSED, + inputHint: InputHints.AcceptingInput) + }, + { + ResponseIds.Greeting, + (context, data) => + MessageFactory.Text( + text: MainStrings.GREETING, + ssml: MainStrings.GREETING, + inputHint: InputHints.AcceptingInput) + }, + { ResponseIds.Help, (context, data) => BuildHelpCard(context, data) }, + { ResponseIds.NewUserGreeting, (context, data) => BuildNewUserGreetingCard(context, data) }, + { ResponseIds.ReturningUserGreeting, (context, data) => BuildReturningUserGreetingCard(context, data) }, + } + }; + + public MainResponses() + { + Register(new DictionaryRenderer(_responseTemplates)); + } + + public static IMessageActivity BuildNewUserGreetingCard(ITurnContext turnContext, dynamic data) + { + var introCard = File.ReadAllText(MainStrings.INTRO_PATH); + var card = AdaptiveCard.FromJson(introCard).Card; + var attachment = new Attachment(AdaptiveCard.ContentType, content: card); + + var response = MessageFactory.Attachment(attachment, ssml: card.Speak, inputHint: InputHints.AcceptingInput); + + response.SuggestedActions = new SuggestedActions + { + Actions = new List() + { + new CardAction(type: ActionTypes.ImBack, title: MainStrings.HELP_BTN_TEXT_1, value: MainStrings.HELP_BTN_VALUE_1), + new CardAction(type: ActionTypes.ImBack, title: MainStrings.HELP_BTN_TEXT_2, value: MainStrings.HELP_BTN_VALUE_2), + new CardAction(type: ActionTypes.OpenUrl, title: MainStrings.HELP_BTN_TEXT_3, value: MainStrings.HELP_BTN_VALUE_3), + }, + }; + + return response; + } + + public static IMessageActivity BuildReturningUserGreetingCard(ITurnContext turnContext, dynamic data) + { + var introCard = File.ReadAllText(MainStrings.INTRO_RETURNING); + var card = AdaptiveCard.FromJson(introCard).Card; + var attachment = new Attachment(AdaptiveCard.ContentType, content: card); + + var response = MessageFactory.Attachment(attachment, ssml: card.Speak, inputHint: InputHints.AcceptingInput); + + response.SuggestedActions = new SuggestedActions + { + Actions = new List() + { + new CardAction(type: ActionTypes.ImBack, title: MainStrings.HELP_BTN_TEXT_1, value: MainStrings.HELP_BTN_VALUE_1), + new CardAction(type: ActionTypes.ImBack, title: MainStrings.HELP_BTN_TEXT_2, value: MainStrings.HELP_BTN_VALUE_2), + new CardAction(type: ActionTypes.OpenUrl, title: MainStrings.HELP_BTN_TEXT_3, value: MainStrings.HELP_BTN_VALUE_3), + }, + }; + + return response; + } + + public static IMessageActivity BuildHelpCard(ITurnContext turnContext, dynamic data) + { + var attachment = new HeroCard() + { + Title = MainStrings.HELP_TITLE, + Text = MainStrings.HELP_TEXT, + }.ToAttachment(); + + var response = MessageFactory.Attachment(attachment, ssml: MainStrings.HELP_TEXT, inputHint: InputHints.AcceptingInput); + + response.SuggestedActions = new SuggestedActions + { + Actions = new List() + { + new CardAction(type: ActionTypes.ImBack, title: MainStrings.HELP_BTN_TEXT_1, value: MainStrings.HELP_BTN_VALUE_1), + new CardAction(type: ActionTypes.ImBack, title: MainStrings.HELP_BTN_TEXT_2, value: MainStrings.HELP_BTN_VALUE_2), + new CardAction(type: ActionTypes.OpenUrl, title: MainStrings.HELP_BTN_TEXT_3, value: MainStrings.HELP_BTN_VALUE_3), + }, + }; + + return response; + } + + public class ResponseIds + { + // Constants + public const string Cancelled = "cancelled"; + public const string Completed = "completed"; + public const string Confused = "confused"; + public const string Greeting = "greeting"; + public const string Help = "help"; + public const string NewUserGreeting = "newUser"; + public const string ReturningUserGreeting = "returningUser"; + } + } +} diff --git a/solutions/HospitalitySample/Responses/Main/MainStrings.Designer.cs b/solutions/HospitalitySample/Responses/Main/MainStrings.Designer.cs new file mode 100644 index 0000000000..11329d5715 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Main/MainStrings.Designer.cs @@ -0,0 +1,259 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace HospitalitySample.Responses.Main +{ + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class MainStrings + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal MainStrings() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HospitalitySample.Responses.Main.MainStrings", typeof(MainStrings).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Ok, let's start over.. + /// + public static string CANCELLED + { + get + { + return ResourceManager.GetString("CANCELLED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to What else can I help you with?. + /// + public static string COMPLETED + { + get + { + return ResourceManager.GetString("COMPLETED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to I'm sorry, I'm not able to help with that.. + /// + public static string CONFUSED + { + get + { + return ResourceManager.GetString("CONFUSED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Sorry, it looks like something went wrong.. + /// + public static string ERROR + { + get + { + return ResourceManager.GetString("ERROR", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hi there!. + /// + public static string GREETING + { + get + { + return ResourceManager.GetString("GREETING", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hey, {0}!. + /// + public static string GREETING_WITH_NAME + { + get + { + return ResourceManager.GetString("GREETING_WITH_NAME", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test LUIS. + /// + public static string HELP_BTN_TEXT_1 + { + get + { + return ResourceManager.GetString("HELP_BTN_TEXT_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test QnA Maker. + /// + public static string HELP_BTN_TEXT_2 + { + get + { + return ResourceManager.GetString("HELP_BTN_TEXT_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Learn more. + /// + public static string HELP_BTN_TEXT_3 + { + get + { + return ResourceManager.GetString("HELP_BTN_TEXT_3", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Talk to a human. + /// + public static string HELP_BTN_VALUE_1 + { + get + { + return ResourceManager.GetString("HELP_BTN_VALUE_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to What is a Virtual Assistant?. + /// + public static string HELP_BTN_VALUE_2 + { + get + { + return ResourceManager.GetString("HELP_BTN_VALUE_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0. + /// + public static string HELP_BTN_VALUE_3 + { + get + { + return ResourceManager.GetString("HELP_BTN_VALUE_3", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to This card can be used to display information to help your user interact with your bot. The buttons below can be used for sample queries or links to external sites.. + /// + public static string HELP_TEXT + { + get + { + return ResourceManager.GetString("HELP_TEXT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to HELP. + /// + public static string HELP_TITLE + { + get + { + return ResourceManager.GetString("HELP_TITLE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ./Content/NewUserGreeting.json. + /// + public static string INTRO_PATH + { + get + { + return ResourceManager.GetString("INTRO_PATH", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ./Content/ReturningUserGreeting.json. + /// + public static string INTRO_RETURNING + { + get + { + return ResourceManager.GetString("INTRO_RETURNING", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ok, you're signed out.. + /// + public static string LOGOUT + { + get + { + return ResourceManager.GetString("LOGOUT", resourceCulture); + } + } + } +} diff --git a/solutions/HospitalitySample/Responses/Main/MainStrings.de.resx b/solutions/HospitalitySample/Responses/Main/MainStrings.de.resx new file mode 100644 index 0000000000..c66cfd8b1c --- /dev/null +++ b/solutions/HospitalitySample/Responses/Main/MainStrings.de.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + OK, fangen wir an + + + Was kann ich Ihnen noch helfen? + + + Es tut mir leid, ich bin nicht in der Lage, damit zu helfen. + + + Sorry, es sieht so aus, als ob etwas schief gelaufen ist. + + + Hallo! + + + Hallo {0}! + + + Test LUIS + + + Test QnA Maker + + + Weitere Informationen + + + Kann ich mit einer Person sprechen + + + Was ist die Enterprise Bot Template? + + + https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0 + + + Ich bin Ihr virtueller Assistent! Ich kann durch meine vernetzten Fähigkeiten eine Reihe von Aufgaben erledigen. Im Moment kann ich Ihnen mit Kalender, E-Mail, Aufgabe und Punkt von Interesse Fragen helfen. Oder Sie können mir helfen, mehr zu tun, indem Sie Ihre eigenen! + + + Hilfe für Enterprise Bot + + + ./Content/NewUserGreeting.de.json + + + ./Content/ReturningUserGreeting.de.json + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Main/MainStrings.es.resx b/solutions/HospitalitySample/Responses/Main/MainStrings.es.resx new file mode 100644 index 0000000000..bcf9444467 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Main/MainStrings.es.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bien, empecemos de una vez. + + + ¿En qué más puedo ayudarte? + + + Lo siento, no soy capaz de ayudar con eso. + + + Lo siento, parece que algo salió mal. + + + ¡Hola! + + + Hola {0} + + + Prueba LUIS + + + Prueba QnA Maker + + + Aprende más + + + Puedo hablar con una persona + + + ¿Qué es el Enterprise bot template? + + + https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0 + + + ¡ Soy tu asistente virtual! Puedo realizar una serie de tareas a través de mis habilidades conectadas. En este momento puedo ayudarle con el calendario, correo electrónico, tarea y preguntas de punto de interés. ¡ O usted puede ayudarme a hacer más creando su propio! + + + Ayuda para el asistente virtual + + + ./Content/NewUserGreeting.es.json + + + ./Content/ReturningUserGreeting.es.json + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Main/MainStrings.fr.resx b/solutions/HospitalitySample/Responses/Main/MainStrings.fr.resx new file mode 100644 index 0000000000..6d24b423b7 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Main/MainStrings.fr.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + OK, recommençons. + + + Quoi d'autre puis-je vous aider? + + + Je suis désolé, je ne suis pas en mesure d'aider avec ça. + + + Désolé, on dirait que quelque chose a mal tourné. + + + Salut! + + + Hé, {0}! + + + Test LUIS + + + Test QnA Maker + + + Pour en savoir plus + + + Puis-je parler à une personne + + + Qu'est-ce que le modèle Enterprise bot? + + + https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0 + + + Je suis ton assistante virtuelle! Je peux effectuer un certain nombre de tâches à travers mes compétences connectées. En ce moment je peux vous aider avec le calendrier, email, la tâche et le point d'intérêt des questions. Ou vous pouvez m'aider à faire plus en créant votre propre! + + + Aide pour Virtual Assistant + + + ./Content/NewUserGreeting.fr.json + + + ./Content/ReturningUserGreeting.fr.json + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Main/MainStrings.it.resx b/solutions/HospitalitySample/Responses/Main/MainStrings.it.resx new file mode 100644 index 0000000000..f1d4dd6188 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Main/MainStrings.it.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ok, ricominciamo da qui. + + + Che altro posso aiutarvi? + + + Mi dispiace, non sono in grado di aiutarti. + + + Mi dispiace, sembra che qualcosa sia andato storto. + + + Ehilà! + + + Ehilà! {0}! + + + Prova LUIS + + + Prova QnA Maker + + + Ulteriori informazioni + + + Posso parlare con una persona + + + Che cos'è il modello Enterprise bot? + + + https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0 + + + Sono il tuo assistente virtuale! Posso effettuare un certo numero di mansioni con le mie abilità collegate. In questo momento posso aiutarvi con calendario, e-mail, compito e punto di domande di interesse. Oppure puoi aiutarmi a fare di più creando il tuo! + + + Aiuto per assistente virtuale + + + ./Content/NewUserGreeting.it.json + + + ./Content/ReturningUserGreeting.it.json + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Main/MainStrings.resx b/solutions/HospitalitySample/Responses/Main/MainStrings.resx new file mode 100644 index 0000000000..c177d896c5 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Main/MainStrings.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ok, let's start over. + + + What else can I help you with? + + + I'm sorry, I'm not able to help with that. + + + Sorry, it looks like something went wrong. + + + Hi there! + + + Hey, {0}! + + + Test LUIS + + + Test QnA Maker + + + Learn more + + + Talk to a human + + + What is a Virtual Assistant? + + + https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0 + + + This card can be used to display information to help your user interact with your bot. The buttons below can be used for sample queries or links to external sites. + + + HELP + + + ./Content/NewUserGreeting.json + + + ./Content/ReturningUserGreeting.json + + + Ok, you're signed out. + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Main/MainStrings.zh.resx b/solutions/HospitalitySample/Responses/Main/MainStrings.zh.resx new file mode 100644 index 0000000000..831c9cec30 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Main/MainStrings.zh.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 好的,我们从头再来。 + + + 我还能帮你什么? + + + 对不起,我帮不了。 + + + 对不起, 看起来出了问题。 + + + 您好! + + + 您好!, {0} + + + 测试 LUIS + + + 测试 QnA Maker + + + 了解更多信息 + + + 我能和一个人交谈吗? + + + 这个模板是什么? + + + https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0 + + + 我是您的智能助理!我有不少技能,可以帮您完成很多任务。现在我可以帮您管理您的日历, 电子邮件, 任务和查找地图兴趣点。或者, 您可以教我更多的技能! + + + 智能助手的帮助 + + + ./Content/NewUserGreeting.zh.json + + + ./Content/ReturningUserGreeting.zh.json + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Onboarding/OnboardingResponses.cs b/solutions/HospitalitySample/Responses/Onboarding/OnboardingResponses.cs new file mode 100644 index 0000000000..349f8c4f06 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Onboarding/OnboardingResponses.cs @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.TemplateManager; +using Microsoft.Bot.Schema; + +namespace HospitalitySample.Responses.Onboarding +{ + public class OnboardingResponses : TemplateManager + { + private static LanguageTemplateDictionary _responseTemplates = new LanguageTemplateDictionary + { + ["default"] = new TemplateIdMap + { + { + ResponseIds.EmailPrompt, + (context, data) => + MessageFactory.Text( + text: OnboardingStrings.EMAIL_PROMPT, + ssml: OnboardingStrings.EMAIL_PROMPT, + inputHint: InputHints.ExpectingInput) + }, + { + ResponseIds.HaveEmailMessage, + (context, data) => + MessageFactory.Text( + text: string.Format(OnboardingStrings.HAVE_EMAIL, data.email), + ssml: string.Format(OnboardingStrings.HAVE_EMAIL, data.email), + inputHint: InputHints.IgnoringInput) + }, + { + ResponseIds.HaveLocationMessage, + (context, data) => + MessageFactory.Text( + text: string.Format(OnboardingStrings.HAVE_LOCATION, data.Name, data.Location), + ssml: string.Format(OnboardingStrings.HAVE_LOCATION, data.Name, data.Location), + inputHint: InputHints.IgnoringInput) + }, + { + ResponseIds.HaveNameMessage, + (context, data) => + MessageFactory.Text( + text: string.Format(OnboardingStrings.HAVE_NAME, data.name), + ssml: string.Format(OnboardingStrings.HAVE_NAME, data.name), + inputHint: InputHints.IgnoringInput) + }, + { + ResponseIds.NamePrompt, + (context, data) => + MessageFactory.Text( + text: OnboardingStrings.NAME_PROMPT, + ssml: OnboardingStrings.NAME_PROMPT, + inputHint: InputHints.ExpectingInput) + }, + { + ResponseIds.LocationPrompt, + (context, data) => + MessageFactory.Text( + text: OnboardingStrings.LOCATION_PROMPT, + ssml: OnboardingStrings.LOCATION_PROMPT, + inputHint: InputHints.ExpectingInput) + } + } + }; + + public OnboardingResponses() + { + Register(new DictionaryRenderer(_responseTemplates)); + } + + public class ResponseIds + { + public const string EmailPrompt = "emailPrompt"; + public const string HaveEmailMessage = "haveEmail"; + public const string HaveNameMessage = "haveName"; + public const string HaveLocationMessage = "haveLocation"; + public const string LocationPrompt = "locationPrompt"; + public const string NamePrompt = "namePrompt"; + } + } +} diff --git a/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.Designer.cs b/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.Designer.cs new file mode 100644 index 0000000000..a1581cc874 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.Designer.cs @@ -0,0 +1,138 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace HospitalitySample.Responses.Onboarding +{ + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class OnboardingStrings + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal OnboardingStrings() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HospitalitySample.Responses.Onboarding.OnboardingStrings", typeof(OnboardingStrings).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to What is your email?. + /// + public static string EMAIL_PROMPT + { + get + { + return ResourceManager.GetString("EMAIL_PROMPT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Got it. I've added {0} as your primary contact address.. + /// + public static string HAVE_EMAIL + { + get + { + return ResourceManager.GetString("HAVE_EMAIL", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Thanks, {0}. I've added {1} as your primary location. You're all set up!. + /// + public static string HAVE_LOCATION + { + get + { + return ResourceManager.GetString("HAVE_LOCATION", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hi, {0}!. + /// + public static string HAVE_NAME + { + get + { + return ResourceManager.GetString("HAVE_NAME", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Finally, where are you located?. + /// + public static string LOCATION_PROMPT + { + get + { + return ResourceManager.GetString("LOCATION_PROMPT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to What is your name?. + /// + public static string NAME_PROMPT + { + get + { + return ResourceManager.GetString("NAME_PROMPT", resourceCulture); + } + } + } +} diff --git a/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.de.resx b/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.de.resx new file mode 100644 index 0000000000..35dc814e32 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.de.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Was ist Ihre E-Mail? + + + Ich hab es. Ich habe {0} als primäre Kontaktadresse hinzugefügt. + + + Dank, {0}. Ich habe {1} als primären Standort hinzugefügt. Ihr seid alle eingerichtet! + + + Hallo, {0}! + + + Endlich, wo sind Sie? + + + Wie heißen Sie? + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.es.resx b/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.es.resx new file mode 100644 index 0000000000..a40847af5c --- /dev/null +++ b/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.es.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ¿Cuál es su correo electrónico? + + + Entiendo. He agregado {0} como su dirección de contacto principal. + + + Gracias, {0}. He agregado {1} como su ubicación principal. ¡Ya está todo listo! + + + ¡Hola, {0}! + + + Finalmente, ¿dónde están ubicados? + + + ¿Cómo te llamas? + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.fr.resx b/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.fr.resx new file mode 100644 index 0000000000..f260c11414 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.fr.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Quel est votre courriel? + + + Je l'ai. J'ai ajouté {0} comme adresse de contact principale. + + + Merci, {0}. J'ai ajouté {1} comme emplacement principal. Vous êtes tous mis en place! + + + Bonjour, {0}! + + + Enfin, où êtes-vous situé? + + + Comment vous appelez-vous? + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.it.resx b/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.it.resx new file mode 100644 index 0000000000..a05db7f8c2 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.it.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Qual è la tua email? + + + Capito. Ho aggiunto {0} come indirizzo di contatto principale. + + + Grazie, {0}. Ho aggiunto {1} come posizione primaria. Sei tutto a posto! + + + Ciao, {0}! + + + Infine, dove si trova? + + + Come ti chiami? + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.resx b/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.resx new file mode 100644 index 0000000000..8699ab485c --- /dev/null +++ b/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + What is your email? + + + Got it. I've added {0} as your primary contact address. + + + Thanks, {0}. I've added {1} as your primary location. You're all set up! + + + Hi, {0}! + + + Finally, where are you located? + + + What is your name? + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.zh.resx b/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.zh.resx new file mode 100644 index 0000000000..dff2d5bc75 --- /dev/null +++ b/solutions/HospitalitySample/Responses/Onboarding/OnboardingStrings.zh.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 您的电子邮件是什么? + + + 明白了。我已将 {0} 添加为您的主要联系地址。 + + + 谢谢, {0}。我已将 {1} 添加为您的主要位置。你们都准备好了! + + + 你好, {0}! + + + 最后, 你在哪里? + + + 您叫什么名字? + + \ No newline at end of file diff --git a/solutions/HospitalitySample/Services/BotServices.cs b/solutions/HospitalitySample/Services/BotServices.cs new file mode 100644 index 0000000000..9ac7691cb4 --- /dev/null +++ b/solutions/HospitalitySample/Services/BotServices.cs @@ -0,0 +1,65 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Collections.Generic; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.AI.Luis; +using Microsoft.Bot.Builder.AI.QnA; +using Microsoft.Bot.Builder.Solutions; + +namespace HospitalitySample.Services +{ + public class BotServices + { + public BotServices() + { + } + + public BotServices(BotSettings settings, IBotTelemetryClient client) + { + foreach (var pair in settings.CognitiveModels) + { + var set = new CognitiveModelSet(); + var language = pair.Key; + var config = pair.Value; + + var telemetryClient = client; + var luisOptions = new LuisPredictionOptions() + { + TelemetryClient = telemetryClient, + LogPersonalInformation = true, + }; + + var dispatchApp = new LuisApplication(config.DispatchModel.AppId, config.DispatchModel.SubscriptionKey, config.DispatchModel.GetEndpoint()); + + set.DispatchService = new LuisRecognizer(dispatchApp, luisOptions); + + if (config.LanguageModels != null) + { + foreach (var model in config.LanguageModels) + { + var luisApp = new LuisApplication(model.AppId, model.SubscriptionKey, model.GetEndpoint()); + set.LuisServices.Add(model.Id, new LuisRecognizer(luisApp, luisOptions)); + } + } + + foreach (var kb in config.Knowledgebases) + { + var qnaEndpoint = new QnAMakerEndpoint() + { + KnowledgeBaseId = kb.KbId, + EndpointKey = kb.EndpointKey, + Host = kb.Hostname, + }; + + var qnaMaker = new QnAMaker(qnaEndpoint, null, null, telemetryClient: telemetryClient, logPersonalInformation: true); + set.QnAServices.Add(kb.Id, qnaMaker); + } + + CognitiveModelSets.Add(language, set); + } + } + + public Dictionary CognitiveModelSets { get; set; } = new Dictionary(); + } +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Services/BotSettings.cs b/solutions/HospitalitySample/Services/BotSettings.cs new file mode 100644 index 0000000000..b36f81cc96 --- /dev/null +++ b/solutions/HospitalitySample/Services/BotSettings.cs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Collections.Generic; +using Microsoft.Bot.Builder.Skills.Models.Manifest; +using Microsoft.Bot.Builder.Solutions; + +namespace HospitalitySample.Services +{ + public class BotSettings : BotSettingsBase + { + public List Skills { get; set; } = new List(); + } +} \ No newline at end of file diff --git a/solutions/HospitalitySample/Services/DispatchLuis.cs b/solutions/HospitalitySample/Services/DispatchLuis.cs new file mode 100644 index 0000000000..ba94f9d054 --- /dev/null +++ b/solutions/HospitalitySample/Services/DispatchLuis.cs @@ -0,0 +1,66 @@ +// +// Code generated by LUISGen +// Tool github: https://github.com/microsoft/botbuilder-tools +// Changes may cause incorrect behavior and will be lost if the code is +// regenerated. +// +using Newtonsoft.Json; +using System.Collections.Generic; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.AI.Luis; +namespace Luis +{ + public partial class DispatchLuis : IRecognizerConvert + { + public string Text; + public string AlteredText; + public enum Intent + { + l_General, + q_Chitchat, + q_Faq, + None + }; + public Dictionary Intents; + + public class _Entities + { + + // Instance + public class _Instance + { + } + [JsonProperty("$instance")] + public _Instance _instance; + } + public _Entities Entities; + + [JsonExtensionData(ReadData = true, WriteData = true)] + public IDictionary Properties { get; set; } + + public void Convert(dynamic result) + { + var app = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(result, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore })); + Text = app.Text; + AlteredText = app.AlteredText; + Intents = app.Intents; + Entities = app.Entities; + Properties = app.Properties; + } + + public (Intent intent, double score) TopIntent() + { + Intent maxIntent = Intent.None; + var max = 0.0; + foreach (var entry in Intents) + { + if (entry.Value.Score > max) + { + maxIntent = entry.Key; + max = entry.Value.Score.Value; + } + } + return (maxIntent, max); + } + } +} diff --git a/solutions/HospitalitySample/Services/GeneralLuis.cs b/solutions/HospitalitySample/Services/GeneralLuis.cs new file mode 100644 index 0000000000..5389e22f1d --- /dev/null +++ b/solutions/HospitalitySample/Services/GeneralLuis.cs @@ -0,0 +1,89 @@ +// +// Code generated by LUISGen +// Tool github: https://github.com/microsoft/botbuilder-tools +// Changes may cause incorrect behavior and will be lost if the code is +// regenerated. +// +using Newtonsoft.Json; +using System.Collections.Generic; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.AI.Luis; +namespace Luis +{ + public partial class GeneralLuis : IRecognizerConvert + { + public string Text; + public string AlteredText; + public enum Intent + { + Cancel, + Confirm, + Escalate, + FinishTask, + GoBack, + Help, + Logout, + None, + ReadAloud, + Reject, + Repeat, + SelectAny, + SelectItem, + SelectNone, + ShowNext, + ShowPrevious, + StartOver, + Stop + }; + public Dictionary Intents; + + public class _Entities + { + // Simple entities + public string[] DirectionalReference; + + // Built-in entities + public double[] number; + public double[] ordinal; + + // Instance + public class _Instance + { + public InstanceData[] DirectionalReference; + public InstanceData[] number; + public InstanceData[] ordinal; + } + [JsonProperty("$instance")] + public _Instance _instance; + } + public _Entities Entities; + + [JsonExtensionData(ReadData = true, WriteData = true)] + public IDictionary Properties { get; set; } + + public void Convert(dynamic result) + { + var app = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(result, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore })); + Text = app.Text; + AlteredText = app.AlteredText; + Intents = app.Intents; + Entities = app.Entities; + Properties = app.Properties; + } + + public (Intent intent, double score) TopIntent() + { + Intent maxIntent = Intent.None; + var max = 0.0; + foreach (var entry in Intents) + { + if (entry.Value.Score > max) + { + maxIntent = entry.Key; + max = entry.Value.Score.Value; + } + } + return (maxIntent, max); + } + } +} diff --git a/solutions/HospitalitySample/Startup.cs b/solutions/HospitalitySample/Startup.cs new file mode 100644 index 0000000000..fc8e5f7417 --- /dev/null +++ b/solutions/HospitalitySample/Startup.cs @@ -0,0 +1,162 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.ApplicationInsights; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Bot.Builder; +using Microsoft.Bot.Builder.ApplicationInsights; +using Microsoft.Bot.Builder.Azure; +using Microsoft.Bot.Builder.BotFramework; +using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; +using Microsoft.Bot.Builder.Integration.AspNet.Core; +using Microsoft.Bot.Builder.Skills; +using Microsoft.Bot.Builder.Skills.Auth; +using Microsoft.Bot.Builder.Skills.Models.Manifest; +using Microsoft.Bot.Builder.Solutions.Authentication; +using Microsoft.Bot.Builder.StreamingExtensions; +using Microsoft.Bot.Connector.Authentication; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using HospitalitySample.Adapters; +using HospitalitySample.Bots; +using HospitalitySample.Dialogs; +using HospitalitySample.Services; + +namespace HospitalitySample +{ + public class Startup + { + public Startup(IHostingEnvironment env, ILoggerFactory loggerFactory) + { + var builder = new ConfigurationBuilder() + .SetBasePath(env.ContentRootPath) + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) + .AddJsonFile("cognitivemodels.json", optional: true) + .AddJsonFile($"cognitivemodels.{env.EnvironmentName}.json", optional: true) + .AddJsonFile("skills.json", optional: true) + .AddJsonFile($"skills.{env.EnvironmentName}.json", optional: true) + .AddEnvironmentVariables(); + + Configuration = builder.Build(); + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); + + var provider = services.BuildServiceProvider(); + + // Load settings + var settings = new BotSettings(); + Configuration.Bind(settings); + services.AddSingleton(settings); + + // Configure credentials + services.AddSingleton(); + + var appCredentials = new MicrosoftAppCredentials(settings.MicrosoftAppId, settings.MicrosoftAppPassword); + services.AddSingleton(appCredentials); + + // Configure telemetry + services.AddApplicationInsightsTelemetry(); + var telemetryClient = new BotTelemetryClient(new TelemetryClient()); + services.AddSingleton(telemetryClient); + services.AddBotApplicationInsights(telemetryClient); + + // Configure bot services + services.AddSingleton(); + + // Configure storage + // Uncomment the following line for local development without Cosmos Db + // services.AddSingleton(); + services.AddSingleton(new CosmosDbStorage(settings.CosmosDb)); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(sp => + { + var userState = sp.GetService(); + var conversationState = sp.GetService(); + return new BotStateSet(userState, conversationState); + }); + + // Register dialogs + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + + // Register skill dialogs + services.AddTransient(sp => + { + var userState = sp.GetService(); + var skillDialogs = new List(); + + foreach (var skill in settings.Skills) + { + var authDialog = BuildAuthDialog(skill, settings, appCredentials); + var credentials = new MicrosoftAppCredentialsEx(settings.MicrosoftAppId, settings.MicrosoftAppPassword, skill.MSAappId); + skillDialogs.Add(new SkillDialog(skill, credentials, telemetryClient, userState, authDialog)); + } + + return skillDialogs; + }); + + // Configure adapters + // DefaultAdapter is for all regular channels that use Http transport + services.AddSingleton(); + + // DefaultWebSocketAdapter is for directline speech channel + // This adapter implementation is currently a workaround as + // later on we'll have a WebSocketEnabledHttpAdapter implementation that handles + // both Http for regular channels and websocket for directline speech channel + services.AddSingleton(); + + // Configure bot + services.AddTransient>(); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IHostingEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.UseBotApplicationInsights() + .UseDefaultFiles() + .UseStaticFiles() + .UseWebSockets() + .UseMvc(); + } + + // This method creates a MultiProviderAuthDialog based on a skill manifest. + private MultiProviderAuthDialog BuildAuthDialog(SkillManifest skill, BotSettings settings, MicrosoftAppCredentials appCredentials) + { + if (skill.AuthenticationConnections?.Count() > 0) + { + if (settings.OAuthConnections != null && settings.OAuthConnections.Any(o => skill.AuthenticationConnections.Any(s => s.ServiceProviderId == o.Provider))) + { + var oauthConnections = settings.OAuthConnections.Where(o => skill.AuthenticationConnections.Any(s => s.ServiceProviderId == o.Provider)).ToList(); + return new MultiProviderAuthDialog(oauthConnections, appCredentials); + } + else + { + throw new Exception($"You must configure at least one supported OAuth connection to use this skill: {skill.Name}."); + } + } + + return null; + } + } +} \ No newline at end of file diff --git a/solutions/HospitalitySample/appsettings.json b/solutions/HospitalitySample/appsettings.json new file mode 100644 index 0000000000..fff013fa75 --- /dev/null +++ b/solutions/HospitalitySample/appsettings.json @@ -0,0 +1,21 @@ +{ + "microsoftAppId": "", + "microsoftAppPassword": "", + "oauthConnections": [], + "ApplicationInsights": { + "InstrumentationKey": "" + }, + "blobStorage": { + "connectionString": "", + "container": "transcripts" + }, + "cosmosDb": { + "collectionId": "botstate-collection", + "databaseId": "botstate-db", + "cosmosDBEndpoint": "", + "authKey": "" + }, + "contentModerator": { + "key": "" + } +} \ No newline at end of file diff --git a/solutions/HospitalitySample/cognitivemodels.json b/solutions/HospitalitySample/cognitivemodels.json new file mode 100644 index 0000000000..db01c95f2d --- /dev/null +++ b/solutions/HospitalitySample/cognitivemodels.json @@ -0,0 +1,37 @@ +{ + "cognitiveModels": { + "en": { + "dispatchModel": { + "authoringkey": "", + "appid": "", + "name": "", + "subscriptionkey": "", + "region": "", + "authoringRegion": "" + }, + "languageModels": [ + { + "subscriptionkey": "", + "appid": "", + "id": "", + "version": "", + "region": "", + "name": "", + "authoringkey": "", + "authoringRegion": "" + } + ], + "knowledgebases": [ + { + "endpointKey": "", + "kbId": "", + "hostname": "", + "subscriptionKey": "", + "name": "", + "id": "" + } + ] + } + }, + "defaultLocale": "en-us" +} \ No newline at end of file diff --git a/solutions/HospitalitySample/readme.md b/solutions/HospitalitySample/readme.md new file mode 100644 index 0000000000..510fafa968 --- /dev/null +++ b/solutions/HospitalitySample/readme.md @@ -0,0 +1 @@ +Please refer to the [Virtual Assistant Template documentation](http://aka.ms/virtualassistantdocs) for deployment and customization instructions. diff --git a/solutions/HospitalitySample/skills.json b/solutions/HospitalitySample/skills.json new file mode 100644 index 0000000000..7a73a41bfd --- /dev/null +++ b/solutions/HospitalitySample/skills.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/solutions/HospitalitySample/wwwroot/default.htm b/solutions/HospitalitySample/wwwroot/default.htm new file mode 100644 index 0000000000..b90135e884 --- /dev/null +++ b/solutions/HospitalitySample/wwwroot/default.htm @@ -0,0 +1,422 @@ + + + + + + + Virtual Assistant Template + + + + + +
+
+
+
Virtual Assistant Template
+
+
+
+
+
Your Virtual Assistant is ready!
+
+ You can test your assistant in the Bot Framework Emulator
+ by opening the Emulator and providing the Endpoint shown below along with the Microsoft AppId and Password which you can find in appsettings.json. +
+ +
+ Your Virtual Assistant's endpoint URL typically looks + like this: +
+
https://your_bots_hostname/api/messages
+
+
+
+
+ +
+ + + \ No newline at end of file From d5a4858f5973557a9e63ff593697c65cc0d64261 Mon Sep 17 00:00:00 2001 From: litofish Date: Mon, 5 Aug 2019 13:44:39 -0700 Subject: [PATCH 2/8] Connect hospitality skill and add hotel FAQ knowledge base --- .../Deployment/Resources/LU/en/General.lu | 21 +++- .../Deployment/Resources/QnA/en/Chitchat.lu | 10 ++ .../Deployment/Resources/QnA/en/Faq.lu | 13 ++- .../Deployment/Resources/QnA/en/hotel_FAQ.lu | 91 +++++++++++++++++ .../Services/DispatchLuis.cs | 15 +-- .../HospitalitySample/Services/GeneralLuis.cs | 41 ++++---- solutions/HospitalitySample/skills.json | 97 +++++++++++++++++++ 7 files changed, 256 insertions(+), 32 deletions(-) create mode 100644 solutions/HospitalitySample/Deployment/Resources/QnA/en/hotel_FAQ.lu diff --git a/solutions/HospitalitySample/Deployment/Resources/LU/en/General.lu b/solutions/HospitalitySample/Deployment/Resources/LU/en/General.lu index 7ede276df9..9b203ed6a2 100644 --- a/solutions/HospitalitySample/Deployment/Resources/LU/en/General.lu +++ b/solutions/HospitalitySample/Deployment/Resources/LU/en/General.lu @@ -1,3 +1,12 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Mon Aug 05 2019 12:36:29 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: stdin + +> ! Source QnA TSV file: Not Specified + +> ! Source QnA Alterations file: Not Specified + + > # Intent definitions ## Cancel @@ -158,12 +167,14 @@ - some help - who can help me + ## Logout -- signout - forget me -- sign out -- logout - log out +- logout +- sign out +- signout + ## None - all of them @@ -519,3 +530,7 @@ $PREBUILT:ordinal > # List entities + +> # RegEx entities + + diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/en/Chitchat.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/en/Chitchat.lu index c4f61ab422..fcc44cbe21 100644 --- a/solutions/HospitalitySample/Deployment/Resources/QnA/en/Chitchat.lu +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/en/Chitchat.lu @@ -1,3 +1,13 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Mon Aug 05 2019 12:36:34 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + > Source: custom editorial ## ? What's your age - Are you young diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/en/Faq.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/en/Faq.lu index 116c5977c5..24a93d84bd 100644 --- a/solutions/HospitalitySample/Deployment/Resources/QnA/en/Faq.lu +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/en/Faq.lu @@ -1,3 +1,13 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Mon Aug 05 2019 12:36:36 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + > Source: custom editorial ## ? What is a Virtual Assistant @@ -63,4 +73,5 @@ New Virtual Assistants are ready to support both Microsoft Teams and speech-rela ```markdown Raise an issue on the [GitHub repo](https://aka.ms/virtualassistant) -``` \ No newline at end of file +``` + diff --git a/solutions/HospitalitySample/Deployment/Resources/QnA/en/hotel_FAQ.lu b/solutions/HospitalitySample/Deployment/Resources/QnA/en/hotel_FAQ.lu new file mode 100644 index 0000000000..da1f4ae688 --- /dev/null +++ b/solutions/HospitalitySample/Deployment/Resources/QnA/en/hotel_FAQ.lu @@ -0,0 +1,91 @@ +> ! Automatically generated by [LUDown CLI](https://github.com/Microsoft/botbuilder-tools/tree/master/Ludown), Mon Aug 05 2019 12:36:38 GMT-0700 (Pacific Daylight Time) + +> ! Source LUIS JSON file: Not Specified + +> ! Source QnA TSV file: stdin + +> ! Source QnA Alterations file: Not Specified + +> # QnA pairs + +> Source: Editorial +## ? Where is the gym? +- Is there a gym? + +```markdown +The gym is on the 2nd floor. Just take a left when you get out of the elevator. +``` + +> Source: Editorial +## ? When does the bar close? +- When is the bar open? +- What hours is the bar open? + +```markdown +The bar is open from 5:00PM to 10:00PM everyday. +``` + +> Source: Editorial +## ? What's the wifi password? +- Do you have wifi? +- What is the wifi? + +```markdown +The Wi-Fi network name is Hotel_WiFi and the password is hotelsummer2019. +``` + +> Source: Editorial +## ? What amenities does the hotel have?  +- What amenities do you have? + +```markdown +- 24-hour business center +- 24-hour fitness center +- 24-hour front desk +``` + +> Source: Editorial +## ? Where is the printer?  +- Where is the business center? +- Do you have a printer + +```markdown +The printer is in the 24-hour business center on the 1st floor. +``` + +> Source: Editorial +## ? Where is breakfast served?  +- Where is the breakfast restaurant? + +```markdown +Breakfast is served in our restaurant on the 1st floor. +``` + +> Source: Editorial +## ? What time is breakfast?  +- When does the breakfast restaurant open? +- When does breakfast close? + +```markdown +Complimentary breakfast is served from 6:00am to 9:30am Monday through Friday.  +``` + +> Source: Editorial +## ? Is there a pool? +- Where is the pool? +- When is the pool open? + +```markdown +We have a seasonal outdoor pool on the 1st floor that is open Monday-Sunday from 7:00AM to 11:00PM. +``` + +> Source: Editorial +## ? Is there onsite parking available? +- Do you have parking? +- Can I park at the hotel? +- How much does parking cost? + +```markdown +We have onsite parking available to hotel guests for $14 a day. +``` + diff --git a/solutions/HospitalitySample/Services/DispatchLuis.cs b/solutions/HospitalitySample/Services/DispatchLuis.cs index ba94f9d054..c44deda972 100644 --- a/solutions/HospitalitySample/Services/DispatchLuis.cs +++ b/solutions/HospitalitySample/Services/DispatchLuis.cs @@ -10,15 +10,16 @@ using Microsoft.Bot.Builder.AI.Luis; namespace Luis { - public partial class DispatchLuis : IRecognizerConvert + public partial class DispatchLuis: IRecognizerConvert { public string Text; public string AlteredText; - public enum Intent - { - l_General, - q_Chitchat, - q_Faq, + public enum Intent { + l_General, + q_Chitchat, + q_Faq, + hospitalitySkill, + q_hotel_FAQ, None }; public Dictionary Intents; @@ -36,7 +37,7 @@ public class _Instance public _Entities Entities; [JsonExtensionData(ReadData = true, WriteData = true)] - public IDictionary Properties { get; set; } + public IDictionary Properties {get; set; } public void Convert(dynamic result) { diff --git a/solutions/HospitalitySample/Services/GeneralLuis.cs b/solutions/HospitalitySample/Services/GeneralLuis.cs index 5389e22f1d..bb0b784046 100644 --- a/solutions/HospitalitySample/Services/GeneralLuis.cs +++ b/solutions/HospitalitySample/Services/GeneralLuis.cs @@ -10,29 +10,28 @@ using Microsoft.Bot.Builder.AI.Luis; namespace Luis { - public partial class GeneralLuis : IRecognizerConvert + public partial class GeneralLuis: IRecognizerConvert { public string Text; public string AlteredText; - public enum Intent - { - Cancel, - Confirm, - Escalate, - FinishTask, - GoBack, - Help, - Logout, - None, - ReadAloud, - Reject, - Repeat, - SelectAny, - SelectItem, - SelectNone, - ShowNext, - ShowPrevious, - StartOver, + public enum Intent { + Cancel, + Confirm, + Escalate, + FinishTask, + GoBack, + Help, + Logout, + None, + ReadAloud, + Reject, + Repeat, + SelectAny, + SelectItem, + SelectNone, + ShowNext, + ShowPrevious, + StartOver, Stop }; public Dictionary Intents; @@ -59,7 +58,7 @@ public class _Instance public _Entities Entities; [JsonExtensionData(ReadData = true, WriteData = true)] - public IDictionary Properties { get; set; } + public IDictionary Properties {get; set; } public void Convert(dynamic result) { diff --git a/solutions/HospitalitySample/skills.json b/solutions/HospitalitySample/skills.json index 7a73a41bfd..e3afb1caf6 100644 --- a/solutions/HospitalitySample/skills.json +++ b/solutions/HospitalitySample/skills.json @@ -1,2 +1,99 @@ { + "skills": [ + { + "id": "hospitalitySkill", + "msaAppId": "", + "name": "Hospitality Skill", + "endpoint": "", + "description": "The Hospitality skill provides capabilities that are needed in a hotel room, such as checking out, changing your reservation, and requesting items.", + "authenticationConnections": [], + "actions": [ + { + "id": "HospitalitySkill_checkOut", + "definition": { + "description": "Check out of room", + "slots": [], + "triggers": { + "utteranceSources": [ + { + "locale": "en", + "source": [ + "Hospitality#CheckOut" + ] + } + ] + } + } + }, + { + "id": "HospitalitySkill_extendStay", + "definition": { + "description": "Extend reseravation for current room.", + "slots": [], + "triggers": { + "utteranceSources": [ + { + "locale": "en", + "source": [ + "Hospitality#ExtendStay" + ] + } + ] + } + } + }, + { + "id": "HospitalitySkill_getReservation", + "definition": { + "description": "Get current reservation details.", + "slots": [], + "triggers": { + "utteranceSources": [ + { + "locale": "en", + "source": [ + "Hospitality#GetReservation" + ] + } + ] + } + } + }, + { + "id": "HospitalitySkill_lateCheckOut", + "definition": { + "description": "Change to late check out.", + "slots": [], + "triggers": { + "utteranceSources": [ + { + "locale": "en", + "source": [ + "Hospitality#LateCheckOut" + ] + } + ] + } + } + }, + { + "id": "HospitalitySkill_requestItem", + "definition": { + "description": "Request items to be brought to your room.", + "slots": [], + "triggers": { + "utteranceSources": [ + { + "locale": "en", + "source": [ + "Hospitality#RequestItem" + ] + } + ] + } + } + } + ] + } + ] } \ No newline at end of file From e0d3789a24918723f3adb271edd4fe09164826b4 Mon Sep 17 00:00:00 2001 From: litofish Date: Mon, 5 Aug 2019 14:12:29 -0700 Subject: [PATCH 3/8] upate MainDialog to include hotel_faq --- .../HospitalitySample/Dialogs/MainDialog.cs | 22 +++++++++++++++++++ .../HospitalitySample/wwwroot/default.htm | 4 ++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/solutions/HospitalitySample/Dialogs/MainDialog.cs b/solutions/HospitalitySample/Dialogs/MainDialog.cs index fea3031500..ad3947ae76 100644 --- a/solutions/HospitalitySample/Dialogs/MainDialog.cs +++ b/solutions/HospitalitySample/Dialogs/MainDialog.cs @@ -176,6 +176,28 @@ public MainDialog( } } } + else if (intent == DispatchLuis.Intent.q_hotel_FAQ) + { + cognitiveModels.QnAServices.TryGetValue("hotel_FAQ", out var qnaService); + + if (qnaService == null) + { + throw new Exception("The specified QnA Maker Service could not be found in your Bot Services configuration."); + } + else + { + var answers = await qnaService.GetAnswersAsync(dc.Context, null, null); + + if (answers != null && answers.Count() > 0) + { + await dc.Context.SendActivityAsync(answers[0].Answer, speak: answers[0].Answer); + } + else + { + await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Confused); + } + } + } else { // If dispatch intent does not map to configured models, send "confused" response. diff --git a/solutions/HospitalitySample/wwwroot/default.htm b/solutions/HospitalitySample/wwwroot/default.htm index b90135e884..fa9e8d48a5 100644 --- a/solutions/HospitalitySample/wwwroot/default.htm +++ b/solutions/HospitalitySample/wwwroot/default.htm @@ -4,7 +4,7 @@ - Virtual Assistant Template + Hospitality Sample VA