WitConduitParameterProvider.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * Copyright (c) Meta Platforms, Inc. and affiliates.
  3. * All rights reserved.
  4. *
  5. * This source code is licensed under the license found in the
  6. * LICENSE file in the root directory of this source tree.
  7. */
  8. using System;
  9. using System.Reflection;
  10. using System.Text;
  11. using Meta.WitAi.Data;
  12. using Meta.WitAi.Json;
  13. using Meta.Conduit;
  14. namespace Meta.WitAi
  15. {
  16. [Obsolete ("Use ParameterProvider.SetSpecializedParameter() instead of this class")]
  17. internal class WitConduitParameterProvider : ParameterProvider
  18. {
  19. protected override object GetSpecializedParameter(ParameterInfo formalParameter)
  20. {
  21. if (formalParameter.ParameterType == typeof(WitResponseNode) && ActualParameters.ContainsKey(WitResponseNodeReservedName.ToLower()))
  22. {
  23. return ActualParameters[WitResponseNodeReservedName.ToLower()];
  24. }
  25. if (formalParameter.ParameterType == typeof(VoiceSession) && ActualParameters.ContainsKey(VoiceSessionReservedName.ToLower()))
  26. {
  27. return ActualParameters[VoiceSessionReservedName.ToLower()];
  28. }
  29. // Log warning when not found
  30. StringBuilder error = new StringBuilder();
  31. error.AppendLine("Specialized parameter not found");
  32. error.AppendLine($"Parameter Type: {formalParameter.ParameterType}");
  33. error.AppendLine($"Parameter Name: {formalParameter.Name}");
  34. error.AppendLine($"Actual Parameters: {ActualParameters.Keys.Count}");
  35. foreach (var key in ActualParameters.Keys)
  36. {
  37. string val = ActualParameters[key] == null ? "NULL" : ActualParameters[key].GetType().ToString();
  38. error.AppendLine($"\t{key}: {val}");
  39. }
  40. VLog.W(error.ToString());
  41. return null;
  42. }
  43. protected override bool SupportedSpecializedParameter(ParameterInfo formalParameter)
  44. {
  45. return formalParameter.ParameterType == typeof(WitResponseNode) || formalParameter.ParameterType == typeof(VoiceSession);
  46. }
  47. }
  48. }