ios - AWSLexVoiceButton 提示和客户端履行响应

标签 ios aws-sdk amazon-lex

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

AWS fulfillment

一切正常,当 Bot 识别出我的 Intent 时,我在下面的代码中收到回调:

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 回调。

    问:有什么办法可以在Lex被监听时添加语音提示吗?

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

    问:有没有什么方法可以触发 Lex 作为客户履行的结果给出自定义音频响应?

最佳答案

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

  2. Lex 仅在履行完成后才会响应。由于您不需要服务器端履行,因此您可以创建一个除了返回之外不执行任何操作的 lambda 函数您正在寻找的完成响应。

希望对你有帮助

关于ios - AWSLexVoiceButton 提示和客户端履行响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45718769/

相关文章:

amazon-lex - 在 Amazon Lex 中格式化字符串输出

ios - iOS 8.4 中未调用 GIDSignInDelegate 方法

ios - Ionic cordova 应用程序适用于所有浏览器和 IOS 9,但不再适用于 IOS 8 [无错误地卡住]

Android - AWS s3 谷歌登录

swift - 不使用 AWSLexVoiceButton 向 Lex 发送音频(适用于 iOS 的 AWS sdk)

amazon-web-services - 有没有办法导出和导入 Amazon Connect - 联系流

objective-c - 锁屏中断 NSURLConnection

ios - Swift 中同一 UIView 的多个动画

java - 使用 AWS S3 KMS 加密时如何确保您的文件已加密?

java - AWS Lambda Java 到 S3 - com.amazonaws.services.s3.AmazonS3ClientBuilder 上的 java.lang.ClassNotFoundException