How to construct AMP cookie consent with the help of amp-story-consent?

1k views Asked by At

I'd like to add a cookie consent to my AMP static website. I'd like to take advantage of the modal dialog what the amp-story-consent could provide to me. I studied various examples, maybe the most complete is this:

https://playground.amp.dev/?url=https%3A%2F%2Fpreview.amp.dev%2Fdocumentation%2Fexamples%2Fuser-consent%2Fstory_user_consent&format=websites (example documentation https://amp.dev/documentation/examples/user-consent/story_user_consent/?referrer=ampbyexample.com)

My problem is that I only want to display the title / message / vendors defined in the JSON snippet

    <amp-story-consent id="consentUI" layout="nodisplay">
      <script type="application/json">
        {
          "title": "Headline",
          "message": "This is some more information about this choice. Here's a list of items related to this choice.",
          "vendors": ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10"]
        }
      </script>
    </amp-story-consent>

plus an Accept and a Reject button. With a Cookie consent I don't really have any story pages or any story bookend, but the AMP validation rules seems to require it. That's one problem. The playground shows a Decline / Accept button pair, I'd like a Reject / Accept pair but I don't see where this can be defined.

In the bare amp-consent documentation there are buttons (see "Consent configuration" at https://amp.dev/documentation/components/amp-consent/):

<div id="consent-ui">
  <button on="tap:consent-element.accept" role="button">Accept</button>
  <button on="tap:consent-element.reject" role="button">Reject</button>
  <button on="tap:consent-element.dismiss" role="button">Dismiss</button>
</div>

Does anyone have an example or guidance?


Note that the https://amp.dev/documentation/components/amp-consent/ has this example snippet. It says "Example: Displays a prompt user interface on an AMP Story"

<amp-consent layout="nodisplay" id="consent-element">
  <script type="application/json">
    {
      "consents": {
        "my-consent": {
          "checkConsentHref": "https://amp.dev/documentation/examples/api/get-consent",
          "promptUI": "consent-ui"
        }
      }
    }
  </script>
  <amp-story-consent id="consent-ui" layout="nodisplay">
    <script type="application/json">
      {
        “title”: "My title",
        “message”: "My example message.",
        “vendors”: ["Item 1", "Item 2", "Item 3", "Item 4"]
      }
    </script>
  </amp-story-consent>
</amp-consent>

How to get that working? (As I mentioned I don't have any story pages or any story bookend as the snippet suggests as well).

1

There are 1 answers

1
Jon Newmuis On BEST ANSWER

You cannot use amp-story-consent outside of an amp-story, which must have some number of amp-story-page elements.