Share private cloud and private amazon-openhab skill

Hello,
is it possible to share to other (family) users the amazon-skill to view in the store of other user (but keeping private) so the skill can be used without deployed from the other users?

Thanks

I am not sure if I fully got your question. Let’s check:

  • you host your own ( private ) myopenhab.org cloud installation
  • you run your own alexa skill instance on AWS
  • the alexa skill is still in ‘development’ and not deployed
    ( that means it is visible to you only but not to the public )
  • now you would like to open it to your family ( resp. selected list of users ) but not the public
  • skill is to be used with your OH instance

Is that correct ? Do I miss something ?

Yes correct so other users with other account on private openhab cloud can use same skill (pointing to my private openhab cloud) without re-deploy the lamba.

2 Likes

Sorry If I reply after 1 year
but I really need to know if it’s possible this is my situation:

  • Private openhab cloud on Ionos
  • Succesfully having on my account the skill Alexa pointing to my server

All is working perfect.
Now I’d like to add another user to my cloud with another oh instance, what is better:

  • Add another private skill to the new user (pointing to the same private cloud instance doesn’t conflict?)
  • Share the skill
    When the skill will ask for consent doesn’t conflict having the same client-id “alexa-skill”?
    What’s the best option?
    Thanks

The private openhab cloud is the same as myopenhab.org - just an other instance.
The private alexa skill is like the skill offered by openhab - just an other instance.

If you think about how all this works with the ‘official’ instance then

  • your OH instance connects to the (private) openhab cloud instance
  • many other users connect to the (private) openhab cloud instance
  • you connect your alexa with ( your private ) alexa skill to ( private ) openhab cloud instance
  • many other others connect their alexa with the ( private ) alexa skill to ( private ) openhab cloud instance.

As you can see only one openhab cloud instance and one alexa skill would be required.
But you need to keep in mind that each OH instance get their own account in the (private) cloud instance appart of you use the remote binding to connect one instance to one that is registered in the cloud.

Yes this is clear, but to browse the openhab skill (customized to point to the private cloud) each alexa user has to be able to browse the customized skill (customized because only the url from myopenhab.org to the private has to be edited), so the skill need to be deployed in the other alexa accounts. And I dont know if this is the right process

1 Like

Doesn’t this apply to public skills only ?

This one could help

Beta testers get access to your (private) skill before it is made public:

Before we launch our Alexa skill to public, we need to test it. Alexa Developer Console provides an option to send your Alexa skill to a list of beta testers, up to 500 email addresses. Once your Alexa skill is ready, validated, and ready to test, follow these steps to send your Alexa skill to a list of beta testers.

3 Likes

This could be good I have to test it.
Its a pity that there is an end date for testing.
Another way its to deploy the skill in the others private account (pointing to the same private cloud), but I dont know if its tested for have multiple skills pointing to it.

I can confirm this is the only workaround to get a skill in development shared across different accounts.

You can deploy the skill on your other users’ Amazon account while still pointing to the same AWS resources and therefore cloud connector instance. To that effect, when these users enable the skill on their account they can log in with their own account on your cloud connector during the account linking process.

To do so, you would need to setup additional profiles with ASK CLI. For each profile, authorize the relevant Amazon account and no need to specify AWS credentials since you wouldn’t deploy the skill infrastructure from these profiles.

To configure each new profile, I would recommend using the --no-browser parameter and send the generated authorization url to the relevant users who can just send back the authorization code after they log in into their Amazon account.

ask configure --no-browser -p <profileName>

To deploy, you will need to have already run the deploy command as per the installation instructions with your default profile. This should have added your Lambda endpoint to skill-package/skill.json.

At that point, you can just deploy the skill metadata on each of the profile you created by running the following command:

ask deploy -t skill-metadata -p <profileName>

Also, make sure to update the skill account linking information using the newly created skill id displayed in the step above.

ask smapi update-account-linking-info -s <skillId> --account-linking-request file:accountLinking.json

Last step is to add permission to your Lambda function to allow each newly created skill to invoke it. You can run the following command using the AWS CLI:

aws lambda add-permission --statement-id AlexaSkillFunctionPermission<profileName> --function-name alexa-openhab --action lambda:invokeFunction --principal alexa-connectedhome.amazon.com --event-source-token <skillId>

Or if you prefer, use the AWS console to add the permission to the relevant Lambda function.

2 Likes

Thanks for the detailed explanation, I will try asap to see if all it’s working.