Динамическое создание slotype с использованием boto3s / boto3.client ('lex-models') в AWS Lambda - PullRequest
0 голосов
/ 15 февраля 2019

Я использую модуль 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, где я создаю разрешение имени типа слота времени выполнения.

...