Create repository

This commit is contained in:
Julien Lengrand-Lambert
2021-03-05 15:17:18 +01:00
commit 384eec43fa
18 changed files with 1447 additions and 0 deletions

88
.gitignore vendored Normal file
View File

@@ -0,0 +1,88 @@
##############################
## Java
##############################
.mtj.tmp/
*.class
*.jar
*.war
*.ear
*.nar
hs_err_pid*
##############################
## Maven
##############################
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
pom.xml.bak
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
##############################
## Gradle
##############################
bin/
build/
.gradle
.gradletasknamecache
gradle-app.setting
!gradle-wrapper.jar
##############################
## IntelliJ
##############################
out/
.idea/
.idea_modules/
*.iml
*.ipr
*.iws
##############################
## Eclipse
##############################
.settings/
bin/
tmp/
.metadata
.classpath
.project
*.tmp
*.bak
*.swp
*~.nib
local.properties
.loadpath
.factorypath
##############################
## NetBeans
##############################
nbproject/private/
build/
nbbuild/
dist/
nbdist/
nbactions.xml
nb-configuration.xml
##############################
## Visual Studio Code
##############################
.vscode/
.code-workspace
##############################
## OS X
##############################
.DS_Store
.githubconfig
.ask
.github/

96
LICENSE Normal file
View File

@@ -0,0 +1,96 @@
Amazon Software License 1.0
This Amazon Software License ("License") governs your use, reproduction, and
distribution of the accompanying software as specified below.
1. Definitions
"Licensor" means any person or entity that distributes its Work.
"Software" means the original work of authorship made available under this
License.
"Work" means the Software and any additions to or derivative works of the
Software that are made available under this License.
The terms "reproduce," "reproduction," "derivative works," and
"distribution" have the meaning as provided under U.S. copyright law;
provided, however, that for the purposes of this License, derivative works
shall not include works that remain separable from, or merely link (or bind
by name) to the interfaces of, the Work.
Works, including the Software, are "made available" under this License by
including in or with the Work either (a) a copyright notice referencing the
applicability of this License to the Work, or (b) a copy of this License.
2. License Grants
2.1 Copyright Grant. Subject to the terms and conditions of this License,
each Licensor grants to you a perpetual, worldwide, non-exclusive,
royalty-free, copyright license to reproduce, prepare derivative works of,
publicly display, publicly perform, sublicense and distribute its Work and
any resulting derivative works in any form.
2.2 Patent Grant. Subject to the terms and conditions of this License, each
Licensor grants to you a perpetual, worldwide, non-exclusive, royalty-free
patent license to make, have made, use, sell, offer for sale, import, and
otherwise transfer its Work, in whole or in part. The foregoing license
applies only to the patent claims licensable by Licensor that would be
infringed by Licensor's Work (or portion thereof) individually and
excluding any combinations with any other materials or technology.
3. Limitations
3.1 Redistribution. You may reproduce or distribute the Work only if
(a) you do so under this License, (b) you include a complete copy of this
License with your distribution, and (c) you retain without modification
any copyright, patent, trademark, or attribution notices that are present
in the Work.
3.2 Derivative Works. You may specify that additional or different terms
apply to the use, reproduction, and distribution of your derivative works
of the Work ("Your Terms") only if (a) Your Terms provide that the use
limitation in Section 3.3 applies to your derivative works, and (b) you
identify the specific derivative works that are subject to Your Terms.
Notwithstanding Your Terms, this License (including the redistribution
requirements in Section 3.1) will continue to apply to the Work itself.
3.3 Use Limitation. The Work and any derivative works thereof only may be
used or intended for use with the web services, computing platforms or
applications provided by Amazon.com, Inc. or its affiliates, including
Amazon Web Services, Inc.
3.4 Patent Claims. If you bring or threaten to bring a patent claim against
any Licensor (including any claim, cross-claim or counterclaim in a
lawsuit) to enforce any patents that you allege are infringed by any Work,
then your rights under this License from such Licensor (including the
grants in Sections 2.1 and 2.2) will terminate immediately.
3.5 Trademarks. This License does not grant any rights to use any
Licensor's or its affiliates' names, logos, or trademarks, except as
necessary to reproduce the notices described in this License.
3.6 Termination. If you violate any term of this License, then your rights
under this License (including the grants in Sections 2.1 and 2.2) will
terminate immediately.
4. Disclaimer of Warranty.
THE WORK IS PROVIDED "AS IS" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING WARRANTIES OR CONDITIONS OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR
NON-INFRINGEMENT. YOU BEAR THE RISK OF UNDERTAKING ANY ACTIVITIES UNDER
THIS LICENSE. SOME STATES' CONSUMER LAWS DO NOT ALLOW EXCLUSION OF AN
IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO YOU.
5. Limitation of Liability.
EXCEPT AS PROHIBITED BY APPLICABLE LAW, IN NO EVENT AND UNDER NO LEGAL
THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE
SHALL ANY LICENSOR BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT,
INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR
RELATED TO THIS LICENSE, THE USE OR INABILITY TO USE THE WORK (INCLUDING
BUT NOT LIMITED TO LOSS OF GOODWILL, BUSINESS INTERRUPTION, LOST PROFITS
OR DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY OTHER COMM ERCIAL DAMAGES
OR LOSSES), EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

