我正在处理Amazon
Lex
bot
并且在我的python
Lambda
函数中我有以下作为输出返回:
def close(session_attributes, fulfillment_state, message):
response = {
'sessionAttributes': session_attributes,
'dialogAction': {
'type': 'Close',
'fulfillmentState': fulfillment_state,
'message': message
}
}
return response
def Test_Bot(intent_request):
# bunch of other code processing
# call to close() in final output return
return close(
session_attributes,
'Fulfilled',
{
'contentType': 'PlainText',
'content': 'Thanks for asking!'
}
)
以下是我对该Lambda
函数的输入:
def dispatch(intent_request):
intent_name = intent_request['currentIntent']['name']
# Dispatch to your bot's intent handlers
if intent_name == 'TestBot':
return Test_Bot(intent_request)
raise Exception('Intent with name ' + intent_name + ' not supported')
# --- Main handler ---
def lambda_handler(event, context):
return dispatch(event)
请注意,这不是完整代码,而是输入和输出代码的一部分。
type-in
现在我面临的问题是,如果我通过Lex
测试机器人控制台提出问题,我的代码从头到尾都可以正常工作。但是,如果speak-in
我提出问题,那么代码会在终点中断。现在,如果我是正确的,因为当我提出问题时它的contentType
设置是正确的,但是当我提出问题时,它期望哪个不存在,所以它会中断。PlainText
type-in
speak-in
audio
contentType
所以我的问题是如何访问contentType
传入请求的?意味着如果用户正在打字,那么contentType
上面的响应格式设置为PlainText
,当用户说话时,contentType
设置为audio
?