feat: add queue and storage configuration options
- Add queue configuration: - EVOLUTION_QUEUE_ENABLED - enable/disable queue processing - EVOLUTION_QUEUE_CONNECTION - custom queue connection - EVOLUTION_QUEUE_NAME - custom queue name (default: 'default') - Add storage configuration: - EVOLUTION_STORE_WEBHOOKS - enable/disable webhook storage (default: true) - EVOLUTION_STORE_MESSAGES - enable/disable message storage (default: true) - Update WebhookController to use storage.webhooks config - Update ProcessWebhookJob to use storage.messages config - Update README with new configuration options
This commit is contained in:
26
README.md
26
README.md
@@ -126,8 +126,34 @@ EVOLUTION_SYNC_HISTORY=false
|
||||
EVOLUTION_MEDIA_DISK=public
|
||||
EVOLUTION_MEDIA_DIRECTORY=whatsapp-media
|
||||
EVOLUTION_MEDIA_MAX_SIZE=16384
|
||||
|
||||
# Queue Configuration
|
||||
EVOLUTION_QUEUE_ENABLED=true
|
||||
EVOLUTION_QUEUE_CONNECTION=redis
|
||||
EVOLUTION_QUEUE_NAME=whatsapp
|
||||
|
||||
# Storage (save webhooks and messages to database)
|
||||
EVOLUTION_STORE_WEBHOOKS=true
|
||||
EVOLUTION_STORE_MESSAGES=true
|
||||
```
|
||||
|
||||
### Queue Settings
|
||||
|
||||
| Variable | Default | Description |
|
||||
|----------|---------|-------------|
|
||||
| `EVOLUTION_QUEUE_ENABLED` | `true` | Enable/disable queue processing |
|
||||
| `EVOLUTION_QUEUE_CONNECTION` | `null` | Queue connection (null = default) |
|
||||
| `EVOLUTION_QUEUE_NAME` | `default` | Queue name for processing webhooks |
|
||||
|
||||
### Storage Settings
|
||||
|
||||
| Variable | Default | Description |
|
||||
|----------|---------|-------------|
|
||||
| `EVOLUTION_STORE_WEBHOOKS` | `true` | Save webhook events to database |
|
||||
| `EVOLUTION_STORE_MESSAGES` | `true` | Save messages to database |
|
||||
|
||||
> **Note:** Disabling storage improves performance but you lose history and the Message/Webhook resources will be empty.
|
||||
|
||||
### Multi-Tenancy Settings
|
||||
|
||||
```env
|
||||
|
||||
@@ -98,11 +98,29 @@ return [
|
||||
|--------------------------------------------------------------------------
|
||||
| Queue Configuration
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Configure which queue connection and queue name to use for processing
|
||||
| webhooks and sending messages. Set to null to use the default queue.
|
||||
|
|
||||
*/
|
||||
'queue' => [
|
||||
'enabled' => env('EVOLUTION_QUEUE_ENABLED', true),
|
||||
'connection' => env('EVOLUTION_QUEUE_CONNECTION'),
|
||||
'messages' => env('EVOLUTION_QUEUE_MESSAGES', 'whatsapp'),
|
||||
'webhooks' => env('EVOLUTION_QUEUE_WEBHOOKS', 'default'),
|
||||
'name' => env('EVOLUTION_QUEUE_NAME', 'default'),
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Storage Configuration
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Configure whether to store webhook events and messages in the database.
|
||||
| Disabling these can improve performance but you'll lose history.
|
||||
|
|
||||
*/
|
||||
'storage' => [
|
||||
'webhooks' => env('EVOLUTION_STORE_WEBHOOKS', true),
|
||||
'messages' => env('EVOLUTION_STORE_MESSAGES', true),
|
||||
],
|
||||
|
||||
/*
|
||||
|
||||
@@ -32,9 +32,9 @@ class WebhookController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
// Store webhook in database
|
||||
// Store webhook in database if enabled
|
||||
$webhook = null;
|
||||
if (config('filament-evolution.webhook.store_logs', true)) {
|
||||
if (config('filament-evolution.storage.webhooks', true)) {
|
||||
$webhook = $this->storeWebhook($event, $payload);
|
||||
}
|
||||
|
||||
|
||||
@@ -130,33 +130,40 @@ class ProcessWebhookJob implements ShouldQueue
|
||||
{
|
||||
$data = MessageUpsertData::fromWebhook($this->payload);
|
||||
|
||||
// Extract remoteJid from payload
|
||||
$messageData = $this->payload['data'] ?? $this->payload;
|
||||
$key = $messageData['key'] ?? [];
|
||||
$remoteJid = $key['remoteJid'] ?? $data->message->phone;
|
||||
// Store message in database if enabled
|
||||
if (config('filament-evolution.storage.messages', true)) {
|
||||
// Extract remoteJid from payload
|
||||
$messageData = $this->payload['data'] ?? $this->payload;
|
||||
$key = $messageData['key'] ?? [];
|
||||
$remoteJid = $key['remoteJid'] ?? $data->message->phone;
|
||||
|
||||
// Store message in database
|
||||
$instance->messages()->create([
|
||||
'message_id' => $data->message->messageId,
|
||||
'remote_jid' => $remoteJid,
|
||||
'phone' => $data->message->phone,
|
||||
'direction' => $data->message->direction,
|
||||
'type' => $data->message->type,
|
||||
'content' => json_encode([
|
||||
'text' => $data->message->text,
|
||||
'media_url' => $data->message->mediaUrl,
|
||||
'media_caption' => $data->message->mediaCaption,
|
||||
'latitude' => $data->message->latitude,
|
||||
'longitude' => $data->message->longitude,
|
||||
]),
|
||||
'status' => $data->message->status,
|
||||
]);
|
||||
$instance->messages()->create([
|
||||
'message_id' => $data->message->messageId,
|
||||
'remote_jid' => $remoteJid,
|
||||
'phone' => $data->message->phone,
|
||||
'direction' => $data->message->direction,
|
||||
'type' => $data->message->type,
|
||||
'content' => json_encode([
|
||||
'text' => $data->message->text,
|
||||
'media_url' => $data->message->mediaUrl,
|
||||
'media_caption' => $data->message->mediaCaption,
|
||||
'latitude' => $data->message->latitude,
|
||||
'longitude' => $data->message->longitude,
|
||||
]),
|
||||
'status' => $data->message->status,
|
||||
]);
|
||||
}
|
||||
|
||||
event(new MessageReceived($instance, $data->message));
|
||||
}
|
||||
|
||||
protected function handleMessageUpdate(WhatsappInstance $instance): void
|
||||
{
|
||||
// Only update if message storage is enabled
|
||||
if (! config('filament-evolution.storage.messages', true)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$messageData = $this->payload['data'] ?? $this->payload;
|
||||
$key = $messageData['key'] ?? [];
|
||||
$update = $messageData['update'] ?? [];
|
||||
|
||||
Reference in New Issue
Block a user