ask-smapi-sdk
Version:
Core package for SMAPI Skills Kit SDK
122 lines (94 loc) • 4.16 kB
Markdown
# ASK SMAPI SDK - Alexa Skills Management API Node.js Library
`ask-smapi-sdk` is a library for Alexa Skills Kit's Skill Management APIs (SMAPI).
Learn more about SMAPI by reviewing the SMAPI [documentation](https://developer.amazon.com/docs/smapi/smapi-overview.html).
## Getting Started
### Install NPM and the ASK CLI
1. Install NPM using the instructions provided [here](https://www.npmjs.com/get-npm). This is needed to get started with the ASK CLI, which will be used to generate Login with Amazon tokens you will need to access SMAPI.
2. Install [ask-cli](https://www.npmjs.com/package/ask-cli).
### Generate LWA (Login with Amazon) Keys
1. Create a new security profile for your Amazon Developer account by following the instructions provided [here](https://developer.amazon.com/docs/smapi/ask-cli-command-reference.html#generate-lwa-tokens).
This will generate `Client ID` and `Client Secret` keys.
2. Using the ASK CLI, run: `ask util generate-lwa-tokens --client-id <Client ID> --client-confirmation <Client Secrect>`. Replace the `<Client ID>` and` <Client Secrect>` with the `Client ID` and `Client Secret` keys from the previous step.
This will return the following JSON with a `Refresh Token`:
``` sh
{
"access_token": "ACCESS_TOKEN",
"refresh_token": "REFRESH_TOKEN",
"token_type": "bearer",
"expires_in": 3600,
"expires_at": "2019-11-19T20:25:06.584Z"
}
```
## Usage Examples
### Install ASK SMAPI SDK from NPM
``` sh
$ npm install ask-smapi-sdk
```
### Configure SMAPI Client
Using the `Client ID`, `Client Secret` and `Refresh Token` retrieved in the previous step to configure a new SMAPI client:
#### For Node.js
```js
const Alexa = require('ask-smapi-sdk');
// specify the refreshTokenConfig with clientId, clientSecret and refreshToken generated in the previous step
const refreshTokenConfig = {
clientId,
clientSecret,
refreshToken
}
const smapiClient = new Alexa.StandardSmapiClientBuilder()
.withRefreshTokenConfig(refreshTokenConfig)
.client();
```
#### For typescript
```ts
import * as Alexa from 'ask-smapi-sdk';
// specify the refreshTokenConfig with clientId, clientSecret and refreshToken generated in the previous step
const refreshTokenConfig : Alexa.RefreshTokenConfig = {
clientId,
clientSecret,
refreshToken
}
const smapiClient = new Alexa.StandardSmapiClientBuilder()
.withRefreshTokenConfig(refreshTokenConfig)
.client();
```
### List Skills
``` js
# To only retrieve response body
smapiClient.listSkillsForVendorV1(vendorId)
.then((response) => {
console.log(JSON.stringify(response));
})
.catch((err) => {
console.log(err.message);
console.log(JSON.stringify(err.response));
});
# To include response header and status code
smapiClient.callListSkillsForVendorV1(vendorId)
.then((response) => {
console.log(response.header);
})
.catch((err) => {
console.log(err.message);
console.log(JSON.stringify(err.response));
});
```
### Get Skill Manifest
``` js
smapiClient.getSkillManifestV1(skillId, stage)
.then((response) => {
console.log(JSON.stringify(response));
})
.catch((err) => {
console.log(err.message);
console.log(JSON.stringify(err.response));
});
```
For the complete list of functions, please see the SMAPI SDK reference documentation.
## Documentatiion
* [SMAPI SDK API Reference Documentation](https://ask-smapi-node-typedoc.s3.amazonaws.com/index.html)
* [SMAPI Documentation](https://developer.amazon.com/docs/smapi/smapi-overview.html)
## Opening Issues
For bug reports, feature requests and questions, we would like to hear about it. Search the [existing issues](https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs/issues) and try to make sure your problem doesn’t already exist before opening a new issue. It’s helpful if you include the version of the SDK, Node.js or browser environment and OS you’re using. Please include a stack trace and reduced repro case when appropriate, too.
## License
This SDK is distributed under the Apache License, Version 2.0, see LICENSE for more information.