13
13
using SmartTalk . Core . Constants ;
14
14
using Microsoft . AspNetCore . Http ;
15
15
using OpenAI . Chat ;
16
- using SmartTalk . Core . Services . Agents ;
17
16
using SmartTalk . Core . Services . Http ;
18
17
using SmartTalk . Core . Services . Http . Clients ;
19
18
using SmartTalk . Messages . Constants ;
29
28
using SmartTalk . Messages . Enums . AiSpeechAssistant ;
30
29
using SmartTalk . Messages . Events . AiSpeechAssistant ;
31
30
using SmartTalk . Messages . Commands . AiSpeechAssistant ;
32
- using SmartTalk . Messages . Commands . PhoneOrder ;
33
- using SmartTalk . Messages . Dto . Agent ;
34
31
using SmartTalk . Messages . Enums . Agent ;
35
32
using SmartTalk . Messages . Enums . PhoneOrder ;
36
33
using JsonSerializer = System . Text . Json . JsonSerializer ;
@@ -157,6 +154,8 @@ public async Task ReceivePhoneRecordingStatusCallbackAsync(ReceivePhoneRecording
157
154
158
155
var ( record , agent , aiSpeechAssistant ) = await _phoneOrderDataProvider . GetRecordWithAgentAndAssistantAsync ( command . CallSid , cancellationToken ) . ConfigureAwait ( false ) ;
159
156
157
+ var knowledge = await _phoneOrderDataProvider . GetKnowledgePromptByAssistantIdAsync ( aiSpeechAssistant . Id , cancellationToken ) . ConfigureAwait ( false ) ;
158
+
160
159
Log . Information ( "Get phone order record: {@record}" , record ) ;
161
160
162
161
record . Url = command . RecordingUrl ;
@@ -167,9 +166,9 @@ public async Task ReceivePhoneRecordingStatusCallbackAsync(ReceivePhoneRecording
167
166
var audioData = BinaryData . FromBytes ( audioFileRawBytes ) ;
168
167
List < ChatMessage > messages =
169
168
[
170
- new SystemChatMessage ( string . IsNullOrEmpty ( aiSpeechAssistant ? . CustomRecordAnalyzePrompt )
169
+ new SystemChatMessage ( string . IsNullOrEmpty ( knowledge ? . Prompt )
171
170
? "你是一名電話錄音的分析員,通過聽取錄音內容和語氣情緒作出精確分析,冩出一份分析報告。\n \n 分析報告的格式:交談主題:xxx\n \n 內容摘要:xxx \n \n 客人情感與情緒: xxx \n \n 待辦事件: \n 1.xxx\n 2.xxx \n \n 客人下單內容(如果沒有則忽略):1. 牛肉(1箱)\n 2.雞腿肉(1箱)"
172
- : aiSpeechAssistant . CustomRecordAnalyzePrompt ) ,
171
+ : knowledge . Prompt ) ,
173
172
new UserChatMessage ( ChatMessageContentPart . CreateInputAudioPart ( audioData , ChatInputAudioFormat . Wav ) ) ,
174
173
new UserChatMessage ( "幫我根據錄音生成分析報告:" )
175
174
] ;
@@ -237,7 +236,7 @@ private async Task<WebSocket> ConnectOpenAiRealTimeSocketAsync(Domain.AISpeechAs
237
236
openAiWebSocket . Options . SetRequestHeader ( "Authorization" , GetAuthorizationHeader ( assistant ) ) ;
238
237
openAiWebSocket . Options . SetRequestHeader ( "OpenAI-Beta" , "realtime=v1" ) ;
239
238
240
- var url = string . IsNullOrEmpty ( assistant . Url ) ? AiSpeechAssistantStore . DefaultUrl : assistant . Url ;
239
+ var url = string . IsNullOrEmpty ( assistant . ModelUrl ) ? AiSpeechAssistantStore . DefaultUrl : assistant . ModelUrl ;
241
240
242
241
await openAiWebSocket . ConnectAsync ( new Uri ( url ) , cancellationToken ) . ConfigureAwait ( false ) ;
243
242
@@ -248,11 +247,11 @@ private async Task<WebSocket> ConnectOpenAiRealTimeSocketAsync(Domain.AISpeechAs
248
247
249
248
private string GetAuthorizationHeader ( Domain . AISpeechAssistant . AiSpeechAssistant assistant )
250
249
{
251
- return assistant . Provider switch
250
+ return assistant . ModelProvider switch
252
251
{
253
252
AiSpeechAssistantProvider . OpenAi => $ "Bearer { _openAiSettings . ApiKey } ",
254
253
AiSpeechAssistantProvider . ZhiPuAi => $ "Bearer { _zhiPuAiSettings . ApiKey } ",
255
- _ => throw new NotSupportedException ( nameof ( assistant . Provider ) )
254
+ _ => throw new NotSupportedException ( nameof ( assistant . ModelProvider ) )
256
255
} ;
257
256
}
258
257
@@ -739,7 +738,7 @@ private async Task SendSessionUpdateAsync(WebSocket openAiWebSocket, Domain.AISp
739
738
turn_detection = new { type = "server_vad" } ,
740
739
input_audio_format = "g711_ulaw" ,
741
740
output_audio_format = "g711_ulaw" ,
742
- voice = string . IsNullOrEmpty ( assistant . Voice ) ? "alloy" : assistant . Voice ,
741
+ voice = string . IsNullOrEmpty ( assistant . ModelVoice ) ? "alloy" : assistant . ModelVoice ,
743
742
instructions = prompt ,
744
743
modalities = new [ ] { "text" , "audio" } ,
745
744
temperature = 0.8 ,
0 commit comments