Deferrer Functions

During an interactive TV program there is often an opportunity to interact with a program sponsor, content creator, or other company, where it is not necessary to transmit the response immediately. For example, an interactive program may be in the form of paid programming%u2014the modern "infomercial." The commercial sponsor may offer the featured product for immediate sale by simply clicking on an icon. Or a news organization may be conducting a poll, asking for the opinions of the viewers.

In these cases, it is normally not urgent that the transaction be completed immediately. The information can be transmitted to the content provider at a later time. It is more efficient to send this information during the night when the receiver normally dials for new programming information.

The page that contains the interactive TV content carries information specific to the deferrer functions in the receiver. These are in the form of JavaScript calls that place the information into the defer buffer.

The process is simple:

  1. First the receiver checks that there is room in the buffer.
  2. The response(s) is placed in the buffer.
  3. The response(s) is uploaded during the nightly update session.

The specific JavaScript functions are:

The user interface for the Deferrer Object consists of a couple of status message panels. These messages have default values. However, the content creator can insert its own messages within the defer() call.

The default response message is: "Your order will not be placed immediately. Within 24 hours, your WebTV Internet receiver will place your order to the vendor. Please make sure the telephone line is plugged in during the daily download."

defer

This call simply establishes a randomly generated number, called a Universally Unique Identifier (UUID), to identify the deferred transaction. Application authors are encouraged to add a UUID to any URL request made using defer(). This allows the recipient of the request to track the response.

Syntax:
generateUUID()

canDefer

This function is used to determine if conditions are right for the receiver to execute the defer() call. First the script checks to see if the conditions are right to even attempt the process. The process then calculates the size of the proposed defer by adding up the size of the wallet items and adding some space for the overhead. It checks this number against the available space in the defer buffer.

Syntax:
canDefer(url,action,walletFields,name)

where:

url %u2013 the address of the Internet presence responds. The URL can be either a standard (http://) or a secure (https://) page address. If any purchase information is included in the wallet fields then the address must be a secure page. action %u2013 one of two (GET and POST) http methods used to send data to a CGI script using an HTML page. Only GET is supported. walletField %u2013 specifies what wallet data to append to the request. If this field is an empty string there are no success or failure messages presented to the user after the nightly defer attempt. name %u2013 this feature is not implemented in this release.

generateUUID

This call simply establishes a randomly generated number, called a Universally Unique Identifier (UUID), to identify the deferred transaction. Application authors are encouraged to add a UUID to any URL request made using defer(). This allows the recipient of the request to track the response.

Syntax:
generateUUID()

Deferred Response Example

Following is one example of how these scripts may be used together, in conjunction with the wallet feature, to create a buffered purchase request.


var trackingID = deferrer.getNextTrackingID()
var urlRequest = "http://purchase.com/buy?product=1&trackingID="+trackingID
var name = "buy"
var userData


// Check if the box will allow the defer to take place
if (canDefer(urlRequest.length + name.length))
{


// query the user data and append it to the urlRequest
userData = wallet.getField(null)
urlRequest += userData
// add the request to the defer buffer
defer(urlRequest, name, null, null, null, null)
}

Back to Top