Genie Prompt Actions



Display Notification Window


This is certainly the most-used action! There are many kinds of notification windows. Click here for information on each kind of window.


When you display a window, it can include text and an image. You use our online editor to enter the text, and you can use any combination of fonts, colors, styles and other attributes. You can also include links. We currently have hundreds of images you can choose from, and will shortly have our image upload capability complete so you can upload your own images.


You can also include variables in the text. For example, the Availability Command Sent event contains {BeginAirportCode} and {EndAirportCode}. If you enter availability from NYC to LAX, and your text is:


"You entered flight availability from {BeginAirportCode} to {EndAirportCode}", the notification window will contain:

"You entered flight availability from NYC to LAX".


Most Notification Windows can also contain up to three buttons. On the configuration screen, there are blanks for the button text. Fill those in, and the buttons will be automatically added, sized and centered.


Launch Application

This will launch any application on your computer. You can specify the path, as well as any parameters to pass. For example, you can open a PDF from a network location based upon clicking a notification window. You can use variables in both the path and parameters.


Send GDS Commands/Read Response

This allows you to create macros to send GDS commands and read responses, and the user can be prompted for information as well. Full details on these macros are available here. You can use variables in the macros as the documentation shows, and any data read into variables will be available to all subsequent actions.

NOTE: Previous to Build 227, variables set here where the names are prefixed with PNR or GLOBAL do not save between prompts. If you want to read data from the GDS and save it between prompts, first put it in a variable using this action. The add another action of Read Data From Variables, and move the data into a variable prefixed with either PNR or GLOBAL. Starting with Build 227, PNR and GLOBAL variables set in this action are properly stored between prompts.


Read GDS Profile

This will launch our standard profile dialog, which actually reads passenger data from the active PNR. It will read the name(s), address, phone number(s), email address(es) and credit card information. This data is then placed into variables you can use elsewhere. The variables it sets are:


{NamesCount} The number of names it read from the PNR.
{FirstName1} The first firstname that was read; for the second firstname, use {FirstName2}, etc.
{LastName1} The first lastname read; for the second, use {LastName2}, etc.
{EmailAddress} The email address selected by the agent.
{PhoneNumber} The phone number selected by the agent.
{Address1} The first line of the address.
{Address2} The second line of the address.
{City} The city from the address.
{State} The state from the address.
{PostalCode} The postal code from the address.
{CCType} The type of the credit card. This is the two-letter code - VI, MC, DS, DC, AX. This may not be what is stored in the GDS, as some of the GDS codes are translated to the "standard" codes listed above.
{CCTypeGDS} The credit card type as it was read from the GDS.
{CCNumber} The credit card number. This is only available if there is no masking in the GDS.
{CCCVV} The credit card CVV.
{CCExpMonth} The expiration month of the card.
{CCExpYear} The expiration year of the card.
{CCHolder} The cardholder name.


If the user clicks Cancel, the variable {ProfileRead} will be set to FALSE; otherwise, it's set to TRUE.


Read GDS Itinerary

This will read the itinerary information from the active PNR and place the information into variables you can use elsewhere. The variables it sets are:


{AirBeginDate} The first date of air travel in the itinerary.
{AirEndDate} The last date of air travel in the itinerary. This is the arrival date of the last air segment.
{AirReturnDate} This is the date the return air segment departs.
{FirstAirOriginAirport} The departure airport of the first air segment.
{FirstAirDestinationAirport} The first air true destination, taking into account connecting flights.
{FirstAirlineCode} The first airline code in the itinerary.
{CarBeginDate} The car rental pickup date.
{CarEndDate} The car rental return date.
{CarLocation} The location code of the car rental.
{CarVendorCode} The car rental vendor code.
{TourBeginDate} The begin date of the first tour segment in the itinerary.
{TourEndDate} The end date of the first tour segment in the itinerary.
{TourDestination} The first destination for the first tour segment in the itinerary.
{TourVendor} The vendor name for the first tour segment in the itinerary, if available.
{TourVendorCode} The vendor code for the first tour segment in the itinerary, if available.
{CruiseBeginDate} The begin date of the first cruise segment in the itinerary.
{CruiseEndDate} The end date of the first cruise segment in the itinerary.
{CruiseDestination} The first destination of the first cruise segment in the itinerary.
{CruiseVendor} The vendor name of the first cruise segment in the itinerary, if available.
{CruiseVendorCode} The vendor code of the first cruise segment in the itinerary, if available.
{HotelBeginDate} The check-in date of the first hotel segment in the itinerary.
{HotelEndDate} The check-out date of the first hotel segment in the itinerary.
{HotelLocation} The location code of the first hotel segment in the itinerary.
{HotelVendorCode} The vendor code of the first hotel segment in the itinerary.
{TripBeginDate} The first date of travel in the itinerary.
{TripEndDate} The last date of travel in the itinerary.



