VoiceServiceRequest.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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.Collections.Generic;
  10. using Meta.Voice;
  11. using Meta.WitAi.Configuration;
  12. using Meta.WitAi.Json;
  13. namespace Meta.WitAi.Requests
  14. {
  15. [Serializable]
  16. public abstract class VoiceServiceRequest
  17. : NLPRequest<VoiceServiceRequestEvent, WitRequestOptions, VoiceServiceRequestEvents, VoiceServiceRequestResults>
  18. {
  19. /// <summary>
  20. /// Constructor for Voice Service requests
  21. /// </summary>
  22. /// <param name="newInputType">The request input type (text/audio) to be used</param>
  23. /// <param name="newOptions">The request parameters to be used</param>
  24. /// <param name="newEvents">The request events to be called throughout it's lifecycle</param>
  25. protected VoiceServiceRequest(NLPRequestInputType newInputType, WitRequestOptions newOptions, VoiceServiceRequestEvents newEvents) : base(newInputType, newOptions, newEvents) {}
  26. /// <summary>
  27. /// The status code returned from the last request
  28. /// </summary>
  29. public int StatusCode
  30. {
  31. get => Results == null ? 0 : Results.StatusCode;
  32. protected set
  33. {
  34. int newCode = value;
  35. if (newCode.Equals(Results == null ? 0 : Results.StatusCode))
  36. {
  37. return;
  38. }
  39. if (Results == null)
  40. {
  41. Results = new VoiceServiceRequestResults();
  42. }
  43. Results.StatusCode = newCode;
  44. }
  45. }
  46. /// <summary>
  47. /// Returns an empty result object with the current status code
  48. /// </summary>
  49. /// <param name="newMessage">The message to be set on the results</param>
  50. protected override VoiceServiceRequestResults GetResultsWithMessage(string newMessage)
  51. {
  52. VoiceServiceRequestResults results = new VoiceServiceRequestResults(newMessage);
  53. results.StatusCode = StatusCode;
  54. return results;
  55. }
  56. /// <summary>
  57. /// Applies a transcription to the current results
  58. /// </summary>
  59. /// <param name="newTranscription">The transcription returned</param>
  60. /// <param name="newIsFinal">Whether the transcription has completed building</param>
  61. protected override void ApplyTranscription(string newTranscription, bool newIsFinal)
  62. {
  63. if (Results == null)
  64. {
  65. Results = new VoiceServiceRequestResults();
  66. }
  67. Results.Transcription = newTranscription;
  68. Results.IsFinalTranscription = newIsFinal;
  69. if (Results.IsFinalTranscription)
  70. {
  71. List<string> transcriptions = new List<string>();
  72. if (Results.FinalTranscriptions != null)
  73. {
  74. transcriptions.AddRange(Results.FinalTranscriptions);
  75. }
  76. transcriptions.Add(Results.Transcription);
  77. Results.FinalTranscriptions = transcriptions.ToArray();
  78. }
  79. OnTranscriptionChanged();
  80. }
  81. /// <summary>
  82. /// Applies response data to the current results
  83. /// </summary>
  84. /// <param name="newData">The returned response data</param>
  85. protected override void ApplyResultResponseData(WitResponseNode newData)
  86. {
  87. if (Results == null)
  88. {
  89. Results = new VoiceServiceRequestResults();
  90. }
  91. Results.ResponseData = newData;
  92. }
  93. /// <summary>
  94. /// Performs an event callback with this request as the parameter
  95. /// </summary>
  96. /// <param name="eventCallback">The voice service request event to be called</param>
  97. protected override void RaiseEvent(VoiceServiceRequestEvent eventCallback)
  98. {
  99. eventCallback?.Invoke(this);
  100. }
  101. }
  102. }