【问题标题】:Detect whether bot is using voice: RequestAttribute is null检测机器人是否在使用语音:RequestAttribute 为空
【发布时间】:2020-12-10 09:15:03
【问题描述】:

根据这个question,可以检查lexEventrequestAttributes属性,判断传入的请求是否支持语音。

但是,在我的 C# Lambda 中,该属性为空:

public LexResponse FunctionHandler(LexEvent lexEvent, ILambdaContext context)
{
    LambdaLogger.Log($"Request Populated: {lexEvent.RequestAttributes != null}");

记录:

2020-08-20 18:03:04: START RequestId: f363e694-77e4-40fe-b607-ddaf51b6852f Version: $LATEST
2020-08-20 18:03:04: Request Populated: False

在 C# 开发人员工具包的上下文中,我如何确定我的 lambda 正在处理的请求是语音还是文本?

【问题讨论】:

    标签: c# aws-lambda amazon-lex


    【解决方案1】:

    Lambda Input Event 包括outputDialogMode

    "outputDialogMode": "Text or Voice, based on ContentType request header in runtime API request",
    

    AWS 文档进一步说明:

    outputDialogMode – 对于每个用户输入,客户端使用运行时 API 操作 PostContent 或 PostText 之一将请求发送到 Amazon Lex。 Amazon Lex 使用请求参数来确定对客户端的响应是文本还是语音,并相应地设置此字段。

    Lambda 函数可以使用此信息生成适当的消息。例如,如果客户端需要语音响应,您的 Lambda 函数可能会返回语音合成标记语言 (SSML) 而不是文本。

    因此,您的 Lambda 函数应该能够将 lexEvent.outputDialogMode 检查为“语音”或“文本”,然后您可以根据此做出适当的响应。

    【讨论】:

    • 由于某种原因,这似乎不是由 AWS Connect 在调用 Lex 时设置的......有什么想法吗?
    • @Michał 您可以在调用 Lex 时使用会话属性(Connect 中的“联系人属性”)自行设置并传递您自己的语音/文本属性,然后在 Lambda 中检测它。在我们有了这个新的 outputDialogMode 之前,这就是我必须做的。
    猜你喜欢
    • 2021-07-17
    • 2021-08-18
    • 2021-12-13
    • 2021-05-27
    • 1970-01-01
    • 2020-09-09
    • 2021-05-01
    • 2021-03-07
    • 1970-01-01
    相关资源
    最近更新 更多