Unify Wheel Documentation
This guide explains setup, customization, and usage of the Unify Quick Chat Wheel.
Setup
In the same folder as this documentation, there is a file named UnifyWheel.rbxm. That file is the package you import into your Roblox experience.
Import steps
- Method A: Open the experience and use File → Import Roblox Model, then select
UnifyWheel.rbxm. - Method B: In Explorer, right-click Workspace → Insert → Import Roblox Model, then select
UnifyWheel.rbxm.
After importing, you will see a folder called Unify Wheel - Open me. It contains three important items:
- README (Script): same instructions as this documentation.
- UnifyWheel (ModuleScript): move this to
ServerScriptService. - UnifyWheelUI (ScreenGui): move this to
StarterGui.
Customization
Open the UnifyWheel ModuleScript in ServerScriptService. Most customization happens in two places:
module.Typecontrols the interface presentation standard.module.Optionscontrols interaction paths and outbound chat responses.
Buttons is work in progress, and we dont recommend using it yet.
How module.Type works
Radial wheel layout. Good when you want a quick directional menu style.
Button-based circular layout. Good for touch-friendly and click-heavy use.
Any value other than "Wheel" or "Buttons" falls back to "Wheel".
How option objects work
{
text = "Label users see",
chat = "Message sent to chat"
-- OR
options = { ...more options... }
}
text: what the player sees in the UI.chat: selecting this sends a message and closes the menu.options: selecting this opens a deeper sub-menu.
chat and options in the same object. If both are present, chat takes priority and sub-options are ignored.
How to add a new option
- Find the category inside
module.Optionswhere you want to add it. - Add a new object with
textplus eitherchatoroptions. - If it should open another level, put child entries inside
options = { ... }.
{
text = "Ask for Wi-Fi",
options = {
{ text = "Ask", chat = "Do you have onboard Wi-Fi?" },
{ text = "Answer", chat = "Yes, Wi-Fi is available after takeoff." }
}
}
Helper functions
The helper builders keep the file size smaller by generating repeated option structures automatically instead of writing many manual subcategories:
buildChatOptions(entries): turns a simple text/chat list into full option objects automatically.buildFoodOptions(items): creates full Ask/Answer branches for each item without manual nested blocks.buildGateRange(letter, tens)andbuildGateOptions(letter): generate full grouped gate trees instead of hand-writing each gate path.
Current module.Options
Expand to view full options table
local module = {}
local gateRangeTens = { 0, 1, 2, 3, 4, 5, 7 }
local gateLetters = { "A", "B", "C", "D", "E", "F", "G" }
local function buildGateRange(letter, tens)
local group = {
text = tostring(tens) .. "x",
options = {},
}
for ones = 0, 5 do
local gateNumber = tens * 10 + ones
local gateLabel = string.format("%02d", gateNumber)
table.insert(group.options, {
text = gateLabel,
chat = "Gate " .. letter .. gateLabel .. " is in concourse " .. letter .. ".",
})
end
local more = {
text = "More",
options = {},
}
for ones = 6, 9 do
local gateNumber = tens * 10 + ones
local gateLabel = string.format("%02d", gateNumber)
table.insert(more.options, {
text = gateLabel,
chat = "Gate " .. letter .. gateLabel .. " is in concourse " .. letter .. ".",
})
end
table.insert(group.options, more)
return group
end
local function buildGateOptions(letter)
local options = {}
for _, tens in ipairs(gateRangeTens) do
table.insert(options, buildGateRange(letter, tens))
end
return options
end
local gateSelections = {}
for _, letter in ipairs(gateLetters) do
table.insert(gateSelections, {
text = letter,
options = buildGateOptions(letter),
})
end
local function buildChatOptions(entries)
local options = {}
for _, entry in ipairs(entries) do
table.insert(options, { text = entry.text, chat = entry.chat })
end
return options
end
local function buildFoodOptions(items)
local options = {}
for _, item in ipairs(items) do
table.insert(options, {
text = item,
options = {
{ text = "Ask", chat = "Would you like a " .. item .. "?" },
{ text = "Answer", chat = "Yes, I would love to order " .. item .. "." },
},
})
end
return options
end
local boardingGroupOptions = buildChatOptions({
{ text = "Group 1", chat = "You are in Group 1." },
{ text = "Group 2", chat = "You are in Group 2." },
{ text = "Group 3", chat = "You are in Group 3." },
{ text = "Group 4", chat = "You are in Group 4." },
{ text = "Group 5", chat = "You are in Group 5." },
{ text = "Group 6", chat = "You are in Group 6." },
{ text = "Preboarding", chat = "You are eligible for preboarding." },
})
local gateChangeResponses = buildChatOptions({
{ text = "No change", chat = "No changes yet, please keep checking the boards." },
{ text = "Changed", chat = "Yes, the gate has changed to Terminal 2." },
{ text = "Delayed", chat = "There is a delay; please check the departure boards for updates." },
{ text = "Please wait", chat = "Please wait while I confirm the latest gate information." },
})
local seatAssignments = buildChatOptions({
{ text = "12A", chat = "Certainly, your seat is 12A on the left side." },
{ text = "14C", chat = "Certainly, your seat is 14C on the right side." },
{ text = "7F", chat = "Certainly, your seat is 7F on the right side." },
{ text = "18D", chat = "Certainly, your seat is 18D on the right side." },
{ text = "22B", chat = "Certainly, your seat is 22B on the left side." },
{ text = "25E", chat = "Certainly, your seat is 25E on the right side." },
})
local foodMenu = {
{
text = "Sandwiches",
options = buildFoodOptions({
"chicken sandwich",
"turkey wrap",
"ham and cheese panini",
"veggie wrap",
"club sandwich",
}),
},
{
text = "Meals",
options = buildFoodOptions({
"pasta bowl",
"rice bowl",
"noodle bowl",
"caesar salad",
"garden salad",
}),
},
{
text = "Snacks",
options = buildFoodOptions({
"fruit cup",
"cheese plate",
"yogurt parfait",
"granola bar",
"mixed nuts",
}),
},
{
text = "Sweets",
options = buildFoodOptions({
"pretzels",
"potato chips",
"chocolate chip cookie",
"brownie",
"muffin",
}),
},
}
local foodAvailabilityResponses = buildChatOptions({
{ text = "Available", chat = "Yes, food is available for purchase from the cart." },
{ text = "Not available", chat = "Sorry, the cart is not available right now." },
{ text = "Please wait", chat = "Please wait, the cart will be by shortly." },
})
local destinationResponses = buildChatOptions({
{ text = "Short trip", chat = "I am heading to the city for a short trip." },
{ text = "Business", chat = "I am traveling for a business meeting." },
{ text = "Vacation", chat = "I am headed there for a vacation." },
{ text = "Family", chat = "I am visiting family for a few days." },
{ text = "Connection", chat = "I am just connecting through on another flight." },
{ text = "Conference", chat = "I am attending a conference there." },
{ text = "Returning home", chat = "I am heading back home after a visit." },
})
local blanketResponses = buildChatOptions({
{ text = "Yes", chat = "Here is a blanket for you." },
{ text = "No", chat = "Sorry, we are out of blankets right now." },
{ text = "Please wait", chat = "Please wait, I will bring a blanket shortly." },
})
local pillowResponses = buildChatOptions({
{ text = "Yes", chat = "Absolutely, I will bring a pillow." },
{ text = "Out", chat = "Sorry, we are out of pillows right now." },
{ text = "No", chat = "Sorry, we are not offering pillows." },
{ text = "Please wait", chat = "Please wait, I will bring a pillow shortly." },
})
local headphonesResponses = buildChatOptions({
{ text = "Yes", chat = "Yes, here are some headphones." },
{ text = "No", chat = "Sorry, headphones are not available right now." },
{ text = "Please wait", chat = "Please wait, I will check for headphones." },
})
local moveSeatResponses = buildChatOptions({
{ text = "Yes", chat = "I can move you to another seat." },
{ text = "No", chat = "I am sorry, no seats are available." },
{ text = "Please wait", chat = "Please wait while I check seat availability." },
})
local turbulenceResponses = buildChatOptions({
{ text = "Yes", chat = "Yes, please remain seated with your seatbelt on." },
{ text = "No", chat = "No, it is smooth right now." },
{ text = "Please wait", chat = "Please wait, I will confirm with the captain." },
})
local swapSeatResponses = buildChatOptions({
{ text = "Yes", chat = "Sure, I do not mind swapping." },
{ text = "No", chat = "Sorry, I would like to keep my seat." },
{ text = "Please wait", chat = "Please wait, let me check first." },
})
local overheadBinResponses = buildChatOptions({
{ text = "Yes", chat = "Yes, there is a little space left." },
{ text = "No", chat = "Sorry, the bin is full." },
{ text = "Please wait", chat = "Please wait, I will check the nearby bins." },
})
local flightLengthResponses = buildChatOptions({
{ text = "About two hours", chat = "It should be about two hours." },
{ text = "About two and a half", chat = "Around two and a half hours." },
{ text = "Not sure", chat = "I am not sure; the screen should show the latest time." },
})
local weatherResponses = buildChatOptions({
{ text = "Sunny", chat = "I heard it is sunny today." },
{ text = "Cloudy", chat = "I heard it might be cloudy today." },
{ text = "Not sure", chat = "Not sure, we can check once we land." },
})
local flightCancelledResponses = buildChatOptions({
{ text = "Rebook", chat = "We can rebook you on the next flight." },
{ text = "Refund", chat = "We can offer a full refund if you prefer." },
{ text = "Please wait", chat = "Please wait while I check available options." },
})
local rebookingResponses = buildChatOptions({
{ text = "Yes", chat = "Yes, I can help you rebook to the next flight." },
{ text = "Standby", chat = "The next flights are full, but I can place you on standby." },
{ text = "Please wait", chat = "Please wait while I check alternate flights." },
})
local compensationResponses = buildChatOptions({
{ text = "Eligible", chat = "Compensation depends on the delay; we can review your options." },
{ text = "Not eligible", chat = "Compensation is not available for this delay type." },
{ text = "Please wait", chat = "Please wait while I review the policy." },
})
local medicalResponses = buildChatOptions({
{ text = "Calling now", chat = "I will call medical staff right away." },
{ text = "Please wait", chat = "Please wait, I am contacting the crew lead." },
{ text = "Follow me", chat = "Please follow me, I will get help." },
})
local accessibilityResponses = buildChatOptions({
{ text = "Arrange", chat = "We can arrange assistance, please tell us what you need." },
{ text = "Please wait", chat = "Please wait, I will contact the assistance team." },
{ text = "Limited", chat = "We can provide limited assistance right now, but more will be available on arrival." },
})
module.Type = "Wheel"
module.Options = {
{
text = "Ask for directions",
options = {
{
text = "Where is my gate?",
options = {
{
text = "Ask",
chat = "Excuse me, where can I find my gate?",
},
{
text = "Answer",
options = gateSelections,
},
},
},
{
text = "How do I get to security?",
options = {
{
text = "Ask",
chat = "Can you point me to security, please?",
},
{
text = "Answer",
chat = "Security is straight ahead past the check-in counters.",
},
},
},
{
text = "Where is baggage drop?",
options = {
{
text = "Ask",
chat = "Hi, where is the baggage drop-off?",
},
{
text = "Answer",
chat = "Baggage drop is at the end of Row B, look for the airline signs.",
},
},
},
{
text = "Where is the check-in desk?",
options = {
{
text = "Ask",
chat = "Where can I check in for my flight?",
},
{
text = "Answer",
chat = "Check-in is along this hall to the left at counters 20 to 30.",
},
},
},
{
text = "Where are the restrooms?",
options = {
{
text = "Ask",
chat = "Could you tell me where the restrooms are?",
},
{
text = "Answer",
chat = "Restrooms are just past the cafe on the right.",
},
},
},
{
text = "Where is the nearest cafe?",
options = {
{
text = "Ask",
chat = "Is there a cafe nearby?",
},
{
text = "Answer",
chat = "Yes, there is a cafe right past security.",
},
},
},
{
text = "Where is information desk?",
options = {
{
text = "Ask",
chat = "Where is the information desk?",
},
{
text = "Answer",
chat = "The information desk is in the center of the terminal by the map board.",
},
},
},
},
},
{
text = "Check-in",
options = {
{
text = "Start check-in",
options = {
{
text = "Ask",
chat = "I'd like to check in for my flight.",
},
{
text = "Answer",
chat = "Sure, may I see your passport and booking reference?",
},
},
},
{
text = "Baggage rules",
options = {
{
text = "Carry-on size",
options = {
{
text = "Ask",
chat = "What is the carry-on size limit?",
},
{
text = "Answer",
chat = "Carry-on must fit in the overhead bin and under-seat sizer.",
},
},
},
{
text = "Checked bag weight",
options = {
{
text = "Ask",
chat = "What is the checked bag weight limit?",
},
{
text = "Answer",
chat = "Checked bags are limited to 23 kg each.",
},
},
},
{
text = "Extra baggage fee",
options = {
{
text = "Ask",
chat = "How much is the extra baggage fee?",
},
{
text = "Answer",
chat = "Extra baggage fees depend on weight, we can calculate it at the counter.",
},
},
},
{
text = "Special items",
options = {
{
text = "Ask",
chat = "Can I check in sports equipment or instruments?",
},
{
text = "Answer",
chat = "Yes, special items are accepted but may require a fee and tag.",
},
},
},
},
},
{
text = "Seat and boarding",
options = {
{
text = "Change seat",
options = {
{
text = "Ask",
chat = "Can I change my seat, please?",
},
{
text = "Answer",
chat = "I can help with that, let me check availability.",
},
},
},
{
text = "Request window seat",
options = {
{
text = "Ask",
chat = "Do you have a window seat available?",
},
{
text = "Answer",
chat = "A window seat is available, I can assign it now.",
},
},
},
{
text = "Request aisle seat",
options = {
{
text = "Ask",
chat = "Do you have an aisle seat available?",
},
{
text = "Answer",
chat = "Yes, I can move you to an aisle seat.",
},
},
},
{
text = "Upgrade options",
options = {
{
text = "Ask",
chat = "Are there any upgrade options?",
},
{
text = "Answer",
chat = "Upgrades are available for a fee, I can check prices.",
},
},
},
{
text = "Boarding time",
options = {
{
text = "Ask",
chat = "What time does boarding start?",
},
{
text = "Answer",
chat = "Boarding starts 30 minutes before departure.",
},
},
},
{
text = "Print boarding pass",
options = {
{
text = "Ask",
chat = "Can I get a printed boarding pass?",
},
{
text = "Answer",
chat = "Of course, here is your boarding pass.",
},
},
},
},
},
{
text = "Flight details",
options = {
{
text = "Confirm flight status",
options = {
{
text = "Ask",
chat = "Is my flight on time?",
},
{
text = "Answer",
chat = "Your flight is currently on time.",
},
},
},
{
text = "Gate assignment",
options = {
{
text = "Ask",
chat = "Which gate is assigned to my flight?",
},
{
text = "Answer",
options = gateSelections,
},
},
},
{
text = "Terminal info",
options = {
{
text = "Ask",
chat = "Which terminal is my flight in?",
},
{
text = "Answer",
chat = "Your flight is in Terminal 2.",
},
},
},
{
text = "Connection help",
options = {
{
text = "Ask",
chat = "Can you help with my connecting flight?",
},
{
text = "Answer",
chat = "Yes, the connection is in Terminal 3 and you have 45 minutes.",
},
},
},
},
},
},
},
{
text = "Security",
options = {
{
text = "Security wait time",
options = {
{
text = "Ask",
chat = "How long is the security line?",
},
{
text = "Answer",
chat = "The wait is about 15 minutes right now.",
},
},
},
{
text = "Liquids rules",
options = {
{
text = "Ask",
chat = "What are the liquids rules?",
},
{
text = "Answer",
chat = "Liquids must be in 100 ml containers inside a clear bag.",
},
},
},
{
text = "Electronics screening",
options = {
{
text = "Ask",
chat = "Do I need to take out my laptop?",
},
{
text = "Answer",
chat = "Yes, laptops need to be placed in a separate tray.",
},
},
},
{
text = "Family or assistance",
options = {
{
text = "Ask",
chat = "Is there family or assistance screening?",
},
{
text = "Answer",
chat = "Yes, family and assistance lanes are on the far left.",
},
},
},
{
text = "Prohibited items",
options = {
{
text = "Ask",
chat = "What items are not allowed?",
},
{
text = "Answer",
chat = "Sharp objects and large liquids are not allowed through security.",
},
},
},
},
},
{
text = "Passport control",
options = {
{
text = "Where is passport control?",
options = {
{
text = "Ask",
chat = "Where do I go for passport control?",
},
{
text = "Answer",
chat = "Passport control is past the duty-free area on the right.",
},
},
},
{
text = "Required documents",
options = {
{
text = "Ask",
chat = "What documents do I need for passport control?",
},
{
text = "Answer",
chat = "You will need your passport and boarding pass ready.",
},
},
},
{
text = "Visa questions",
options = {
{
text = "Ask",
chat = "Do I need a visa for my destination?",
},
{
text = "Answer",
chat = "Visa requirements depend on your passport and destination.",
},
},
},
{
text = "Customs declaration",
options = {
{
text = "Ask",
chat = "Do I need to fill out a customs form?",
},
{
text = "Answer",
chat = "If you are arriving internationally, you may need a customs form.",
},
},
},
{
text = "Immigration wait time",
options = {
{
text = "Ask",
chat = "How long is the immigration line?",
},
{
text = "Answer",
chat = "The immigration line is about 20 minutes.",
},
},
},
},
},
{
text = "Boarding gate",
options = {
{
text = "Confirm gate",
options = {
{
text = "Ask",
chat = "Is this the correct gate for my flight?",
},
{
text = "Answer",
chat = "Yes, this is the correct gate for your flight.",
},
},
},
{
text = "Boarding group",
options = {
{
text = "Ask",
chat = "What boarding group am I in?",
},
{
text = "Answer",
options = boardingGroupOptions,
},
},
},
{
text = "Gate change",
options = {
{
text = "Ask",
chat = "Has the gate changed?",
},
{
text = "Answer",
options = gateChangeResponses,
},
},
},
{
text = "Preboarding",
options = {
{
text = "Ask",
chat = "Is there preboarding available?",
},
{
text = "Answer",
options = {
{
text = "Available",
chat = "Preboarding is available for families and assistance.",
},
{
text = "Not available",
chat = "Preboarding is not available at this time.",
},
}
},
},
},
{
text = "Missed boarding",
options = {
{
text = "Ask",
chat = "I missed boarding, what should I do?",
},
{
text = "Answer",
chat = "Please see the desk to check rebooking options.",
},
},
},
},
},
{
text = "Cabin crew",
options = {
{
text = "Greet crew",
options = {
{
text = "Say",
chat = "Hello, thanks for having me on board.",
},
{
text = "Answer",
chat = "Welcome aboard, your seat is just ahead.",
},
},
},
{
text = "Find my seat",
options = {
{
text = "Ask",
chat = "Could you help me find my seat?",
},
{
text = "Answer",
options = seatAssignments,
},
},
},
{
text = "Stow luggage",
options = {
{
text = "Ask",
chat = "Where can I stow my carry-on?",
},
{
text = "Answer",
chat = "You can use the overhead bin above your seat.",
},
},
},
{
text = "Seat issue",
options = {
{
text = "Ask",
chat = "I think someone is in my seat.",
},
{
text = "Answer",
chat = "Let me check the boarding passes and sort it out.",
},
},
},
{
text = "Request assistance",
options = {
{
text = "Ask",
chat = "Can I get some assistance, please?",
},
{
text = "Answer",
chat = "Of course, what do you need help with?",
},
},
},
{
text = "Food and drink",
options = {
{
text = "Ask for water",
options = {
{
text = "Ask",
chat = "Could I have some water, please?",
},
{
text = "Answer",
chat = "Certainly, I will bring you some water.",
},
},
},
{
text = "Ask for a snack",
options = {
{
text = "Ask",
chat = "Do you have a snack available?",
},
{
text = "Answer",
chat = "Yes, we have snacks; I will bring one shortly.",
},
},
},
{
text = "Meal preference",
options = {
{
text = "Ask",
chat = "Do you have a vegetarian meal?",
},
{
text = "Answer",
options = foodMenu,
},
},
},
{
text = "Buy food",
options = {
{
text = "Ask",
chat = "Can I purchase food on this flight?",
},
{
text = "Answer",
options = foodAvailabilityResponses,
},
},
},
},
},
{
text = "More crew",
options = {
{
text = "In-flight comfort",
options = {
{
text = "Blanket",
options = {
{
text = "Ask",
chat = "Could I get a blanket?",
},
{
text = "Answer",
options = blanketResponses,
},
},
},
{
text = "Pillow",
options = {
{
text = "Ask",
chat = "Could I get a pillow?",
},
{
text = "Answer",
options = pillowResponses,
},
},
},
{
text = "Headphones",
options = {
{
text = "Ask",
chat = "Do you have headphones?",
},
{
text = "Answer",
options = headphonesResponses,
},
},
},
{
text = "Move seats",
options = {
{
text = "Ask",
chat = "Is it possible to move to another seat?",
},
{
text = "Answer",
options = moveSeatResponses,
},
},
},
},
},
{
text = "In-flight rules",
options = {
{
text = "Seatbelt",
options = {
{
text = "Ask",
chat = "Do I need to keep my seatbelt fastened?",
},
{
text = "Answer",
chat = "Yes, please keep it fastened while seated.",
},
},
},
{
text = "Device usage",
options = {
{
text = "Ask",
chat = "Is it okay to use my phone in airplane mode?",
},
{
text = "Answer",
chat = "Yes, airplane mode is allowed after takeoff.",
},
},
},
{
text = "Turbulence",
options = {
{
text = "Ask",
chat = "Is it turbulence? Should I stay seated?",
},
{
text = "Answer",
options = turbulenceResponses,
},
},
},
},
},
},
},
},
},
{
text = "Other passengers",
options = {
{
text = "Greet passenger",
options = {
{
text = "Say",
chat = "Hi there, is this seat taken?",
},
{
text = "Answer",
chat = "No, this seat is free, please go ahead.",
},
},
},
{
text = "Ask to swap seats",
options = {
{
text = "Ask",
chat = "Would you mind swapping seats?",
},
{
text = "Answer",
options = swapSeatResponses,
},
},
},
{
text = "Ask to pass",
options = {
{
text = "Ask",
chat = "Excuse me, could I get by?",
},
{
text = "Answer",
chat = "Of course, go ahead.",
},
},
},
{
text = "Share overhead bin",
options = {
{
text = "Ask",
chat = "Is there room in the overhead bin?",
},
{
text = "Answer",
options = overheadBinResponses,
},
},
},
{
text = "Apologize",
options = {
{
text = "Say",
chat = "Sorry about that!",
},
{
text = "Answer",
chat = "No worries, it is fine.",
},
},
},
{
text = "Small talk",
options = {
{
text = "Ask destination",
options = {
{
text = "Ask",
chat = "Where are you traveling to?",
},
{
text = "Answer",
options = destinationResponses,
},
},
},
{
text = "Ask flight length",
options = {
{
text = "Ask",
chat = "How long is the flight?",
},
{
text = "Answer",
options = flightLengthResponses,
},
},
},
{
text = "Talk about weather",
options = {
{
text = "Say",
chat = "I hope the weather is good there.",
},
{
text = "Answer",
options = weatherResponses,
},
},
},
{
text = "Say goodbye",
options = {
{
text = "Say",
chat = "Nice meeting you, have a good trip!",
},
{
text = "Answer",
chat = "You too, have a safe flight.",
},
},
},
},
},
},
},
{
text = "Problems and changes",
options = {
{
text = "Lost boarding pass",
options = {
{
text = "Ask",
chat = "I lost my boarding pass. What can I do?",
},
{
text = "Answer",
chat = "We can reprint it for you at the desk.",
},
},
},
{
text = "Name mismatch",
options = {
{
text = "Ask",
chat = "My name is wrong on the ticket.",
},
{
text = "Answer",
chat = "Please show your ID and we will correct the name.",
},
},
},
{
text = "Missed flight",
options = {
{
text = "Ask",
chat = "I missed my flight. What are my options?",
},
{
text = "Answer",
chat = "We can look for the next available flight for you.",
},
},
},
{
text = "Delay or cancellation",
options = {
{
text = "Flight delayed",
options = {
{
text = "Ask",
chat = "My flight is delayed. What should I do?",
},
{
text = "Answer",
chat = "Please stay near the gate and watch for updates.",
},
},
},
{
text = "Flight cancelled",
options = {
{
text = "Ask",
chat = "My flight was cancelled. What options do I have?",
},
{
text = "Answer",
options = flightCancelledResponses,
},
},
},
{
text = "Rebooking",
options = {
{
text = "Ask",
chat = "Can I rebook to another flight?",
},
{
text = "Answer",
options = rebookingResponses,
},
},
},
{
text = "Compensation",
options = {
{
text = "Ask",
chat = "Is there any compensation available?",
},
{
text = "Answer",
options = compensationResponses,
},
},
},
},
},
{
text = "Medical assistance",
options = {
{
text = "Ask",
chat = "I need medical assistance.",
},
{
text = "Answer",
options = medicalResponses,
},
},
},
{
text = "Lost item",
options = {
{
text = "Ask",
chat = "I left an item on the plane.",
},
{
text = "Answer",
chat = "Please file a lost item report at the desk.",
},
},
},
{
text = "Accessibility support",
options = {
{
text = "Ask",
chat = "I need accessibility assistance.",
},
{
text = "Answer",
options = accessibilityResponses,
},
},
},
},
},
}
return module
Usage
Accessing the Interface
- Desktop default shortcut: T.
- Mobile: tap the Wheel button on-screen.
Auto-focus behavior
There is an Auto-Focus toggle in the UI settings area.
- ON: search focus is applied immediately at panel open to optimize response time.
- OFF: search remains available, but operators focus the field manually.
Search Operations
- Type in the search box to filter and rank matching entries.
- Use Up/Down arrows to move through results and Enter to select.
- Search shows a path so users can see where each result belongs in the menu tree.
- Searching can match visible labels, category path text, and the actual chat sentence.
- Clear search with the × button.