isapp / laravel-ai-spamdetector
Laravel wrapper for AI SpamDetector ā protect your contact forms from spam and bots using OpenAI GPT. Easy integration, smart filtering, and fully Laravel-native.
Requires
- isapp/ai-spamdetector: ^1.0
Requires (Dev)
- laravel/pint: *
- orchestra/testbench: ^10.3
- phpunit/phpunit: ^11.5
- vlucas/phpdotenv: ^5.6
README
Laravel wrapper for AI SpamDetector ā protect your contact forms from spam and bots using OpenAI GPT. This package provides seamless Laravel integration for intelligent spam filtering with minimal setup.
Features
- š§ AI-based spam detection using OpenAI GPT
- ā”ļø Lightweight and efficient
- š ļø Simple configuration with
.env
Installation
composer require your-vendor/laravel-ai-spamdetector
Configuration
You can configure the package in two ways:
1. Using .env
variables (recommended for simple setups)
Add the following to your .env
file:
AI_SPAMDETECTOR_OPENAI_API_KEY=your-openai-api-key AI_SPAMDETECTOR_OPENAI_ORGANIZATION=openai-organization-id AI_SPAMDETECTOR_OPENAI_PROJECT=your-openai-project-id # Optional AI_SPAMDETECTOR_OPENAI_BASE_URI=api.openai.com/v1 # Optional, defaults to OpenAI API AI_SPAMDETECTOR_OPENAI_MODEL=gpt-4 # Optional, default is gpt-4
š” If you already have
OPENAI_API_KEY
defined in your project, it will be used automatically ā no need to duplicate it. Available fallback variables:
OPENAI_API_KEY
OPENAI_ORGANIZATION
OPENAI_PROJECT
OPENAI_BASE_URI
OPENAI_MODEL
2. Publishing the config file
If you need more control, publish the configuration file:
php artisan vendor:publish --provider="Isapp\LaravelAiSpamdetector\SpamDetectorServiceProvider"
Usage
1. Dependency Injection
use Illuminate\Http\Request; use Isapp\AiSpamdetector\SpamDetector; public function index (Request $request, SpamDetector $spamDetector) { $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|max:255', 'message' => 'required|string|max:255', ]); $formData = new \Isapp\AiSpamdetector\FormData( name: $request->input('name'), email: $request->input('email'), message: $request->input('message'), userAgent: $request->header('User-Agent') ); $isNotSpam = $spamDetector->analyze($formData); if ($isNotSpam) { // Process the form submission } else { // Handle spam detection } }
2. Facade Usage
use Illuminate\Http\Request; use Isapp\LaravelAiSpamdetector\Facades\SpamDetector; public function index (Request $request) { $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|max:255', 'message' => 'required|string|max:255', ]); $formData = new \Isapp\AiSpamdetector\FormData( name: $request->input('name'), email: $request->input('email'), message: $request->input('message'), userAgent: $request->header('User-Agent') ); $isNotSpam = SpamDetector::analyze($formData); if ($isNotSpam) { // Process the form submission } else { // Handle spam detection } }
Contributing
Please, submit bugs or feature requests via the Github issues.
Pull requests are welcomed!
Thanks!
License
This project is open-sourced software licensed under the MIT License.
You are free to use, modify, and distribute it in your projects, as long as you comply with the terms of the license.
Maintained by ISAPP and ISAP OĆ.
Check out our software development services at isap.me.