VenueParameterProvider
Dynamic venue parameter generation for AI tool definitions in the Data Machine Events plugin.
Overview
The VenueParameterProvider class manages venue-related parameters for AI tools, providing a clean separation between venue data handling and event data processing. It works alongside Venue_Taxonomy (storage) and VenueService (operations) to provide venue parameter definitions when AI should determine venue information.
Venue Parameters
The provider defines the following venue parameters that can be handled by AI tools:
venue– Venue namevenueAddress– Street addressvenueCity– City locationvenueState– State/provincevenueZip– Postal/zip codevenueCountry– CountryvenuePhone– Phone numbervenueWebsite– Website URLvenueCoordinates– GPS coordinates (latitude,longitude format)venueCapacity– Maximum venue capacity
Usage Examples
Get Tool Parameters
use DataMachineEventsCoreVenueParameterProvider;
// Get all venue parameters for AI tools (when no static venue configured)
$venue_params = VenueParameterProvider::getToolParameters($handler_config);
// Returns empty array if static venue is configured
// Returns full parameter array if AI should determine venue
Check Static Venue Configuration
// Check if handler has static venue configured
$has_static = VenueParameterProvider::hasStaticVenue($handler_config);
// Returns true if:
// - Universal Web Scraper has venue configured
// - Venue is a numeric term ID
Extract Venue Data from Parameters
// Extract venue data from AI tool parameters
$venue_data = VenueParameterProvider::extractFromParameters($parameters);
// Returns array keyed by Venue_Taxonomy meta field names:
// [
// 'name' => 'The Blue Note',
// 'address' => '123 Main St',
// 'city' => 'New York',
// 'state' => 'NY',
// 'zip' => '10001',
// // ...
// ]
Extract from Event Data
// Extract venue metadata from event data array
$venue_metadata = VenueParameterProvider::extractFromEventData($event_data);
// Strip venue fields from event data (modifies array in place)
VenueParameterProvider::stripFromEventData($event_data);
Parameter Mapping
The provider maintains a mapping between tool parameter names and Venue_Taxonomy meta field keys:
private const PARAMETER_TO_META_MAP = [
'venue' => 'name',
'venueAddress' => 'address',
'venueCity' => 'city',
'venueState' => 'state',
'venueZip' => 'zip',
'venueCountry' => 'country',
'venuePhone' => 'phone',
'venueWebsite' => 'website',
'venueCoordinates' => 'coordinates',
'venueCapacity' => 'capacity'
];
Integration with EventSchemaProvider
Both VenueParameterProvider and EventSchemaProvider use the DynamicToolParametersTrait to filter parameters by engine data at definition time:
// Venue parameters filtered by engine data - excludes params that already have values
$venue_params = VenueParameterProvider::getToolParameters($handler_config, $engine_data);
// Event parameters also filtered by engine data
$event_params = EventSchemaProvider::getCoreToolParameters($engine_data);
$schema_params = EventSchemaProvider::getSchemaToolParameters($engine_data);
// If engine_data contains ['venue' => 'Central Park', 'startDate' => '2025-07-15']
// then 'venue' is excluded from venue_params and 'startDate' is excluded from event_params
// The AI only sees parameters it needs to provide
Architecture Benefits
- Clean Separation: Venue parameters handled independently from event parameters
- Flexible Configuration: Supports both static venue configuration and AI-determined venues
- Consistent Mapping: Single source of truth for venue parameter definitions
- Easy Integration: Works with existing Venue_Taxonomy and VenueService classes
- Maintainable: Centralized venue parameter logic
docs/venue-parameter-provider.md