Я пытаюсь подтвердить новый номер телефона для отправки SMS с помощью службы SMS под названием Twilio. Они предоставили некоторые пакеты интеграции API для JAVA разработчиков и команды curl для проверки нового телефонного номера для отправки сообщений.
Моя проблема заключается в том, что я запрашиваю OTP подтверждения с помощью:
String command ="curl -X POST https://verify.twilio.com/v2/Services/" + SERVICE_SID + "/Verifications --data-urlencode To=+" + phone +
" --data-urlencode Channel=sms -u " + ACCOUNT_SID + ":" + AUTH_TOKEN;
Process process = Runtime.getRuntime().exec(command);
process.getInputStream();
Он отправляет OTP на требуемый телефон. Но когда я отправляю OTP, используя:
String command ="curl -X POST https://verify.twilio.com/v2/Services/" + SERVICE_SID + "/Verifications --data-urlencode To=+" + phone +
" --data-urlencode Code="+ otp +" -u " + ACCOUNT_SID + ":" + AUTH_TOKEN;
Process process = Runtime.getRuntime().exec(command);
process.getInputStream();
Это дает почтальону 200 OK, указывая, что запрос был успешно выполнен. Но когда я пытаюсь отправить сообщения на этот телефон, появляется сообщение об ошибке, подтверждающее, что номер телефона не подтвержден. И если я проверю проверенные телефонные номера в консоли Twilio, то номер там тоже не виден.
Вот проверка. java (Класс обслуживания) моего приложения с пружинной загрузкой.
package com.cctv.sms.service;
import com.cctv.sms.SmsApplication;
import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Message;
import com.twilio.type.PhoneNumber;
import com.twilio.rest.verify.v2.service.Verification;
import com.twilio.rest.verify.v2.Service;
import com.twilio.rest.verify.v2.service.VerificationCheck;
import org.springframework.stereotype.Repository;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.logging.Logger;
@org.springframework.stereotype.Service
public class VerifyPhone implements VerificationService{
String ACCOUNT_SID;// Account Security Identifier - sms service
String AUTH_TOKEN;// Auth Token - sms service
String SERVICE_SID;// verification service - Security identifier
String servicePhone;// phone number act as the sender for the sms notifications
private static Logger LOGGER = Logger.getLogger("InfoLogging");
public String requestVerification(long phone) throws IOException {
Properties props = new Properties();
InputStream inputStream = SmsApplication.class.getClassLoader().getResourceAsStream("application.properties");
props.load(inputStream);
ACCOUNT_SID = props.getProperty("not.sid");
AUTH_TOKEN = props.getProperty("not.auth");
SERVICE_SID = props.getProperty("not.ser_sid");
servicePhone = props.getProperty("not.servicePhone");
String command ="curl -X POST https://verify.twilio.com/v2/Services/" + SERVICE_SID + "/Verifications --data-urlencode To=+" + phone +
" --data-urlencode Channel=sms -u " + ACCOUNT_SID + ":" + AUTH_TOKEN;
Process process = Runtime.getRuntime().exec(command);
process.getInputStream();
return null ;
}
@Override
public String verify(long phone, int otp) throws IOException {
String command ="curl -X POST https://verify.twilio.com/v2/Services/" + SERVICE_SID + "/Verifications --data-urlencode To=+" + phone +
" --data-urlencode Code="+ otp +" -u " + ACCOUNT_SID + ":" + AUTH_TOKEN;
Process process = Runtime.getRuntime().exec(command);
process.getInputStream();
return null;
}
}
Вот ответ, который я получаю в почтальоне.
{
"timestamp": "2020-04-21T17:16:55.855+0000",
"status": 500,
"error": "Internal Server Error",
"message": "The number is unverified. Trial accounts cannot send messages to unverified numbers; verify at twilio.com/user/account/phone-numbers/verified, or purchase a Twilio number to send messages to unverified numbers.",
"path": "/api/v1/notifications"
}