1- using BotSharp . Abstraction . Options ;
21using BotSharp . Plugin . OpenAI . Models . Realtime ;
32using BotSharp . Plugin . OpenAI . Providers . Realtime . Session ;
4- using Newtonsoft . Json . Linq ;
53using OpenAI . Chat ;
6- using System . Collections . Concurrent ;
7- using System . Threading . Channels ;
8- using static System . Runtime . InteropServices . JavaScript . JSType ;
4+ using System ;
95
106namespace BotSharp . Plugin . OpenAI . Providers . Realtime ;
117
@@ -25,9 +21,6 @@ public class RealTimeCompletionProvider : IRealTimeCompletion
2521 protected string _model = "gpt-4o-mini-realtime-preview" ;
2622 private RealtimeChatSession _session ;
2723
28- //private Channel<AudioMessage> _messageChannel;
29- //private ConcurrentDictionary<string, AudioMessage> _messageDic;
30-
3124 public RealTimeCompletionProvider (
3225 RealtimeModelSettings settings ,
3326 ILogger < RealTimeCompletionProvider > logger ,
@@ -54,13 +47,6 @@ public async Task Connect(
5447 var realtimeModelSettings = _services . GetRequiredService < RealtimeModelSettings > ( ) ;
5548 _model = realtimeModelSettings . Model ;
5649
57- //_messageDic = new();
58- //_messageChannel = Channel.CreateUnbounded<AudioMessage>(new UnboundedChannelOptions
59- //{
60- // SingleReader = true,
61- // SingleWriter = true
62- //});
63-
6450 if ( _session != null )
6551 {
6652 _session . Dispose ( ) ;
@@ -78,38 +64,6 @@ public async Task Connect(
7864 onConversationItemCreated ,
7965 onInputAudioTranscriptionCompleted ,
8066 onInterruptionDetected ) ;
81-
82- //_ = Task.Run(async () =>
83- //{
84- // await foreach (var item in _messageChannel.Reader.ReadAllAsync())
85- // {
86- // var start = DateTime.UtcNow;
87- // while (_messageDic.TryGetValue(item.ItemId, out var found) && !string.IsNullOrEmpty(found.Transcript))
88- // {
89- // if (found.Event == "conversation.item.input_audio_transcription.completed")
90- // {
91- // var message = await OnUserAudioTranscriptionCompleted(conn, found.ReceivedText);
92- // if (!string.IsNullOrEmpty(message.Content))
93- // {
94- // onInputAudioTranscriptionCompleted(message);
95- // }
96- // _messageDic.TryRemove(found.ItemId, out _);
97- // }
98- // else if (found.Event == "response.done")
99- // {
100- // var messages = await OnResponsedDone(conn, found.ReceivedText);
101- // onModelResponseDone(messages);
102- // _messageDic.TryRemove(found.ItemId, out _);
103- // }
104-
105- // if ((DateTime.UtcNow - start).TotalSeconds > 2)
106- // {
107- // _messageDic.TryRemove(found.ItemId, out _);
108- // start = DateTime.UtcNow;
109- // }
110- // }
111- // }
112- //});
11367 }
11468
11569 public async Task Disconnect ( )
@@ -241,16 +195,6 @@ private async Task ReceiveMessage(RealtimeHubConnection conn,
241195 {
242196 _logger . LogInformation ( $ "{ response . Type } : { receivedText } ") ;
243197
244- //var data = JsonSerializer.Deserialize<ResponseDone>(receivedText);
245- //var output = data.Body.Outputs.FirstOrDefault();
246-
247- //if (output != null && _messageDic.TryGetValue(output.Id, out var item))
248- //{
249- // item.Event = response.Type;
250- // item.ReceivedText = receivedText;
251- // item.Transcript = output.Content.FirstOrDefault()?.Transcript;
252- //}
253-
254198 var messages = await OnResponsedDone ( conn , receivedText ) ;
255199 onModelResponseDone ( messages ) ;
256200 }
@@ -259,32 +203,13 @@ private async Task ReceiveMessage(RealtimeHubConnection conn,
259203 _logger . LogInformation ( $ "{ response . Type } : { receivedText } ") ;
260204
261205 var data = JsonSerializer . Deserialize < ConversationItemCreated > ( receivedText ) ;
262- //_messageDic.TryAdd(data.Item.Id, new AudioMessage
263- //{
264- // ItemId = data.Item.Id,
265- // ReceivedText = receivedText
266- //});
267- //await _messageChannel.Writer.WriteAsync(new AudioMessage
268- //{
269- // ItemId = data.Item.Id,
270- // ReceivedText = receivedText
271- //});
272-
273206 await Task . Delay ( 500 ) ;
274207 onConversationItemCreated ( receivedText ) ;
275208 }
276209 else if ( response . Type == "conversation.item.input_audio_transcription.completed" )
277210 {
278211 _logger . LogInformation ( $ "{ response . Type } : { receivedText } ") ;
279212
280- //var data = JsonSerializer.Deserialize<ResponseAudioTranscript>(receivedText);
281- //if (_messageDic.TryGetValue(data.ItemId, out var item))
282- //{
283- // item.Event = response.Type;
284- // item.ReceivedText = receivedText;
285- // item.Transcript = data.Transcript;
286- //}
287-
288213 var message = await OnUserAudioTranscriptionCompleted ( conn , receivedText ) ;
289214 if ( ! string . IsNullOrEmpty ( message . Content ) )
290215 {
@@ -305,12 +230,9 @@ private async Task ReceiveMessage(RealtimeHubConnection conn,
305230 else if ( response . Type == "input_audio_buffer.committed" )
306231 {
307232 _logger . LogInformation ( $ "{ response . Type } : { receivedText } ") ;
308- await Task . Delay ( 500 ) ;
309233 }
310234 }
311235
312- //_messageChannel?.Writer.TryComplete();
313- //_messageChannel = null;
314236 _session . Dispose ( ) ;
315237 }
316238
0 commit comments