Revinder
Revinder

Reputation: 291

Twilio test phone number is not working

I am using twilio on parse cloud for user phone authentication with my iPhone app, but when I call the cloud code for sending code message from the test phone number (+15005550006), it gives me an error saying "The From phone number +15005550006 is not a valid, SMS-capable inbound phone number or short code for your account. (Code: 141, Version: 1.7.5)"

My cloud code so far is:

var twilioAccountSid = 'my-account-sid'; 
var twilioAuthToken = 'my-auth-token';
var twilioPhoneNumber = '+15005550006';
var secretPasswordToken = '12345';

var language = "en";

var twilio = require('twilio')(twilioAccountSid, twilioAuthToken);

Parse.Cloud.define("sendCode", function(req, res) {
    var phoneNumber = req.params.number;
    phoneNumber = phoneNumber.replace(/\D/g, '');

    if (!phoneNumber || (phoneNumber.length != 10 && phoneNumber.length != 11)) return res.error('Invalid Parameters');
    Parse.Cloud.useMasterKey();
    var query = new Parse.Query(Parse.User);
    query.equalTo('username', phoneNumber + "");
    query.first().then(function(result) {
        var min = 1000; var max = 9999;
        var num = Math.floor(Math.random() * (max - min + 1)) + min;

        if (result) {
            result.setPassword(secretPasswordToken + num);
            result.set("language", language);
            result.save().then(function() {
                return sendCodeSms(phoneNumber, num, language);
            }).then(function() {
                res.success();
            }, function(err) {
                res.error(err);
            });
        } else {
            var user = new Parse.User();
            user.setUsername(phoneNumber);
            user.setPassword(secretPasswordToken + num);
            user.set("language", language);
            user.setACL({});
            user.save().then(function(a) {
                return sendCodeSms(phoneNumber, num, language);
            }).then(function() {
                res.success();
            }, function(err) {
                res.error(err);
            });
        }
    }, function (err) {
        res.error(err);
    });
});

Parse.Cloud.define("logIn", function(req, res) {
    Parse.Cloud.useMasterKey();

    var phoneNumber = req.params.phoneNumber;
    phoneNumber = phoneNumber.replace(/\D/g, '');

    if (phoneNumber && req.params.codeEntry) {
        Parse.User.logIn(phoneNumber, secretPasswordToken + req.params.codeEntry).then(function (user) {
            res.success(user._sessionToken);
        }, function (err) {
            res.error(err);
        });
    } else {
        res.error('Invalid parameters.');
    }
});

function sendCodeSms(phoneNumber, code, language) {

    var promise = new Parse.Promise();
    twilio.sendSms({
        to: '+91' + phoneNumber,//.replace(/\D/g, ''),
        from: twilioPhoneNumber,//.replace(/\D/g, ''),
        body: 'Your login code for AnyPhone is ' + code
    }, function(err, responseData) {
        if (err) {
            console.log(err);
            promise.reject(err.message);
        } else {
            promise.resolve();
        }
    });
    return promise;
}

Upvotes: 1

Views: 1201

Answers (1)

Oleg Sh
Oleg Sh

Reputation: 9013

Where did you get twilioAccountSid and twilioAuthToken?

If from https://www.twilio.com/user/account/phone-numbers/getting-started -> "Get API Credentials", but it does not work for me too.

I got from https://www.twilio.com/user/account/voice/dev-tools/test-credentials and it works for me now.

Upvotes: 0

Related Questions