Как настроить Twilio To phoneNumber для получения этого номера в качестве пользовательского ввода в Spring Boot - PullRequest
1 голос
/ 04 июля 2019

«Я внедряю механизм регистрации, в котором у меня есть атрибут номера телефона в моих полях. Как мне отправить сообщение на этот номер телефона, введенное пользователем во время регистрации с использованием Twilio?»

Это для отправки SMS-уведомлений Twilio пользователю, когда учетная запись была успешно создана. Ниже приведен фрагмент реализации моего кода.

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 To phoneNumber. Тем не менее, я имею эту ошибку:

В twillio произошла ошибка. Требуется номер телефона «Кому».

1 Ответ

2 голосов
/ 04 июля 2019
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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...