Dynamic venue parameter generation for AI tool definitions in the Data Machine Events plugin.
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.
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
use DataMachineEvents\Core\VenueParameterProvider;
// 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 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 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 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);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'
];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- 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