MessageService.php 757 B

1234567891011121314151617181920212223242526272829
  1. <?php
  2. namespace App\Services;
  3. use App\Enums\Status;
  4. use App\Jobs\AskQuestionJob;
  5. use App\Models\Chat;
  6. use App\Models\Message;
  7. use Illuminate\Support\Facades\Bus;
  8. class MessageService
  9. {
  10. /**
  11. * @throws \Throwable
  12. */
  13. public function create(Chat $chat, string $content, string $sender = 'user'): void
  14. {
  15. $message = new Message(['from' => $sender, 'content' => $content]);
  16. $chat->messages()->save($message);
  17. $answer = $chat->messages()->create(['from' => 'assistant', 'status' => Status::Loading]);
  18. $batch = Bus::batch([new AskQuestionJob($answer, $content)])
  19. ->name('Ask Model')
  20. ->onQueue('primary')
  21. ->dispatch();
  22. $chat->batches()->attach($batch->id);
  23. }
  24. }