Formato JSON para importar y exportar bots en Lex V2 - Amazon Lex

Formato JSON para importar y exportar bots en Lex V2

Los bots, las configuraciones regionales de bots o los vocabularios personalizados se importan y exportan desde Amazon Lex V2 mediante un archivo .zip que contiene estructuras JSON que describen las partes del recurso. Al exportar un recurso, Amazon Lex V2 crea el archivo .zip y lo pone a su disposición mediante una URL prefirmada de Amazon S3. Al importar un recurso, debe crear un archivo .zip que contenga las estructuras JSON y subirlo a una URL prefirmada de S3.

Amazon Lex crea la siguiente estructura de directorios en el archivo .zip al exportar un bot. Al exportar la configuración regional de un bot, solo se exporta la estructura situada debajo de la configuración regional. Al exportar un vocabulario personalizado, solo se exporta la estructura incluida en el vocabulario personalizado.

BotName_BotVersion_ExportID_LexJson.zip -or- BotName_BotVersion_LocaleId_ExportId_LEX_JSON.zip --> manifest.json --> BotName ----> Bot.json ----> BotLocales ------> Locale_A --------> BotLocale.json --------> Intents ----------> Intent_A ------------> Intent.json ------------> Slots --------------> Slot_A ----------------> Slot.json --------------> Slot_B ----------------> Slot.json ----------> Intent_B ... --------> SlotTypes ----------> SlotType_A ------------> SlotType.json ----------> SlotType_B ... --------> CustomVocabulary ------------> CustomVocabulary.json ------> Locale_B ...

Estructura del archivo de manifiesto

El archivo de manifiesto contiene los metadatos del archivo de exportación.

{ "metadata": { "schemaVersion": "1.0", "fileFormat": "LexJson", "resourceType": "Bot | BotLocale | CustomVocabulary" } }

Estructura del archivo del bot

El archivo del bot contiene la información de configuración para el bot.

{ "name": "BotName", "identifier": "identifier", "version": "number", "description": "description", "dataPrivacy": { "childDirected": true | false }, "idleSessionTTLInSeconds": seconds }

Estructura del archivo de configuración regional del bot

El archivo de configuración regional del bot contiene una descripción de la configuración regional o el idioma de un bot. Al exportar un bot, puede haber más de un archivo de configuración regional del bot en el archivo .zip. Al exportar la configuración regional de un bot, solo hay una configuración regional en el archivo .zip.

