Untitled

 avatar
unknown
python
5 months ago
4.2 kB
5
Indexable
import json

def lambda_handler(event,context):
    # TODO implement
    intent_name = ""
    sessionState = event["sessionState"]
    session_id = event['sessionId']
    try:
        intent_name = event['sessionState']['intent']['name']
    
    except KeyError as e:
        # Handle the case where the expected structure is not present
        intent_name = "None"
        
    if intent_name == "GreetingIntent":
        return handleGreeting(event,intent_name,session_id,sessionState)
    elif intent_name == "ThankYouIntent":
        return handleThankyou(event,intent_name,session_id,sessionState)
    elif intent_name == "DiningSuggestionsIntent":
        return handleDining(event,intent_name,session_id,sessionState)
    else
        return handleFallback(event,intent_name,session_id,sessionState)
    
def handleGreeting(event,intent_name,session_id,sessionState):
    return {
        'sessionState': {
            **sessionState,
            'dialogAction': {
                'type': 'Close'
            },
            'intent': {
                'name': intent_name,
                'state': 'Fulfilled'
            }
        },
        'sessionId': session_id
    }
    
def handleThankyou(event,intent_name,session_id,sessionState):
    return {
        'sessionState': {
            **sessionState,
            'dialogAction': {
                'type': 'Close'
            },
            'intent': {
                'name': intent_name,
                'state': 'Fulfilled'
            }
        },
        'sessionId': session_id
    }
    
def handleDining(event,intent_name,session_id,sessionState):
    Location = event['sessionState']['intent']['slots']['location']
    DiningTime = event['sessionState']['intent']['slots']['DiningTime']
    NumberOfPeople = event['sessionState']['intent']['slots']['NumberOfPeople']
    Cuisine = event['sessionState']['intent']['slots']['Cuisine']
    Email = event['sessionState']['intent']['slots']['Email']
    
    if !Location:
        return checkSlot(event,intent_name,session_id,sessionState,Location)
    if !DiningTime:
        return checkSlot(event,intent_name,session_id,sessionState,DiningTime)
    if !NumberOfPeople:
        return checkSlot(event,intent_name,session_id,sessionState,NumberOfPeople)
    if !Cuisine:
        return checkSlot(event,intent_name,session_id,sessionState,Cuisine)
    if !Email:
        return checkSlot(event,intent_name,session_id,sessionState,Email)
    
    confirmation(event,intent_name,session_id,sessionState)
    fulfillment(event,intent_name,session_id,sessionState)
        
        
def checkSlot(event,intent_name,session_id,sessionState,slotToCheck):
    return {
        'sessionState': {
            **sessionState,
            'dialogAction': {
                'type': 'ElicitSlot'
                "slotToElicit": slotToCheck
            },
            'intent': {
                'name': intent_name,
                'state': 'InProgress'
            }
        },
        'sessionId': session_id
    }
    
def confirmation(event,intent_name,session_id,sessionState):
    return {
        'sessionState': {
            **sessionState,
            'dialogAction': {
                'type': 'ConfirmIntent'
            },
            'intent': {
                'name': intent_name,
                'state': 'InProgress'
            }
        },
        'sessionId': session_id
    }
    
def fulfillment(event,intent_name,session_id,sessionState):
    return {
        'sessionState': {
            **sessionState,
            'dialogAction': {
                'type': 'Close'
            },
            'intent': {
                'name': intent_name,
                'state': 'ReadyForFulfillment'
            }
        },
        'sessionId': session_id
    }


def handleFallback(event,intent_name,session_id,sessionState):
    return {
        'sessionState': {
            **sessionState,
            'dialogAction': {
                'type': 'Close'
            },
            'intent': {
                'name': intent_name,
                'state': 'Fulfilled'
            }
        },
        'sessionId': session_id
    }
Editor is loading...
Leave a Comment