Я использую модуль Python boto3 для динамического создания типа слота во время выполнения.
Но я правильно написал свой код, но не вижу ни одного типа слота в моем списке SLOTTYPE в консоли LEX.
Создан BOT, работает с AWS Lex, AWS Lamda и AWS RDS MySQL.
Я использую AWS Lex Models API для создания slotype со значениями.
Я пытался, но я невозможность получить логику.
Код Python:
import pymysql
import sys
import logging
import boto3
logger = logging.getLogger()
logger.setLevel(logging.INFO)
client = boto3.client('lex-models')
def createSlot_Type_6():
response_ = client.put_slot_type(
name='enable',
description='',
enumerationValues=[
{
"value": "enable",
"synonyms": [
"enable"
]
},
{
"value": "turn on",
"synonyms": [
"turn on"
]
},
{
"value": "switch on",
"synonyms": [
"switch on"
]
},
{
"value": "activate",
"synonyms": [
"activate"
]
}
],
# checksum='1',
# valueSelectionStrategy='ORIGINAL_VALUE'|'TOP_RESOLUTION'
)
return response_
def delegate(session_attributes, slots):
return {
'sessionAttributes': session_attributes,
'dialogAction': {
'type': 'Delegate',
'slots': slots
}
}
def build_response(message):
return {
"dialogAction":{
"type":"Close",
"fulfillmentState":"Fulfilled",
"message":{
"contentType":"PlainText",
"content":message
}
}
}
def perform_action_DTC_Claim(intent_request):
source = intent_request['invocationSource']
output_session_attributes = intent_request['sessionAttributes'] if
intent_request['sessionAttributes'] is not None else {}
slots = intent_request['currentIntent']['slots']
# whatever you want to do
if source == 'DialogCodeHook':
# Perform basic validation on the supplied input slots.
return delegate(output_session_attributes, slots)
if source == 'FulfillmentCodeHook':
# action fulfillment code
msg = "Hi, I am a xxx-BOT. i can help you with following: A B C"
return createSlot_Type_6()
def main(event,context):
logger.debug(event)
#return dispatch(event)
return perform_action_DTC_Claim(event)
Я хочу, чтобы тип слота создавался динамически с помощью API-интерфейсов AWS Lex Modeling Service.
Примечание:
Мой DialogCodeHook работает правильно, так как я даю ответ DELEGATE на lex для дальнейших действий, но мой код завершается ошибкой, когда я вызвал FulfillmentCodeHook, где я создаю разрешение имени типа слота времени выполнения.