System and methods for determining and displaying product promotions6502076Abstract A product promotion display system comprises a server computer hosting a network of terminals, each terminal having a display for displaying advertisements and product promotion information to a customer. The server computer has access to a product promotion database containing data to be used in assembling advertisements and product promotion information to be displayed on one or more of the terminals. A product promotion software object executed by the server computer accesses the database in order to retrieve data therefrom to be used in assembling advertisements and product promotion information to be displayed on one or more of the terminals. A user interface connected to the terminals and to the promotion software object causes the assembled advertisements and product promotion information to be displayed on one or more of the terminals. Claims I claim: Description BACKGROUND OF THE INVENTION
TABLE 1
Sysparm Database Table Definition
SYSPARM
Field: Description:
ad-group-default- Default duration (in seconds) for all ads in
duration new ad groups.
device-group-default-id Integer value representing the default
device group identifier for new devices.
device-group-default- String value representing the default start
home-url page URL for new device groups.
device-group-default- Long integer value representing the
idle-timeout default amount of idle time (in seconds)
before an attract loop starts for new device
groups.
device-group-default- Long integer value representing the
instruction-duration number of seconds to display instructional
content for new device groups.
device-group-default- Long integer value representing how often
instruction-period (in number of seconds or number of ads)
to display instructional content for new
device groups (for example, every 30
seconds or every 10 ads).
device-group-default- Byte value representing the default period
instruction-period-type type for new device groups. This field
dictates how to interpret the value stored
in the device-group-default-instruction-
period field. Possible values are
INSTRUCTION_PERIOD_TIME or
INSTRUCTION_PERIOD_ADS.
device-group-default- String value representing the default URL
instruction-url for instructional content for new device
groups.
Device Tables The device tables 68a, 68b, illustrated in Tables 2 and 3 below, store all of the configuration information for each system device and device group. Table 2 illustrates the Device database table 68a. This table stores all of the configuration information for each system device.
TABLE 2
Device Database Table Definition
DEVICE
Field: Description:
device-id Integer value representing the device
identifier.
device-ip-address String value representing the device's IP
address.
device-group-id Integer value representing the device group
identifier.
device-description String value describing the device.
Table 3 illustrates the Device-Group database table 68b. This table stores all of the configuration information for each device group.
TABLE 3
Device-Group Database Table Definition
DEVICE-GROUP
Field: Description:
device-group-id Integer value representing the device group
identifier.
device-group- String value describing the device group.
description
device-group- String value representing the start page URL
home-url for the device group.
device-group-idle- Long integer value representing the amount
timeout of idle time (in seconds) before an attract
loop starts for this device group.
device-group- Long integer value representing the number
instruction- of seconds to display instructional content
duration for the device group.
device-group- Long integer value representing how often
instruction-period (in number of seconds or number of ads) to
display instructional content for the device
group (for example, every 30 seconds or
every 10 ads).
device-group- Byte value representing the period type for
instruction-period- the device group. This field dictates how to
type interpret the value stored in the device-
group-instruction-period field. Possible
values are INSTRUCTION_PERIOD_TIME
or INSTRUCTION_PERIOD_ADS.
device-group- String value representing the instructional
instruction-url content URL for the device group.
Ad Group Tables The ad group tables 70a-c, illustrated in Tables 4, 5 and 6 below, store all of the configuration information for each ad group. Table 4 illustrates the database table Nav-Device-Ad-Group 70a that maps a device group and navigational category to an ad group based on a specific time schedule.
TABLE 4
Nav-Device-Ad-Group Database Table Definition
NAV-DEVICE-AD-GROUP
Field: Description:
device-group-id Integer value representing the device group identifier.
nav-cat-id Integer value representing the navigational category
identifier of the screen displayed (a value of zero
indicates that the ad group has not been categorized --
only uncategorized ad groups will be shown in the at-
tract loop).
ad-group-id Long integer value uniquely identifying the ad group.
nav-device-ad- Integer value provided to allow the same ad group to
group-id be scheduled more than once for the same device
group/category ID pair.
nav-device-ad- Date value representing the start date of when the ad
group-start-date group is eligible for display.
nav-device-ad- Date value representing the stop date of when the ad
group-stop-date group is eligible for display.
nav-device-ad- Time value representing the start time of when the ad
group-start-time group is eligible for display.
nav-device-ad- Time value representing the stop time of when the ad
group-stop-time group is eligible for display.
nav-device-ad- Byte value bit mask representing which days of the
group-dow week the ad group is eligible for display.
nav-device-ad- Byte value indicating which type of scheduling is used
group-schedule- for the ad group. This field is used to indicate which
type ad group date/time fields should be used to determine
the ad group's time schedule. This field is also used to
indicate how to interpret the values of the appropriate
ad group date/time fields. Possible values and a more
detailed description of ad group scheduling are
provided in Table 9, below.
Table 5 illustrates the Ad-Group database table 70b. This table stores all of the configuration information for each ad group.
TABLE 5
Ad-Group Database Table Definition
AD-GROUP
Field: Description:
ad-group-id Long integer value uniquely identifying the ad
group.
ad-group- String value describing the ad group.
description
ad-group-default- Long integer value specifying the number of
duration seconds to display each ad in the ad group. This
field can be overridden for each ad using the ad-
language-duration field of the Ad-Language table
(Table 8).
ad-group-start- Byte value specifying how the ad group should be
type initiated. Possible values are
AD_GROUP_START (always start with the first
ad in the group) or AD_GROUP_RESUME
(always resume where ad group was last terminated
if no other ad groups were displayed since the last
time this ad group was displayed; otherwise start
with the first ad in the group).
ad-group-order- Byte value indicating how the ads in the ad group
type should be ordered. Possible values are
AD_GROUP_ORDER_EXPLICIT (always display
ads in the order they were grouped) or
AD_GROUP_ORDER_RANDOM (always display
ads in a weighted random order as further specified
by the ad-group-member-weight field of the Ad-
Group-Member table, Table 6.
Table 6 illustrates the Ad-Group-Member database table 70c. This table maps all of the ads to each ad group.
TABLE 6
Ad-Group-Member Database Table Definition
AD-GROUP-MEMBER
Field: Description:
ad-group-id Long integer value uniquely identifying the ad group.
ad-group- Integer value specifying the sort index of the ad
member-index within the ad group. Although this field must be
specified, its value is ignored if the ad-group-order-
type field of the Ad-Group table (Table 5) is set to
AD_GROUP_ORDER_RANDOM.
nav-cat-id Integer value representing the navigational category
identifier of the screen displayed (a value of zero
indicates that the ad group has not been categorized --
only uncategorized ad groups will be shown in the
attract loop).
ad-id Long integer value specifying the unique identifier for
the ad.
ad-group- Byte value from 1 to 100 specifying the sort order
member-weight weight of the ad within the ad group. The lowest
weight is 1 while the highest weight is 100. This field
is only required when the value of the ad-group-
order-type field of the Ad-Group table (Table 5) is set
to AD_GROUP_ORDER_RANDOM
Ad Tables The ad tables 72a, 72b, illustrated in Tables 7 and 8 below, store all of the configuration information for each ad. Table 7 illustrates the Ad database table 72a. This table stores all of the ads used in the present embodiment of the invention.
TABLE 7
Ad Database Table Definition
AD
Field: Description:
ad-id Long integer value specifying the unique
identifier for the ad.
ad-description String value specifying a description for the ad.
Table 8 illustrates the Ad-Language database table 72b. This table stores all of the language-specific configuration information about each ad.
TABLE 8
Ad-Language Database Table Definition
AD-LANGUAGE
Field: Description:
ad-id Long integer value specifying the unique identifier
for the ad.
Language-id Integer value specifying the language that the ad
was created for.
ad-language- Long integer value specifying the amount of time
duration (in seconds) to display the ad. If a value for this
field is not specified, the ad will be displayed for
the amount of time specified by the ad-group-
default-duration field of the Ad-Group table
(Table 5).
ad-language-url String value specifying the URL of the ad itself.
ad-language-link- String value specifying the URL of the page that
url will be displayed if a consumer interacts with the
ad.
Returning to FIG. 1, the present embodiment of the invention comprises the following components: In reply to:. Promotion Object 26: This COM object provides all of the services necessary for retrieving the appropriate ad groups to use within the user interface or attract loop. II. Attract Loop Manager 44: This component is a Server-Side Include (SSI) file that provides all of the logic necessary for controlling the attract loop. It is invoked to start the attract loop. III. Ad Manager 38: This component is an Active Server Page that collects tally data for each ad. It is invoked to display any ad. IV. Ad Interaction Manager 40: This component is an Active Server Page that collects detailed data every time a consumer interacts with an ad. It is invoked whenever a customer interacts with any ad. V. Idle Timer Manager 46: This component is a Server-Side Include (SSI) file that provides all of the logic necessary to manage the idle timer for each terminal. It is included in any page that may time out due to the terminal being idle. It is invoked to control the idle timer for any terminal in the system. These components are described in greater detail immediately below. I. Promotion Object The promotion object 26 is an in-process COM object that provides all of the services necessary for retrieving the appropriate ad groups for use within the user interface or an attract loop. The promotion object supports both free- and apartment-model threading and is therefore completely thread-safe. The promotion object includes a promotion interface 48 that provides the following services: (A) retrieving the idle timeout value for a specific in-store terminal; (B) retrieving the instructional content information for a specific in-store terminal, including the instructional content uniform resource locator (URL), the duration to be displayed, and how often to be displayed; and (C) retrieving the appropriate ad group to be displayed for a specific in-store terminal device based on a navigational category identifier, the current date and time, and the current language. Each of these functions is explained more fully immediately below. A. Retrieving the Idle Timeout Value When the promotion object 26 is invoked to retrieve the idle timeout value for a given in-store terminal, the idle timeout value is returned as follows: First the in-store terminal's address, passed in from the caller, is looked up in the Device table 68a to find the terminal's group identifier device-group-id. The terminal's group identifier is used to perform a database lookup in the Device-Group table 68b to find the idle timeout value device-group-idle-timeout. B. Retrieving the Instructional Content When the promotion object 26 is invoked to retrieve the instructional content information for a given in-store terminal, the object returns the URL for the instructional content, the duration to display the instructional content, the display period, i.e., how often the instructional content should be displayed, and an indication as to how the display period should be interpreted, i.e., time-based or ad-based (for example, every 60 seconds or every 10 ads). This operation is performed as follows: First, the device group for the terminal is found by looking up the device's address in the Device table 68a to find the device's group identifier device-group-id. Then, instructional content information is retrieved by using the device's group identifier to perform a database look-up in the Device-Group table 68b to find (1) the instructional content URL device-group-instruction-url, (2) the duration device-group-instruction-duration, (3) the display period device-group-instruction-period, and (4) the display period type device-group-instruction-period-type. C. Retrieving the Appropriate Ad Group The promotion object also provides a service that callers can use to retrieve the appropriate ad group to display on a specific in-store terminal. Finding the appropriate ad group to display is based on the following criteria: (1) the device identifier, i.e., the ID of the terminal making the request; (2) the navigational category identifier, i.e., the Category ID of the screen being displayed to the consumer; and (3) the language identifier, i.e., the ID of the language currently being displayed. Each ad group is assigned a navigational category identifier. Those with a value of zero are considered uncategorized, while those with a non-zero value are considered categorized. In the presently preferred embodiment, attract loops consist of only uncategorized ad groups. Therefore, a navigational category identifier of zero is used to retrieve ad groups for the attract loop. On the other hand, ad groups can be displayed during non-idle times as part of the user interface. In this case, both categorized and uncategorized ad groups are eligible for display. Therefore, a non-zero navigational category identifier is used to retrieve the ad groups matching that category. In addition, the promotion object returns all valid uncategorized ad groups automatically. When the promotion object 26 is invoked to retrieve the appropriate ad group for display on a given in-store terminal, the object performs the task using a given navigational category identifier, the current date and time, and the current language. FIG. 5 is a flowchart of the method 76 used by the promotion object 26. The method includes the following steps: 1. Find Device Group (Step 78): First, the promotion object finds the device group by looking up the in-store terminal's address, passed in from the caller, in the Device table 68a to find the in-store terminal's group identifier device-group-id. 2. Find All Ad Groups for the Device Group and Category (Step 80): Second, the promotion object finds all ad groups for the device group and category by using the device's group identifier and the navigational category identifier, passed in from the caller, to query the Nav-Device-Ad-Group table 70a to find all of the ad groups ad-group-id with matching device group identifiers and navigational category identifiers nav-cat-id. If the navigational category identifier passed in is non-zero (ad groups are being requested for display with the user interface), the promotion object queries the Nav-Device-Ad-Group table 70a for all of the ad groups ad-group-id with matching device group identifiers and a navigational category identifier nav-cat-id of zero (uncategorized ad groups). 3. Find All Scheduled Groups (Step 82): Next, the promotion object finds all scheduled ad groups by using the current system date and time, find all of the ad groups from Step 2 whose time schedules make them eligible for display. This is done by comparing the current system date and time against each ad group's: (a) start date nav-device-ad-group-start-date; (b) start time nav-device-ad-group-start-time; (c) stop date nav-device-ad-group-stop-date; (d) stop time nav-device-ad-group-stop-time; (e) days of the week that the ad group is eligible to be displayed nav-device-ad-group-dow; and (f) ad group's schedule type nav-device-ad-group-schedule-type. If no ad groups are currently scheduled, the promotion object simply returns the number of seconds until the next group of ads is due to start. 4. Retrieve Eligible Ad Group Properties and All Eligible Ads (Step 84): For each of the eligible ad groups found in Step 3, the promotion object uses the ad group's identifier ad-group-id as the key to query the Ad-Group table 70b for the ad group's default duration ad-group-default-duration, start type ad-group-start-type, and order type ad-group-order-type. In addition, use the same ad group identifier ad-group-id as the key to query the Ad-Group-Member 70c table for all of the ads in the group ad-id, their explicit sort indices ad-group-member-index, their navigational category identifiers nav-cat-id, and their random order weights ad-group-member-weight. 5. Retrieve Properties for All Eligible Ads (Step 86): For each ad in each eligible ad group found in Step 4, the promotion object uses each ad's identifier ad-id and current language identifier, passed in from the caller, as the key to query the Ad-Language 72b table for the ad's display duration ad-language-duration, content URL ad-language-url, and link URL adlanguage-link-url. Since each ad may include versions in different languages, eligible ads in the proper language are retrieved using the following logic, as defined by the Microsoft Win32 Applications Programming Interface (API): (a) look for a version of the ad with an exact language match; (b) look for a version of the ad with a close language match; (c) look for a version of the ad that is language neutral; (d) look for an English version of the ad; (e) use any version of the ad. 6. Build Result Set of Ads (Step 88): Using all of the information obtained in Steps 4 and 5, construct a result set of ads that contains each ad's: (a) ad group identifier ad-group-id; (b) sort index ad-group-member-index; (c) navigational category identifier nav-cat-id; (d) ad identifier ad-id; (e) random order weight ad-group-member-weight; (f) display duration ad-language-duration; (g) content URL ad-language-url; and (h) link URL ad-language-link-url. 7. Set Display Duration for Ads in Result Set (Step 90): For each ad in the result set built in Step 6, the promotion object uses the ad group's default duration ad-group-default-duration to fill in the ad's display duration ad-language-duration if its value is NULL. Each ad having a NULL display duration inherits its display duration from the ad group that includes it. 8. Sort Ads in Result Set (Step 92): Sort the final ad result set from Step 7. The result set is sorted differently depending on whether it is being used as part of the user interface (navigational category identifier passed in by caller is non-zero) or as an attract loop (navigational category identifier passed in by caller is zero): a. If the result set is being used as part of the user interface, the promotion object sorts the result set first in ascending order by navigational category identifier nav-cat-id and second in ascending order by ad identifier ad-id. b. If the result set is being used as an attract loop, it is sorted differently depending on the ad group's sort order type ad-group-order-type. (1) If the sort order type is random, AD_GROUP_ORDER_RANDOM, the result set is not sorted, as this is left to the Attract Loop Manager SSI. (2) If the sort order type is explicit, AD_GROUP_ORDER_EXPLICIT, the result set is sorted first in ascending order by ad group identifier ad-group-id and second in ascending order by each ad's sort index ad-group-member-index. If more than one eligible ad group was found in Step 3 with different sort order types ad-group-order-type, the overall sort order type used is explicit, AD_GROUP_ORDER_EXPLICIT. In addition, if more than one eligible ad group was found in Step 3 with different start types ad-group-start-type, the overall start type used is "start with first ad," AD_GROUP_START. Therefore, in either case, all ads are sorted explicitly and are displayed starting with the first ad in the sequence. Finally, all ad groups specified with a random sort order type ad-group-order-type set to AD_GROUP_ORDER_RANDOM are always started from the first ad in the sequence. 9. Return Ad Group Properties and Result Set of Ads (Step 94): Return the sorted result set of ads from Step 8, the overall ad group start type ad-group-start-type, the overall ad group sort order type ad-group-order-type, and the number of seconds until the current group of ads is due to expire. This expiration duration will be computed based on the current system date and time as well as the earliest expiration date and time of all of the eligible ad groups found in Step 3. D. Ad Group Scheduling Ad groups are eligible to be displayed only according to their specified time schedules. The promotion object can examine the start date, stop date, start time, stop time, and days of the week mask for each ad group depending the scheduling option specified for that ad group. All of the supported ad group scheduling options for the system are listed in Table 1 below. All values are mutually exclusive.
TABLE 9
Ad Group Scheduling Options
Scheduling Option Description Example
DATE_RANGE Display ad group anytime Jan. 1,
1997-Jan. 7, 1997 anytime
between two specified dates.
TIME_RANGE Display ad group between two 2:00 pm-5:00 pm
every
specified times (not crossing day
midnight) every day.
DATE_TIME_RANGE Display ad group between two 2:00 pm-5:00 pm
every
specified times (not crossing day from Jan.
1, 1997-Jan. 7, 1997
midnight) during the given date
range.
DATE_TIME_SPAN Display ad group between two Jan. 1, 1997 at
2:00 pm-Jan. 7, 1997
specified dates/times. at 5:00 pm
DAYS_OF_WEEK Display ad group anytime on Anytime on
Sundays,
specified days of the week. Tuesdays,
Fridays
DATE_DOW_RANGE Display ad group anytime on Anytime on
Sundays,
specified days of the week within Tuesdays,
Fridays from
a specified date range. Jan. 1,
1997-Jan. 7, 1997
DOW_TIME_RANGE Display ad group between two 2:00 pm-5:00 pm
only on
specified times (not crossing Sundays,
Tuesdays,
midnight) on specified days of Fridays
the week.
DATE_DOW_TIME_RANGE Display ad group between two 2:00 pm-5:00 pm
only on
specified times (not crossing Sundays,
Tuesdays,
midnight) on specified days of Fridays from
Jan. 1, 1997-
the week within a specified date Jan. 7, 1997
range.
II. Attract Loop Manager The Attract Loop Manager 44 is an SSI file that can be included as part of any Active Server Page. It is solely responsible for controlling a device's attract loop. The Attract Loop Manager SSI consists of server-side VBScript to initialize the attract loop for a given device. This server-side script is used to dynamically generate client-side JavaScript that is eventually executed by the system's platform Web browser. The resulting client-side JavaScript contains all of the logic necessary to control the attract loop. A. Building the Attract Loop When the Attract Loop Manager 44 is requested, it invokes the promotion object 26 with a navigational category identifier of zero to retrieve all of the eligible ads contained in uncategorized ad groups that are used in the attract loop. The eligible ads returned by the promotion object 26 are used to initialize internal Ad objects and a single internal Attract Loop object. These objects are client-side JavaScript objects maintained by the Attract Loop Manager 44. They are used to easily access the attributes of each ad as well as the attributes of the attract loop as a whole. If the promotion object 26 returns a value indicating that there are no ad groups currently scheduled, then the Attract Loop Manager 44 has no ads to display. In this case, the Attract Loop Manager 44 displays the instructional content for the given in-store terminal 14. B. Initiating the Attract Loop If desired, the Attract Loop Manager 44 can be configured such that a given attract loop is always started from its first ad. However, if it is desired that a given attract loop should always be started from where it last left off, the Attract Loop Manager 44 starts the attract loop from where it left off in its previous run, provided that the ad that was last displayed has the same ad group identifier, ad identifier, and index value within the attract loop. The information that maintains where the attract loop last left off is stored in three ASP Session variables. Since these variables are given session scope, all three variables are maintained for each in-store terminal. These ASP Session variables maintained by the Attract Loop Manager are: (a) AttractLoopAdGroupId, the ad group identifier of the last ad displayed in an attract loop; (b) AttractLoopAdId, the identifier of the last ad displayed in an attract loop; and (c) AttractLoopAdIndex, the index within the attract loop of the last ad displayed in an attract loop. If the attract loop is to be started from where it last left off, the Attract Loop Manager looks in the attract loop for the ad whose index matches that of the AttractLoopAdIndex ASP Session variable. It then compares that ad's ad identifier and ad group identifier against the values of the AttractLoopAdId and AttractLoopAdGroupId ASP Session variables, respectively. If there is a match, the Attract Loop Manager assumes that the attract loop is identical to the last attract loop to run on the given in-store terminal and starts displaying the attract loop with the ad that follows the matching ad. C. Retrieving the Instructional Content Information In addition to its other responsibilities, the Attract Loop Manager 44 is responsible for displaying system instructional content automatically as part of any attract loop or when there are no scheduled ad groups. The Attract Loop Manager 44 invokes the promotion object 26 to retrieve all of the attributes of the instructional content for a given in-store terminal. These attributes include: (1) instruction duration, i.e., how long to display the instructional content; (2) instruction period, i.e., how often to display the instructional content; (3) instruction period type, i.e., how to interpret the instruction period; and (4) instruction URL, i.e., a reference to the instructional content itself. As the attract loop is displayed, the Attract Loop Manager 44 keeps track of the total number of ads that have been displayed as well as the total amount of elapsed time since the attract loop started. The Attract Loop Manager 44 displays the instruction content (specified by the instruction URL) for a specific amount of time (specified by the instruction duration) every X number of ads or every Y number of seconds (specified by the instruction period and period type) automatically as part of the attract loop. D. Displaying the Attract Loop If an attract loop has been ordered explicitly, the Attract Loop Manager 44 simply cycles through each ad in the attract loop in sequence. However, if an attract loop has been ordered randomly, the Attract Loop Manager uses an internal algorithm to randomly display the ads based on each ad's weighting factor. The Attract Loop Manager's client-side JavaScript uses two timeouts maintained via the Web browser's document object model. One of the timeouts controls the attract loop's ad rotation. When this timer expires, the next ad in the sequence is displayed. The other timeout detects when the entire attract loop expires. When this timer expires, the Attract Loop Manager 44 issues another request to the Web server for itself. This self-request causes the Attract Loop Manager 44 to be re-initialized with a new attract loop. The Attract Loop Manager 44 maintains an internal floating frame (implemented using the <IFRAME> HTML tag) to display all of its ad content. The Attract Loop Manager 44 requests that all ad content be sent to this floating frame for rendering. The floating frame will occupy 100 percent of the Attract Loop Manager's visual area so that only the ad content is visible to the consumer. The Attract Loop Manager 44 maintains one internal JavaScript variable that stores the link URL for the ad that is currently being displayed. This internal variable is updated by the Attract Loop Manager 44 each time a new ad is displayed. It can be accessed by any client-side scripting code outside of the Attract Loop Manager 44 by invoking the appropriate JavaScript access function. Its value should be passed to the Ad Interaction Manager Active Server Page 40 whenever a consumer interacts with a running ad to ensure that the proper data is collected about each ad interaction within the attract loop. The Attract Loop Manager 44 provides a JavaScript function to perform this task. The Attract Loop Manager 42 invokes the Ad Manager Active Server Page 38 each time a new ad is to be displayed. This ensures that the proper data is collected about the display of each ad in the attract loop, and that the Attract Loop Manager's three ASP Session variables are updated. The Attract Loop Manager 44 invokes the Data Collection and Analysis module 32 to increment a tally for each attract loop initiation. III. Ad Manager The Ad Manager 38 is an Active Server Page that contains a small amount of server-side VBScript code. It is responsible for collecting data about each ad that is displayed. It invokes the Data Collection and Analysis module 32 to perform this task. The Ad Manager 38 is also responsible for updating the information about the last ad displayed as part of an attract loop. The Ad Manager 38 should be invoked whenever any of the following scenarios occurs: (a) Non-Ad to Ad Transition, i.e., a non-ad is currently being displayed and an ad is to be displayed (for example, starting the attract loop); (b) Ad to Non-Ad Transition, i.e., an ad is currently being displayed and a non-ad is to be displayed (for example, terminating the attract loop); or (c) Ad to Ad Transition, i.e., an ad is currently being displayed and another ad is to be displayed (for example, attract loop ad rotation). The Ad Manager 38 accepts at most six parameters depending upon the scenario in which it is invoked. The six Ad Manager parameters are described as follows along with the scenarios in which each must be specified: (1) LastAdGroupId, i.e., the ad group identifier for the ad that has just completed being displayed (should be passed in for "ad to non-ad transitions" and "ad to ad transitions" only); (2) LastAdId, i.e., the ad identifier for the ad that has just completed being displayed (should be passed in for "ad to non-ad transitions" and "ad to ad transitions" only); (3) AdGroupId, i.e., the ad group identifier for the ad that is to be displayed (should be passed in for "non-ad to ad transitions" and "ad to ad transitions" only); (4) AdId, i.e., the ad identifier for the ad that is to be displayed (should be passed in for "non-ad to ad transitions" and "ad to ad transitions" only); (5) AttractLoopAdIndex, i.e., the index of the ad to be displayed within an attract loop (should only be passed in if the ad is being displayed as part of an attract loop); and (6) ContentUrl, i.e., the URL of the content (ad or non-ad) to be displayed (should always be passed in). The Ad Manager 38 maintains three ASP Session variables of its own. They are described as follows: (1) CurrentAdGroupId, i.e., the ad group identifier of the ad to be displayed; (2) CurrentAdId, i.e., the identifier of the ad to be displayed; and (3) CurrentAdStartTime, the start time of the ad to be displayed. When the Ad Manager 38 is invoked: 1. It compares the LastAdGroupId and LastAdId parameters (if passed in) against the CurrentAdGroupId and CurrentAdId ASP Session variables. 2. If they match, the Ad Manager 38 assumes that the ad specified by those two parameters has terminated its display and therefore its total display time tally should be updated. 3. It computes the total display time by taking the difference between the current system time and the value of the CurrentAdStartTime ASP Session variable. 4. It then invokes the Data Collection and Analysis module 32 to update the tally. 5. It also invokes the Data Collection and Analysis 32 module to update the total device idle time tally if the terminated ad is displayed as part of an attract loop. 6. After the appropriate processing is completed for the last ad displayed, the Ad Manager 38 replaces the CurrentAdGroupId and CurrentAdId ASP Session variables with the values of the AdGroupId and AdId parameters (if passed in) and replaces the value of the CurrentAdStartTime ASP Session variable with the current system time. 7. If the caller passed in the AttractLoopAdIndex parameter, the Ad Manager 38 assumes that the ad to be displayed is part of an attract loop and updates the Attract Loop Manager's AttractLoopAdGroupId, AttractLoopAdId, and AttractLoopAdIndex ASP Session variables with the values of the AdGroupId, AdId, and AttractLoopAdIndex parameters respectively. 8. Finally, in any case, the Ad Manager issues an HTTP redirect response to the URL specified by the ContentUrl parameter (which must always be specified). This URL can be a reference to any ad or non-ad content. IV. Ad Interaction Manager The Ad Interaction Manager 40 is an Active Server Page that contains a small amount of server-side VBScript code. It is responsible for collecting data about every consumer interaction with an ad that is being displayed on a retail self-service terminal. To perform this task, it invokes the Data Collection and Analysis module 32. The Ad Interaction Manager 40 should be invoked whenever a consumer interacts with an ad. This can occur when the consumer touches an ad while it is being displayed as part of the user interface or when the consumer touches one of the navigational buttons while an ad is being displayed as part of an attract loop. The Ad Interaction Manager 40 accepts a single parameter that is the link URL for the ad being displayed when a consumer interacts with it. When the Ad Interaction Manager 40 is invoked: 1. It increments the current ad's interaction tally by invoking the Data Collection and Analysis module 32 with the CurrentAdGroupId and CurrentAdId ASP Session variables maintained by the Ad Manager 38. 2. It also invokes the Data Collection and Analysis module 32 to log a detailed transaction using the information about the interaction. 3. Finally, the Ad Interaction Manager 40 issues an HTTP redirect response to the URL specified by the link URL parameter (passed in from the caller). V. Idle Timer Manager The Idle Timer Manager 46 is an SSI file that should be included as part of any Active Server Page that may be subsequently preempted by an attract loop. It is solely responsible for controlling a terminal's idle timer. The Idle Timer Manager SSI 46 consists of some server-side VBScript to initialize the idle timer for a given terminal, or other device. This server-side script is used to dynamically generate client-side JavaScript that is eventually executed by the platform Web browser. The resulting client-side JavaScript contains all of the logic necessary to control the idle timer. The Idle Timer Manager SSI client-side JavaScript utilizes a timeout maintained via the Web browser's document object model. This timer is used to keep track how long a device has been idle. The timer is initialized from the idle timeout value for the specific device. This value is retrieved by invoking the promotion object. When the timer expires, the Idle Timer Manager issues an HTTP request for the Active Server Page containing Attract Loop Manager SSI to start the attract loop. The Idle Timer Manager SSI 46 also maintains some JavaScript convenience functions that can be used by client-side scripting outside of the Idle Timer Manager 46 to manipulate the idle timer. These convenience functions include starting, stopping, and restarting the idle timer as well as a function for starting the attract loop. While the foregoing description includes detail which will enable those skilled in the art to practice the invention, it should be recognized that the description is illustrative in nature and that many modifications and variations thereof will be apparent to those skilled in the art having the benefit of these teachings. It is accordingly intended that the invention herein be defined solely by the claims appended hereto and that the claims be interpreted as broadly as permitted by the prior art.
|
Same subclass Same class Consider this |
||||||||||