23
ask-resources.json Normal file
View File

@@ -0,0 +1,23 @@
{
"askcliResourcesVersion": "2020-03-31",
"profiles": {
"default": {
"skillMetadata": {
"src": "./skill-package"
},
"code": {
"default": {
"src": "./lambda"
}
},
"skillInfrastructure": {
"userConfig": {
"runtime": "java11",
"handler": "com.amazon.ask.githubtemplates.GithubTemplatesStreamHandler",
"awsRegion": "eu-west-1"
},
"type": "@ask-cli/lambda-deployer"
}
}
}
}

61
lambda/pom.xml Normal file
View File

@@ -0,0 +1,61 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>alexa-skills-kit-samples</groupId>
<artifactId>helloworld</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>helloworld</name>
<url>http://developer.amazon.com/ask</url>
<licenses>
<license>
<name>The Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<developers>
<developer>
<name>Alexa Skills Kit</name>
<email>ask-sdk-java@amazon.com</email>
<organization>Alexa</organization>
<organizationUrl>http://developer.amazon.com/ask</organizationUrl>
</developer>
</developers>
<scm>
<connection>scm:git:https://github.com/amzn/alexa-skills-kit-java.git</connection>
<developerConnection>scm:git:https://github.com/amzn/alexa-skills-kit-java.git</developerConnection>
<url>https://github.com/amzn/alexa-skills-kit-java.git</url>
</scm>
<dependencies>
<dependency>
<groupId>com.amazon.alexa</groupId>
<artifactId>ask-sdk</artifactId>
<version>2.20.2</version>
</dependency>
<dependency>
<groupId>org.kohsuke</groupId>
<artifactId>github-api</artifactId>
<version>1.122</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>11</source>
<target>11</target>
<forceJavacCompilerUse>true</forceJavacCompilerUse>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>

View File

@@ -0,0 +1,40 @@
/*
Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file
except in compliance with the License. A copy of the License is located at
http://aws.amazon.com/apache2.0/
or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for
the specific language governing permissions and limitations under the License.
*/
package com.amazon.ask.githubtemplates;
import com.amazon.ask.Skill;
import com.amazon.ask.Skills;
import com.amazon.ask.SkillStreamHandler;
import com.amazon.ask.githubtemplates.handlers.*;
public class GithubTemplatesStreamHandler extends SkillStreamHandler {
private static Skill getSkill() {
return Skills.standard()
.addRequestHandlers(
new CancelandStopIntentHandler(),
new HelloWorldIntentHandler(),
new LoggedInIntentHandler(),
new HelpIntentHandler(),
new LaunchRequestHandler(),
new SessionEndedRequestHandler(),
new FallbackIntentHandler(),
new CreateRepositoryIntentHandler()
)
.withSkillId("amzn1.ask.skill.e88f24da-5860-4ff8-a674-338c62768016")
.build();
}
public GithubTemplatesStreamHandler() {
super(getSkill());
}
}

View File

