Skip to content

Instantly share code, notes, and snippets.

Working from home

German Viscuso germanviscuso

Working from home
  • Amazon
  • Madrid
Block or report user

Report or block germanviscuso

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
germanviscuso / index.js
Last active Feb 24, 2020
Quick code to support an intent that plays long form audio in an Alexa skill
View index.js
var stream = {
"token": "my_token", // no auth token, you decide what this is
"url": 'https://my_song.mp3',
"metadata" : {
"title": "My Song Title",
"subtitle": "My Song Subtitle",
"art": {
"sources": [
"contentDescription": "image",
germanviscuso / gist:26f3f96d9048c5446acc6e4cfe8009d6
Created Jan 13, 2020
Overwrite existing git repo with another one
View gist:26f3f96d9048c5446acc6e4cfe8009d6
(Switch to old repo)
> git remote add new-origin new_repo_url
> git remote update
> git push -f new-origin master --follow-tags (WARNING: new repo gets overwritten!)
View index.js
// This sample demonstrates handling intents from an Alexa skill using the Alexa Skills Kit SDK (v2).
// Please visit for additional examples on implementing slots, dialog management,
// session persistence, api calls, and more.
const Alexa = require('ask-sdk-core');
const LaunchRequestHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'LaunchRequest';
handle(handlerInput) {
germanviscuso / index.js
Last active Feb 24, 2020
Example on how to user personId as primary key in an Alexa Persistence adapter
View index.js
function getPersistenceAdapter() {
// This function is an indirect way to detect if this is part of an Alexa-Hosted skill
function isAlexaHosted() {
return !!process.env.S3_PERSISTENCE_BUCKET;
if (isAlexaHosted()) {
const {S3PersistenceAdapter} = require('ask-sdk-s3-persistence-adapter');
return new S3PersistenceAdapter({
bucketName: process.env.S3_PERSISTENCE_BUCKET,
objectKeyGenerator: keyGenerator
germanviscuso / gist:3f6f24644905d272ea3778b729bbf5e2
Created Aug 21, 2019
Personal AWS resources in Alexa Hosted Skills
View gist:3f6f24644905d272ea3778b729bbf5e2
How do I set up an Alexa-hosted skill to use resources on a personal AWS account?
With the AWS Lambda execution role ARN, you can seamlessly use resources on a personal AWS account to expand the functionality of your Alexa-hosted skill. For example, you can connect the Alexa-hosted skill to an Amazon DynamoDB table. Take the following steps to set up your Alexa-hosted skill to use resources on a personal AWS account:
In the Alexa developer console, open your Alexa-hosted skill, and then in the code editor click the icon that has hover text AWS Lambda Role Execution ARN. Copy the ARN.
If you have not done so already, on your personal AWS account, in the Identity and Access Management (IAM) dashboard, create a role that allows access to the resource that you want your Alexa-hosted skill to access.
In the IAM dashboard, click Roles, click the name of the role you want to edit, and then click the Trust relationships tab.
Edit the trust relationship to include the sts:AssumeRole action, and specify the AWS Lambda
germanviscuso / en-US.js
Created Aug 13, 2019 — forked from KayLerch/en-US.js
Optimized i18n request interceptor for Alexa custom skills in Node. Loads only required language assets from external files and provides some convenient functions to read them. Will also let you store localized settings represented as JSON objects in your language files.
View en-US.js
module.exports = Object.freeze({
translation: {
welcome: 'Howdy',
images: [
background: 'https://image/en-US.png'
background: 'https://image/en-US2.png'
germanviscuso /
Created Jun 27, 2019
Progressive Response in Java
sendProgressiveResponseMessage("Please wait!", handlerInput);
public static void sendProgressiveResponseMessage(final String message,
final HandlerInput handlerInput){
final SpeakDirective speakDirective = SpeakDirective.builder()
final String requestId = handlerInput.getRequestEnvelope().getRequest().getRequestId();
germanviscuso / aplcard.js
Last active Jul 9, 2019
Sí mi Capitán - Alexa Games workshop
View aplcard.js
const APLHomeCardRequestInterceptor = {
process(handlerInput) {
const withSimpleCard = handlerInput.responseBuilder.withSimpleCard;
const withStandardCard = handlerInput.responseBuilder.withStandardCard;
function withSimpleAPLCard(cardTitle, cardContent){
type: 'Alexa.Presentation.APL.RenderDocument',
version: '1.0',
document: APLDoc,
germanviscuso /
Created May 13, 2019
Use VS Code as diff tool, git diff tool and git editor

code --diff file1.cs file2.cs

git config --global diff.tool vscode git config --global difftool.vscode.cmd "code --wait --diff $LOCAL $REMOTE"

git config --global core.editor "code --wait"

germanviscuso / es-ES.json
Created Apr 3, 2019
Alexa Skills Basic: Intent Chaining
View es-ES.json
"interactionModel": {
"languageModel": {
"invocationName": "feliz cumple",
"intents": [
"name": "AMAZON.CancelIntent",
"samples": []
You can’t perform that action at this time.