@@ -36,31 +36,43 @@ public async Task<bool> Execute(RoleDialogModel message)
36
36
var args = JsonSerializer . Deserialize < LlmContextIn > ( message . FunctionArgs , _options . JsonSerializerOptions ) ;
37
37
if ( args . PhoneNumber . Length != 12 || ! args . PhoneNumber . StartsWith ( "+1" , StringComparison . OrdinalIgnoreCase ) )
38
38
{
39
- _logger . LogError ( "Invalid phone number format: {phone}" , args . PhoneNumber ) ;
39
+ var error = $ "Invalid phone number format: { args . PhoneNumber } ";
40
+ _logger . LogError ( error ) ;
41
+ message . Content = error ;
40
42
return false ;
41
43
}
44
+
42
45
if ( string . IsNullOrWhiteSpace ( args . InitialMessage ) )
43
46
{
44
47
_logger . LogError ( "Initial message is empty." ) ;
48
+ message . Content = "There is an error when generating phone message." ;
45
49
return false ;
46
50
}
47
- var completion = CompletionProvider . GetAudioCompletion ( _services , "openai" , "tts-1" ) ;
51
+
48
52
var fileStorage = _services . GetRequiredService < IFileStorageService > ( ) ;
53
+ var sessionManager = _services . GetRequiredService < ITwilioSessionManager > ( ) ;
54
+ var convService = _services . GetRequiredService < IConversationService > ( ) ;
55
+ var conversationId = convService . ConversationId ;
56
+
57
+ // Generate audio
58
+ var completion = CompletionProvider . GetAudioCompletion ( _services , "openai" , "tts-1" ) ;
49
59
var data = await completion . GenerateAudioFromTextAsync ( args . InitialMessage ) ;
50
- var conversationId = Guid . NewGuid ( ) . ToString ( ) ;
51
60
var fileName = $ "intial.mp3";
52
61
fileStorage . SaveSpeechFile ( conversationId , fileName , data ) ;
53
- // TODO: Add initial message in the new conversation
54
- var sessionManager = _services . GetRequiredService < ITwilioSessionManager > ( ) ;
62
+
63
+ // Call phone number
55
64
await sessionManager . SetAssistantReplyAsync ( conversationId , 0 , new AssistantMessage
56
65
{
57
66
Content = args . InitialMessage ,
58
67
SpeechFileName = fileName
59
68
} ) ;
69
+
60
70
var call = await CallResource . CreateAsync (
61
71
url : new Uri ( $ "{ _twilioSetting . CallbackHost } /twilio/voice/init-call?conversationId={ conversationId } ") ,
62
72
to : new PhoneNumber ( args . PhoneNumber ) ,
63
73
from : new PhoneNumber ( _twilioSetting . PhoneNumber ) ) ;
74
+
75
+ message . Content = $ "The generated phone message: { args . InitialMessage } " ?? message . Content ;
64
76
message . StopCompletion = true ;
65
77
return true ;
66
78
}
0 commit comments