Amazon Lexを使って爆速で、九九の練習アプリを作ってみた。
勝手に小平応援ITエンジニア
「ランニングコストゼロのIT業務改善、実装します。」というテーマで東京都小平市を中心に小規模事業者向けに支援を行っています。
1時間で九九練習アプリ作成にチャレンジしてみた
作成した結果はこちら ⤵
作成手順
AWSが提供している「builders.flash」に投稿されている記事をもとに構築した。若干、現在の画面イメージと異なる部分はありますが、基本問題ありません。
参考)lambda_function.py で設定した関数
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 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 lambda_handler(event, context):
intent_name = event['sessionState']['intent']['name']
n_correct = 0
for i in range(1, len(get_slots(event))+1):
### ユーザー解答を取得
ans = int(get_slot(event, str(intent_name) + str(i)))
if int(intent_name) * i == ans: # 正解
n_correct += 1
else: # 不正解
pass
text = f'せいかいは {n_correct} こでした!!!!!'
message = {
'contentType': 'PlainText',
'content': text
}
fulfillment_state = "Fulfilled"
session_attributes = get_session_attributes(event)
return close(event, session_attributes, fulfillment_state, message)
感想
AWSを利用すると1時間で、ほぼノーコードでBotアプリケーションが作成できました。娘に九九の練習をするようにアプリケーションを使ってもらいましたが、10分程度で飽きられてしまいました・・・(笑)。