0

我正在使用 AWS 开发工具包将 AWSLexVoiceButton 添加到我的应用程序中。我已在我设置的 Intent 中将其配置为客户端实现,因为我想让应用程序根据我的 Intent 的 AWS 控制台中的语音命令在屏幕上显示一些内容:

AWS 履行

这一切都有效,当机器人识别我的意图时,我在下面的代码中得到一个回调:

func voiceButton(_ button: AWSLexVoiceButton, on response: AWSLexVoiceButtonResponse) {
    // `inputranscript` is the transcript of the voice input to the operation
    if response.dialogState == .readyForFulfillment {
        print("Ready to fulfill")
        // I want to provide speech output
        say(text: "OK, I will show the train status screen")
        showTrainStatusScreen()
    }
}

两个问题:

  1. 当我点击 AWSLexVoiceButton 时,没有任何音频指示它正在收听,并且您甚至看不到您点击按钮的任何迹象,除非您发出足够大的声音以使其麦克风声音检测动画。我无法添加诸如“有什么可以帮助您的?”之类的语音提示。因为最初点击按钮时没有AWSLexVoiceButtonDelegate回调。

    Q:有没有什么办法可以在 Lex 众生听的时候添加语音提示?

  2. 同样,没有音频指示客户端正在实现意图。因为有回调,所以我可以添加自己的响应。但为此,我手动设置了一个AVAudioPlayerAWS Polly 并与它集成,以say我编写的自定义方法将我的文本转换为语音。我的方法有效,但似乎它一定是错误的方法。

    问:是否有任何方法可以触发 Lex 作为客户端执行的结果来提供自定义音频响应?

4

1 回答 1

1
  1. 如果没有用户的请求,您不能通过 Lex 提供响应。我不熟悉 iOS,但是在 Android 中,您可以在应用程序中添加此功能以手动处理这种情况。我猜iOS允许类似的功能。如果我错了,请发表评论。不幸的是,这不是 Lex 提供的。

  2. Lex 只会在履行完成后做出响应。由于您不需要服务器端实现,因此您可以创建一个 lambda 函数,该函数除了返回您正在寻找的完成响应之外什么都不做。

希望有帮助

于 2017-08-16T19:47:36.577 回答