它在V1中起作用的原因是
ask()实际上会发送请求。
使用V2,您可以
add()多次调用以同一回复将所有内容发送给用户。因此,它需要知道何时发送消息。它是处理处理程序响应的一部分。
如果您的处理程序是同步的,它将立即发送答复。
但是,如果您的处理程序是异步的,则它将假定您正在返回一个Promise,并等待该Promise解析之后再发送答复。因此,要处理异步调用,您需要返回一个Promise。
由于您的呼叫已经在使用Promises,因此您的状态非常好!重要的是您还要 返回
Promise并使用它。因此,这样的事情可能是您的异步调用(返回了Promise):
exports.someAsyncCall = function someAsyncCall() { var apigClient = getAWSClient(); // uses aws-api-gateway-client return apigClient.invokeApi(params, pathTemplate, method, additionalParams, body) .then(function(result){ var result = result.data; var message = result['message']; console.log('SUCCESS: ' + message); return Promise.resolve( message ); }).catch( function(error){ console.log('ERROR: ' + error); return Promise.reject( error ); });};
然后您的Intent处理程序将类似于
function exampleIntent(app) { return myClient.someAsyncCall() .then( function( message ){ app.add("You should hear this message": message); return Promise.resolve(); }) .catch( function( err ){ app.add("Uh oh, something happened."); return Promise.resolve(); // Don't reject again, or it might not send the reply })}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)