Abasourdi par l'API Twilio pour envoyer un simple message texte


J'ai un compte avec Twilio et je l'utilisais pour m'envoyer par programme des messages texte via un script PHP. Maintenant, je veux cette fonctionnalité dans un service que j'écris. Mon problème est le manque de bons exemples sur la façon d'implémenter la fonctionnalité en Java. Il semble y avoir un seul exemple de ce que je veux faire, mais je continue à obtenir des erreurs dans eclipse (neon) disant qu'il y a une erreur dans le constructeur pour PhoneNumber(String). Je vais d'abord vous montrer mon code puis expliquer.

J'ai ces deux classes, une pour stocker mes informations d'identification utilisateur et une classe pour contenir les données du destinataire du message (un nom et un numéro de téléphone)....ps pardonnez le formatage.

/**
 * 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;
}
}

La troisième classe que j'ai implémente les deux classes ci-dessus. Je prévois de lire les données d'identification et les données du destinataire à partir de deux fichiers texte.

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();
    }
}
}

L'erreur que je continue à obtenir dans eclipse provient de la méthode sendSMSTextMessage(). Eclipse me donne l'erreur:

The constructor PhoneNumber(String) is undefined

Ceci est un Projet Maven, et j'ai toutes mes dépendances..... Ce qui me manque? Quelqu'un a-t-il un meilleur moyen pour moi d'envoyer plusieurs messages texte dans Java? Ne devrait-il pas y avoir une méthode pour 'envoyer un message'?

Merci pour votre help...my le cerveau est frit....

Mike

Author: mike, 2016-11-11

1 answers

Développeur Twilio évangéliste ici.

Il semble que vous importez la mauvaise définition de PhoneNumber. Vous l'obtenez à partir de com.twilio.rest.lookups.v1.PhoneNumbercependant le guide Twilio pour envoyer un message SMS avec Java importe com.twilio.type.PhoneNumber.

Faites-moi savoir si cela aide du tout.

 0
Author: philnash, 2016-11-21 16:26:38