public override async Task HandleVirtualCompanionExecutionContextAsync(IVirtualCompanionExecutionContext context, Func <Task> next) { using (var httpClient = new HttpClient()) { using (var request = new HttpRequestMessage(HttpMethod.Post, "/event")) { var requesBody = await _serializer.SerializeAsync(context); request.Content = new StringContent(requesBody, Encoding.UTF8); using (var response = await _httpClient.SendAsync(request)) { response.EnsureSuccessStatusCode(); var responseBody = await response.Content.ReadAsStringAsync(); var newContext = await _serializer.DeserializeAsync(responseBody); foreach (var kvp in newContext) { context[kvp.Key] = kvp.Value; } } } } await next(); }
public Task <string> SerializeAsync(IVirtualCompanionExecutionContext context) { var settings = _jsonSerializerSettingsProvider.GetJsonSerializerSettings(); var json = JsonConvert.SerializeObject(context, settings); return(Task.FromResult(json)); }
public virtual async Task HandleVirtualCompanionExecutionContextAsync(IVirtualCompanionExecutionContext context, Func <Task> next) { await HandleDownstreamVirtualCompanionExecutionContextAsync(context); await HandleNextVirtualCompanionExecutionContextHandlerAsync(context, next); await HandleUpstreamVirtualCompanionExecutionContextAsync(context); }
protected override void HandleDownstreamVirtualCompanionExecutionContext(IVirtualCompanionExecutionContext context) { if (context.TryGetAudioInputFeature("en", out var audio)) { // convert audio to text context.AddTextInputFeature("en", "Hello World"); } }
public static void AddAudioInputFeature(this IVirtualCompanionExecutionContext context, CultureInfo culture, byte[] buffer) { var featureKey = context.Configuration.AudioInputFeature.ContextKeyFactory(culture); context[featureKey] = new AudioInputFeature { Culture = culture, Buffer = buffer }; }
public static void AddTextInputFeature(this IVirtualCompanionExecutionContext context, CultureInfo culture, string text) { var featureKey = context.Configuration.TextInputFeature.ContextKeyFactory(culture); context[featureKey] = new TextInputFeature { Culture = culture, Text = text }; }
public static bool TryGetFeature <TFeature>(this IVirtualCompanionExecutionContext context, string key, out TFeature feature) { feature = default(TFeature); if (context.TryGetValue(key, out var value) && value is TFeature castedFeature) { feature = castedFeature; } return(!Object.Equals(feature, default(TFeature))); }
protected override void HandleDownstreamVirtualCompanionExecutionContext(IVirtualCompanionExecutionContext context) { if (!context.TryGetTextInputFeature("en", out _)) { var features = context.GetFeatures <TextInputFeature>(); var textValue = features?.FirstOrDefault()?.Text; // translate text value context.AddTextInputFeature("en", "Hello World"); } }
public static bool TryGetTextInputFeature(this IVirtualCompanionExecutionContext context, CultureInfo culture, out string text) { var featureKey = context.Configuration.TextInputFeature.ContextKeyFactory(culture); text = default(string); if (context.TryGetFeature <TextInputFeature>(featureKey, out var feature)) { text = feature.Text; } return(text != null); }
public static bool TryGetAudioInputFeature(this IVirtualCompanionExecutionContext context, CultureInfo culture, out byte[] buffer) { var featureKey = context.Configuration.AudioInputFeature.ContextKeyFactory(culture); buffer = new byte[0]; if (context.TryGetFeature <AudioInputFeature>(featureKey, out var feature)) { buffer = feature.Buffer; } return(buffer.Length > 0); }
public async Task ProcessVirtualCompanionExecutionContextAsync(IVirtualCompanionExecutionContext context) { var chainOfResponsibilityBuilder = new VirtualCompanionExecutionContextChainOfResponsibilityBuilder(); foreach (var handler in _handlers) { chainOfResponsibilityBuilder.AddHandler(handler); } var builtChainOfResponsibility = chainOfResponsibilityBuilder.Build(); await builtChainOfResponsibility.Invoke(context); }
public static IEnumerable <TFeature> GetFeatures <TFeature>(this IVirtualCompanionExecutionContext context) { return(context.Values.Where((v) => v is TFeature).Cast <TFeature>()); }
protected virtual void HandleUpstreamVirtualCompanionExecutionContext(IVirtualCompanionExecutionContext context) { }
public static bool TryGetTextInputFeature(this IVirtualCompanionExecutionContext context, string culture, out string text) { var cultureInfo = CultureInfo.GetCultureInfo(culture); return(context.TryGetTextInputFeature(cultureInfo, out text)); }
protected virtual Task HandleNextVirtualCompanionExecutionContextHandlerAsync(IVirtualCompanionExecutionContext context, Func <Task> next) { return(next.Invoke()); }
public static void AddTextInputFeature(this IVirtualCompanionExecutionContext context, string culture, string text) { var cultureInfo = CultureInfo.GetCultureInfo(culture); context.AddTextInputFeature(cultureInfo, text); }
public static bool TryGetAudioInputFeature(this IVirtualCompanionExecutionContext context, string culture, out byte[] buffer) { var cultureInfo = CultureInfo.GetCultureInfo(culture); return(context.TryGetAudioInputFeature(cultureInfo, out buffer)); }
public static void AddAudioInputFeature(this IVirtualCompanionExecutionContext context, string culture, byte[] buffer) { var cultureInfo = CultureInfo.GetCultureInfo(culture); context.AddAudioInputFeature(cultureInfo, buffer); }
protected virtual Task HandleUpstreamVirtualCompanionExecutionContextAsync(IVirtualCompanionExecutionContext context) { HandleUpstreamVirtualCompanionExecutionContext(context); return(Task.CompletedTask); }
protected override void HandleUpstreamVirtualCompanionExecutionContext(IVirtualCompanionExecutionContext context) { // translate text value context["output:text:pt"] = null; }
public override Task HandleVirtualCompanionExecutionContextAsync(IVirtualCompanionExecutionContext context, Func <Task> next) { // output after processing context["output:text:en"] = null; return(Task.CompletedTask); }