diff --git a/sdk/custom/scenes/GithubStart.yaml b/sdk/custom/scenes/GithubStart.yaml index 27fb01f..af8a147 100644 --- a/sdk/custom/scenes/GithubStart.yaml +++ b/sdk/custom/scenes/GithubStart.yaml @@ -8,12 +8,33 @@ onEnter: - promptResponse: firstSimple: variants: - - speech: Seems like you want to create a repository. What name would you - like to use? + - speech: Alright let us create a repository! slots: - commitBehavior: writeSessionParam: project_name_slot name: project_name_slot + promptSettings: + initialPrompt: + staticPrompt: + candidates: + - promptResponse: + firstSimple: + variants: + - speech: What name would you like to use for your repo? required: true type: name: project_name +- commitBehavior: + writeSessionParam: project_type_slot + name: project_type_slot + promptSettings: + initialPrompt: + staticPrompt: + candidates: + - promptResponse: + firstSimple: + variants: + - speech: Would you like a Java or Typescript project? + required: true + type: + name: project_type diff --git a/sdk/custom/scenes/caca.yaml b/sdk/custom/scenes/caca.yaml deleted file mode 100644 index 0967ef4..0000000 --- a/sdk/custom/scenes/caca.yaml +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/sdk/custom/types/project_type.yaml b/sdk/custom/types/project_type.yaml new file mode 100644 index 0000000..72915af --- /dev/null +++ b/sdk/custom/types/project_type.yaml @@ -0,0 +1,9 @@ +synonym: + entities: + java: + synonyms: + - java + typescript: + synonyms: + - typescript + matchType: FUZZY_MATCH diff --git a/sdk/webhooks/ActionsOnGoogleFulfillment/github.js b/sdk/webhooks/ActionsOnGoogleFulfillment/github.js deleted file mode 100644 index c2089a1..0000000 --- a/sdk/webhooks/ActionsOnGoogleFulfillment/github.js +++ /dev/null @@ -1,45 +0,0 @@ -const { request } = require("@octokit/request"); -const { Octokit } = require("@octokit/core"); - -const octokit = new Octokit({ auth: `test` }); - -const sanitize = function(repoName){ - return repoName.split(' ').join('_'); -} - -const createJavaRepoFromTemplate = createRepoFromTemplate(sanitizedRepoName, "Spring-Boot-Framework", "Spring-Boot-Application-Template"); -const createTypescriptRepoFromTemplate = createRepoFromTemplate(sanitizedRepoName, "carsonfarmer", "ts-template"); - -const createRepoFromTemplate = async function(sanitizedRepoName, templateOwner, templateRepo){ - const response = await octokit.request("POST /repos/:template_owner/:template_repo/generate", { - template_owner: templateOwner, - template_repo: templateRepo, - name: sanitizedRepoName, - mediaType: { - previews: ["baptiste-preview"], - }, - }); - - console.log(`${response.data.length} repos found.`); - console.log(`${response.data[0]}`); -} - -const listRepos = async function(){ - const response = await octokit.request("GET /users/:username/repos", { - username: "jlengrand", - mediaType: { - previews: ["baptiste"], - }, - }); - - console.log(`${response.data.length} repos found.`); - console.log(`${response.data[0]}`); -} - -const createFromTemplate = async function(repoName){ - const response = await createJavaRepoFromTemplate(sanitize(repoName)); - console.log(`${response}`); -} - -// start(); -createFromTemplate("a test repo"); diff --git a/sdk/webhooks/ActionsOnGoogleFulfillment/index.js b/sdk/webhooks/ActionsOnGoogleFulfillment/index.js index 8c70116..00e1826 100644 --- a/sdk/webhooks/ActionsOnGoogleFulfillment/index.js +++ b/sdk/webhooks/ActionsOnGoogleFulfillment/index.js @@ -1,21 +1,81 @@ const {conversation} = require('@assistant/conversation'); const functions = require('firebase-functions'); +const { Octokit } = require("@octokit/core"); const app = conversation({debug: true}); +const octokit = new Octokit({ auth: `test` }); + +function sanitize(repoName){ + return repoName.split(' ').join('_'); +} + +async function createRepoFromTemplate(sanitizedRepoName, templateOwner, templateRepo){ + const res = await octokit.request("POST /repos/:template_owner/:template_repo/generate", { + template_owner: templateOwner, + template_repo: templateRepo, + name: sanitizedRepoName, + mediaType: { + previews: ["baptiste-preview"], + }, + }); + console.log('res2'); + console.log(res); +} + +async function listRepos(){ + const response = await octokit.request("GET /users/:username/repos", { + username: "jlengrand", + mediaType: { + previews: ["baptiste"], + }, + }); + + return response; +} + +async function createFromTemplate(repoName, repoType){ + let response; + if (repoType === 'java' ){ + response = await createRepoFromTemplate(sanitize(repoName), "Spring-Boot-Framework", "Spring-Boot-Application-Template"); + } + else if (repoType === 'typescript') { + response = await createRepoFromTemplate(sanitize(repoName), "carsonfarmer", "ts-template"); + } + return response; +} + app.handle('start_scene_initial_prompt', (conv) => { console.log('Start scene: initial prompt'); conv.overwrite = false; conv.scene.next.name = 'actions.scene.END_CONVERSATION'; - conv.add('Hello world from fulfillment'); + conv.add('triggered start_scene_initial_prompt'); }); app.handle('create_github_repository', (conv) => { - console.log('Start scene: create_github_repository'); - conv.overwrite = false; - conv.scene.next.name = 'actions.scene.END_CONVERSATION'; - conv.add('Hello world from ' + conv.scene.slots.project_name_slot.value); - console.log(conv.scene.slots.project_name_slot.value); + return createFromTemplate(conv.scene.slots.project_name_slot.value, conv.scene.slots.project_type_slot.value).then(response =>{ + console.log('Start scene: create_github_repository'); + conv.overwrite = false; + conv.scene.next.name = 'actions.scene.END_CONVERSATION'; + + // conv.add('Alright, creating a ' + conv.scene.slots.project_type_slot.value + ' repository with name ' + sanitize(conv.scene.slots.project_name_slot.value)); + + conv.add('Repository is created!'); + console.log(response); + + }).catch(error => { + console.log('Start scene: create_github_repository'); + conv.overwrite = false; + conv.scene.next.name = 'actions.scene.END_CONVERSATION'; + + // conv.add('Alright, creating a ' + conv.scene.slots.project_type_slot.value + ' repository with name ' + sanitize(conv.scene.slots.project_name_slot.value)); + + conv.add('Error while creating your repository, sorry. Maybe try again?'); + console.log('error'); + console.log(error); + + }) }); exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app); +