【问题标题】:AWS Lex Fulfillment with Lambda does not work in android when I configure Lex with AWS Mobile Hub, How to fix?当我使用 AWS Mobile Hub 配置 Lex 时,AWS Lex Fulfillment with Lambda 在 android 中不起作用,如何解决?
【发布时间】:2017-07-26 08:13:13
【问题描述】:

您好,我是 AWS 的新手,我正在使用 AWS Lex 机器人,我的问题是我通过 lambda 函数为 Lex 机器人配置了 Fulfillment,它成功地在 Lex 测试机器人上运行,但是当我在 AWS 移动集线器上配置 lex 时并下载 android 源代码并在 android 设备上运行,然后所有 lex 意图都可以工作,但实现 lambda 函数没有任何响应。

我该如何解决 谢谢

【问题讨论】:

  • Mashood,我们需要更多信息来确定您的问题。您是否首先尝试了一个简单的案例(不使用 Lambda 实现)以确保 Lex 按钮按您预期的方式工作并正确响应?一旦你完成了它并且它正在工作,如果你仍然有问题,你可以发布你的 Lex 机器人设置和你的 Lambda 函数吗?问候,凯文
  • @KevinR 我在没有 lambda 实现的情况下测试了机器人,但不适用于 lex 按钮,因为我的机器人不需要任何按钮
  • 那么当您不使用 Lambda 实现时它可以工作?
  • 是的@KevinR 它在 Lex 测试机器人中与 lambda 实现一起工作正常,但是当我将它与 AWS Mobile hub 连接并在 android 设备上运行时,Lambda 实现不起作用
  • 当你说你正在将它与 Mobile Hub 连接时你在做什么?您是否按照 Hub 步骤将其与您的应用集成?

标签: amazon-web-services aws-lambda aws-mobilehub


【解决方案1】:

Lambda 实现的返回流程略有不同,因为 Lambda 函数负责在所有槽都满足后实现,而不是将其传递回客户端进行实现。如果您希望看到消息返回,您可以将 ConversationalBotTextFragment.java (mysampleapp/demo/bots/ConversationalBotTextFragment) 中的 promptUserToRespond 更改为以下内容:

    public void promptUserToRespond(Response response,
                                    LexServiceContinuation continuation) {

        if(!DialogState.ReadyForFulfillment.toString().equals(response.getDialogState())
                && !DialogState.Fulfilled.toString().equals(response.getDialogState())) {
            addMessage(new TextMessage(response.getTextResponse(), "rx", getCurrentTimeStamp()));

            readUserText(continuation);
        }
        else if(DialogState.Fulfilled.toString().equals(response.getDialogState())) {
            addMessage(new TextMessage(response.getTextResponse(), "rx", getCurrentTimeStamp()));

            inConversation = false;
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多