{ "name": "locale name", "identifier": "locale ID", "version": "number", "description": "description", "voiceSettings": { "voiceId": "voice", "engine": "standard | neural }, "nluConfidenceThreshold": number }

Estructura del archivo de intenciones

El archivo de intenciones contiene la información de configuración para una intención. Hay un archivo de intenciones en el archivo .zip para cada intención en una configuración regional específica.

El siguiente es un ejemplo de una estructura JSON para la intención ReservarCoche en el ejemplo de bot ReservarViaje. Para ver un ejemplo completo de la estructura JSON de una intención, consulte la operación CreateIntent.

{ "name": "BookCar", "identifier": "891RWHHICO", "description": "Intent to book a car.", "parentIntentSignature": null, "sampleUtterances": [ { "utterance": "Book a car" }, { "utterance": "Reserve a car" }, { "utterance": "Make a car reservation" } ], "intentConfirmationSetting": { "confirmationPrompt": { "messageGroupList": [ { "message": { "plainTextMessage": { "value": "OK, I have you down for a {CarType} hire in {PickUpCity} from {PickUpDate} to {ReturnDate}. Should I book the reservation?" }, "ssmlMessage": null, "customPayload": null, "imageResponseCard": null }, "variations": null } ], "maxRetries": 2 }, "declinationResponse": { "messageGroupList": [ { "message": { "plainTextMessage": { "value": "OK, I have cancelled your reservation in progress." }, "ssmlMessage": null, "customPayload": null, "imageResponseCard": null }, "variations": null } ] } }, "intentClosingSetting": null, "inputContexts": null, "outputContexts": null, "kendraConfiguration": null, "dialogCodeHook": null, "fulfillmentCodeHook": null, "slotPriorities": [ { "slotName": "DriverAge", "priority": 4 }, { "slotName": "PickUpDate", "priority": 2 }, { "slotName": "ReturnDate", "priority": 3 }, { "slotName": "PickUpCity", "priority": 1 }, { "slotName": "CarType", "priority": 5 } ] }

Estructura del archivo del slot

El archivo del slot contiene la información de configuración para el slot en una intención. Hay un archivo de slot en el archivo .zip para cada slot definido para una intención en una configuración regional específica.

El siguiente ejemplo es la estructura JSON de un slot que permite al cliente elegir el tipo de coche que desea alquilar en la intención ReservarCoche del bot de ejemplo de ReservarViaje. Para ver un ejemplo completo de la estructura JSON de un slot, consulte la operación CreateSlot.

{ "name": "CarType", "identifier": "KDHJWNGZGC", "description": "Type of car being reserved.", "multipleValuesSetting": { "allowMutlipleValues": false }, "slotTypeName": "CarTypeValues", "obfuscationSetting": null, "slotConstraint": "Required", "defaultValueSpec": null, "slotValueElicitationSetting": { "promptSpecification": { "messageGroupList": [ { "message": { "plainTextMessage": { "value": "What type of car would you like to rent? Our most popular options are economy, midsize, and luxury" }, "ssmlMessage": null, "customPayload": null, "imageResponseCard": null }, "variations": null } ], "maxRetries": 2 }, "sampleValueElicitingUtterances": null, "waitAndContinueSpecification": null, } }

La estructura JSON de un slot compuesto se muestra en el ejemplo siguiente.

{ "name": "CarType", "identifier": "KDHJWNGZGC", "description": "Type of car being reserved.", "multipleValuesSetting": { "allowMutlipleValues": false }, "slotTypeName": "CarTypeValues", "obfuscationSetting": null, "slotConstraint": "Required", "defaultValueSpec": null, "slotValueElicitationSetting": { "promptSpecification": { "messageGroupList": [ { "message": { "plainTextMessage": { "value": "What type of car would you like to rent? Our most popular options are economy, midsize, and luxury" }, "ssmlMessage": null, "customPayload": null, "imageResponseCard": null }, "variations": null } ], "maxRetries": 2 }, "sampleValueElicitingUtterances": null, "waitAndContinueSpecification": null, }, "subSlotSetting": { "slotSpecifications": { "firstname": { "valueElicitationSetting": { "promptSpecification": { "allowInterrupt": false, "messageGroupsList": [ { "message": { "imageResponseCard": null, "ssmlMessage": null, "customPayload": null, "plainTextMessage": { "value": "please provide firstname" } }, "variations": null } ], "maxRetries": 2, "messageSelectionStrategy": "Random" }, "defaultValueSpecification": null, "sampleUtterances": [ { "utterance": "my name is {firstName}" } ], "waitAndContinueSpecification": null }, "slotTypeId": "AMAZON.FirstName" }, "eyeColor": { "valueElicitationSetting": { "promptSpecification": { "allowInterrupt": false, "messageGroupsList": [ { "message": { "imageResponseCard": null, "ssmlMessage": null, "customPayload": null, "plainTextMessage": { "value": "please provide eye color" } }, "variations": null } ], "maxRetries": 2, "messageSelectionStrategy": "Random" }, "defaultValueSpecification": null, "sampleUtterances": [ { "utterance": "eye color is {eyeColor}" }, { "utterance": "I have eyeColor eyes" } ], "waitAndContinueSpecification": null }, "slotTypeId": "7FEVCB2PQE" } }, "expression": "(firstname OR eyeColor)" } }

Estructura de tipo de slot

El archivo de tipos de slots contiene la información de configuración de un tipo de slot personalizado utilizado en un idioma o configuración regional. Hay un archivo de tipos de slots en el archivo .zip para cada tipo de slot personalizado en una configuración regional específica.

La siguiente es la estructura JSON para el tipo de slot que enumera los tipos de coches disponibles en el bot de ejemplo de ReservarViaje. Para ver un ejemplo completo de la estructura JSON de un tipo de slot, consulte la operación CreateSlotType.

{ "name": "CarTypeValues", "identifier": "T1YUHGD9ZR", "description": "Enumeration representing possible types of cars available for hire", "slotTypeValues": [{ "synonyms": null, "sampleValue": { "value": "economy" } }, { "synonyms": null, "sampleValue": { "value": "standard" } }, { "synonyms": null, "sampleValue": { "value": "midsize" } }, { "synonyms": null, "sampleValue": { "value": "full size" } }, { "synonyms": null, "sampleValue": { "value": "luxury" } }, { "synonyms": null, "sampleValue": { "value": "minivan" } }], "parentSlotTypeSignature": null, "valueSelectionSetting": { "resolutionStrategy": "TOP_RESOLUTION", "advancedRecognitionSetting": { "audioRecognitionStrategy": "UseSlotValuesAsCustomVocabulary" }, "regexFilter": null } }

La estructura JSON de un tipo de slot compuesto se muestra en el ejemplo siguiente.

{ "name": "CarCompositeType", "identifier": "TPA3CC9V", "description": null, "slotTypeValues": null, "parentSlotTypeSignature": null, "valueSelectionSetting": { "regexFilter": null, "resolutionStrategy": "CONCATENATION" }, "compositeSlotTypeSetting": { "subSlots": [ { "name": "model", "slotTypeId": "MODELTYPEID" # custom slot type Id for model }, { "name": "city", "slotTypeId": "AMAZON.City" }, { "name": "country", "slotTypeId": "AMAZON.Country" }, { "name": "make", "slotTypeId": "MAKETYPEID" # custom slot type Id for make } ] } }

El siguiente es un tipo de slot que utiliza una gramática personalizada para entender los enunciados del cliente. Para obtener más información, consulte Tipo de slot gramatical.

{ "name": "custom_grammar", "identifier": "7KEAQIQKPX", "description": "Slot type using a custom grammar", "slotTypeValues": null, "parentSlotTypeSignature": null, "valueSelectionSetting": null, "externalSourceSetting": { "grammarSlotTypeSetting": { "source": { "kmsKeyArn": "arn:aws:kms:Region:123456789012:alias/customer-grxml-key", "s3BucketName": "grxml-test", "s3ObjectKey": "grxml_files/grammar.grxml" } } } }

Estructura del archivo de vocabulario personalizado

El archivo de vocabulario personalizado contiene las entradas de un vocabulario personalizado para un solo idioma o configuración regional. Hay un archivo de vocabulario personalizado en el archivo .zip para cada configuración regional que tenga un vocabulario personalizado.

El siguiente es un archivo de vocabulario personalizado para un bot que recibe pedidos de restaurantes. Hay un archivo por configuración regional en el bot.

{ "customVocabularyItems": [ { "weight": 3, "phrase": "wafers" }, { "weight": null, "phrase": "extra large" }, { "weight": null, "phrase": "cremini mushroom soup" }, { "weight": null, "phrase": "ramen" }, { "weight": null, "phrase": "orzo" } ] }