My skill is available in en-US and de-DE (using different invocation names) and uses account linking via Implicit Grant. My developer account is connected to two different organizations/companies via Amazon Developer console.
When testing the skill in the simulator, I occasionally unlink my developer account from the skill in order to test the initial setup procedure. Unlinking should work as expected by either switching the "Test mode" toggle in the simulator off and on again, or by deactivating the skill in the Alexa app.
Unfortunately, this is only the case when the Alexa Simulator is set to English (US). When set to German, unlinking the account is impossible: The request always contains a (several days old) access token sent in the JSON request payload that can never be removed.
So far, I tried unlinking via app, toggling test mode off and on again, logging out of the Alexa developer console and then logging in again, rebuilding the model and disabling account linking and enabling it again.
Further observations
- My phone running the Alexa app is set to German. However, the English invocation name is suggested in Your Skills > Developers.
- Entering the test utterance "Öffne <German invocation name>" leads to the original issue whereas "Öffne <English invocation name>" succeeds.
- I noticed that different applicationId values where passed in the JSON request depending on the language I selected. The unexpected application ID belonged to a similar skill in a difference organization/company which I also have access to.
What I think happened
For some reason the Alexa Simulator used the actual skill which was opened in the simulator/console screen for one language, but used an entirely different skill with matching invocation name from a different organization which my developer account is also linked to.
This even happens after I removed myself from the organization/compoany in the Amazon Developer console which the other skill was part of.
What I think should happen
Even when a skill's invocation name is identical to a different skill's invocation name which is also accessible to a developer, requests should not never leak between similar skills. In this particular case, the overlap exists because production versions of the skill need to be visible to a different organization/company than the staging versions.
Unlinking a skill should be possible at any time.