gpt4 book ai didi

java - 如何设置 Twilio TophoneNumber 在 Spring Boot 中获取此号码作为用户输入

转载 作者:行者123 更新时间:2023-11-30 01:48:39 25 4
gpt4 key购买 nike

“我正在实现一种注册机制,其中我的字段中有一个电话号码属性。如何向用户在使用 Twilio 注册期间输入的电话号码发送消息?”

这用于在成功创建帐户后向用户发送 Twilio SMS 通知。下面是我的代码的实现方式。

private static final String ACCOUNT_SID = "ACd176f3083e1333d14939fe6f27d90a99";
private static final String AUTH_ID = "4e3327cb4efbe3ecd8e893d809533763";

public void sendSMS() {
try {
User user = new User();
Twilio.init(ACCOUNT_SID, AUTH_ID);

Message.creator(new PhoneNumber(user.getPhoneNumber()), new PhoneNumber("+12029151841"),
"Your account has been created succesfuly.").create();

}
catch (TwilioException e) {
System.out.println("An error occured from twillio."+e.getMessage());
}
}

@PostMapping(value="/registerUser")
public ModelAndView registerUser(@Valid User user, BindingResult bindingResult, ModelAndView modelAndView){

//skipped other is statements for checking possible errors.
else{
//set a user to disabled by default before activation thru email.
user.setEnabled(false);

//save a user in the database.
userService.save(user);

//generating the confirmation token

ConfirmationToken confirmationToken = new ConfirmationToken(user);
confirmationTokenRepository.save(confirmationToken);

//sending the email message

SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setTo(user.getEmail());
simpleMailMessage.setSubject("Complete your registrations");
simpleMailMessage.setFrom("devkibuchi2018@gmail.com");
simpleMailMessage.setText("To activate your account, please click here : "
+"http://localhost:8080/activate- account?token="+confirmationToken.getConfirmationToken());

emailSenderService.sendEmail(simpleMailMessage);
modelAndView.addObject("Email ", user.getEmail());

//send also an sms message using Twilio.
sendSMS();

modelAndView.setViewName("successfulRegistration");

}

return modelAndView;
}

用户输入电话号码的 Thymeleaf 段。

<form action="#" th:action="@{/registerUser}" th:object="${user}"  method="post" >
<div class="form-group">
<label th:for="phoneNumber">Phone Number: </label>
<input class="form-control" th:field="*{phoneNumber}" />
<br>
<label th:for="phoneNumber" th:if="${#fields.hasErrors('email')}" th:errors="*{phoneNumber}" required="required"
class="btn btn-danger">
</label>

</div>
</form>

我期望系统获取电话号码并将其设置为 Twilio TophoneNumber。但是,我遇到了这个错误:

twillio 发生错误。需要“收件人”电话号码。

最佳答案

User user = new User();
Twilio.init(ACCOUNT_SID, AUTH_ID);

Message.creator(new PhoneNumber(user.getPhoneNumber())

用户对象的phoneNumber为空,因为您从未在代码中的任何位置设置它。所以你在这里得到空指针异常 user.getPhoneNumber()

如果你这样写:

User user = new User();
user.setPhoneNumber("+12541254122");
Twilio.init(ACCOUNT_SID, AUTH_ID);

Message.creator(new PhoneNumber(user.getPhoneNumber()), new PhoneNumber("+12029151841"),
"Your account has been created succesfuly.").create();

那么它应该可以正常工作而不会出现空指针异常

<小时/>

下面的代码可以工作。

public void sendSMS(User user) {
try {

Twilio.init(ACCOUNT_SID, AUTH_ID);

Message.creator(new PhoneNumber(user.getPhoneNumber()), new PhoneNumber("+12029151841"),
"Your account has been created succesfuly.").create();

}
catch (TwilioException e) {
System.out.println("An error occured from twillio."+e.getMessage());
}
}

@PostMapping(value="/registerUser")
public ModelAndView registerUser(@Valid User user, BindingResult bindingResult, ModelAndView modelAndView){

//skipped other is statements for checking possible errors.
else{
//set a user to disabled by default before activation thru email.
user.setEnabled(false);

//save a user in the database.
userService.save(user);

//generating the confirmation token

ConfirmationToken confirmationToken = new ConfirmationToken(user);
confirmationTokenRepository.save(confirmationToken);

//sending the email message

SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setTo(user.getEmail());
simpleMailMessage.setSubject("Complete your registrations");
simpleMailMessage.setFrom("devkibuchi2018@gmail.com");
simpleMailMessage.setText("To activate your account, please click here : "
+"http://localhost:8080/activate- account?token="+confirmationToken.getConfirmationToken());

emailSenderService.sendEmail(simpleMailMessage);
modelAndView.addObject("Email ", user.getEmail());

//send also an sms message using Twilio.
sendSMS(user);

modelAndView.setViewName("successfulRegistration");

}

return modelAndView;
}

关于java - 如何设置 Twilio TophoneNumber 在 Spring Boot 中获取此号码作为用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56882476/

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