Read Data From Variables

This allows you to read data from one variable into another one. You specify the variable with the initial data, and a read expression. You use the same read expressions documented here, but without the "{ReadResponse}". This allows you to read information from web pages, GDS commands/responses, and any other source in the application.


For example, you might have a remark in a PNR in the format:



Whenever you see a response with VIP, you could read the code after the dash, using {GDSResponse} as the source, and the read expression:



That would put the code in the variable {VIPCode}. You could then display a notification window offering to get more information on that code. When the window is clicked, you could launch:{VIPCode}


That would pass the code to the website. You could also launch a website, wait for it to open, and then fill in one of the blanks with this code.


If you want to set a variable to specific text, just enter that text in the first column instead of a variable name.


Special Variable Names


We suggest that you prefix all of your regular variables with UV (for User Variable) so that they are not confused with any variables set internally by BookingBuilder Genie. We will never prefix any of our variables with UV.


There are two other prefixes you can use as well: PNR and GLOBAL. Any variable that begins with PNR will be stored until the current PNR changes. This means that the variable can be set by one prompt, and then used in a different prompt. For example, if you have this as your expression: {PNRMyVariable:[0-9]+} the numbers read into that variable will be stored until there is a new PNR in the current GDS work area. BookingBuilder Genie will store these variables by GDS by work area, and it automatically recognizes when you move a new PNR and will erase all variables that stored for the current work area.


Any variables that begin with GLOBAL are stored until you close BookingBuilder Genie. If you have two GDSes on one computer, a prompt for one GDS can set a GLOBAL variable and a prompt on the other GDS can display the information in a Notification Window. To remove a GLOBAL variable, you must set it to an empty value.



Send Keystrokes to Browser

This will send keystrokes to the browser that created the initiating event. Keystrokes are sent as though they were typed by the agent.


An example of how to put in the keystrokes is: <ALT>F</ALT>C


That will press the ALT key, press F, release the ALT key, then press C. To press the Shift key, use <SHIFT> and </SHIFT> releases the Shift key. You can use ALT, CTRL or CONTROL and SHIFT this way. To send Escape, you use <ESC>. You do not use </ESC>. The special keys you can use this way are: BACK or BACKSPACE, TAB, RETURN or ENTER, CAPITAL or CAPS or CAPSLOCK, ESC or ESCAPE, SPACE, PAGEUP, PAGEDOWN, END, HOME, LEFT, RIGHT, DOWN, UP, INSERT or INS, DELETE or DEL, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12.


They keystroke expression can contain variables.


Send Keystrokes to GDS

This will send keystrokes to the GDS, as though they were typed by the agent. This is not sending a GDS command -- this is actual keystrokes. You can use this to launch a script, for example. For example, you might have a script called Traveler Information. If this script is used frequently, you can create an easy shortcut: Create a prompt that uses the GDS Command Sent event. If the command is "TISCRIPT", send the keystrokes to the GDS to launch the script. This assumes "TISCRIPT" is not a valid GDS command, and will be ignored by the GDS. It is typically much faster to type a simple command into the GDS than it is to go through menu choices. The keystrokes can contain variables.


See "Send Keystrokes to Browser" for information on how to enter the keystroke expression.


Send Keystrokes to Application

This will send keystrokes to the application with the specified text in its title bar. For example, Word might have "Document 1 - Microsoft Word" in the title bar. You can specify to send keystrokes to "Microsoft Word". Our application will find the first application that contains "Microsoft Word" in the title and send it the specified keystrokes. The keystrokes can contain variables.


To specify the application that should receive the keystrokes, you use a regular expression. The best way to learn to create regular expressions is to use RegexBuddy.


See "Send Keystrokes to Browser" for information on how to enter the keystroke expression.



Ask User For Input

This action allows you to prompt the user for information, such as website logins and passwords or other information that may be required. This information is saved into variables and can be used anywhere variables are used. Note that the special variable names (PNR, GLOBAL) can be used here and these are saved according to the information here.


Put Data On Clipboard

This will put data on the clipboard, and display a message of your choice indicating that the data is there. You use variables to specify the data. For example, you could create an action to read profile data, then send this to the clipboard:


Name:{FirstName1} {LastName1}
Email: {EmailAddress}


That will put the name and email on the clipboard, and it can be pasted into another application.


