@@ -127,7 +127,6 @@ export function RealtimeChat({
127
127
128
128
const handleResponse = async ( response : RTResponse ) => {
129
129
for await ( const item of response ) {
130
- console . log ( "handleResponse" , item ) ;
131
130
if ( item . type === "message" && item . role === "assistant" ) {
132
131
const botMessage = createMessage ( {
133
132
role : item . role ,
@@ -156,12 +155,16 @@ export function RealtimeChat({
156
155
} ;
157
156
await Promise . all ( [ textTask ( ) , audioTask ( ) ] ) ;
158
157
}
158
+ // update message.content
159
+ chatStore . updateTargetSession ( ( session ) => {
160
+ session . messages = session . messages . concat ( ) ;
161
+ } ) ;
159
162
}
160
163
// upload audio get audio_url
161
164
const blob = audioHandlerRef . current ?. savePlayFile ( ) ;
162
165
uploadImage ( blob ) . then ( ( audio_url ) => {
163
166
botMessage . audio_url = audio_url ;
164
- botMessage . date = new Date ( ) . toLocaleString ( ) ;
167
+ // botMessage.date = new Date().toLocaleString();
165
168
// update text and audio_url
166
169
chatStore . updateTargetSession ( ( session ) => {
167
170
session . messages = session . messages . concat ( ) ;
@@ -174,16 +177,28 @@ export function RealtimeChat({
174
177
const handleInputAudio = async ( item : RTInputAudioItem ) => {
175
178
audioHandlerRef . current ?. stopStreamingPlayback ( ) ;
176
179
await item . waitForCompletion ( ) ;
177
- const { audioStartMillis, audioEndMillis } = item ;
178
- // TODO, save input audio_url, and update session
179
- console . log ( "handleInputAudio" , item , audioStartMillis , audioEndMillis ) ;
180
- const userMessage = createMessage ( {
181
- role : "user" ,
182
- content : item . transcription ,
183
- } ) ;
184
- chatStore . updateTargetSession ( session , ( session ) => {
185
- session . messages = session . messages . concat ( [ userMessage ] ) ;
186
- } ) ;
180
+ if ( item . transcription ) {
181
+ const userMessage = createMessage ( {
182
+ role : "user" ,
183
+ content : item . transcription ,
184
+ } ) ;
185
+ chatStore . updateTargetSession ( session , ( session ) => {
186
+ session . messages = session . messages . concat ( [ userMessage ] ) ;
187
+ } ) ;
188
+ // save input audio_url, and update session
189
+ const { audioStartMillis, audioEndMillis } = item ;
190
+ // upload audio get audio_url
191
+ const blob = audioHandlerRef . current ?. saveRecordFile (
192
+ audioStartMillis ,
193
+ audioEndMillis ,
194
+ ) ;
195
+ uploadImage ( blob ) . then ( ( audio_url ) => {
196
+ userMessage . audio_url = audio_url ;
197
+ chatStore . updateTargetSession ( ( session ) => {
198
+ session . messages = session . messages . concat ( ) ;
199
+ } ) ;
200
+ } ) ;
201
+ }
187
202
} ;
188
203
189
204
const toggleRecording = async ( ) => {
0 commit comments