“我正在实现一个注册机制,在我的字段中有一个电话号码的属性。如何使用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>我希望系统能够获取电话号码,并将其设置为phoneNumber。然而,我有这样的错误:
从小到小发生错误。需要一个“到”电话号码。
发布于 2019-07-04 07:35:31
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;
}https://stackoverflow.com/questions/56882476
复制相似问题