当前位置: 首页 > 知识库问答 >
问题:

如何在Spring中从Twilio自动驾驶仪获取POST数据

贺靖
2023-03-14

我正在使用Twilio Autopilot的收集功能通过电话或短信收集用户输入。在收集任务结束时,我通过POST重定向到Spring Boot应用程序中的endpoint。我想让我的Spring Boot应用程序验证用户的输入,然后将预期的操作JSON返回给Twilio,让用户知道他们的数据已经成功记录和验证。以下是我的收集任务的外观:

{
    "actions": [
        {
            "say": "Hello!"
        },
        {
            "collect": {
                "name": "get_prices",
                "questions": [
                    {
                        "question": "       Please enter the current price for 100 low led using the dial pad. When you are finished, press pound.",
                        "voice_digits": {
                            "finish_on_key": "#"
                        },
                        "name": "price_100ll",
                        "type": "Twilio.NUMBER",
                        "validate": {
                            "on_failure": {
                                "messages": [
                                    {
                                        "say": "Sorry, I didn't quite get that."
                                    }
                                ],
                                "repeat_question": true
                            },
                            "on_success": {
                                "say": "Great, we have successfully recorded your 100 low led price."
                            }
                        }
                    }
                ],
                "on_complete": {
                    "redirect": {
                        "method": "POST",
                        "uri": "https://<ngrok url pointing at my Spring Boot app>/report"
                    }
                }
            }
        }
    ]
}

以下是Spring Boot中我的控制器中的POSTendpoint:

@PostMapping(value = "/report", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public ResponseEntity<Void> report(Object body) {
    return ResponseEntity.ok().build();
}

我相信我的POSTendpoint设置不正确。body始终是一个空对象。我有TwilioSDK作为依赖项,但我不确定使用哪些类从POST请求中获取包含用户输入数据的Memorybody。有Twilio留档可用于使用Twilio函数来使用它,但没有外部应用程序。有人对如何做到这一点有任何想法或建议吗?

共有1个答案

裴星洲
2023-03-14

我没有使用自动驾驶仪,但从我看到的情况来看,它会用“Memory”参数将答案发送到endpoint。

假设传入请求如下所示:

<代码>https://

您可以如下获取此请求,然后将其转换为模型或键值存储。


@PostMapping(value = "/report")
@CrossOrigin(origins = "*", allowedHeaders = "*")
public ResponseEntity<Void> report(@RequestParam(value = "Memory") String memory) {
    try {
        Map<String, Object> answer = new ObjectMapper()
                .readValue(memory, Map.class);
        return ResponseEntity.ok().build();
    } catch (Exception e) {
        return ResponseEntity.internalServerError().build();
    }
}

 类似资料:
  • 我正在使用带有可编程语音的Twilio自动驾驶仪作为输入通道,我想记录客户端与机器人的整个对话。 我在哪里以及如何做到这一点? 我正在使用重定向到Autopilot URL的twiML bin。

  • 聊天机器人:嘿,你介意回答几个问题吗? 顾客:如果是,继续提问/如果不是,向顾客致谢并停止对话。 我在Twilio Autopilot上使用了示例调查机器人,但它实际上没有“if/else”场景。如果Twilio没有它,那么还有其他适合于此的聊天机器人吗?

  • 我试图创建一个web表单,用户可以输入他们的电话号码,通过Twilio的自动驾驶仪启动短信对话。我在Webhooks教程和fetch-node教程之间忙得不可开交,可能需要一些帮助。 目标是: 从web窗体接受电话号码 传入Twilio函数 解析电话号码 重定向到Twilio自动驾驶启动SMS对话 我想不通的是: > 我创建了一个函数(代码如下),并将该webhook放入表单的UI中--这是正确的

  • 我是spring MVC和JUnit的新手。基本上,我想自动连接服务类,这个类应该在spring上下文中加载。 服务 应用程序-上下文 Junit类 在执行测试时,我将得到以下异常跟踪