You can stream a particular genre by saying Alexa, ask radio to play Jazz music. You can, of course, add or delete the stations, so you can have a completely personalised music playing experience.
Adding and deleting your stations is a breeze with a responsive web page your API will automatically serve. Add channels, which are a collection of stations, easily. If you’re adding an audiobook, the channel name will be Game of Thrones and each station would be the individual books.
Feature list- A responsive web page to add and delete your channels and stations.
- Alexa responses can be customised using the web page. Change what the skill says for Now playing, Next etc. Change them as often as you wish.
- Support for audiobooks. If the streaming link is an MP3 file, progress is saved. If your channel contains multiple MP3 files, the skill will queue up the next file automatically.
- Alexa Interaction model updated to use a custom slot and fuzzy search is enabled. If your channel is called
The Hitchhiker’s Guide to the Galaxy
, you can say Alexa, ask radio to playguide to the galaxy
- You can see the status of each station on the web page, like
unplayed
,streamable
andfailed
Check out a live demo — Alexa Radio
UsageDeploying it is incredibly easy thanks to Standard Library. It involves two steps, lots of button clicking and some copy pasta.
Step 1The first step is to deploy your code to Standard Library. Right-Click on the link below and open it to deploy.
On the new page, click on the Generate Identity button. Once that’s done, click on the Deploy Project button under it to deploy the code.
After the code is deployed, you’ll be taken to your project page. Here you can change your project name and add your own description.
Now click on the dev button to see all the endpoints of your project.
Note down the second URL. You’ll need it for the next step. If you are curious, click on the first link and you can see the web page to add and delete your custom stations.
The first URL will take you to the web page. The second URL is the Alexa Endpoint
Step 2Go to developer.amazon.com to create a new Alexa Skill. If you haven’t signed up for an Amazon Developer account yet, do so now. Once logged in, you should see the Create Skill button.
Give your skill a name like radio and choose your Default Language. Choose Custom for model to add to your skill and click on Create Skill.
On the next screen, choose Start from scratch.
Once you have created the Alexa Skill, click on JSON Editor at the bottom left. Delete everything inside it.
Right-click and open the AlexaInteractionModel.json
file on the Github repo. Copy the file contents.
Go back to the Alexa developer portal, and paste it into the JSON Editor. Click on Save Model, to save the model.
The invocation name is set as radio. To change the name, just change the invocationName value at the top of the JSON file.
The invocation name is set as radio. To change the name, just change the invocationName value at the top of the JSON file.
We are almost done. Click on Endpoint to link our Standard Library deployed code to the Alexa skill. Enter the Standard Library API URL you noted earlier.
Your endpoint should look like https://[username].api.stdlib.com/alexa-radio@dev/alexa
. Make sure you choose My development endpoint is a sub-domain of a domain option from the drop down menu.
Enter your Standard Library URL and choose My development endpoint is a sub-domain option. Save endpoint.
Next, click on Interfaces and turn on the Audio Player interface. The skill will not work without this being enabled.
That’s all the setup you need to do. In the Alexa Development portal, click on Build Model. This might take a couple of minutes.
Once you get the pop-up saying that the Build Succeeded, click on the Test tab next to Build on the Alexa Developer console. Turn on testing and type in open radio. You should get a reply asking you to go to the web page to add your stations.
If you get a reply on the console, it means the skill is also active on your Alexa device. Ask the same question to your device and you should get the same reply.
Now let’s add some channels with stations. Go to your main Standard Library URL, which is the first URL noted below.
Now let’s add some channels with stations. Go to your main Standard Library URL, which is the first URL noted below.
Clicking on the above link will open a web page where you can add channels and stations, as well as customise Alexa responses.
Let’s add a channel first. Channels are like playlists, based on a mood or genre. In the case of an audiobook, it would be the book series name. Click on the Channel button to add a new channel.
This will open a modal where you can add details of your channel. You can add multiple stations here. A few things to note:
- The station URL has to start with
https
- If you’re adding MP3 files as part of an audiobook, make sure shuffle is off
- Go to shoutcast.com to get your favourite radio stations. player(.m3u) link. Add an
s
if needed for the URL so it is ahttps
link
- Try archive.org for some awesome audiobooks that you can add. Use the MP3 direct download link as the station URL
Click on the Save button once you’ve added your channel. You can of course add more channels if you want.
You can also rename any of the channels, stations or edit the station URL by clicking on them.
Customising Alexa responsesYou can customise Alexa responses by clicking the gear icon on the top right of the main page. Here you can add or remove the responses.
Use SSML if you want, to give it more personality.
Use SSML if you want, to give it more personality.
Notes
- All streaming URLs should be
https
. - If the
URL
fails to play, your skill will saystream failed to play
. The status of the channel on the web page will be updated to showfailed
. If playing is successful, the status would saystreamable
- The test simulator on Alexa Developer portal does not play any audio.
- Anybody who knows your station URL can change your library contents.
- The skill doesn’t need to be published for you to use it.
If you get stuck anywhere, or if you have any feedback, write to me. You can find the code repository here.
Comments