如何在不发送自动回复的情况下阅读传入的短信

How to read incoming sms messages without sending an auto-response

我想阅读来自 Twilio 的传入消息。我已经按照他们网站上的建议使用 ngrok 设置了隧道。

我可以使用以下方式发送消息

SendMessage.java

Twilio.init(SendAndReceiveController.ACCOUNT_SID, SendAndReceiveController.AUTH_TOKEN);
    Message message = Message.creator(new PhoneNumber(receiver),
            new PhoneNumber(sender),smsContent).create();

我尝试了 4 种不同的方法来完成 receive/read。

ReceiveMessage.java

MessageFetcher mf = new MessageFetcher("SM2ccd0dc43cea07bcc3f522b3e571eb79");
    System.out.println("message is " + mf.fetch().getBody());   <-- Method 1

    Body body = new Body("Something here");                     <-- Method 2
    Message message = new Message.Builder().action("/receive-sms")
            .method(Method.POST).body(body).build();
    MessagingResponse response = new MessagingResponse.Builder().message(message).build();

    ResourceSet<Message> messages = Message.reader().read();    <-- Method 3

    for(Message message : messages){
        System.out.println(message);
    }

    try {
        System.out.println(response.toXml());
    } catch (TwiMLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    post("/receive-sms", (req, res)-> {                         <-- Method 4
        // This gets the message content
        System.out.println(req.queryParams("Body"));            
        // GOT CONTENT
        // Must parse the format and get the content value
        // Must be able to get the latest message

        Message sms = new Message.Builder()
                .body(new Body(""))
                .build();

        MessagingResponse twiml = new MessagingResponse.Builder()
                .message(sms)
                .build();

        return twiml.toXml();
    });

我目前正在使用方法 4。虽然它有效,但我不得不发回消息,因为它是 post [这是使用 sparkjava 库]。我和 Twilio 的技术帮助来回发邮件,他们一直向我推荐使用 Twilio 的 REST 中的回调函数 api。我相信我使用的post方法是一个回调函数。

有什么方法可以让我在不发送回复的情况下阅读用户的最新消息吗?如果是这样,您能否用代码解释一下如何做到这一点?我很难理解如何将其翻译成 Java,因为他们网站上的大部分代码似乎都在 HTML.

感谢任何帮助。

这里是 Twilio 开发人员布道者。

您使用方法 4 是正确的。您正在接收作为对 /receive-sms 端点的 POST 请求的传入消息。

但是,你不想回复!谢天谢地,这很好也很容易。您可以将其留空,而不是用 Message 构建 MessagingResponse

post("/receive-sms", (req, res)-> {                         <-- Method 4
    // This gets the message content
    System.out.println(req.queryParams("Body"));            
    // GOT CONTENT
    // Must parse the format and get the content value
    // Must be able to get the latest message

    // do something with the content

    MessagingResponse twiml = new MessagingResponse.Builder().build();
    return twiml.toXml();
});

这将生成以下 TwiML 作为结果:

<Response />

并且不会发送回复消息。

如果有帮助请告诉我。