Iubenda logo

Documentazione

Indice dei contenuti

Come chiamare le API della Cookie Solution da un iframe

Se il codice di integrazione della Cookie Solution è incluso in un iframe, i metodi di _iub.cs.api possono essere chiamati tramite postMessage. Vediamo come farlo con alcuni esempi.

postMessage

Le API devono ricevere una chiamata postMessage in formato JSON:

{ 
    __iubCsCall: { 
        command: <api-function-name>, 
        parameters: [...], 
        callId: <a-string-or-integer> 
   } 
}

Dove:

  • command (string) è il nome della funzione che si desidera chiamare
  • parameters (array) è l’elenco dei parametri che si sta inviando alla funzione
  • callId (string | int) è l’Id usato per verificare che l’output sia per la stessa chiamata API

Esempi

Supponendo che l’iframe sia su https://example.com, possiamo fare questa chiamata:

ifr.postMessage(
    JSON.stringify({
        __iubCsCall: {
            command: 'isConsentGiven',
            parameters: [],
            callId: 1
        }
    }),
    'https://example.com'
);

Questa chiamerà il metodo della Cookie Solution isConsentGiven() senza alcun parametro. L’output verrà restituito via postMessage sotto forma di stringa JSON.

Affinché l’evento message catturi questo output avrai bisogno di un “listener”. A seconda dello stato della Cookie Solution, il listener sarà:

{
    "__iubCsReturn": {
        "returnValue": false,
        "success": true,
        "callId": 1
    }
}

Esempio con parametri

Ecco come passare dei parametri alla chiamata postMessage:

ifr.postMessage(
    JSON.stringify({
        __iubCsCall: {
            command: 'storeConsent',
            parameters: [{
                consent: false
            }],
            callId: 2
        }
    }),
    'http://localhost:3012'
);

Questa chiamata al metodo storeConsent() imposterà consent a false e memorizzerà un cookie di preferenza del consenso.

Ricarica la pagina per vedere gli effetti di questa chiamata. Dopo di che potrai verificare che il consenso sia settato a false esaminando _iub.cs.consent.consent nella console (l’output dovrebbe infatti essere false).

Il JSON dell’output di postMessage sarà qualcosa di simile:

{
    "__iubCsReturn": {
        "success": true,
        "callId": 2
    }
}

Esempio di una chiamata postMessage mal formulata

A seguire l’esempio di una chiamata postMessage mal formulata (ad esempio un metodo API che non esiste):

ifr.postMessage(
    JSON.stringify({
        __iubCsCall: {
            command: 'Consent',
            parameters: [{
                consent: false
            }],
            callId: 1
        }
    }),
    'http://localhost:3012'
);

Poiché le API della Cookie Solution non prevedono un metodo Consent, dovresti ottenere un errore del genere:

{
    "__iubCsReturn": {
        "returnValue": null,
        "success": false,
        "callId": 1
    }
}

Leggi anche