From 3ecfaa03a4580d4ad3be72c1a577f5e754ab4618 Mon Sep 17 00:00:00 2001 From: mmarcec007 Date: Wed, 27 Jan 2021 15:14:40 +0100 Subject: [PATCH 01/11] update createService method in convoworks-api.js to add new fields (default_locale and supported_locales) --- src/convoworks/common/convoworks-api.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/convoworks/common/convoworks-api.js b/src/convoworks/common/convoworks-api.js index d309b25..0576c48 100644 --- a/src/convoworks/common/convoworks-api.js +++ b/src/convoworks/common/convoworks-api.js @@ -275,12 +275,12 @@ export default function ConvoworksApi( $log, $http, $q, CONVO_ADMIN_API_BASE_URL }); } - function createService( serviceName, defaultLanguage, isPrivate, templateId) + function createService( serviceName, defaultLanguage, defaultLocale, supportedLocales, isPrivate, templateId) { return $http({ method: 'post', url: CONVO_ADMIN_API_BASE_URL + '/services', - data: { 'service_name' : serviceName, 'default_language': defaultLanguage, 'is_private' : isPrivate, 'template_id' : templateId } + data: { 'service_name' : serviceName, 'default_language': defaultLanguage, 'default_locale': defaultLocale, 'supported_locales': supportedLocales, 'is_private' : isPrivate, 'template_id' : templateId } }).then( function ( res) { return res.data; }); From ed9f02e37fc4100a756538a2b30fb6d0c829a907 Mon Sep 17 00:00:00 2001 From: mmarcec007 Date: Wed, 27 Jan 2021 15:15:12 +0100 Subject: [PATCH 02/11] update language handling in convoworks-add-service.controller.js and convoworks-add-service.tmpl.html --- .../convoworks-add-service.controller.js | 67 ++++++++++++++++++- .../services/convoworks-add-service.tmpl.html | 33 ++++++++- 2 files changed, 98 insertions(+), 2 deletions(-) diff --git a/src/convoworks/services/convoworks-add-service.controller.js b/src/convoworks/services/convoworks-add-service.controller.js index ec6a489..7ded86d 100644 --- a/src/convoworks/services/convoworks-add-service.controller.js +++ b/src/convoworks/services/convoworks-add-service.controller.js @@ -1,14 +1,18 @@ /* @ngInject */ -export default function ConvoworksAddNewServiceController($scope, $state, ConvoworksApi) +export default function ConvoworksAddNewServiceController($log, $scope, $state, ConvoworksApi) { $scope.new_service = { "name" : "", "default_language" : "en", + "default_locale" : "en-US", + "supported_locales": ['en-US'], "is_private" : false, "template_id" : "convo-core.blank" }; $scope.templates = []; + $scope.languages = []; + $scope.locales = []; ConvoworksApi.getTemplates().then(function (all) { $scope.templates = all; @@ -16,6 +20,9 @@ export default function ConvoworksAddNewServiceController($scope, $state, Convow ConvoworksApi.getConfigOptions().then(function (options) { $scope.languages = options['CONVO_SERVICE_LANGUAGES']; + $scope.locales = options['CONVO_SERVICE_LOCALES'].filter(function (locale) { + return locale.code.includes($scope.new_service.default_language); + }); }); $scope.isTemplateSelected = function(template_id) @@ -30,9 +37,13 @@ export default function ConvoworksAddNewServiceController($scope, $state, Convow $scope.create = function() { + $log.log("new service state", $scope.new_service); + ConvoworksApi.createService( $scope.new_service.name, $scope.new_service.default_language, + $scope.new_service.default_locale, + $scope.new_service.supported_locales, $scope.new_service.is_private, $scope.new_service.template_id ).then(function(data) { @@ -40,6 +51,60 @@ export default function ConvoworksAddNewServiceController($scope, $state, Convow }) }; + $scope.onLanguageChange = function () { + ConvoworksApi.getConfigOptions().then(function (options) { + if ($scope.new_service.default_language === 'en') { + $scope.new_service.default_locale = 'en-US'; + $scope.supported_locales = ['en-US']; + $scope.new_service.supported_locales = $scope.supported_locales; + } else if ($scope.new_service.default_language === 'de') { + $scope.new_service.default_locale = 'de-DE'; + $scope.supported_locales = ['de-DE']; + $scope.new_service.supported_locales = $scope.supported_locales; + } + + $scope.locales = options['CONVO_SERVICE_LOCALES'].filter(function (locale) { + return locale.code.includes($scope.new_service.default_language); + }); + + $log.log("new service state", $scope.new_service); + }); + } + + $scope.onDefaultLocaleChange = function () { + $scope.new_service.supported_locales = []; + $scope.new_service.supported_locales.push($scope.new_service.default_locale); + + for (var i = 0; i < $scope.locales.length; i++) { + if ($scope.new_service.supported_locales.includes($scope.locales[i].code)) { + $scope.locales[i].checked = true; + } else { + $scope.locales[i].checked = false; + } + } + + $log.log("new service state", $scope.new_service); + } + + $scope.registerChange = function(data) { + var localeCode = data.locale.code; + var isLocaleEnabled = !data.locale.checked; + + if (isLocaleEnabled) { + $scope.new_service.supported_locales.push(localeCode); + } else { + $scope.new_service.supported_locales = _arrayRemove($scope.new_service.supported_locales, localeCode); + } + + $log.log("new service state", $scope.new_service); + } + + function _arrayRemove(array, value) { + return array.filter(function(elementOfArray) { + return elementOfArray !== value; + }); + } + $scope.submitDisabled = function() { if (!$scope.new_service.name) { diff --git a/src/convoworks/services/convoworks-add-service.tmpl.html b/src/convoworks/services/convoworks-add-service.tmpl.html index 02b46fd..1ace4ca 100644 --- a/src/convoworks/services/convoworks-add-service.tmpl.html +++ b/src/convoworks/services/convoworks-add-service.tmpl.html @@ -33,7 +33,7 @@

Add new service

- @@ -42,6 +42,37 @@

Add new service

+
+
+
+ + +
+
+
+ +
+
+
+
+ Supported Locales: +
+ + +
+
+ + +
+
+
+
+
+
From 39aec4b31d3018382955cf39c926af4494a51218 Mon Sep 17 00:00:00 2001 From: mmarcec007 Date: Wed, 27 Jan 2021 15:15:45 +0100 Subject: [PATCH 03/11] update language handling in config-service-meta-editor.directive.js and config-service-meta-editor.tmpl.html --- .../config-service-meta-editor.directive.js | 79 ++++++++++++++++++- .../config-service-meta-editor.tmpl.html | 26 +++++- 2 files changed, 100 insertions(+), 5 deletions(-) diff --git a/src/convoworks/editor/config/config-service-meta-editor.directive.js b/src/convoworks/editor/config/config-service-meta-editor.directive.js index 0b973fe..35ca64a 100644 --- a/src/convoworks/editor/config/config-service-meta-editor.directive.js +++ b/src/convoworks/editor/config/config-service-meta-editor.directive.js @@ -17,19 +17,24 @@ export default function configServiceMetaEditor($log, LoginService, ConvoworksAp user = u; }); - ConvoworksApi.getConfigOptions().then(function (options) { - $scope.languages = options['CONVO_SERVICE_LANGUAGES']; - }); - $scope.config = { name: '', description: '', default_language: 'en', + default_locale: 'en-US', + supported_locales: ['en-US'], owner: '', is_private: false, admins: [''] }; + ConvoworksApi.getConfigOptions().then(function (options) { + $scope.languages = options['CONVO_SERVICE_LANGUAGES']; + $scope.locales = options['CONVO_SERVICE_LOCALES'].filter(function (locale) { + return locale.code.includes($scope.config.default_language); + }); + }); + _load(); var configBak = angular.copy($scope.config); @@ -52,6 +57,8 @@ export default function configServiceMetaEditor($log, LoginService, ConvoworksAp name: meta['name'] || '', description: meta['description'] || '', default_language: meta['default_language'] || '', + default_locale: meta['default_locale'] || '', + supported_locales: meta['supported_locales'] || '', owner: meta['owner'] || '', admins: meta['admins'] || [''], is_private: meta['is_private'] !== undefined ? meta['is_private'] : false @@ -74,11 +81,27 @@ export default function configServiceMetaEditor($log, LoginService, ConvoworksAp name: meta['name'] || '', description: meta['description'] || '', default_language: meta['default_language'] || '', + default_locale: meta['default_locale'] || '', + supported_locales: meta['supported_locales'] || '', owner: meta['owner'] || '', admins: meta['admins'] || [''], is_private: meta['is_private'] !== undefined ? meta['is_private'] : false } + ConvoworksApi.getConfigOptions().then(function (options) { + $scope.locales = options['CONVO_SERVICE_LOCALES'].filter(function (locale) { + return locale.code.includes($scope.config.default_language); + }); + + for (var i = 0; i < $scope.locales.length; i++) { + if ($scope.config.supported_locales.includes($scope.locales[i].code)) { + $scope.locales[i].checked = true; + } else { + $scope.locales[i].checked = false; + } + } + }); + configBak = angular.copy($scope.config); is_error = false; }, function (reason) { @@ -86,6 +109,54 @@ export default function configServiceMetaEditor($log, LoginService, ConvoworksAp is_error = true; }); } + + $scope.onLanguageChange = function () { + ConvoworksApi.getConfigOptions().then(function (options) { + if ($scope.config.default_language === 'en') { + $scope.config.default_locale = 'en-US'; + $scope.supported_locales = ['en-US']; + $scope.config.supported_locales = $scope.supported_locales; + } else if ($scope.config.default_language === 'de') { + $scope.config.default_locale = 'de-DE'; + $scope.supported_locales = ['de-DE']; + $scope.config.supported_locales = $scope.supported_locales; + } + + $scope.locales = options['CONVO_SERVICE_LOCALES'].filter(function (locale) { + return locale.code.includes($scope.config.default_language); + }); + }); + } + + $scope.onDefaultLocaleChange = function () { + $scope.config.supported_locales = []; + $scope.config.supported_locales.push($scope.config.default_locale); + + for (var i = 0; i < $scope.locales.length; i++) { + if ($scope.config.supported_locales.includes($scope.locales[i].code)) { + $scope.locales[i].checked = true; + } else { + $scope.locales[i].checked = false; + } + } + } + + $scope.registerChange = function(data) { + var localeCode = data.locale.code; + var isLocaleEnabled = !data.locale.checked; + + if (isLocaleEnabled) { + $scope.config.supported_locales.push(localeCode); + } else { + $scope.config.supported_locales = _arrayRemove($scope.config.supported_locales, localeCode); + } + } + + function _arrayRemove(array, value) { + return array.filter(function(elementOfArray) { + return elementOfArray !== value; + }); + } } } } diff --git a/src/convoworks/editor/config/config-service-meta-editor.tmpl.html b/src/convoworks/editor/config/config-service-meta-editor.tmpl.html index 11b0c3f..a4c65ce 100644 --- a/src/convoworks/editor/config/config-service-meta-editor.tmpl.html +++ b/src/convoworks/editor/config/config-service-meta-editor.tmpl.html @@ -22,13 +22,37 @@
-
+
+ + +
+ +
+
+ Supported Locales: +
+ + +
+ +
+ + +
+
+
+
From 7eec02601c9b5a399e8157fec479c0059536e1c2 Mon Sep 17 00:00:00 2001 From: mmarcec007 Date: Wed, 27 Jan 2021 15:16:39 +0100 Subject: [PATCH 04/11] update externaltest.directive.js to generate the right test link for amazon based on default locale selection --- src/convoworks/externaltest/externaltest.directive.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/convoworks/externaltest/externaltest.directive.js b/src/convoworks/externaltest/externaltest.directive.js index aae561d..941f42a 100644 --- a/src/convoworks/externaltest/externaltest.directive.js +++ b/src/convoworks/externaltest/externaltest.directive.js @@ -25,14 +25,7 @@ export default function convoExternaltest( $log, $q, $timeout, ConvoworksApi) { platformTestLinks = []; var language = 'en-US'; ConvoworksApi.getServiceMeta($scope.serviceId).then( (meta) => { - language = meta['default_language']; - if (language === 'en') { - language = "en_US"; - } else if (language === 'de') { - language = "de_DE"; - } else { - language = language.replace("-", "_"); - } + language = meta['default_locale'].replace("-", "_"); ConvoworksApi.loadPlatformConfig($scope.serviceId).then((data) => { $log.log( 'convoExternaltest load ', platformConfig); From 6fe575cdccc3b1982db01b799f8b657514dfda0e Mon Sep 17 00:00:00 2001 From: mmarcec007 Date: Thu, 4 Feb 2021 10:29:03 +0100 Subject: [PATCH 05/11] update uploadMedia in convoworks-api.js to rather hanlde map of kinds of files and files to populate the form data --- src/convoworks/common/convoworks-api.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/convoworks/common/convoworks-api.js b/src/convoworks/common/convoworks-api.js index 0576c48..7551252 100644 --- a/src/convoworks/common/convoworks-api.js +++ b/src/convoworks/common/convoworks-api.js @@ -607,15 +607,16 @@ export default function ConvoworksApi( $log, $http, $q, CONVO_ADMIN_API_BASE_URL } - function uploadMedia(serviceId, kind, file) { + function uploadMedia(serviceId, filesToUpload) { if (!serviceId) { throw new Error("Missing service ID"); } - $log.log('ConvoworksApi uploadMedia serviceId', serviceId, 'kind', kind, 'file', file); - var fd = new FormData(); - fd.append(kind, file); + for (let [key, value] of filesToUpload) { + $log.log('ConvoworksApi uploadMedia serviceId', serviceId, 'kind', key, 'file', value); + fd.append(key, value); + } return $http .post( From b778fac2f44e7749ba2b6b42b8284c7458a9ceb9 Mon Sep 17 00:00:00 2001 From: mmarcec007 Date: Thu, 4 Feb 2021 10:30:51 +0100 Subject: [PATCH 06/11] add new rule .panel-default > .panel-heading in config.scss to change color of the collapsable panels --- src/convoworks/editor/config/config.scss | 50 +++++++++++++----------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/src/convoworks/editor/config/config.scss b/src/convoworks/editor/config/config.scss index f021df0..6591e65 100644 --- a/src/convoworks/editor/config/config.scss +++ b/src/convoworks/editor/config/config.scss @@ -5,69 +5,69 @@ color: #2F74EA; text-decoration: none; } - + a.back:hover { cursor: pointer; text-decoration: none; } - + .configs { display: flex; flex-flow: row wrap; - + /*justify-content: space-between;*/ - + max-width: 100%; - + margin-top: -10px; } - + .configs .config-square { height: 320px; width: 300px; border: 1px solid rgba(0,0,0,0.08); margin: 10px 10px 0 0; } - + /*.config-square:first-child*/ /*{*/ /* margin-left: 0;*/ /*}*/ - + /*.config-square:last-child*/ /*{*/ /* margin-right: 0;*/ /*}*/ - + .config-square div.logo { width: 170px; height: 74px; - + margin: 0 auto 30px; - + background-size: contain; background-repeat: no-repeat; background-position: center center; - + content: " "; } - + .config-square div.logo.amazon { - background-image: url('./images/amazon_alexa.png'); + background-image: url('./images/amazon_alexa.png'); } .config-square div.logo.dialogflow { - background-image: url('./images/dialogflow.png'); + background-image: url('./images/dialogflow.png'); } .config-square div.logo.facebook_messenger { - background-image: url('./images/messenger.png'); + background-image: url('./images/messenger.png'); } .config-square div.logo.viber { - background-image: url('./images/viber.png'); + background-image: url('./images/viber.png'); } .config-square div.logo.convo_chat { - background-image: url('./images/convo_chat.png'); + background-image: url('./images/convo_chat.png'); } - + .config-square .name-indicator span.platform-name { height: 24px; color: rgba(0,0,0,0.8); @@ -76,7 +76,7 @@ line-height: 24px; float: left; } - + .config-square a.configure { height: 38px; width: 252px; @@ -88,7 +88,13 @@ letter-spacing: 0; line-height: 18px; text-align: center; - + margin-top: 65px; } -} \ No newline at end of file + + .panel-default > .panel-heading { + color: white; + background-color: #2F74EA; + border-color: #2F74EA; + } +} From d53158753a255254b38c3675a6c685c593867b9c Mon Sep 17 00:00:00 2001 From: mmarcec007 Date: Thu, 4 Feb 2021 10:33:45 +0100 Subject: [PATCH 07/11] update onFileUpload by adding additional argument in config-amazon-editor.tmpl.html --- src/convoworks/editor/config/config-amazon-editor.tmpl.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/convoworks/editor/config/config-amazon-editor.tmpl.html b/src/convoworks/editor/config/config-amazon-editor.tmpl.html index a34e5b5..9d51f2e 100644 --- a/src/convoworks/editor/config/config-amazon-editor.tmpl.html +++ b/src/convoworks/editor/config/config-amazon-editor.tmpl.html @@ -78,8 +78,8 @@
+ ngf-drop="onFileUpload($file, 'certificate')" ng-model="config.self_signed_certificate" + ngf-select="onFileUpload($file, 'certificate')" ngf-multiple="false">

Uploaded SSL Certificate Media ID: {{ getSelfSignedSslCertificate('self_signed_certificate') }}

From 75e1b4b9ccb03f04206f91fdde7bab72c3b1a210 Mon Sep 17 00:00:00 2001 From: mmarcec007 Date: Thu, 4 Feb 2021 10:34:58 +0100 Subject: [PATCH 08/11] add new fields in config-amazon-editor.tmpl.html to edit Alexa Skill Store Preview and Privacy and Compliance --- .../config/config-amazon-editor.tmpl.html | 143 ++++++++++++++++++ 1 file changed, 143 insertions(+) diff --git a/src/convoworks/editor/config/config-amazon-editor.tmpl.html b/src/convoworks/editor/config/config-amazon-editor.tmpl.html index 9d51f2e..8a41dcc 100644 --- a/src/convoworks/editor/config/config-amazon-editor.tmpl.html +++ b/src/convoworks/editor/config/config-amazon-editor.tmpl.html @@ -102,6 +102,149 @@
+
+
+
+ +
+
+
+ + + Public Name is required. +
+ +
+ + + One Sentence Description is required. +
+ +
+ + + Detailed Description is required. +
+ +
+ + +
+ +
+ + + At least one Example Phrase is required. +
+ +
+ + + +
+ +
+ + + +
+ +
+ + +
+ +
+ + +
+ +
+ + + This must be an valid url. +
+ +
+ + + This must be an valid url. +
+
+
+
+
+ +
+
+
+ +
+ Yes + No +
+
+
+ +
+ Yes + No +
+
+
+ +
+ Yes + No +
+
+
+ +
+ Yes + No +
+
+
+ +
+ +
+
+
+ + + Detailed Description is required. +
+
+
+
+
+
From a12f90b2f10158e13fa8e5835bebd11fbb102221 Mon Sep 17 00:00:00 2001 From: mmarcec007 Date: Thu, 4 Feb 2021 10:35:29 +0100 Subject: [PATCH 09/11] add new fields in config-amazon-editor.directive.js to handle Alexa Skill Store Preview and Privacy and Compliance --- .../config/config-amazon-editor.directive.js | 169 ++++++++++++++---- 1 file changed, 137 insertions(+), 32 deletions(-) diff --git a/src/convoworks/editor/config/config-amazon-editor.directive.js b/src/convoworks/editor/config/config-amazon-editor.directive.js index e302c29..55e6812 100644 --- a/src/convoworks/editor/config/config-amazon-editor.directive.js +++ b/src/convoworks/editor/config/config-amazon-editor.directive.js @@ -20,16 +20,8 @@ export default function configAmazonEditor($log, $q, $rootScope, $window, Convow }); ConvoworksApi.getServiceMeta($scope.service.service_id).then( function (serviceMeta) { - serviceLanguage = serviceMeta['default_language']; - $scope.service_language = serviceLanguage; - - if (serviceLanguage === 'en') { - serviceLanguage = "en_US" - } else if (serviceLanguage === 'de') { - serviceLanguage = "de_DE" - } else { - serviceLanguage = serviceLanguage.replace("-", "_") - } + const serviceLanguage = serviceMeta['default_locale']; + $scope.service_language = serviceLanguage.replace("-", "_"); }); $scope.config = { @@ -39,14 +31,37 @@ export default function configAmazonEditor($log, $q, $rootScope, $window, Convow interaction_model_sensitivity: 'LOW', endpoint_ssl_certificate_type: 'Wildcard', self_signed_certificate: null, - auto_display: false + auto_display: false, + skill_preview_in_store: { + public_name: _invocationToName($scope.service.name), + one_sentence_description: _invocationToName($scope.service.name), + detailed_description: _invocationToName($scope.service.name), + whats_new: '', + example_phrases: "Alexa, open " + $scope.service.name, + small_skill_icon: '', + large_skill_icon: '', + category: "ALARMS_AND_CLOCKS", + keywords: '', + privacy_policy_url: '', + terms_of_use_url: '' + }, + privacy_and_compliance: { + allows_purchases: "false", + uses_personal_info: "false", + is_child_directed: "false", + contains_ads: "false", + is_export_compliant: true, + testing_instructions: "N/A", + } }; var configBak = angular.copy( $scope.config); var is_new = true; var is_error = false; - var preparedUpload = null; - var previousMediaItemId = null; + var preparedUpload = new Map(); + var previousMediaItemId = new Map(); + var fileBytesSmallIcon = ''; + var fileBytesLargeIcon = ''; var logline = ''; _load(); @@ -63,19 +78,64 @@ export default function configAmazonEditor($log, $q, $rootScope, $window, Convow return is_new; } - $scope.onFileUpload = function (file) { + $scope.onFileUpload = function (file, type) { $log.log('ConfigurationsEditor onFileUpload file', file); + previousMediaItemId.set('certificate', $scope.config.self_signed_certificate); + previousMediaItemId.set('small_skill_icon', $scope.config.skill_preview_in_store.small_skill_icon); + previousMediaItemId.set('large_skill_icon', $scope.config.skill_preview_in_store.large_skill_icon); if (file) { - preparedUpload = { - file: file - }; - if (!file.name.includes('.pem')) { - throw new Error(`Invalid file extension in ${file.name}.`) + var image = new Image(); + if (type === 'certificate') { + if (!file.name.includes('.pem')) { + AlertService.addDanger(`Invalid file extension in ${file.name}. It must be .pem!`); + } + preparedUpload.set('amazon.self_signed_certificate', file); + $scope.config.self_signed_certificate = 'tmp_certificate_upload_ready'; + } else if (type === 'small_skill_icon') { + if (!file.name.includes('.png')) { + AlertService.addDanger(`Invalid file extension in ${file.name}. It must be .png!`); + } + preparedUpload.set('amazon.small_skill_icon', file); + $scope.config.skill_preview_in_store.small_skill_icon = 'tmp_small_skill_icon_upload_ready'; + + fileBytesSmallIcon = URL.createObjectURL(file); + image.src = fileBytesSmallIcon; + } else if (type === 'large_skill_icon') { + if (!file.name.includes('.png')) { + AlertService.addDanger(`Invalid file extension in ${file.name}. It must be .png!`); + } + preparedUpload.set('amazon.large_skill_icon', file); + $scope.config.skill_preview_in_store.large_skill_icon = 'tmp_large_skill_icon_upload_ready'; + + fileBytesLargeIcon = URL.createObjectURL(file); + image.src = fileBytesLargeIcon; } - previousMediaItemId = $scope.config.self_signed_certificate; - $scope.config.self_signed_certificate = 'tmp_upload_ready'; + if (image.src !== '') { + image.onload = () => { + let errorReport = ""; + if (type === 'small_skill_icon') { + if (image.height !== 108 && image.width !== 108) { + preparedUpload.delete('amazon.small_skill_icon'); + errorReport = `Invalid image size of ${file.name}. Actual image size is ${image.width} X ${image.width}. It should be 108 X 108.`; + $scope.config.skill_preview_in_store.small_skill_icon = ''; + $scope.$apply(); + } + } else if (type === 'large_skill_icon') { + if (image.height !== 512 && image.width !== 512) { + preparedUpload.delete('amazon.large_skill_icon'); + errorReport = `Invalid image size of ${file.name}. Actual image size is ${image.width} X ${image.width}. It should be 512 X 512.`; + $scope.config.skill_preview_in_store.large_skill_icon = ''; + $scope.$apply(); + } + } + if (errorReport !== '') { + AlertService.addDanger(`Invalid image size of ${file.name}. Actual image size is ${image.width} X ${image.width}. It should be 512 X 512.`); + } + URL.revokeObjectURL(file); + } + } } } @@ -87,14 +147,35 @@ export default function configAmazonEditor($log, $q, $rootScope, $window, Convow } if (mediaItemId === 'tmp_upload_ready') { - mediaItemId = previousMediaItemId; + mediaItemId = previousMediaItemId.get("certificate"); } -// $log.log('ConfigurationsEditor getMedia(', type, ') mediaItemId', mediaItemId); - return mediaItemId; } + $scope.getSkillIcon = function(type) { + var mediaItemId = $scope.config.skill_preview_in_store[type]; + + + if (!mediaItemId) { + return ''; + } + + if (mediaItemId === previousMediaItemId.get('small_skill_icon') && type === 'small_skill_icon') { + mediaItemId = previousMediaItemId.get('small_skill_icon'); + } else if (mediaItemId === previousMediaItemId.get('large_skill_icon') && type === 'large_skill_icon') { + mediaItemId = previousMediaItemId.get('large_skill_icon'); + } + + if (mediaItemId === 'tmp_small_skill_icon_upload_ready' && type === 'small_skill_icon') { + return fileBytesSmallIcon; + } else if (mediaItemId === 'tmp_large_skill_icon_upload_ready' && type === 'large_skill_icon') { + return fileBytesLargeIcon; + } else { + return ConvoworksApi.downloadMedia($scope.service.service_id, mediaItemId); + } + } + $scope.updateConfig = function (isValid) { if (!isValid) { throw new Error(`Invalid form data.`) @@ -102,23 +183,37 @@ export default function configAmazonEditor($log, $q, $rootScope, $window, Convow $log.debug('configAmazonEditor update() $scope.config', $scope.config); _updateSelectedInterfaces(); - var maybeUpload = preparedUpload ? + var maybeUpload = preparedUpload.size > 0 ? ConvoworksApi.uploadMedia( $scope.service.service_id, - 'dialogflow.self_signed_certificate', - preparedUpload.file) : + preparedUpload.entries()) : null; $q.when(maybeUpload).then(function (res) { - if (res && res.mediaItemId) { - $scope.config.self_signed_certificate = res.mediaItemId; - preparedUpload = null; + if (res && res.length > 0) { + + for(var i = 0; i < res.length; i++) { + const width = res[i].imageWidth; + const height = res[i].imageHeight; + + if (width === 108 && height === 108) { + $scope.config.skill_preview_in_store.small_skill_icon = res[i].mediaItemId; + } else if (width === 512 && height === 512) { + $scope.config.skill_preview_in_store.large_skill_icon = res[i].mediaItemId; + } else if (width === null && height === null ) { + $scope.config.self_signed_certificate = res[i].mediaItemId; + } + } + + preparedUpload.clear(); } + if ( is_new) { - ConvoworksApi.createServicePlatformConfig( $scope.service.service_id, 'amazon', $scope.config).then(function (data) { + return ConvoworksApi.createServicePlatformConfig( $scope.service.service_id, 'amazon', $scope.config).then(function (data) { configBak = angular.copy( $scope.config); is_new = false; is_error = false; + $scope.config.app_id = data.app_id; AlertService.addSucess(`Service ${$scope.service.service_id} was linked successfully with Alexa.`); $rootScope.$broadcast('ServiceConfigUpdated', $scope.config); }, function ( response) { @@ -127,7 +222,7 @@ export default function configAmazonEditor($log, $q, $rootScope, $window, Convow throw new Error("Can't create config for Amazon. " + response.data.message) }); } else { - ConvoworksApi.updateServicePlatformConfig( $scope.service.service_id, 'amazon', $scope.config).then(function (data) { + return ConvoworksApi.updateServicePlatformConfig( $scope.service.service_id, 'amazon', $scope.config).then(function (data) { configBak = angular.copy( $scope.config); is_error = false; $rootScope.$broadcast('ServiceConfigUpdated', $scope.config); @@ -150,6 +245,9 @@ export default function configAmazonEditor($log, $q, $rootScope, $window, Convow $scope.revertConfig = function () { $scope.config = angular.copy(configBak); + if (preparedUpload.size > 0) { + preparedUpload.clear(); + } } @@ -216,6 +314,7 @@ export default function configAmazonEditor($log, $q, $rootScope, $window, Convow $scope.languages = config_options['CONVO_AMAZON_LANGUAGES']; $scope.sensitivities = config_options['CONVO_AMAZON_INTERACTION_MODEL_SENSITIVITIES']; $scope.endpointCertificateTypes = config_options['CONVO_AMAZON_SKILL_ENDPOINT_SSL_CERTIFICATE']; + $scope.categories = config_options['CONVO_AMAZON_SKILL_CATEGORIES']; $scope.interfaces = config_options['CONVO_ALEXA_INTERFACES']; $scope.$watch('config.auto_display', function(newVal) { @@ -226,6 +325,7 @@ export default function configAmazonEditor($log, $q, $rootScope, $window, Convow } }); + $scope.$watch('config.interaction_model_sensitivity', function(newInteractionModelSensitivity) { if (newInteractionModelSensitivity !== undefined) { $scope.config.interaction_model_sensitivity = newInteractionModelSensitivity; @@ -256,6 +356,11 @@ export default function configAmazonEditor($log, $q, $rootScope, $window, Convow }) } + function _invocationToName(str) { + return (str + '').replace(/^(.)|\s+(.)/g, function ($1) { + return $1.toUpperCase() + }) + } } } From fe725061c1b84745a8d3340b2e2d0bfdab36fb00 Mon Sep 17 00:00:00 2001 From: mmarcec007 Date: Thu, 4 Feb 2021 10:38:58 +0100 Subject: [PATCH 10/11] update image upload in config-dialogflow-editor.directive.js --- .../config-dialogflow-editor.directive.js | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/convoworks/editor/config/config-dialogflow-editor.directive.js b/src/convoworks/editor/config/config-dialogflow-editor.directive.js index f55ccbf..db6d607 100644 --- a/src/convoworks/editor/config/config-dialogflow-editor.directive.js +++ b/src/convoworks/editor/config/config-dialogflow-editor.directive.js @@ -33,7 +33,7 @@ export default function configDialogflowEditor($log, $q, $rootScope, $window, Co _load(); - var preparedUpload = null; + var preparedUpload = new Map(); var previousMediaItemId = null; @@ -75,14 +75,16 @@ export default function configDialogflowEditor($log, $q, $rootScope, $window, Co var maybeUpload = preparedUpload ? ConvoworksApi.uploadMedia( $scope.service.service_id, - 'dialogflow.avatar', - preparedUpload.file) : + preparedUpload.entries()) : null; $q.when(maybeUpload).then(function (res) { - if (res && res.mediaItemId) { - $scope.config.avatar = res.mediaItemId; - preparedUpload = null; + if (res && res.length > 0) { + for(var i = 0; i < res.length; i++) { + $scope.config.avatar = res[i].mediaItemId; + } + + preparedUpload.clear(); } if (is_new) { @@ -121,8 +123,8 @@ export default function configDialogflowEditor($log, $q, $rootScope, $window, Co } $scope.revertConfig = function () { - if (preparedUpload) { - preparedUpload = null; + if (preparedUpload.size > 0) { + preparedUpload.clear(); } if (previousMediaItemId) { @@ -135,9 +137,7 @@ export default function configDialogflowEditor($log, $q, $rootScope, $window, Co $scope.onFileUpload = function (file) { $log.log('ConfigurationsEditor onFileUpload file', file); - preparedUpload = { - file: file - }; + preparedUpload.set('dialogflow.avatar', file); previousMediaItemId = $scope.config.avatar; $scope.config.avatar = 'tmp_upload_ready'; From a7129a4d8b5d736d4e84bfd55aa67367fd3645f1 Mon Sep 17 00:00:00 2001 From: mmarcec007 Date: Thu, 4 Feb 2021 10:41:57 +0100 Subject: [PATCH 11/11] update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb2dcec..499b744 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ * new preview rendering to accommodate overhauled process * notifications have been redesigned * add an indicator for ongoing propagation +* add the ability to edit the Skill Preview and Privacy Compliance of Alexa Skill Developer Console Distribution Tab ## [Releases]