Update README.md with comprehensive documentation and cleanup test files

- Added Discord & Slack notifications section with configuration guide
- Documented multiple phone numbers per workflow feature
- Updated version to 2.1.0 with full changelog
- Enhanced configuration sections for new features
- Added database structure documentation for twp_workflow_phones table
- Removed obsolete test files (test-sdk.php, test-capabilities.php, test-ajax-response.php)
- Updated plugin header with new version and repository URL

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-08-13 11:24:29 -07:00
parent 534d343526
commit bef2259943
5 changed files with 56 additions and 149 deletions

View File

@@ -81,6 +81,14 @@ This plugin **requires** the Twilio PHP SDK v8.7.0 to function. The plugin will
- **Command System**: Text commands to manage availability
- **SMS Logging**: Complete history of all SMS interactions
### 🔔 Discord & Slack Notifications
- **Real-time Alerts**: Instant notifications to Discord channels and Slack workspaces
- **Multiple Event Types**: Incoming calls, queue timeouts, and missed calls
- **Rich Formatting**: Structured messages with caller info, queue details, and timestamps
- **Webhook Integration**: Simple configuration with webhook URLs
- **Configurable Options**: Enable/disable specific notification types
- **Automatic Monitoring**: Background checks for queue timeout situations
### 📊 Real-time Dashboard
- **Queue Monitor**: Live view of waiting calls
- **Agent Status**: Track agent availability
@@ -92,9 +100,10 @@ This plugin **requires** the Twilio PHP SDK v8.7.0 to function. The plugin will
- **Voicemail Transcription**: Automatic speech-to-text
- **Callback System**: Offer callbacks instead of long holds
- **Outbound Calling**: Click-to-call with proper caller ID
- **Multiple Phone Numbers**: Support for multiple business lines
- **Multiple Phone Numbers**: Support for multiple business lines per workflow
- **Agent Phone Management**: Store and validate agent phone numbers
- **Duplicate Prevention**: Ensures unique phone numbers per agent
- **Enhanced Notifications**: Discord and Slack integration for real-time alerts
## Recent Updates
@@ -119,6 +128,19 @@ This plugin **requires** the Twilio PHP SDK v8.7.0 to function. The plugin will
- **Queue Selection**: Proper queue routing based on digit selection
- **Voice Selection**: Fixed voice dropdown persistence issues
### Multiple Phone Numbers Support
- **Workflow Enhancement**: Workflows can now be assigned to multiple phone numbers
- **Junction Table**: New `twp_workflow_phones` table for many-to-many relationships
- **Backward Compatibility**: Existing single-number workflows continue to work
- **Validation Fixes**: Proper validation for multiple phone number selections
### Discord & Slack Notifications
- **Real-time Integration**: Instant notifications to Discord channels and Slack workspaces
- **Event Monitoring**: Automated tracking of incoming calls, queue timeouts, and missed calls
- **Rich Message Format**: Structured notifications with caller details, queue info, and timestamps
- **Configurable Settings**: Toggle notification types and set custom webhook URLs
- **Background Processing**: Cron-based monitoring for queue timeout alerts
## How It Works
### Call Flow
@@ -168,13 +190,13 @@ This plugin **requires** the Twilio PHP SDK v8.7.0 to function. The plugin will
2. **In WordPress Admin**:
- Go to **Twilio** → **Phone Numbers**
- Verify numbers are synchronized
- Assign workflows to numbers
- Assign workflows to numbers (multiple numbers per workflow supported)
### Creating Workflows
1. **Navigate to** Twilio → Workflows
2. **Create New Workflow**:
- Name your workflow
- Select phone number to assign
- Select phone numbers to assign (multiple selection supported)
- Add steps using the builder
3. **Configure Steps**:
@@ -218,6 +240,24 @@ This plugin **requires** the Twilio PHP SDK v8.7.0 to function. The plugin will
4. **Configure Call Mode**: Browser or cell phone
5. **Train Agents** on SMS commands and browser phone
### Discord & Slack Setup
1. **Discord Configuration**:
- Create a webhook URL in your Discord server settings
- Navigate to **Twilio** → **Settings** → **Notifications**
- Paste Discord webhook URL
- Enable desired notification types
2. **Slack Configuration**:
- Create a webhook URL in your Slack workspace
- Navigate to **Twilio** → **Settings** → **Notifications**
- Paste Slack webhook URL
- Configure notification preferences
3. **Notification Types**:
- **Incoming Calls**: Alert when calls enter queues
- **Queue Timeouts**: Alert when calls wait too long (configurable threshold)
- **Missed Calls**: Alert when calls are abandoned or timeout
## Voice Configuration
### ElevenLabs Integration
@@ -296,6 +336,7 @@ The plugin creates these tables:
- `twp_call_queues` - Queue configurations (uses notification_number)
- `twp_queued_calls` - Active calls in queues
- `twp_workflows` - Call flow definitions with voice persistence
- `twp_workflow_phones` - Junction table for multiple phone numbers per workflow
- `twp_call_log` - Complete call history
- `twp_sms_log` - SMS message tracking
- `twp_voicemails` - Recordings and transcriptions
@@ -338,7 +379,15 @@ All webhooks are REST API endpoints under `/wp-json/twilio-webhook/v1/`:
## Version History
### v2.0.0 (Current)
### v2.1.0 (Current)
- **Multiple Phone Numbers**: Workflows can now handle multiple phone numbers
- **Discord & Slack Integration**: Real-time notifications for call events
- **Enhanced Monitoring**: Automated queue timeout tracking and alerts
- **Notification System**: Configurable webhook-based notifications
- **Background Processing**: Cron jobs for timeout monitoring
- **Database Enhancements**: New junction table for phone number relationships
### v2.0.0
- Upgraded to Twilio Voice SDK v2 for browser phone
- Fixed queue notification_number field naming
- Enhanced voice selection persistence

