AWS マネジメントコンソールで AWS Lambda のコンソールに移動し、右上の [関数の作成] ボタンを押します。
“関数の作成” 画面では以下を設定して、右下の [関数の作成] ボタンを押します。
lex-ReservationBot_JP
関数が作成されたら、コードソースセクションまでスクロールし、以下のコードで lambda_function.py を上書きします。
import json
import random
import decimal
def random_num():
return(decimal.Decimal(random.randrange(1000, 9999)))
def get_slots(intent_request):
return intent_request['sessionState']['intent']['slots']
def get_slot(intent_request, slotName):
slots = get_slots(intent_request)
if slots is not None and slotName in slots and slots[slotName] is not None:
return slots[slotName]['value']['interpretedValue']
else:
return None
def get_session_attributes(intent_request):
sessionState = intent_request['sessionState']
if 'sessionAttributes' in sessionState:
return sessionState['sessionAttributes']
return {}
def elicit_intent(intent_request, session_attributes, message):
return {
'sessionState': {
'dialogAction': {
'type': 'ElicitIntent'
},
'sessionAttributes': session_attributes
},
'messages': [ message ] if message != None else None,
'requestAttributes': intent_request['requestAttributes'] if 'requestAttributes' in intent_request else None
}
def close(intent_request, session_attributes, fulfillment_state, message):
intent_request['sessionState']['intent']['state'] = fulfillment_state
return {
'sessionState': {
'sessionAttributes': session_attributes,
'dialogAction': {
'type': 'Close'
},
'intent': intent_request['sessionState']['intent']
},
'messages': [message],
'sessionId': intent_request['sessionId'],
'requestAttributes': intent_request['requestAttributes'] if 'requestAttributes' in intent_request else None
}
def getReservationNumber(intent_request):
session_attributes = get_session_attributes(intent_request)
slots = get_slots(intent_request)
phoneNumber = get_slot(intent_request, 'PhoneNumber')
print(phoneNumber)
#4桁のランダムな整数を予約番号として返す
reservationNumber = str(random_num())
print(reservationNumber)
text = "ありがとうございます。携帯電話番号 "+phoneNumber+", ご予約番号は "+reservationNumber+" でご予約を承りました。"
message = {
'contentType': 'PlainText',
'content': text
}
fulfillment_state = "Fulfilled"
return close(intent_request, session_attributes, fulfillment_state, message)
def dispatch(intent_request):
intent_name = intent_request['sessionState']['intent']['name']
response = None
# Dispatch to your bot's intent handlers
if intent_name == 'Waitlist':
return getReservationNumber(intent_request)
raise Exception('Intent with name ' + intent_name + ' not supported')
def lambda_handler(event, context):
print(event)
response = dispatch(event)
return response
コードを上書きしたら、 [Deploy] ボタンを押してセーブします。