@@ -330,26 +330,58 @@ private function handleGroupChatRequest(array $data, Request $request): void
330330 ];
331331 broadcast (new RoomMessageEvent ($ generationStatus ));
332332
333+ $ data ['payload ' ]['broadcast ' ] = true ; // Ensure broadcast is enabled for group chat requests
334+ $ data ['payload ' ]['stream ' ] = false ; // Ensure streaming is disabled for group chat requests
335+ try {
336+ $ agentRequest = $ this ->aiService ->getAgentRequestFactory ()->createFromPayload ($ data ['payload ' ]);
337+ } catch (\Throwable $ e ) {
338+ $ this ->logger ->error ('Error creating agent request from payload ' , ['exception ' => $ e ]);
339+ try {
340+ $ model = $ this ->aiService ->getModels ()->findOneOrFail ($ data ['payload ' ]['model ' ]);
341+ RoomAiWritingEndedEvent::dispatch ($ room , $ model );
342+ } catch (\Throwable ) {
343+ }
344+ abort (400 , 'Invalid payload for agent request. ' );
345+ }
346+
333347 // Process the request
334- $ response = $ this ->aiService ->sendRequestToAgent ($ data ['payload ' ]);
348+ try {
349+ $ response = $ this ->aiService ->sendRequestToAgent ($ agentRequest );
350+ } catch (\Throwable $ e ) {
351+ $ this ->logger ->error ('Error sending request to agent ' , ['exception ' => $ e ]);
352+ $ response = new ChatResponse (
353+ content: 'NT: Sorry, but there was an error processing your request. Please try again later. ' ,
354+ );
355+ }
356+
357+ if (!$ response instanceof ChatResponse) {
358+ $ this ->logger ->error ('Unexpected response type from agent ' , ['response ' => $ response ]);
359+ try {
360+ $ model = $ this ->aiService ->getModels ()->findOneOrFail ($ data ['payload ' ]['model ' ]);
361+ RoomAiWritingEndedEvent::dispatch ($ room , $ model );
362+ } catch (\Throwable ) {
363+ }
364+ abort (500 , 'Unexpected response type from agent. ' );
365+ }
335366
336367 // Record usage
337- $ this ->usageAnalyzer ->submitUsageRecord (
338- $ response ->usage ,
339- 'group ' ,
340- $ room ->id
341- );
368+ // $this->usageAnalyzer->submitUsageRecord(
369+ // $response->usage,
370+ // 'group',
371+ // $room->id
372+ // );
342373
343374 // @todo this was $crypto = new SymmetricCrypto();
344375 // $encryptedData = $crypto->encrypt($response->content['text'],
345376 // base64_decode($data['key']));
346377 $ content = $ response ->content ;
347- if (array_key_exists ('groundingMetadata ' , $ response ->content )) {
348- $ content = json_encode ([
349- 'text ' => $ response ->content ['text ' ],
350- 'groundingMetadata ' => $ response ->content ['groundingMetadata ' ],
351- ]);
352- }
378+ // $content = $response->content;
379+ // if (array_key_exists('groundingMetadata', $response->content)) {
380+ // $content = json_encode([
381+ // 'text' => $response->content['text'],
382+ // 'groundingMetadata' => $response->content['groundingMetadata'],
383+ // ]);
384+ // }
353385// \Log::debug($content);
354386 $ encryptedData = (new SymmetricCrypto ())->encrypt (json_encode ($ content ), base64_decode ($ data ['key ' ]));
355387
0 commit comments