Close Notification Window

This closes the notification window. By default, when you click a window or a link or button within the window, the window stays visible. If you want the window to close, add this action to the list of actions performed with the click.


Launch Browser

When launching a browser, you start by specifying the URL. It can contain variables. For example, if you have a lookup table with country codes and country names, and country name column is called LT_Country_Name, you can launch a Google search with:{LT_Country_Name}


You can also specify Post data. You do this by specifying a Post variable name, and the value for that variable. The value can include our variables.


Last, you can specify the headers, but it is unlikely you will ever need to do that.


Set Browser Fields

This applies either to the browser that caused the initiating event, or the browser launched by the system. You specify the browser field name and value to go into it. You can use variables for the value. If you are going to fill in more than one or two web pages, we highly recommend IE WebDeveloper from It has a great interface that allows you to determine field names in seconds.


Special functions:

[WAIT]=1000 Waits 1000 milliseconds (1 second). Specify any number of milliseconds to wait. This is very helpful with some sites where JavaScript creates a lot of the content after the page loads. You can use this to wait for the JavaScript to complete before filling in the page. You should test the page before adding the WAIT function, since our system does wait until most JavaScript functions are complete before it fires the Browser New Page Loaded event.

[CLICKBUTTON]= Specify a button name to be clicked.

[CLICKLINKNAME]= Specify a link name to be clicked. Not all links are named, so you might need the next function to successfully click a link.

[CLICKLINKHTMLCONTAINS]= Specify HTML contained within a link. All links on the page will be searched, and first one that contains the specified HTML will be clicked.

[FIREONCHANGE]= Specify an HTML element in which to fire the onChange event. This event is fired by Genie when textboxes and Select elements are filled in. This gives you the control to fire the event for any control.

[CALLJAVASCRIPTFUNCTION]= Specify a JavaScript function to be called, such as:
[CALLJAVASCRIPTFUNCTION]= MyJavaScriptFunction('hello', 'bye')

Warning! Calling JavaScript functions is very powerful, but can cause errors in web pages, so please be careful when doing this.


Close Browser

This will close the browser that fired the New Domain, New Page Loaded or Querystring/Post event. It will not close a browser launched by the system or any other browser.


Send Email Message

This will send an email message via Outlook. You specify the recipients, subject and message, and can use variables, including lookup table information, in all fields. To separate multiple recipients, use a semi colon, as in ";".


Ask Question


This will display a question with Yes and No buttons. Typically this is used in the Notification Window actions, since these cannot display another Notification Window. In the regular actions, you can use this or a Notification Window. This window only allows plain text, and only has Yes and No buttons. With a Notification Window you can set many more options. You can use Stop Actions If Cancel Clicked immediately after this action to stop all subsequent actions for the current prompt is the user selects No.


This Action also sets the variable {AskQuestion} to TRUE if Yes is clicked, and FALSE if No is clicked.


Bring GDS to Front


This action will simply bring the GDS to the front. If you want to transfer an agent from a web page to the GDS, this action will make sure that the GDS is on top and ready to be used.


Stop Actions If Cancel Clicked

The Read GDS Profile and Ask User for Input actions have a "cancel" button, and the Ask Question action has a "No" button. If you want that cancel or No button to completely stop the actions, put this action immediately after the Read GDS Profile, Ask User for Input or Ask Question action. For example, you might have a set of actions that read a profile, launch a website, then copy in the email address from the profile. However, if the agent clicks "Cancel" on the Profile Dialog, you don't want to launch the website. To do that, put this action right after the Read GDS Profile action.


This action exists to give you flexibility. For example, you might want to read a profile, launch a website and fill in the email address. Of course, not all profiles have email addresses. If an agent displays a profile without an email address and the agent clicks Cancel, you probably still want the website to launch and the agent can just ask for the email address. In this case, you would not put the "Stop Actions If Cancel Clicked" action after the Read GDS Profile action.


This is supported in Build 184 and newer.


Track for Reporting


While all prompt actions are tracked in our database, often you can get much better reporting information by specifying additional information to be stored in our database when an action takes place. Track for Reporting allows you to store up to three separate pieces of information. For example, if you want to track how many times a particular button is clicked, in the button actions add an action of Track for Reporting. Then enter something very unique and descriptive in the first blank. For example, if the button is launching a website, enter something like "launched website from availability". The more specific and unique the better.


Note: Beginning with Build 227, you can use variables in the Track for Reporting items. Previous to 227 only the exact text entered would be stored in our database.


The maximum length of each field is 100 characters. If you try to store data longer than that, it will be truncated.