gpt4 book ai didi

java - 无法从 Twilio 请求中提取正文

转载 作者:行者123 更新时间:2023-12-02 10:19:30 26 4
gpt4 key购买 nike

当我向我的 Twilio 号码发送特定消息时,我想根据该消息的内容采取操作。问题是,request.body() 返回整个请求,而不仅仅是正文。

我已按照 Twilio 指南在此处创建 Webhook: https://www.twilio.com/docs/sms/tutorials/how-to-receive-and-reply-java并对其进行修改以查看请求正文是什么,将其与我正在寻找的内容进行比较,然后根据需要进行响应。

问题如上所述,当我查看 req.body() 时,我得到的不仅仅是正文。

public static void main(String[] args) {

int portNumber = 80;

if(args.length > 0){
portNumber = Integer.parseInt(args[0]);
}

port(portNumber);

get("/", (req, res) -> "Hello Web");

post("/sms", (req, res) -> {
res.type("application/xml");
System.out.println(req.body());

String messageToSpend = req.body();

if (req.body().equals("hello")){
System.out.println("You said hello");
}

Body body = new Body
.Builder(messageToSend)
.build();
Message sms = new Message
.Builder()
.body(body)
.build();
MessagingResponse twiml = new MessagingResponse
.Builder()
.message(sms)
.build();
return twiml.toXml();
});
}

所以,Spark 启动正常,然后我在 Twilio 中相应地设置 URL,然后发送消息。消息已收到,但 System.out.println(req.body()); 返回以下内容:

ToCountry=GB&ToState=&SmsMessageSid=SMc52bea78ca1df688d3d20cxxxxxxxxxx&NumMedia=0&ToCity=&FromZip=&SmsSid=SMc52bea78ca1df688d3d20cxxxxxxxxxx&FromState=&SmsStatus=received&FromCity=&Body=Hello&FromCountry=GB&To=%2B44xxxxxxxxxx&ToZip=&NumSegments=1&MessageSid=SMc52bea78ca1df688d3d20cxxxxxxxxxx&AccountSid=AC4394b4cfb2bdcefb90c592xxxxxxxxxx&From=%2B44xxxxxxxxxx&ApiVersion=2010-04-01

而我本以为(在这种情况下)Hello

我很困惑,因为我在那里看到 Hello 以及相应的 Body 标记,但它并没有解析它。

最佳答案

spark 似乎将 post 表单数据解析为 queryParams(这很奇怪,因为名称暗示着 GET)。所以

  1. 不要调用 req.body() 以避免提前消耗。
  2. 改为调用 req.queryParams("Body")。

    public static void main(String[] args) {

    int portNumber = 80;

    if(args.length > 0){
    portNumber = Integer.parseInt(args[0]);
    }

    port(portNumber);

    get("/", (req, res) -> "Hello Web");

    post("/sms", (req, res) -> {
    res.type("application/xml");
    // Remove this: System.out.println(req.body());

    String messageToSpend = req.queryParams("Body");

    if ("hello".equals(messageToSpend)){
    System.out.println("You said hello");
    }

    Body body = new Body
    .Builder(messageToSend)
    .build();
    Message sms = new Message
    .Builder()
    .body(body)
    .build();
    MessagingResponse twiml = new MessagingResponse
    .Builder()
    .message(sms)
    .build();
    return twiml.toXml();
    });
    }

关于java - 无法从 Twilio 请求中提取正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54444937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com