@@ -0,0 +1,72 @@
package com.amazon.ask.githubtemplates.data;
import org.kohsuke.github.*;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
public class GithubDataGrabber {
private Map<String, String> languagesAndTemplates =
Map.of(
"java", "https://github.com/Spring-Boot-Framework/Spring-Boot-Application-Template",
"typescript", "https://github.com/carsonfarmer/ts-template"
);
private GitHub githubApi;
public GithubDataGrabber(GitHub gitHub){
this.githubApi = gitHub;
}
// public static void main(String[] args) throws IOException {
// System.out.println("Grabbing data from your GitHub profile!");
//
// Path githubConfigPath = Paths.get(Paths.get(System.getProperty("user.dir")).toString(), ".github");
// if(!new File(githubConfigPath.toString()).exists()){
// System.out.println("No GitHub config file found, exiting.");
// System.exit(0);
// }
//
// GitHub github = GitHubBuilder.fromPropertyFile(githubConfigPath.toString()).build();
//
// GithubDataGrabber githubHello = new GithubDataGrabber(github);
//
// githubHello.getLanguages("jlengrand").forEach(System.out::println);
// System.out.println("------");
// githubHello.getRepositories("jlengrand").forEach(System.out::println);
// }
public Set<String> getLanguages(String username) throws IOException {
PagedIterable<GHRepository> repos = this.githubApi.getUser(username).listRepositories();
return StreamSupport.stream(repos.spliterator(), false)
.map(repo -> repo.getLanguage())
.filter(s -> s != null)
.collect(Collectors.toSet());
}
public List<String> getRepositories(String username) throws IOException {
PagedIterable<GHRepository> repos = this.githubApi.getUser(username).listRepositories();
return StreamSupport.stream(repos.spliterator(), false)
.map(repo -> sanitize(repo.getName()))
.filter(s -> s != null)
.collect(Collectors.toList());
}
public String sanitize(String value) {
return value
.replace("-", " ")
.replace("_", " ");
}
}

View File

@@ -0,0 +1,35 @@
/*
Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file
except in compliance with the License. A copy of the License is located at
http://aws.amazon.com/apache2.0/
or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for
the specific language governing permissions and limitations under the License.
*/
package com.amazon.ask.githubtemplates.handlers;
import com.amazon.ask.dispatcher.request.handler.HandlerInput;
import com.amazon.ask.dispatcher.request.handler.RequestHandler;
import com.amazon.ask.model.Response;
import java.util.Optional;
import static com.amazon.ask.request.Predicates.intentName;
public class CancelandStopIntentHandler implements RequestHandler {
@Override
public boolean canHandle(HandlerInput input) {
return input.matches(intentName("AMAZON.StopIntent").or(intentName("AMAZON.CancelIntent")));
}
@Override
public Optional<Response> handle(HandlerInput input) {
String speechText = "Got you. Till next time!";
return input.getResponseBuilder()
.withSpeech(speechText)
.build();
}
}

View File

@@ -0,0 +1,62 @@
/*
Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file
except in compliance with the License. A copy of the License is located at
http://aws.amazon.com/apache2.0/
or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for
the specific language governing permissions and limitations under the License.
*/
package com.amazon.ask.githubtemplates.handlers;
import com.amazon.ask.dispatcher.request.handler.HandlerInput;
import com.amazon.ask.dispatcher.request.handler.RequestHandler;
import com.amazon.ask.model.IntentRequest;
import com.amazon.ask.model.Response;
import com.amazon.ask.model.Slot;
import java.util.Map;
import java.util.Optional;
import java.util.logging.Level;
import java.util.logging.Logger;
import static com.amazon.ask.request.Predicates.intentName;
public class CreateRepositoryIntentHandler implements RequestHandler {
@Override
public boolean canHandle(HandlerInput input) {
return input.matches(intentName("CreateRepositoryIntent"));
}
@Override
public Optional<Response> handle(HandlerInput input) {
Logger logger = Logger.getAnonymousLogger();
String username = System.getenv("GH_USERNAME");
String key = System.getenv("GH_APIKEY");
IntentRequest intentRequest = (IntentRequest) input.getRequestEnvelope().getRequest();
Map<String, Slot> slots = intentRequest.getIntent().getSlots();
for (Map.Entry<String, Slot> entry : slots.entrySet()) {
logger.log(Level.SEVERE, entry.getKey() + ":" + entry.getValue().getValue() + ":" + entry.getValue().getName());
}
String speechText;
if(username != null && key != null) {
String language = slots.get("language").getValue();
String title = slots.get("title").getValue();
speechText = "Let's go with " + language + " and " + title + " !";
}
else{
speechText = "Sorry, you are not logged in! I cannot create new repositories";
}
return input.getResponseBuilder()
.withSpeech(speechText)
.build();
}
}

