I need to revise my published Alexa skill. I'm familiar with the "In Development" skill version which Amazon automatically creates after publishing a skill. What I don't understand is how do I iterate on my skill, particularly when I need to change the interaction model and the linked Lambda function at the same time?
For example, I could create a separate "In Development" Lambda function and make it my default endpoint for my "In Development" Alexa skill. But then when I submit my "In Development" Alexa skill for publication, that "In Development" Lambda endpoint would become the new endpoint for my published skill. I suppose that could work, and I think that's what Amazon intends, but I don't want to have to recycle my Lambda functions, reconfigure x-ray tracing, etc. I use the Serverless Framework to deploy the Lambda functions linked to my Alexa skills, and it versions my Lambdas for me.
What's the recommended workflow? I feel like I'm missing something basic here.
I couldn't find any Amazon documentation for this beyond "edit the development version," which is obviously inadequate. That page has a link to "Revise and Update Your Skill after Publication" but clicking it sends me to a page about skill distribution.
Alexa Skill
As you said when your skill is published you will have a live version and development version. Both the live version and the development version of your skill are shown on the developer console.
You can now make changes to the development version of the skill like: change in interaction model, endpoint change etc. Any change in the developer portal requires your skill to go through certification process.
When you submit your new version for certification, both versions remain in your list until the new version is certified. Once the new version is certified, it becomes live and replaces the previous live version. All the existing users will have the live/latest version of your skill. A new development version is then created so that you can continue making updates.
Lambda Function
When you create a Lambda function for the first time, the default version is
Latest
. TheLatest
is your development version, and you can make changes to this. During development you will use thearn
of theLatest
version (development version) of Lambda function in Alexa portal. Once you are done with the changes and updates of your Lambda function and you feel that this has to be released, you version it. When you publish a version (you can provide the version name) of the Lambda function, you will have two versionsLatest
andreleased-version
. You will no longer be able to make changes toreleased-version
of your Lambda. And you can continue making updates to theLatest
version and release it as you wish.It's always a good practice to publish a version of Lambda and use it in Alexa developer portal before you submit the skill for certification.
This way you can link the versioned uneditable Lambda to your live skill. And for the development version of the skill, you can use the
Latest
version of the same Lambda function to continue making updates.More on versioning Lambda functions here.
Alexa creates development and a live version of the skill. You can change the development version to include the updates. For me when specifying the AWS Lambda arn, I couldn't specify the version field. Whenever I tried saving ARN with version set to $Latest or a version number or an alias, Alexa developer console was giving an error. So I created 2 lambda functions. One, pointing to the old version of skill and the other one pointing to the new version of the skill.