У меня есть аккаунт с Twilio, и я использовал его для программной отправки текстовых сообщений через скрипт PHP. Теперь я хочу эту функциональность в службе, которую я пишу. Моя проблема заключается в отсутствии хороших примеров того, как реализовать функциональность на Java. Кажется, что есть только один пример того, что я хочу сделать, но я продолжаю получать ошибки в eclipse (neon), говоря, что в конструкторе для PhoneNumber (String) есть ошибка. Сначала я покажу вам свой код, а затем объясню.Обманутый Twilio API для отправки простого текстового сообщения
У меня есть два класса, один для хранения учетных данных пользователя и один класс для хранения данных получателя сообщения (имя и номер телефона) .... ps простить форматирование.
/**
* Class contains my credentials with Twilio.com
* and are read from a file located at /sms_textdata/twiliocredentials.txt
*/
public class SMSCredentials
{
private final String userID;
private final String accessCode;
private final String senderNumber;
public SMSCredentials(String userID, String accessCode, String senderNumber)
{
this.userID = userID;
this.accessCode = accessCode;
this.senderNumber = senderNumber;
}
public String getUserID()
{
return userID;
}
public String getAccessCode()
{
return accessCode;
}
public String getSenderNumber()
{
return senderNumber;
}
}
/**
* A class that models a recipient of a text message
* Recipient list is located at /sms_textdata/smsrecipients.txt
*/
public class MessageRecipient
{
//first name
private String name;
//phone number
private String phoneNumber;
public MessageRecipient(String name, String phoneNumber)
{
this.name = name;
this.phoneNumber = phoneNumber;
}
public String getName()
{
return name;
}
public String getNumber()
{
return phoneNumber;
}
}
В третьем классе у меня есть два вышеуказанных класса. Я планирую читать данные учетных данных и данные получателей из двух текстовых файлов.
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Message;
import com.twilio.rest.lookups.v1.PhoneNumber;
/**
* This class is responsible for sending SMS text messages
* to a list of recipients.
*/
public class SMSAlert
{
private SMSCredentials credentials;
private ArrayList<MessageRecipient> recipients;
public SMSAlert()
{
this.getCredentials();
this.createRecipientList();
}
/**
* send a SMS text message to a list of recipients
*/
public void sendSMSTextMessage()
{
//send messages to a list of recipients
Twilio.init(credentials.getUserID(), credentials.getAccessCode());
for(MessageRecipient rec : recipients)
{
Message message = Message.creator(new PhoneNumber(rec.getNumber()),
new PhoneNumber(credentials.getSenderNumber()),
" Hey " + rec.getName() + " the garage door is open!")
.create();
//System.out.println(message.getSid());
}
}
/**
* create an object containing the credentials required from Twilio.com
*/
private void getCredentials()
{
String credentialsFile;
Scanner credentialIn = null;
String id = null;
String code = null;
String number = null;
try
{
credentialsFile = "~/Documents/twiliocredentials.txt";
credentialIn = new Scanner(new File(credentialsFile));
// as there are only two strings in this file, the loop will execute
//only once, and assign the values to a new object of type SMSCredentials.
while(credentialIn.hasNext())
{
id = credentialIn.next();
code = credentialIn.next();
number = credentialIn.next();
}
//create the credentials object from a file
credentials = new SMSCredentials(id, code, number);
}
catch(IOException e)
{
e.getStackTrace();
}
finally
{
credentialIn.close();
}
}
/**
* create a list of recipients from a file to send text messages to.
*/
private void createRecipientList()
{
recipients = new ArrayList<MessageRecipient>();
String userFile;
Scanner recipientsIn = null;
String name;
String number;
try
{
userFile = "~/Documents/smsrecipients.txt";
recipientsIn = new Scanner(new File(userFile));
//file format is name : number pair on one line of text
//one object is instantiated per line/user
while(recipientsIn.hasNext())
{
name = recipientsIn.next();
number = recipientsIn.next();
//instantiate and add a user to the list
recipients.add(new MessageRecipient(name, number));
}
}
catch(IOException e)
{
e.printStackTrace();
}
finally
{
recipientsIn.close();
}
}
}
Ошибка я получаю в затмение от метода sendSMSTextMessage(). Затмение дает мне ошибку:
The constructor PhoneNumber(String) is undefined
Это проект Maven, и я все мои зависимости ..... Что мне не хватает? У кого-нибудь есть лучший способ отправить несколько текстовых сообщений в Java? Разве у меня нет метода отправки сообщения?
Спасибо за вашу помощь ... мой мозг жареное ....
Mike
прошу игнорировать пути к файлам ..... я пытался выполнить тестирование и ссылался на локальный каталог. – mike
Ява часть проста; глядя на https://twilio.github.io/twilio-java/com/twilio/rest/lookups/v1/PhoneNumber.html, вы можете видеть, что класс PhoneNumber не имеет открытого конструктора (и поэтому нет конструктора, который принимает строку). Теперь, как его создать, это другое дело. Может быть, есть класс строителей? Может быть, это не подходящий класс? кажется, у них есть хотя бы еще один класс PhoneNumber в другом пакете ... – okaram
Быстрый google согласен с тем, что получал @okaram. Необходимо использовать [lookups] (https://www.twilio.com/docs/api/lookups) – JJF