View File

@@ -0,0 +1,31 @@
package com.amazon.ask.githubtemplates.handlers;
import com.amazon.ask.dispatcher.request.handler.HandlerInput;
import com.amazon.ask.dispatcher.request.handler.RequestHandler;
import com.amazon.ask.model.Response;
import java.util.Optional;
import static com.amazon.ask.request.Predicates.intentName;
// 2018-July-09: AMAZON.FallackIntent is only currently available in en-US locale.
// This handler will not be triggered except in that locale, so it can be
// safely deployed for any locale.
public class FallbackIntentHandler implements RequestHandler {
@Override
public boolean canHandle(HandlerInput input) {
return input.matches(intentName("AMAZON.FallbackIntent"));
}
@Override
public Optional<Response> handle(HandlerInput input) {
String speechText = "Sorry, I didn't get that. Care to try again ?";
String repromptText = "Still didn' get that, sorry.";
return input.getResponseBuilder()
.withSpeech(speechText)
.withReprompt(repromptText)
.build();
}
}

View File

@@ -0,0 +1,36 @@
/*
Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file
except in compliance with the License. A copy of the License is located at
http://aws.amazon.com/apache2.0/
or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for
the specific language governing permissions and limitations under the License.
*/
package com.amazon.ask.githubtemplates.handlers;
import com.amazon.ask.dispatcher.request.handler.HandlerInput;
import com.amazon.ask.dispatcher.request.handler.RequestHandler;
import com.amazon.ask.model.Response;
import java.util.Optional;
import static com.amazon.ask.request.Predicates.intentName;
public class HelloWorldIntentHandler implements RequestHandler {
@Override
public boolean canHandle(HandlerInput input) {
return input.matches(intentName("HelloWorldIntent"));
}
@Override
public Optional<Response> handle(HandlerInput input) {
String speechText = "Hey there! Looking forward what you're going to ask me!";
return input.getResponseBuilder()
.withSpeech(speechText)
.build();
}
}

View File

@@ -0,0 +1,37 @@
/*
Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file
except in compliance with the License. A copy of the License is located at
http://aws.amazon.com/apache2.0/
or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for
the specific language governing permissions and limitations under the License.
*/
package com.amazon.ask.githubtemplates.handlers;
import com.amazon.ask.dispatcher.request.handler.HandlerInput;
import com.amazon.ask.dispatcher.request.handler.RequestHandler;
import com.amazon.ask.model.Response;
import java.util.Optional;
import static com.amazon.ask.request.Predicates.intentName;
public class HelpIntentHandler implements RequestHandler {
@Override
public boolean canHandle(HandlerInput input) {
return input.matches(intentName("AMAZON.HelpIntent"));
}
@Override
public Optional<Response> handle(HandlerInput input) {
String speechText = "Hey there. Try asking me to create a Java repository!";
String repromptText = "You can also ask me if you are still logged in Github!";
return input.getResponseBuilder()
.withSpeech(speechText)
.withReprompt(repromptText)
.build();
}
}

View File

@@ -0,0 +1,38 @@
/*
Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file
except in compliance with the License. A copy of the License is located at
http://aws.amazon.com/apache2.0/
or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for
the specific language governing permissions and limitations under the License.
*/
package com.amazon.ask.githubtemplates.handlers;
import com.amazon.ask.dispatcher.request.handler.HandlerInput;
import com.amazon.ask.dispatcher.request.handler.RequestHandler;
import com.amazon.ask.model.LaunchRequest;
import com.amazon.ask.model.Response;
import java.util.Optional;
import static com.amazon.ask.request.Predicates.requestType;
public class LaunchRequestHandler implements RequestHandler {
@Override
public boolean canHandle(HandlerInput input) {
return input.matches(requestType(LaunchRequest.class));
}
@Override
public Optional<Response> handle(HandlerInput input) {
String speechText = "Welcome to GitHub templates! Let's create a repository!";
return input.getResponseBuilder()
.withSpeech(speechText)
.withReprompt(speechText)
.build();
}
}

