AP Dialog module create returns 404 "Unable to retrieve addon module URL"

Hi,

I’ve discovered strange behaviour after deployment of my app with the included dialog code.

Descriptor module definition:

"dialogs": [
      {
        "url": "/macro/testmacro/test-dialog.html",
        "cacheable": true,
        "options": {
          "header": {
            "value": "Test Header"
          }
        },
        "key": "test-dialog-key"
      }
    ]

Dialog invocation:

window.AP.dialog.create({
        key: 'test-dialog-key',
        width: '300px',
        height: '300px',
        chrome: true,
        submitText: 'Save'
      });

As you can see, fairly “hello world” simplicity dialog code.

Please note that when testing locally (normal confluence cloud instance, project files served over ngrok from my machine) everything works as expected and the dialog appears with the normal content.

When testing after deploying the app to s3 hosting however, the following error is returned instead of the dialog content:

Error: The content resolver threw the following error:
(spinner) Loading app…
Unable to retrieve addon module URL. Please check your specified module key.

Inspection of the associated network call shows that the following is returning a 404 instead of expected data:
(base-url)/plugins/servlet/ac/(addon-key)/test-dialog-key

The mechanism by which the above URL is generated and/or implemented seems to not be functioning correctly when my app is deployed. Anyone have any insights?

@TonyGoughAdaptavist just a shot in the dark, but when you’re using S3 for hosting, is it without SSL? SSL is a requirement (see Connect troubleshooting guide) … and I know that stock S3 bucket hosting, by default (without the use of ELB) is straight http, not https.

2 Likes

@nmansilla Thanks for the suggestion, but yeah we are definitely using SSL. Other features in the app work (macro functionality etc is fine) it’s just this dialog mechanism which appears to be broken.

It feels like a Confluence issue because the url returning 404 is ‘(base-url)/plugins/servlet/ac/(addon-key)/test-dialog-key’, not our s3 bucket url.

Turns out after loading my deployed app to a different instance, everything was fine.

I guess something was wrong with the instance, i’m not sure what but it’s not worth investigating further for now.

I’ve only seen this kind of error before when I forgot reinstalling the app after adding such a module to the app descriptor. Are you sure that you reinstalled the app after adding the dialog module, and that your S3 was definitely serving the updated app descriptor when you did?