55using Azure . Core ;
66using System . Text . Json . Serialization ;
77using System ;
8+ using System . Runtime . Serialization ;
9+ using System . IO ;
10+ using System . Text ;
811
912namespace Azure . Communication . CallAutomation
1013{
@@ -23,7 +26,7 @@ public partial class RecognizeCompleted : CallAutomationEventBase
2326 /// </summary>
2427 [ CodeGenMember ( "RecognitionType" ) ]
2528 [ JsonConverter ( typeof ( EquatableEnumJsonConverter < CallMediaRecognitionType > ) ) ]
26- private CallMediaRecognitionType RecognitionType { get ; set ; }
29+ public CallMediaRecognitionType RecognitionType { get ; set ; }
2730
2831 /// <summary> Initializes a new instance of RecognizeCompleted. </summary>
2932 internal RecognizeCompleted ( )
@@ -40,30 +43,16 @@ internal RecognizeCompleted()
4043 /// Determines the sub-type of the recognize operation.
4144 /// In case of cancel operation the this field is not set and is returned empty
4245 /// </param>
43- /// <param name="dtmfResult"> Defines the result for RecognitionType = Dtmf. </param>
44- /// <param name="choiceResult"> Defines the result for RecognitionType = Choices. </param>
45- /// <param name="speechResult"> Defines the result for RecognitionType = Speech. </param>
46- internal RecognizeCompleted ( string callConnectionId , string serverCallId , string correlationId , string operationContext , ResultInformation resultInformation , CallMediaRecognitionType recognitionType , DtmfResult dtmfResult , ChoiceResult choiceResult , SpeechResult speechResult )
46+ /// <param name="recognizeResult"> Defines the result for general recognizeResult. </param>
47+ internal RecognizeCompleted ( string callConnectionId , string serverCallId , string correlationId , string operationContext , ResultInformation resultInformation , CallMediaRecognitionType recognitionType , RecognizeResult recognizeResult )
4748 {
4849 CallConnectionId = callConnectionId ;
4950 ServerCallId = serverCallId ;
5051 CorrelationId = correlationId ;
5152 OperationContext = operationContext ;
5253 ResultInformation = resultInformation ;
5354 RecognitionType = recognitionType ;
54-
55- if ( RecognitionType == CallMediaRecognitionType . Dtmf )
56- {
57- RecognizeResult = dtmfResult ;
58- }
59- else if ( RecognitionType == CallMediaRecognitionType . Choices )
60- {
61- RecognizeResult = choiceResult ;
62- }
63- else if ( RecognitionType == CallMediaRecognitionType . Speech || RecognitionType == CallMediaRecognitionType . SpeechOrDtmf )
64- {
65- RecognizeResult = speechResult ;
66- }
55+ RecognizeResult = recognizeResult ;
6756 }
6857
6958 /// <summary> Initializes a new instance of RecognizeCompletedEvent. </summary>
@@ -118,5 +107,69 @@ public static RecognizeCompleted Deserialize(string content)
118107
119108 return new RecognizeCompleted ( parsedRecognizeCompleted ) ;
120109 }
110+
111+ /// <summary>
112+ /// Serialize <see cref="RecognizeCompleted"/> event.
113+ /// </summary>
114+ /// <returns>The serialized json string.</returns>
115+ public string Serialize ( )
116+ {
117+ string jsonValue = "" ;
118+
119+ var options = new JsonWriterOptions
120+ {
121+ Indented = true
122+ } ;
123+
124+ JsonConverter jsonConverter = new EquatableEnumJsonConverter < CallMediaRecognitionType > ( ) ;
125+ var recognitionTypeOption = new JsonSerializerOptions ( )
126+ {
127+ Converters = { jsonConverter } ,
128+ Encoder = System . Text . Encodings . Web . JavaScriptEncoder . UnsafeRelaxedJsonEscaping
129+ } ;
130+
131+ using var stream = new MemoryStream ( ) ;
132+ using var writer = new Utf8JsonWriter ( stream , options ) ;
133+ JsonSerializerOptions jsonSeializerOptionForObject = new JsonSerializerOptions ( )
134+ {
135+ PropertyNamingPolicy = JsonNamingPolicy . CamelCase ,
136+ } ;
137+ jsonSeializerOptionForObject . Encoder = System . Text . Encodings . Web . JavaScriptEncoder . UnsafeRelaxedJsonEscaping ;
138+ writer . WriteStartObject ( ) ;
139+ writer . WriteString ( "callConnectionId" , CallConnectionId ) ;
140+ writer . WriteString ( "serverCallId" , ServerCallId ) ;
141+ writer . WriteString ( "correlationId" , CorrelationId ) ;
142+ writer . WriteString ( "operationContext" , OperationContext ) ;
143+ writer . WritePropertyName ( "resultInformation" ) ;
144+ JsonSerializer . Serialize ( writer , ResultInformation , jsonSeializerOptionForObject ) ;
145+ writer . WritePropertyName ( "recognitionType" ) ;
146+ JsonSerializer . Serialize ( writer , RecognitionType , recognitionTypeOption ) ;
147+
148+ if ( RecognitionType == CallMediaRecognitionType . Dtmf )
149+ {
150+ DtmfResult dtmfResult = ( DtmfResult ) RecognizeResult ;
151+ writer . WritePropertyName ( "dtmfResult" ) ;
152+ JsonSerializer . Serialize ( writer , dtmfResult , jsonSeializerOptionForObject ) ;
153+ }
154+ else if ( RecognitionType == CallMediaRecognitionType . Choices )
155+ {
156+ ChoiceResult choiceResult = ( ChoiceResult ) RecognizeResult ;
157+ writer . WritePropertyName ( "choiceResult" ) ;
158+ JsonSerializer . Serialize ( writer , choiceResult , jsonSeializerOptionForObject ) ;
159+ }
160+ else if ( RecognitionType == CallMediaRecognitionType . Speech )
161+ {
162+ SpeechResult speechResult = ( SpeechResult ) RecognizeResult ;
163+ writer . WritePropertyName ( "speechResult" ) ;
164+ JsonSerializer . Serialize ( writer , speechResult , jsonSeializerOptionForObject ) ;
165+ }
166+
167+ writer . WriteEndObject ( ) ;
168+ writer . Flush ( ) ;
169+
170+ jsonValue = Encoding . UTF8 . GetString ( stream . ToArray ( ) ) ;
171+
172+ return jsonValue ;
173+ }
121174 }
122175}
0 commit comments