使用AWS Lambda中的boto3s / boto3.client('lex-models')动态创建Slotype

时间:2019-02-15 04:18:57

标签: amazon-web-services aws-lambda cloud aws-sdk

我正在使用boto3 python模块在运行时动态创建插槽类型。

但是我已经正确地编写了代码,但是在LEX控制台的SLOTTYPE列表中没有看到任何插槽类型。

创建了一个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)

我希望使用AWS Lex Modeling Service API动态创建插槽类型。

注意:

我的DialogCodeHook正常工作,因为我对lex进行了DELEGATE响应以采取进一步的措施,但是当我调用FulfillmentCodeHook并在其中创建运行时插槽类型名称enable时,我的代码失败了。

0 个答案:

没有答案