为什么我的 Twilio 电话号码在收到状态代码:200 时也不会回复短信?

要注意:当你看到我展示代码的地方时,它只是意味着我试图不透露太多。postmapping-url-hereMyOwnDefinedEntity


所以我用来发送和接收短信。我已经在这个问题上卡了大约3天,我似乎不知道如何解决它。Twilio


我用作应用程序框架、生成工具和 IDE。我还使用创建一个隧道来运行。Spring BootGradleVSCodeNgroklocalhost:8080


当我将其作为:


public static void main(String[] args) {


}

它工作得很好,我的号码发回了一条短信作为回应。Twilio


但是,当我将其放在自己的函数中,调用该函数,并使用整个应用程序运行它时,我仍然会从它作为方法工作时获得相同的状态代码,但我的号码不会给我回短信。200mainTwilio


我已经尝试过使用,并且我已经尝试过同时测试它和.@PostMapping@GetMappingPOSTGET


在我从站点发送和接收代码中,我尝试使用 和 作为响应类型。Twilioapplication/xmlapplication/json


以下是我到目前为止的一些代码:


public static void TwilioRespondToSMS() {

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

        post("/<postmapping-url-here>", (req, res) -> {

            res.type("application/xml");

            Body body = new Body

                    .Builder("This is a response to your text message")

                    .build();

            Message sms = new Message

                    .Builder()

                    .body(body)

                    .build();

            MessagingResponse twiml = new MessagingResponse

                    .Builder()

                    .message(sms)

                    .build();

            return twiml.toXml();

        });            

    }

这是代码:main


@SpringBootApplication

public class ApplicationServerClass {


    public static void main(String[] args) {

        SpringApplication.run(ApplicationServerClass.class, args);

        //TwilioRespondToSMS();

    }


    // Whatever other code ...


}

我还尝试将我的函数放入:


@Bean

    public CommandLineRunner commandRunner() {

        return (args) -> {

            TwilioRespondToSMS();

            // Whatever other code ...

        }

    }


Twilio网站的例子将其显示为一个函数。在对整个应用程序运行该示例时,是否需要更改该示例?main


提前致谢。


MMTTMM
浏览 327回答 1
1回答

泛舟湖上清波郎朗

好吧,经过4天试图解决我的问题,我终于能够自己想出一个解决方案。我想也许这只是一个愚蠢的错误,直到现在我才注意到,但我觉得这个解决方案并不容易想出。所以我要分享一下我是怎么想到这个的。在将函数中的 URL 映射到自定义方法之前,我实际上获得了状态代码,因为它无法识别任何要映射到的请求 URL。post@PostMapping404POST我认为正确的解决方案是使用 定制的 ,但这只会导致我使用相同的端口:作为运行我的应用程序的端口。这就是为什么我没有收到来自我的Twilio号码的任何短信,即使我得到的状态代码为。@PostMappingJava Spark8080Spring Boot200因此,以下是我为解决问题所做的工作:首先,我删除了我的自定义函数@PostMapping@PostMapping("/<postmapping-url-here>")&nbsp; &nbsp; public ResponseEntity<MyOwnDefinedEntity> getMyOwnDefinedEntity(@PathVariable Long id) {&nbsp; &nbsp; &nbsp; &nbsp; log.debug("REST request to get MyOwnDefinedEntity : {}", id);&nbsp; &nbsp; &nbsp; &nbsp; Optional<MyOwnDefinedEntity> myOwnDefinedEntity = myOwnDefinedEntityRepository.findById(id);&nbsp; &nbsp; &nbsp; &nbsp; //if(myOwnDefinedEntity.isPresent())&nbsp; &nbsp; &nbsp; &nbsp; return new ResponseEntity<MyOwnDefinedEntity>(MyOwnDefinedEntity.get(), HttpStatus.OK);&nbsp; &nbsp; }我把我的功能保留在:@Bean&nbsp; &nbsp; public CommandLineRunner commandRunner() {&nbsp; &nbsp; &nbsp; &nbsp; return (args) -> {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TwilioRespondToSMS();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Whatever other code ...&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }最后,在我的里面,我添加了:,或任何其他不是的端口号。TwilioRespondToSMS()port(8070);8080在本例中,现在通过隧道 URL 使用,并且正在使用 。在这一点上,我终于能够在同时运行的同时成功地从我的号码中取回回复短信。Java Spark8070NgrokSpring Boot8080TwilioSpring Boot
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java