View File

@@ -1,34 +0,0 @@
<?php
/**
* Test what the AJAX method actually returns
*/
// Load WordPress
$wp_load_path = dirname(dirname(dirname(dirname(__FILE__)))) . '/wp-load.php';
require_once $wp_load_path;
// Load the plugin
require_once __DIR__ . '/includes/class-twp-twilio-api.php';
// Create API instance
$api = new TWP_Twilio_API();
// Get phone numbers
$response = $api->get_phone_numbers();
echo "API Response:\n";
echo "=============\n";
print_r($response);
if ($response['success'] && !empty($response['data']['incoming_phone_numbers'])) {
echo "\nFirst phone number data:\n";
echo "========================\n";
$first = $response['data']['incoming_phone_numbers'][0];
foreach ($first as $key => $value) {
if (is_array($value)) {
echo "$key: " . json_encode($value) . "\n";
} else {
echo "$key: $value\n";
}
}
}

View File

@@ -1,37 +0,0 @@
<?php
/**
* Test script to check PhoneNumberCapabilities methods
*/
// Load the autoloader
require_once __DIR__ . '/vendor/autoload.php';
// Create a mock capabilities object to test available methods
echo "Testing PhoneNumberCapabilities methods:\n";
echo "========================================\n";
// We'll check what methods are available
$reflection = new ReflectionClass('Twilio\Base\PhoneNumberCapabilities');
$methods = $reflection->getMethods(ReflectionMethod::IS_PUBLIC);
echo "Public methods available:\n";
foreach ($methods as $method) {
if (!$method->isConstructor() && !$method->isDestructor()) {
echo "- " . $method->getName() . "()\n";
}
}
echo "\nProperties:\n";
$properties = $reflection->getProperties();
foreach ($properties as $property) {
echo "- " . $property->getName() . " (" . ($property->isPublic() ? 'public' : ($property->isProtected() ? 'protected' : 'private')) . ")\n";
}
// Check if we can access via array notation
echo "\nTesting array access:\n";
try {
// This won't work, but let's see what happens
echo "ArrayAccess interface: " . (in_array('ArrayAccess', class_implements('Twilio\Base\PhoneNumberCapabilities')) ? 'YES' : 'NO') . "\n";
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
}

View File

@@ -1,71 +0,0 @@
<?php
/**
* Simple test script to verify Twilio SDK installation
* Run this from command line: php test-sdk.php
*/
echo "Twilio SDK Installation Test\n";
echo "===========================\n\n";
// Check if autoloader exists
$autoloader = __DIR__ . '/vendor/autoload.php';
echo "1. Checking autoloader...\n";
echo " Path: $autoloader\n";
if (!file_exists($autoloader)) {
echo " ❌ FAIL: Autoloader not found\n";
echo " Please run: ./install-twilio-sdk.sh\n";
exit(1);
}
echo " ✅ OK: Autoloader exists\n\n";
// Load autoloader
echo "2. Loading autoloader...\n";
require_once $autoloader;
echo " ✅ OK: Autoloader loaded\n\n";
// Check for Twilio classes
echo "3. Checking Twilio classes...\n";
$classes_to_check = [
'Twilio\Rest\Client',
'Twilio\TwiML\VoiceResponse',
'Twilio\Exceptions\TwilioException',
'Twilio\Security\RequestValidator'
];
$all_good = true;
foreach ($classes_to_check as $class) {
if (class_exists($class)) {
echo " ✅ OK: $class\n";
} else {
echo " ❌ FAIL: $class not found\n";
$all_good = false;
}
}
echo "\n";
if ($all_good) {
echo "🎉 SUCCESS: Twilio SDK is properly installed!\n";
echo "\nYou can now use the WordPress plugin.\n";
echo "Don't forget to configure your Twilio credentials in WordPress admin.\n";
} else {
echo "❌ FAILURE: SDK installation incomplete\n";
echo "\nPlease run: ./install-twilio-sdk.sh\n";
exit(1);
}
// Try to create a simple TwiML response
echo "\n4. Testing TwiML generation...\n";
try {
$response = new \Twilio\TwiML\VoiceResponse();
$response->say('Hello from Twilio SDK test!');
echo " ✅ OK: TwiML generation works\n";
echo " Generated: " . substr(str_replace(["\n", "\r"], '', $response->asXML()), 0, 100) . "...\n";
} catch (Exception $e) {
echo " ❌ FAIL: TwiML generation failed: " . $e->getMessage() . "\n";
}
echo "\nInstallation test complete!\n";

View File

@@ -1,10 +1,10 @@
<?php
/**
* Plugin Name: Twilio WP Plugin
* Plugin URI: https://example.com/twilio-wp-plugin
* Plugin URI: https://repo.anhonesthost.net/wp-plugins/twilio-wp-plugin
* Description: WordPress plugin for Twilio integration with phone scheduling, call forwarding, queue management, and Eleven Labs TTS
* Version: 1.0.0
* Author: Your Name
* Version: 2.1.0
* Author: Josh Knapp
* License: GPL v2 or later
* Text Domain: twilio-wp-plugin
*/