使用字母数字发送Twilio SMS"来自"返回错误消息' From'电话号码是必需的

时间:2015-12-12 07:46:44

标签: javascript parse-platform twilio

我正在尝试发送短信,我使用自定义和人性化的#34; From"名。

我可以发送短信 - 直到我设置了'来自'除了我有效的Twilio数字之外的任何内容属性。

我一直在使用发送到英国手机号码的英国Twilio号码进行测试,Twilio列为一个能够使用地址字母数字的国家。

背景:我从Parse云代码发送这些短信。

这是我的发送代码(Javascript)。

function sendCodeSms(phoneNumber, code, prefix) {

// Define a human friendly 'from' address
var twilioFrom = 'Friendly';

// Use appropriate 'from' number - cover countries that don't allow alphanumerical from addresses
switch (prefix) {
    case "1":
        twilioFrom = twilioPhoneNumber_1;
        break;
}

// Create a promise
var promise = new Parse.Promise();

// Call the Twilio API
twilio.sendSms({
    to: prefix + phoneNumber.replace(/\D/g, ''),
    from: twilioFrom.replace(/\D/g, ''),
    body: 'Your login PIN is ' + code
}, function(err, responseData) {
    if (err) {
        console.log(err);
        promise.reject(err.message);
    } else {
        promise.resolve();
    }
});
return promise;

}

如果我用我的一个有效的Twilit号码替换twilioFrom值,那么SMS就会被正常发送。

有什么想法吗?救命?

(请不要让它成为男生的错误)

3 个答案:

答案 0 :(得分:1)

看起来您正在使用。public class Add_Details extends Activity { ImageButton addDoctor_img, addPatient_img, viewPatient_img; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add__details); addDoctor_img = (ImageButton) findViewById(R.id.addDoctor_detils); addPatient_img = (ImageButton) findViewById(R.id.addPatient_detils); viewPatient_img = (ImageButton) findViewById(R.id.viewPatient_detils); configureImageButton(); } public void configureImageButton() { // TODO Auto-generated method stub try { // add doctor details... addDoctor_img.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent add_doc = new Intent(getApplicationContext(), AddDoctor.class); startActivity(add_doc); finish(); } }); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } public class AddDoctor extends Activity implements OnClickListener { EditText f_name_doc, l_name_doc, suffix_doc, email_doc, password_doc, confirm_doc, mob_doc, dob_doc, age_doc, specility_doc, city_doc; RadioGroup gender; RadioButton male_doc, female_doc; Button add_doc; ImageButton cal_dob; private Calendar cal; private int day; private int month; private int year; static String URL = OpdLogin.URL; public static final String url_adddoc = URL + "doctorregistration"; HttpClient client; String text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_doctor); f_name_doc = (EditText) findViewById(R.id.f_name_doc); l_name_doc = (EditText) findViewById(R.id.l_name_doc); suffix_doc = (EditText) findViewById(R.id.suffix_doc); email_doc = (EditText) findViewById(R.id.email_doc); password_doc = (EditText) findViewById(R.id.password_doc); confirm_doc = (EditText) findViewById(R.id.confirm_doc); mob_doc = (EditText) findViewById(R.id.mob_doc); dob_doc = (EditText) findViewById(R.id.dob_doc); age_doc = (EditText) findViewById(R.id.age_doc); specility_doc = (EditText) findViewById(R.id.specility_doc); city_doc = (EditText) findViewById(R.id.city_doc); <ImageButton android:id="@+id/addDoctor_detils" android:layout_width="80dp" android:layout_height="80dp" android:layout_marginBottom="0dp" android:layout_marginLeft="10dp" android:layout_marginRight="20dp" android:layout_marginTop="30dp" android:contentDescription="@string/AddDoctor" android:onClick="configureImageButton" android:padding="50dp" android:src="@drawable/doctor_add" /> <activity android:name=".AddDoctor" android:label="@string/title_activity_add_doctor" > <intent-filter> <action android:name="com.rtminds.patientinformationsystem.AddDoctor" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> 删除所有非数字字符。所以我认为发送到twilio的replace将是一个空白字符串。

from

答案 1 :(得分:1)

Twilio开发者传道者在这里。

道歉,Twilio模块目前在Parse上过时了。我正在与他们的团队合作以使其更新。

与此同时,您无需编写整个模块即可使用此功能。 Parse Cloud提供了一个简单的httpRequest模块,您可以使用该模块将请求发送到较新的Twilio端点。以下是使用Messages endpoint发送短信的功能示例:

var accountSid = 'AC123...'; // your account SID
var authToken  = 'xyzabc...'; // your auth token
var toNumber   = "+14515551234"; // the number you are sending a message to
var fromNumber = "HELLO"; // your alphanumeric string
var body       = "This is a message"; // your message to be sent

// Build up the URL
var url = 'https://';
url += accountSid + ':' + authToken + '@'; // add auth to URL
url += 'api.twilio.com/2010-04-01/Accounts/';
url += accountSid;
url += '/Messages.json';

Parse.Cloud.httpRequest({
  url: url,
  method: "POST",
  body: {
    "To": toNumber,
    "From": fromNumber,
    "Body": body
  }
}).then(function(httpResponse) {
  // success
  console.log(httpResponse.text);
  // httpResponse.data is the parsed JSON response
},function(httpResponse) {
  // error
  console.error('Request failed with response code ' + httpResponse.status);
});

让我知道这是否有帮助。

答案 2 :(得分:0)

所以答案是(由dmullings发现)Parse提供的Twilio库只提供了Twilio功能的子集

  

内置的Twilio Cloud Module提供了一个子集   Twilio客户可以使用的功能。如果您有这个功能   您可能希望此云模块不支持您感兴趣的内容   考虑将自己的Twilio JavaScript包装器编写为自定义云   模块。我们建议您查看Twilio节点结节的灵感。

所以解决方案是创建自己的Twilio模块。