# דף עיון מהיר עיון מהיר למפתחי WooAI Chatbot Pro. השאר זאת פתוח בזמן כתיבת קוד. > **למה זה קיים:** אחרי הפעם השלישית שמישהו שאל "איפה ה-hook הזה?", > עשיתי את זה. עדכן את זה כשאתה מוסיף דברים חדשים. – Roman — ## נקודות קצה REST API
# Base URL
/wp-json/woo-ai/v1/
# Chat
POST /chat/session # Create session
POST /chat/message # Send message
GET /chat/history/{session_id} # Get history
# Playbooks
GET /playbooks # List all
GET /playbooks/{id} # Get one
POST /playbooks # Create
PUT /playbooks/{id} # Update
DELETE /playbooks/{id} # Delete
# Settings
GET /settings # Get all
POST /settings # Update
# Analytics
GET /analytics/dashboard # Dashboard data
GET /analytics/conversations # Conversation stats
# Topics
GET /public/topics # Public (no auth)
GET /topics # Admin list
POST /topics # Create/update
— ## Hooks מרכזיים ### Actions
// AI Processing
do_action( 'wooai_before_ai_request', $provider, $messages );
do_action( 'wooai_after_ai_response', $response, $provider );
do_action( 'wooai_provider_fallback', $failed, $next, $error );
// Chat
do_action( 'wooai_session_started', $session_id, $user_id );
do_action( 'wooai_message_received', $message, $session_id );
do_action( 'wooai_message_sent', $response, $session_id );
// Playbook
do_action( 'wooai_playbook_started', $playbook_id, $session_id );
do_action( 'wooai_playbook_step_execute', $step, $state );
do_action( 'wooai_playbook_completed', $playbook_id, $session_id );
// Widget
do_action( 'wooai_before_widget_render' );
do_action( 'wooai_after_widget_render' );
### Filters
// AI
add_filter( 'wooai_ai_response', fn($r) => $r );
add_filter( 'wooai_system_prompt', fn($p) => $p );
add_filter( 'wooai_provider_priority', fn($p) => $p );
add_filter( 'wooai_max_tokens', fn() => 2000 );
// Chat
add_filter( 'wooai_message_before_save', fn($m) => $m );
add_filter( 'wooai_suggestions', fn($s, $ctx) => $s, 10, 2 );
// Widget
add_filter( 'wooai_widget_should_display', fn($show) => $show );
add_filter( 'wooai_widget_position', fn() => 'bottom-right' );
add_filter( 'wooai_widget_config', fn($c) => $c );
// Rate Limiting
add_filter( 'wooai_rate_limit', fn() => 30 ); // requests
add_filter( 'wooai_rate_window', fn() => 60 ); // seconds
— ## מחלקות PHP
// Singletons - use ::instance()
WooAIChatbotPlugin::instance()
WooAIChatbotAIAIOrchestrator::instance()
WooAIChatbotAIToolRegistry::instance()
// AI Providers
WooAIChatbotAIProvidersOpenAIProvider
WooAIChatbotAIProvidersClaudeProvider
WooAIChatbotAIProvidersGeminiProvider
// Chat
WooAIChatbotChatMessageHandler
WooAIChatbotChatSessionManager
WooAIChatbotChatWidget
// Playbook (WooAI namespace)
WooAIPlaybookPlaybookEngine
WooAIPlaybookPlaybookRepository
WooAIPlaybookPlaybookStateManager
// Search
WooAIChatbotSearchSemanticSearch
WooAIChatbotSearchProductIndexer
— ## טיפוסי TypeScript
// Message
interface Message {
id: string;
role: 'user' | 'assistant' | 'system';
content: string;
metadata?: MessageMetadata;
timestamp: string;
}
// Session
interface ChatSession {
session_id: string;
user_id?: number;
started_at: string;
messages: Message[];
}
// Playbook Step
interface PlaybookStep {
id: string;
type: 'message' | 'question' | 'options' | 'product_list' | 'coupon' | 'link';
content: string;
options?: StepOption[];
next?: string | null;
}
// Settings
interface PluginSettings {
enabled: boolean;
ai_provider: 'openai' | 'claude' | 'gemini';
model: string;
temperature: number;
appearance: AppearanceSettings;
}
— ## סקריפטי NPM
npm run dev # Dev build + watch
npm run build # Production build
npm run typecheck # TS check
npm run lint # ESLint fix
npm run test # Jest
npm run test:coverage
## סקריפטי Composer
composer test # PHPUnit
composer phpcs # Code sniffer
composer phpcbf # Auto-fix
— ## טבלאות מסד נתונים
-- Conversations
{prefix}wooai_conversations (
id, session_id, user_id, started_at, updated_at, metadata
)
-- Messages
{prefix}wooai_messages (
id, conversation_id, role, content, tokens, created_at
)
-- Analytics
{prefix}wooai_analytics (
id, event_type, session_id, user_id, data, created_at
)
— ## תבניות נפוצות ### הוספת כלי מותאם אישית
add_action( 'wooai_register_tools', function( $registry ) {
$registry->register( new class implements ToolInterface {
public function get_name(): string { return 'my_tool'; }
public function get_description(): string { return 'Does something'; }
public function get_parameters(): array { return []; }
public function execute( array $args ): array {
return [ 'result' => 'done' ];
}
});
});
### שינוי תגובת AI
add_filter( 'wooai_ai_response', function( $response, $messages, $context ) {
$response['content'] .= "nn---nPowered by AI";
return $response;
}, 10, 3 );
### מיקום Widget מותאם אישית
add_filter( 'wooai_widget_config', function( $config ) {
$config['position'] = 'bottom-left';
$config['offset'] = [ 'x' => 20, 'y' => 20 ];
return $config;
});
### אי הכללת עמודים
add_filter( 'wooai_widget_should_display', function( $show ) {
if ( is_cart() || is_checkout() ) return false;
if ( is_page( 'contact' ) ) return false;
return $show;
});
### אירוע Analytics מותאם אישית
do_action( 'wooai_track_event', 'custom_event', [
'session_id' => $session_id,
'data' => [ 'key' => 'value' ]
]);
— ## מצב Debug
// wp-config.php
define( 'WOOAI_DEBUG', true );
define( 'WOOAI_LOG_AI_REQUESTS', true );
// Browser console
localStorage.setItem('wooai_debug', 'true');
— ## קודי שגיאה | קוד | HTTP | משמעות | |——|——|———| | `invalid_session` | 404 | Session פג תוקף/לא נמצא | | `rate_limit_exceeded` | 429 | יותר מדי בקשות | | `ai_provider_error` | 500 | קריאת API נכשלה | | `validation_error` | 400 | נתוני בקשה שגויים | | `permission_denied` | 403 | חסרה הרשאה | ## מלכודות ידועות
// GOTCHA #1: Session ID format changed in 0.2.0
// Old: "abc123" (short)
// New: "usr42-1703980123-x7f2" (user-timestamp-random)
// Some old sessions may still exist in DB - we don't migrate them
// GOTCHA #2: Widget won't appear if theme missing wp_footer()
// Spent 2 hours debugging flavflavor theme - this was the issue
// GOTCHA #3: Gemini sometimes returns empty content
// We retry 3x automatically, see class-gemini-provider.php:147
— ## מיקומי קבצים
/includes/class-plugin.php # Main entry
/includes/AI/ # AI providers
/includes/chat/ # Chat engine
/includes/playbook/ # Playbook system
/assets/src/admin/ # Admin React
/assets/src/chat/ # Widget React
/assets/dist/ # Built assets
— ## פקודות WP-CLI שימושיות
# Clear plugin transients
wp transient delete --all
# Check option
wp option get woo_ai_chatbot_settings --format=json
# Reset settings
wp option delete woo_ai_chatbot_settings
# Test API
wp eval "var_dump(WooAIChatbotAIAIOrchestrator::instance()->validate_current_provider());"

