adobe.target.getOffer(options)

This function fires a request to get a Target offer.

Use with adobe.target.applyOffer() to process the response or use your own success handling. The options parameter is mandatory and has the following structure:

Key Type Required Description
mbox String Yes Mbox name
params Object No

Mbox parameters. An object of key-value pairs that has the following structure:

{ "param1": "value1", "param2": "value2"}

success Function Yes

Callback to be executed when we got a response from the server. The success callback function will receive a single parameter that represents an array of offer objects. Here is a success callback, example:

function handleSuccess(response){......}

See Responses for details.

error Function Yes

Callback to be executed when we got an error. There are a couple of cases that are considered erroneous:

  • HTTP status code different from 200 OK
  • Response can not be parsed. For example we poorly constructed JSON or HTML instead of JSON.
  • Response contains the "error" key. For example an exception was thrown on the edge a request could not be properly processed. We could get an error when an mbox is blocked and we could not retrieve any content for it etc.

The error callback function will receive two parameters: status and error. Here is an error callback example:

function handleError(status, error){......}

See Error Responses for details.
timeout Number No

Timeout in milliseconds. If not specified, the default timeout in at.js will be used. The default timeout can be set from the Target UI under Setup > Implementation > Edit Mbox.js Settings > Timeout.

Examples

Adding parameters with getOffer() and using applyOffer() for success-handling:

adobe.target.getOffer({  
  "mbox": "target-global-mbox",
  "params": {
     "a": 1,
     "b": 2
  },
  "success": function(offer) {          
        adobe.target.applyOffer( { 
           "mbox": "target-global-mbox",
           "offer": offer 
        } );
  },  
  "error": function(status, error) {          
      console.log('Error', status, error);
  }
});

Adding parameters and profile parameters with getOffer() and using applyOffer() for success-handling:

adobe.target.getOffer({  
  "mbox": "target-global-mbox",
  "params": {
     "a": 1,
     "b": 2,
     "profile.age": 27,
     "profile.gender": "male"
  },
  "success": function(offer) {          
        adobe.target.applyOffer( { 
           "mbox": "target-global-mbox",
           "offer": offer 
        } );
  },  
  "error": function(status, error) {          
      console.log('Error', status, error);
  }
});

Using custom timeout and custom success-handling with getOffer():

"YOUR_OWN_CUSTOM_HANDLING_FUNCTION" is a placeholder for a function the customer would define.

adobe.target.getOffer({    
  "mbox": "target-global-mbox",  
  "success": function(offer) {
    YOUR_OWN_CUSTOM_HANDLING_FUNCTION(offer);  
  },
  "error": function(status, error) {                
    console.log('Error', status, error);  
  },  
  "timeout": 2000
});

Responses

The response parameter passed to the success callback will be an array of actions. An action is an object that usually has the following format:

Name Type Description
action String

Type of action to be applied to the identified element.

selector Sting

Represents a Sizzle selector.

cssSelector String

DOM native selector, used for element pre-hiding.

content String

The content to be applied to the identified element.

Example

{
    "sessionId": "1444512212156-384616",
    "tntId": "1444512212156-384616.17_35",
    "offers": [{
        "plugins": ["<script type=\"text/javascript\">\r\n/*mboxHighlight+ (1of2) v1 ==> Response Plugin*/\r\nwindow.ttMETA=(typeof(window.ttMETA)!='undefined')?window.ttMETA:[];window.ttMETA.push({'mbox':'target-global-mbox','campaign':'at: redirect ootb','experience':'Experience B','offer':'/at_redirect_ootb/experiences/1/pages/0/1442082890250'});window.ttMBX=function(x){var mbxList=[];for(i=0;i<ttMETA.length;i++){if(ttMETA[i].mbox==x.getName()){mbxList.push(ttMETA[i])}}return mbxList[x.getId()]}\r\n</script>"],
        "actions": {
            "content": [{
                "passMboxSession": false,
                "selector": "body",
                "action": "redirect",
                "url": "http://lab.adobetarget.com/04.html",
                "includeAllUrlParameters": true
            }]
        }
    }]
}

Error Responses

The "status" and "error" parameters passed to the error callback will have the following format:

Name Type Description
status String

Represents the error status. This parameter can have the following values:

  • timeout

    Indicates that the request timed out

  • parseerror

    Indicates that the response could not be parsed, for example if we receive HTML or plain text instead of JSON

  • error

    Indicates a general error like we received HTTP status different from 200 OK

error String

Contains additional data like exception message or anything else that might be useful for troubleshooting.