- Created `quick-replies.blade.php` for managing quick replies. - Added `settings.blade.php` for admin settings management. - Implemented `ticket-show.blade.php` to display ticket details. - Introduced `timeline-card.blade.php` component for displaying timeline information. Enhance quick reply management functionality - Developed `quick-reply-manager.blade.php` for creating and editing quick replies. - Integrated Livewire for dynamic interaction and validation. Implement settings page for AI configuration - Created `settings-page.blade.php` for managing AI settings, including prompts and provider instances. - Added functionality for managing models and embeddings. Add ticket show functionality with real-time updates - Implemented ticket details view with processing status and tool call logs. - Added support for displaying article suggestions and error messages. Create unit tests for AI classifier and domain info tool - Added `AIClassifierServiceTest.php` to validate AI classifier functionality. - Implemented `DomainInfoToolTest.php` for domain parameter validation. - Created `OxxaClientTest.php` to test API interactions and password hashing.
38 lines
1.1 KiB
PHP
38 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
use App\Exceptions\OllamaUnavailableException;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\StoreTicketRequest;
|
|
use App\Services\TicketIngestionService;
|
|
use Illuminate\Http\JsonResponse;
|
|
|
|
class TicketController extends Controller
|
|
{
|
|
public function __construct(
|
|
private readonly TicketIngestionService $ticketIngestionService,
|
|
) {}
|
|
|
|
public function store(StoreTicketRequest $request): JsonResponse
|
|
{
|
|
try {
|
|
$ingested = $this->ticketIngestionService->ingest(
|
|
$request->string('message')->toString(),
|
|
$request->validated('api_credentials')
|
|
);
|
|
} catch (OllamaUnavailableException $e) {
|
|
return response()->json([
|
|
'message' => 'LLM provider is unavailable. Ticket kon niet verwerkt worden.',
|
|
'reason' => $e->getMessage(),
|
|
], 503);
|
|
}
|
|
|
|
return response()->json([
|
|
'ticket_id' => $ingested['ticket']->id,
|
|
'status' => 'queued',
|
|
'message' => 'Ticket ontvangen en in verwerking gezet.',
|
|
], 202);
|
|
}
|
|
}
|