public async Task <InternalModels.Dialog> GetResponseAsync(InternalModels.Request request) { var dialog = await _sessionsClientBalancer.Invoke(request.SessionId, (sessionClient, context) => GetResponseInternalAsync(request, sessionClient, context), request.ScopeKey); return(dialog); }
private async Task <InternalModels.Dialog> GetResponseInternalAsync(InternalModels.Request request, SessionsClient client, ScopeContext context) { var intentRequest = CreateQuery(request, context); bool.TryParse(context.Parameters["LogQuery"], out var isLogQuery); if (isLogQuery) { _log.Trace($"Request:{System.Environment.NewLine}{intentRequest.Serialize()}"); } DetectIntentResponse intentResponse = await client.DetectIntentAsync(intentRequest); if (isLogQuery) { _log.Trace($"Response:{System.Environment.NewLine}{intentResponse.Serialize()}"); } var queryResult = intentResponse.QueryResult; var response = _mapper.Map <InternalModels.Dialog>(queryResult); response.ScopeKey = context.Parameters["ProjectId"]; return(response); }
public async Task <InternalModels.Dialog> GetResponseAsync(string text, string sessionId, string requiredContext = null) { var request = new InternalModels.Request { Text = text, SessionId = sessionId, }; return(await GetResponseAsync(request)); }
private EventInput ResolveEvent(InternalModels.Request request, string languageCode) { EventInput result; var sourceMessenger = request?.Source; if (sourceMessenger != null && _eventResolvers.ContainsKey(sourceMessenger.Value)) { result = _eventResolvers[sourceMessenger.Value].Invoke(request, languageCode); } else { result = EventByCommand(request?.Text, languageCode); } return(result); }
private DetectIntentRequest CreateQuery(InternalModels.Request request, ScopeContext context) { var session = CreateSession(context.Parameters["ProjectId"], request.SessionId); var languageCode = context.Parameters["LanguageCode"]; var eventInput = ResolveEvent(request, languageCode); var text = request.Text; if (text?.Length > MaximumRequestTextLength) { text = request.Text.Substring(0, MaximumRequestTextLength); } var query = new QueryInput { Text = new TextInput { Text = text ?? string.Empty, LanguageCode = languageCode } }; if (eventInput != null) { query.Event = eventInput; } var intentRequest = new DetectIntentRequest { SessionAsSessionName = session, QueryInput = query, QueryParams = new QueryParameters() }; var contexts = request.RequiredContexts.Select(c => GetContext(context.Parameters["ProjectId"], session, c.Name, c.LifeSpan, c.Parameters)).ToList(); intentRequest.QueryParams.Contexts.AddRange(contexts); return(intentRequest); }
private EventInput DefaultWelcomeEventResolve(InternalModels.Request request, string languageCode) { EventInput result; // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression if (string.IsNullOrEmpty(request.Text)) { if (request.IsOldUser) { result = GetEvent(EasyWelcomeEventName, languageCode); } else { result = GetEvent(WelcomeEventName, languageCode); } } else { result = EventByCommand(request.Text, languageCode); } return(result); }
public Task DeleteAllContextsAsync(InternalModels.Request request) { return(_contextsClientBalancer.Invoke(request.SessionId, (client, context) => DeleteAllContextsInternalAsync(request.SessionId, context.Parameters["ProjectId"], client), request.ScopeKey)); }