View File

@@ -0,0 +1,39 @@
/*
Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file
except in compliance with the License. A copy of the License is located at
http://aws.amazon.com/apache2.0/
or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for
the specific language governing permissions and limitations under the License.
*/
package com.amazon.ask.githubtemplates.handlers;
import com.amazon.ask.dispatcher.request.handler.HandlerInput;
import com.amazon.ask.dispatcher.request.handler.RequestHandler;
import com.amazon.ask.model.Response;
import java.util.Optional;
import static com.amazon.ask.request.Predicates.intentName;
public class LoggedInIntentHandler implements RequestHandler {
@Override
public boolean canHandle(HandlerInput input) {
return input.matches(intentName("LoggedInIntent"));
}
@Override
public Optional<Response> handle(HandlerInput input) {
String username = System.getenv("GH_USERNAME");
String key = System.getenv("GH_APIKEY");
String speechText = username == null || key == null ? "Sorry, you are not logged in!" : "Logged in as " + username;
return input.getResponseBuilder()
.withSpeech(speechText)
.build();
}
}

View File

@@ -0,0 +1,35 @@
/*
Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file
except in compliance with the License. A copy of the License is located at
http://aws.amazon.com/apache2.0/
or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for
the specific language governing permissions and limitations under the License.
*/
package com.amazon.ask.githubtemplates.handlers;
import com.amazon.ask.dispatcher.request.handler.HandlerInput;
import com.amazon.ask.dispatcher.request.handler.RequestHandler;
import com.amazon.ask.model.Response;
import com.amazon.ask.model.SessionEndedRequest;
import java.util.Optional;
import static com.amazon.ask.request.Predicates.requestType;
public class SessionEndedRequestHandler implements RequestHandler {
@Override
public boolean canHandle(HandlerInput input) {
return input.matches(requestType(SessionEndedRequest.class));
}
@Override
public Optional<Response> handle(HandlerInput input) {
// any cleanup logic goes here
return input.getResponseBuilder().build();
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,725 @@
{
"interactionModel": {
"languageModel": {
"invocationName": "github templates",
"intents": [
{
"name": "AMAZON.CancelIntent",
"samples": []
},
{
"name": "AMAZON.HelpIntent",
"samples": []
},
{
"name": "AMAZON.StopIntent",
"samples": []
},
{
"name": "HelloWorldIntent",
"slots": [],
"samples": [
"say hello",
"say hello world",
"hello",
"say hi",
"say hi world",
"hi",
"how are you"
]
},
{
"name": "AMAZON.FallbackIntent",
"samples": []
},
{
"name": "AMAZON.NavigateHomeIntent",
"samples": []
},
{
"name": "LoggedInIntent",
"slots": [],
"samples": [
"please tell me my username",
"what s my github username",
"am i in github",
"what is my username",
"am i logged in"
]
},
{
"name": "CreateRepositoryIntent",
"slots": [
{
"name": "language",
"type": "GITHUB_LANGUAGE",
"samples": [
"I want {language}",
"I need {language}",
"{language}"
]
},
{
"name": "title",
"type": "GITHUB_TITLE"
}
],
"samples": [
"make me a repo called {title}",
"I want a new {language} repo called {title}",
"new {language} repo with name {title}",
"new {language} repository please",
"Create a new repo",
"I need a new repo",
"Create a {language} repository called title in Github",
"I want a new {language} repository in GitHub.",
"Create title and I want it to be a {language} repository",
"I need a new {language} repo. Call it title",
"Create a {language} repository called title"
]
}
],
"types": [
{
"name": "GITHUB_LANGUAGE",
"values": [
{
"name": {
"value": "CSS"
}
},
{
"name": {
"value": "Shell"
}
},
{
"name": {
"value": "Typescript"
}
},
{
"name": {
"value": "Kotlin"
}
},
{
"name": {
"value": "HTML"
}
},
{
"name": {
"value": "Elm"
}
},
{
"name": {
"value": "Scala"
}
},
{
"name": {
"value": "c"
}
},
{
"name": {
"value": "java"
}
}
]
},
{
"name": "GITHUB_TITLE",
"values": [
{
"name": {
"value": "advent of code 2018"
}
},
{
"name": {
"value": "advent of code 2020"
}
},
{
"name": {
"value": "alpine node rethinkdb"
}
},
{
"name": {
"value": "assistant conversation java"
}
},
{
"name": {
"value": "baker"
}
},
{
"name": {
"value": "baker recipe tuto"
}
},
{
"name": {
"value": "batchWaterMarking"
}
},
{
"name": {
"value": "carbon"
}
},
{
"name": {
"value": "cellar"
}
},
{
"name": {
"value": "cellar driver"
}
},
{
"name": {
"value": "check html links action"
}
},
{
"name": {
"value": "check html links action test"
}
},
{
"name": {
"value": "check html links netlify plugin"
}
},
{
"name": {
"value": "closeme"
}
},
{
"name": {
"value": "Coding4Interviews"
}
},
{
"name": {
"value": "coffee voyance"
}
},
{
"name": {
"value": "conversations"
}
},
{
"name": {
"value": "create"
}
},
{
"name": {
"value": "create elm app"
}
},
{
"name": {
"value": "d3 progress meter"
}
},
{
"name": {
"value": "design patterns"
}
},
{
"name": {
"value": "design patterns drawio"
}
},
{
"name": {
"value": "dialogflow fun"
}
},
{
"name": {
"value": "dolfijn2.0"
}
},
{
"name": {
"value": "dotfiles"
}
},
{
"name": {
"value": "elm dungeon"
}
},
{
"name": {
"value": "elm firebase"
}
},
{
"name": {
"value": "elm issues"
}
},
{
"name": {
"value": "elm language client vscode"
}
},
{
"name": {
"value": "elm memory"
}
},
{
"name": {
"value": "elm plural rules"
}
},
{
"name": {
"value": "elm ports"
}
},
{
"name": {
"value": "elm webgl playground"
}
},
{
"name": {
"value": "epaper dashboard blog"
}
},
{
"name": {
"value": "epaper.js"
}
},
{
"name": {
"value": "EssentialScala"
}
},
{
"name": {
"value": "Exposed"
}
},
{
"name": {
"value": "exposed imdb"
}
},
{
"name": {
"value": "FaceMovie"
}
},
{
"name": {
"value": "fortnoxovertime"
}
},
{
"name": {
"value": "functional programming scala"
}
},
{
"name": {
"value": "FunctionalProgrammingScalaCoursera"
}
},
{
"name": {
"value": "fuzzy date"
}
},
{
"name": {
"value": "github project"
}
},
{
"name": {
"value": "gitignore"
}
},
{
"name": {
"value": "gitlab recipes"
}
},
{
"name": {
"value": "google send money talk"
}
},
{
"name": {
"value": "hackerrank"
}
},
{
"name": {
"value": "helidon"
}
},
{
"name": {
"value": "homemade products"
}
},
{
"name": {
"value": "image processing"
}
},
{
"name": {
"value": "ing psd2 test"
}
},
{
"name": {
"value": "isochrone with google map"
}
},
{
"name": {
"value": "Ivolution"
}
},
{
"name": {
"value": "IvolutionWebsite"
}
},
{
"name": {
"value": "jenkinsArduinoNotification"
}
},
{
"name": {
"value": "jlengrand.github.io"
}
},
{
"name": {
"value": "keep a changelog"
}
},
{
"name": {
"value": "KnowMySize"
}
},
{
"name": {
"value": "kotlin spring boot elm starter"
}
},
{
"name": {
"value": "ktor"
}
},
{
"name": {
"value": "LAFF"
}
},
{
"name": {
"value": "Leaflet 1"
}
},
{
"name": {
"value": "linux conf"
}
},
{
"name": {
"value": "locator"
}
},
{
"name": {
"value": "MachineLearningCoursera"
}
},
{
"name": {
"value": "map web component example"
}
},
{
"name": {
"value": "native utils"
}
},
{
"name": {
"value": "Observer"
}
},
{
"name": {
"value": "open wc"
}
},
{
"name": {
"value": "picasa"
}
},
{
"name": {
"value": "picocli"
}
},
{
"name": {
"value": "picocli jfall bitesize 2020"
}
},
{
"name": {
"value": "pluxml theme darkFuture"
}
},
{
"name": {
"value": "polymer 3 example"
}
},
{
"name": {
"value": "polymer array bubble up example"
}
},
{
"name": {
"value": "polymer dashboard pluralsight"
}
},
{
"name": {
"value": "polymer hot reloading example"
}
},
{
"name": {
"value": "polymer summit whose flag"
}
},
{
"name": {
"value": "polymer summit whose flag polymer 3"
}
},
{
"name": {
"value": "Programming Tips"
}
},
{
"name": {
"value": "project euler"
}
},
{
"name": {
"value": "quarkus"
}
},
{
"name": {
"value": "quarkus workshop"
}
},
{
"name": {
"value": "redirectsJekyllToGhost"
}
},
{
"name": {
"value": "RoBottle"
}
},
{
"name": {
"value": "rocket"
}
},
{
"name": {
"value": "scala intro for java guys"
}
},
{
"name": {
"value": "schopenhauer jfall ignite 2020"
}
},
{
"name": {
"value": "sheepgame"
}
},
{
"name": {
"value": "ShowMeYourBigSatellite"
}
},
{
"name": {
"value": "simpleFoodDiary"
}
},
{
"name": {
"value": "soundcloud web component application"
}
},
{
"name": {
"value": "swacli"
}
},
{
"name": {
"value": "tailwind app"
}
},
{
"name": {
"value": "therobottle"
}
},
{
"name": {
"value": "Tippy"
}
},
{
"name": {
"value": "toggl button"
}
},
{
"name": {
"value": "twiderboard client"
}
},
{
"name": {
"value": "twidersite"
}
},
{
"name": {
"value": "twitterboard"
}
},
{
"name": {
"value": "undercover"
}
},
{
"name": {
"value": "vert.x"
}
},
{
"name": {
"value": "vscode elm signature"
}
},
{
"name": {
"value": "web components workshop"
}
},
{
"name": {
"value": "web components workshop deprecated"
}
},
{
"name": {
"value": "web components workshop polymer"
}
},
{
"name": {
"value": "webcomponentsjs"
}
},
{
"name": {
"value": "xuggle xuggler"
}
}
]
}
]
},
"dialog": {
"intents": [
{
"name": "CreateRepositoryIntent",
"confirmationRequired": false,
"prompts": {},
"slots": [
{
"name": "language",
"type": "GITHUB_LANGUAGE",
"confirmationRequired": false,
"elicitationRequired": true,
"prompts": {
"elicitation": "Elicit.Slot.1247776455707.488691447960"
}
},
{
"name": "title",
"type": "GITHUB_TITLE",
"confirmationRequired": false,
"elicitationRequired": false,
"prompts": {}
}
]
}
],
"delegationStrategy": "ALWAYS"
},
"prompts": [
{
"id": "Elicit.Slot.1247776455707.488691447960",
"variations": [
{
"type": "PlainText",
"value": "Which language do you need"
}
]
}
]
}
}

29
skill-package/skill.json Normal file
View File

@@ -0,0 +1,29 @@
{
"manifest": {
"publishingInformation": {
"locales": {
"en-GB": {
"summary": "Sample Short Description",
"examplePhrases": [
"Alexa open github templates",
"github templates please"
],
"name": "github-templates",
"description": "A skill to create new GitHub repositories from templates"
}
},
"isAvailableWorldwide": true,
"testingInstructions": "Sample Testing Instructions.",
"category": "KNOWLEDGE_AND_TRIVIA",
"distributionCountries": []
},
"apis": {
"custom": {
"endpoint": {
"uri": "arn:aws:lambda:eu-west-1:618362251982:function:ask-github-templates-default-default-1614862691817"
}
}
},
"manifestVersion": "1.0"
}
}