我正在使用lex开发一个聊天机器人。我创建了一个名为“latestdetails”的意图和一个插槽“uniquename”。我想验证插槽“uniquename”,以便它不接受字母表,并在输入错误时询问消息“请再次输入”。下面是我用python编写的代码
在测试lambda函数时,我得到了正确的响应,但是当lambda函数通过初始化和验证代码钩子与lex连接时,我在bot上得到了以下错误:“Amazon-lex-error-a-error-a-error-accurrence:Invalid lambda-response:Received error-response from lambda:Unhandled”
我在stackoverflow中看到了相关问题,但我无法获得所需的解决方案
import os
import time
import json
import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
def get_slots(event):
return event['currentIntent']['slots']
def elicit_slot(intent_name, slots, slot_to_elicit ,message):
response = {
"dialogAction":
{
"type":"ElicitSlot",
"intentName": intent_name,
"slots": slots,
"slotToElicit": slot_to_elicit,
"message": {
"content": message,
"contentType": "PlainText"
}
}
}
return response
def delegate(slots):
response = {
"dialogAction":
{
"type":"Delegate",
"slots": slots
}
}
return response
def close():
response = {
"dialogAction":
{
"fulfillmentState":"Fulfilled",
"type":"Close",
"message":
{
"contentType":"PlainText",
"content": "Hey your ticket has been raised"
}
}
}
return response
def dispatch(event):
intent_name=event['currentIntent']['name']
if intent_name == 'latestdetails':
source = event['invocationSource']
if source == 'DialogCodeHook':
slots= get_slots(event)
uniquename = event["currentIntent"]["slots"]["uniquename"]
if uniquename.isalpha():
return elicit_slot(intent_name,'uniquename','uniquename','please enteragain')
return delegate(slots)
return close('Fulfilled')
elif source == 'FulfillmentCodeHook':
return close()
def lambda_handler(event, context):
return dispatch(event)
目前没有回答
相关问题 更多 >
编程相关推荐