为什么我的 Twilio phone 号码即使收到状态码 200 也不会回复短信?
Is there a reason why my Twilio phone number won't respond to text messages even when getting the status code: 200?
TO NOTE: When you see postmapping-url-here
and MyOwnDefinedEntity
down where I show the code, it just means I'm trying not to reveal too much.
所以我正在使用 Twilio
发送和接收短信。我已经被这个问题困扰了大约 3 天了,我似乎无法弄清楚如何解决它。
我使用 Spring Boot
作为应用程序框架,Gradle
作为构建工具,VSCode
作为 IDE。我也在使用 Ngrok
为 localhost:8080
到 运行 创建隧道。
当我运行它作为:
public static void main(String[] args) {
}
它运行完美,我的 Twilio
号码发回了一条短信作为回应。
然而,当我把它放在它自己的函数中,调用那个函数,并用整个应用程序 运行 它时,我仍然得到与它工作时相同的 200
状态代码作为 main
方法,但我的 Twilio
号码没有给我回短信。
我已经尝试使用 @PostMapping
和 @GetMapping
,因为我已经尝试对 POST
和 GET
进行测试。
在我从 Twilio
站点发送和接收代码时,我尝试使用 application/xml
和 application/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 ...
}
}
这里是 @PostMapping
函数:
@CrossOrigin(origins = "http://localhost:4200")
@PostMapping("/<postmapping-url-here>")
public ResponseEntity<MyOwnDefinedEntity> getMyOwnDefinedEntity(@PathVariable Long id) {
log.debug("REST request to get MyOwnDefinedEntity : {}", id);
Optional<MyOwnDefinedEntity> myOwnDefinedEntity = myOwnDefinedEntityRepository.findById(id);
//if(myOwnDefinedEntity.isPresent())
return new ResponseEntity<MyOwnDefinedEntity>(MyOwnDefinedEntity.get(), HttpStatus.OK);
}
Twilio 站点的示例将其显示为 main
函数。 运行在整个应用程序中使用该示例时,我需要更改什么吗?
提前致谢。
好的,在尝试解决我的问题 4 天之后,我终于能够自己想出一个解决方案。
我想这可能只是一个愚蠢的错误,直到现在我才注意到,但我觉得这个解决方案不是很容易想出。所以我要分享我是如何想到这个的。
在将我的 post
函数中的 URL 映射到自定义 @PostMapping
方法之前,我实际上得到了 404
的状态代码,因为它无法识别任何POST
请求 URL 映射到。
我认为正确的解决方案是使用定制的 @PostMapping
,但这只会导致我的 Java Spark
使用相同的端口:8080
作为我的端口 Spring Boot
应用程序 运行 开启。这就是为什么我没有收到来自我的 Twilio 号码的任何短信,即使我收到了 200
的状态代码。
下面是我解决问题的方法:
First, I removed my custom @PostMapping
function
@PostMapping("/<postmapping-url-here>")
public ResponseEntity<MyOwnDefinedEntity> getMyOwnDefinedEntity(@PathVariable Long id) {
log.debug("REST request to get MyOwnDefinedEntity : {}", id);
Optional<MyOwnDefinedEntity> myOwnDefinedEntity = myOwnDefinedEntityRepository.findById(id);
//if(myOwnDefinedEntity.isPresent())
return new ResponseEntity<MyOwnDefinedEntity>(MyOwnDefinedEntity.get(), HttpStatus.OK);
}
I kept my function inside of:
@Bean
public CommandLineRunner commandRunner() {
return (args) -> {
TwilioRespondToSMS();
// Whatever other code ...
}
}
最后,在我的 TwilioRespondToSMS()
中,我添加了:port(8070);
,或任何其他不是 8080
.
的端口号
在这种情况下,Java Spark
现在通过 Ngrok
隧道 URL 使用 8070
,Spring Boot
使用 8080
。至此,我终于成功地能够同时从我的 Twilio
号码收到回复短信 运行 Spring Boot
。
TO NOTE: When you see
postmapping-url-here
andMyOwnDefinedEntity
down where I show the code, it just means I'm trying not to reveal too much.
所以我正在使用 Twilio
发送和接收短信。我已经被这个问题困扰了大约 3 天了,我似乎无法弄清楚如何解决它。
我使用 Spring Boot
作为应用程序框架,Gradle
作为构建工具,VSCode
作为 IDE。我也在使用 Ngrok
为 localhost:8080
到 运行 创建隧道。
当我运行它作为:
public static void main(String[] args) {
}
它运行完美,我的 Twilio
号码发回了一条短信作为回应。
然而,当我把它放在它自己的函数中,调用那个函数,并用整个应用程序 运行 它时,我仍然得到与它工作时相同的 200
状态代码作为 main
方法,但我的 Twilio
号码没有给我回短信。
我已经尝试使用 @PostMapping
和 @GetMapping
,因为我已经尝试对 POST
和 GET
进行测试。
在我从 Twilio
站点发送和接收代码时,我尝试使用 application/xml
和 application/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 ...
}
}
这里是 @PostMapping
函数:
@CrossOrigin(origins = "http://localhost:4200")
@PostMapping("/<postmapping-url-here>")
public ResponseEntity<MyOwnDefinedEntity> getMyOwnDefinedEntity(@PathVariable Long id) {
log.debug("REST request to get MyOwnDefinedEntity : {}", id);
Optional<MyOwnDefinedEntity> myOwnDefinedEntity = myOwnDefinedEntityRepository.findById(id);
//if(myOwnDefinedEntity.isPresent())
return new ResponseEntity<MyOwnDefinedEntity>(MyOwnDefinedEntity.get(), HttpStatus.OK);
}
Twilio 站点的示例将其显示为 main
函数。 运行在整个应用程序中使用该示例时,我需要更改什么吗?
提前致谢。
好的,在尝试解决我的问题 4 天之后,我终于能够自己想出一个解决方案。
我想这可能只是一个愚蠢的错误,直到现在我才注意到,但我觉得这个解决方案不是很容易想出。所以我要分享我是如何想到这个的。
在将我的 post
函数中的 URL 映射到自定义 @PostMapping
方法之前,我实际上得到了 404
的状态代码,因为它无法识别任何POST
请求 URL 映射到。
我认为正确的解决方案是使用定制的 @PostMapping
,但这只会导致我的 Java Spark
使用相同的端口:8080
作为我的端口 Spring Boot
应用程序 运行 开启。这就是为什么我没有收到来自我的 Twilio 号码的任何短信,即使我收到了 200
的状态代码。
下面是我解决问题的方法:
First, I removed my custom
@PostMapping
function
@PostMapping("/<postmapping-url-here>")
public ResponseEntity<MyOwnDefinedEntity> getMyOwnDefinedEntity(@PathVariable Long id) {
log.debug("REST request to get MyOwnDefinedEntity : {}", id);
Optional<MyOwnDefinedEntity> myOwnDefinedEntity = myOwnDefinedEntityRepository.findById(id);
//if(myOwnDefinedEntity.isPresent())
return new ResponseEntity<MyOwnDefinedEntity>(MyOwnDefinedEntity.get(), HttpStatus.OK);
}
I kept my function inside of:
@Bean
public CommandLineRunner commandRunner() {
return (args) -> {
TwilioRespondToSMS();
// Whatever other code ...
}
}
最后,在我的 TwilioRespondToSMS()
中,我添加了:port(8070);
,或任何其他不是 8080
.
在这种情况下,Java Spark
现在通过 Ngrok
隧道 URL 使用 8070
,Spring Boot
使用 8080
。至此,我终于成功地能够同时从我的 Twilio
号码收到回复短信 运行 Spring Boot
。