我正在使用Flask-Ask开发Alexa技能。我想记录所有意图调用及其参数,并且由于意图都使用ask.intent
装饰器方便地注释,我想我可以更改Flask-Ask的代码来执行装饰器代码中的日志记录或者我可以装饰自己,这可以避免在部署到生产时修补库的问题。
我已经构建了下面的解决方案,但问题是* args和** kwargs总是为空,而不是像this issue投票最多的解决方案那样传递。
def tracked_intent(intent_name, mapping={}, convert={}, default={}):
def decorator(f):
@ask.intent(intent_name, mapping, convert, default)
def new_func(*args, **kwargs):
print('Got intent {} with arguments {} and {}'.format(intent_name, str(args), str(kwargs)))
return f(*args, **kwargs)
new_func.__name__ = f.__name__
return new_func
return decorator
因此,当我有一个需要参数的意图调用时,我会得到像TypeError: function() missing 2 required positional arguments: 'arg1' and 'arg2'
如何在正确转发函数参数的同时修复我的装饰器“扩展”ask.intent
装饰器?