0

我创建了一个 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 提供商的灵活性。

4

1 回答 1

0

我不确定究竟是什么阻止了您在 lambda 函数中获取用户电话号码。您始终可以从 lambda 函数中的输入事件中的“userId”字段获取发件人电话号码。您可以参考文档以获取更多信息。

于 2017-08-16T04:55:59.627 回答