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();
        }
Example #2
0
        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);
 }