问题标签 [amazon-lex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Amazon Lex 机器人仅适用于使用 AWS Mobile Hub 制作的示例应用程序中的 Speech to Speech 演示
我在 AWS Mobile Hub 中创建了一个项目,并尝试将 Lex 对话机器人部署到应用程序中。我正在使用安卓工作室。我遇到了其中一个机器人的问题。这个机器人是一个简单的常见问题聊天机器人,它使用 Lambda 代码钩子实现来发布用户问题的答案。
该机器人在 Lex 控制台和 Slack 频道中都能完美运行。但是在示例应用程序中,它仅适用于语音到语音演示。当我尝试文本到文本演示时,机器人从不响应用户输入,并且应用程序经常崩溃。
我下载并测试了几个集成了不同机器人的示例应用程序。所有没有 lambda 代码挂钩的机器人都可以在文本和语音演示中完美运行。然而,具有 lambda 代码挂钩的机器人仅在语音演示中工作。
编辑:我再次尝试并发现带有 lambda 代码挂钩的机器人确实会响应,但前提是响应委托给 Lex 并且来自控制台中设置的配置,或者响应来自 Lambda 输入验证代码挂钩。当预期响应来自 Lambda实现代码挂钩(使用 PostContent 运行时 API 操作)时,它不会响应。
我想也许我写错了我的 Lambda 函数,所以我还使用示例 OrderFlowers 机器人及其示例代码挂钩进行了测试,并得到了相同的结果。
请注意,Lambda 函数不会引发调用错误,所有调用都已成功处理,但未出现响应。
关于如何成功获得文本履行响应的任何想法?
amazon-web-services - Amazon Lex 从 Twilio 获取 java lambda 函数处理程序中的传入 SMS 号码?
我创建了一个 lex 短信聊天机器人并将其发布到 Twilio SMS 频道。在我的 java lambda 实现 handleRequest 函数中,我收到 2 个参数:一个 Input 对象和一个 Context。输入具有某种类型的系统生成的用户 ID,但我需要来自 Twilio 的传入短信的电话号码。
我已按照以下说明将 Twilio 配置为通过 webhook 调用 Lex:
http://docs.aws.amazon.com/lex/latest/dg/twilio-bot-association.html#twilio-bot-assoc-create-assoc
我正在使用系统在 Lex 和 Twilio 之间创建的 webhook 回调 url,并且如果可能的话,我希望避免在网关 API 和 lambda 之间编写我自己的 Lex-Twilio。
我想我在 Twilio 中缺少一个配置来将它发送给 Lex 可能吗?我没有设置任何 TwilML 应用程序或任何东西,只是将 SMS 号码链接到我的 lex 的 webhook 回调 url。除了获取传入的短信号码外,一切正常。
更新:
我用我的 java lambda 函数中的输入对象和上下文用尽了所有可能性。我想没有办法从 Java 中的 twilio 获取有效负载。我尝试切换到输入流处理程序,但仍然只有此处文档中定义的输入格式:http: //docs.aws.amazon.com/lex/latest/dg/lambda-input-response-format.html
我有咬紧牙关,构建我自己的网关 API 和节点处理程序。它只是位于 lex 之前的一层,将 twilio 转换为 lex 输入格式,反之亦然。它使用传入的电话号码更新 userId。
本教程在执行此操作时非常有用:
https ://aws.amazon.com/blogs/ai/integrate-your-amazon-lex-bot-with-any-messaging-service/
仅仅为了获得一个额外的字段就需要做很多工作,但它确实为我提供了在未来更轻松地切换 SMS 提供商的灵活性。
python - Python AWS Lambda字符串参数构造函数/工厂方法从字符串值问题反序列化
我正在 Python 中的 AWS Lambda 中开发一个 Amazon Lex 聊天机器人,它将进行 API 发布调用并获得 JSON 字符串中的响应,如下所示
但我只对 id 值感兴趣,所以我将 json 转换为字典,如下所示并获取 id 值
如果我在 Lambda 控制台中测试代码,我会得到输出
但我在我的聊天机器人中得到如下输出
我的源代码如下:
请帮助我提前解决这个问题:)
react-native - 反应原生插件以集成 amazon polly 或 lex
我正在尝试将亚马逊 lex 集成到本机应用程序中,文本 api 工作正常,但我无法将音频流式传输到 lex 流式 api。
我尝试了 react-native-audio-toolkit 和 react-native-fetch-blob 插件,但没有成功,感谢任何帮助或建议。
谢谢,
amazon-web-services - Amazon Lex 重复 lambda 函数错误
我一直在尝试为我正在制作的 Lex 聊天机器人制作一个 lambda 函数,但是每当我的意图调用该函数时,它总是给我同样的错误,我已经厌倦了。我正在使用 node.js。它给我的错误信息是:
无论我输入哪种 lambda 函数,都会发生这种情况。有什么答案吗?
nlp - 当需要更具体的输入时,将抽象或未定义的引用映射到实体
我们有一个应用程序,我们将在其中收集用户的地址。在当前的实现中,我们使用实时代理来执行此操作。一些用户在提示输入最终帐单地址时会说“只需使用我的帐单地址”或“与我的当前地址相同”之类的话。新的实现将是一个聊天机器人,可以在其中一些请求到达代理之前尝试并满足它们。
我们确实可以通过 API 查找获得这些信息,我从设计的角度询问更多如何让我们的处理程序应用程序(通常是 AWS lambda)知道我们需要在提示确认履行之前进行查找。
我想到了几点:
- 训练 NLP 将字符串“当前地址”和“账单地址”检测为地址实体
- 为此类话语创建新意图并分别处理它们
- 在当前意图中为此类话语创建一个新实体类型(例如,不是 postalAddress),并将它们作为同一履行的一部分进行处理
- 只需重新提示用户,或要求他们说明他们的地址是什么
我只是在这里寻找最务实的方法,因为这个问题与我们解决的大多数其他问题不同。
amazon-web-services - 如何使用 ElicitIntent?
想象一下,你有一个有 2 个意图的机器人,每个意图都有自己的 lambda 函数。
如果用户说“你好”,我想ElicitIntent
从机器人那里找出他们想要的东西。这在代码中的什么位置?哪个 lambda 函数?我似乎找不到将 lambda 函数附加到整个机器人的地方。
ios - AWSLexVoiceButton 提示和客户端履行响应
我正在使用 AWS 开发工具包将 AWSLexVoiceButton 添加到我的应用程序中。我已在我设置的 Intent 中将其配置为客户端实现,因为我想让应用程序根据我的 Intent 的 AWS 控制台中的语音命令在屏幕上显示一些内容:
这一切都有效,当机器人识别我的意图时,我在下面的代码中得到一个回调:
两个问题:
当我点击 AWSLexVoiceButton 时,没有任何音频指示它正在收听,并且您甚至看不到您点击按钮的任何迹象,除非您发出足够大的声音以使其麦克风声音检测动画。我无法添加诸如“有什么可以帮助您的?”之类的语音提示。因为最初点击按钮时没有
AWSLexVoiceButtonDelegate
回调。Q:有没有什么办法可以在 Lex 众生听的时候添加语音提示?
同样,没有音频指示客户端正在实现意图。因为有回调,所以我可以添加自己的响应。但为此,我手动设置了一个
AVAudioPlayer
AWS Polly 并与它集成,以say
我编写的自定义方法将我的文本转换为语音。我的方法有效,但似乎它一定是错误的方法。问:是否有任何方法可以触发 Lex 作为客户端执行的结果来提供自定义音频响应?