twilio发送短信不工作在流星

问题描述:

我使用twilio节点发送短信。但我得到的错误:twilio发送短信不工作在流星

sendSms is not defined

这里是服务器文件夹内我twilio文件:

import twilio from "twilio"; 
sms = { 
    accountSid: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
    authToken: "your_auth_token" 
}; 

const client = new twilio(sms.accountSid, sms.authToken); 
console.log('client twilio *********** ',client) 
sendSms=(phoneNum,randomNum)=> { 
    client 
    .sendSms({ 
     body: "MicroTM one time password:" + randomNum, 
     to: phoneNum, 
     from: "+16062631146" 
    }) 
    .then((message, err) => { 
     if (!err) { 
      console.log(message); 
     } else { 
      console.log(err); 
     } 
    }); 
} 

现在,当我安慰twilio,我无法找到sendSms功能。 下面是日志:

client twilio *********** Twilio { 
I20170813-08:14:44.200(5.5)? username: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 
I20170813-08:14:44.201(5.5)? password: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 
I20170813-08:14:44.202(5.5)? accountSid: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 
I20170813-08:14:44.204(5.5)? httpClient: {}, 
I20170813-08:14:44.204(5.5)? region: undefined, 
I20170813-08:14:44.205(5.5)? _accounts: undefined, 
I20170813-08:14:44.206(5.5)? _api: undefined, 
I20170813-08:14:44.207(5.5)? _chat: undefined, 
I20170813-08:14:44.208(5.5)? _fax: undefined, 
I20170813-08:14:44.209(5.5)? _ipMessaging: undefined, 
I20170813-08:14:44.209(5.5)? _lookups: undefined, 
I20170813-08:14:44.210(5.5)? _monitor: undefined, 
I20170813-08:14:44.210(5.5)? _notify: undefined, 
I20170813-08:14:44.211(5.5)? _preview: undefined, 
I20170813-08:14:44.211(5.5)? _pricing: undefined, 
I20170813-08:14:44.212(5.5)? _taskrouter: undefined, 
I20170813-08:14:44.212(5.5)? _trunking: undefined, 
I20170813-08:14:44.212(5.5)? _video: undefined, 
I20170813-08:14:44.213(5.5)? _messaging: undefined, 
I20170813-08:14:44.213(5.5)? _wireless: undefined, 
I20170813-08:14:44.214(5.5)? _sync: undefined } 

这里是我的package.json文件:

{ 
    "name": "MicroTM", 
    "private": true, 
    "scripts": { 
    "start": "meteor run" 
    }, 
    "dependencies": { 
    "babel-runtime": "^6.20.0", 
    "bcrypt": "^1.0.2", 
    "busboy": "^0.2.14", 
    "fibers": "^2.0.0", 
    "lodash": "^4.17.4", 
    "meteor-node-stubs": "~0.2.4", 
    "moment": "^2.18.1", 
    "twilio": "^3.6.2" 
    } 
} 

,因为我无法找到与twilio API的任何问题,可能有一些问题与的package.json文件。

编辑:

这里是我的客户端,我叫的发送短信功能:

Template.register.events({ 
    'submit form': function(event) { 
     event.preventDefault(); 
     let fullName = event.target.fullName.value, 
      phoneNum = event.target.phoneNum.value, 
      email = event.target.emailsignup.value, 
      password = event.target.passwordsignup.value, 
      confirmPass = event.target.passwordsignup_confirm.value; 
      console.log(phoneNum,email,password,confirmPass); 
     let randomNum = Math.floor(1000 + Math.random() * 9000); 
     let data = { 
      fullName: fullName, 
      phoneNum: phoneNum, 
      email:email, 
      password:password, 
      confirmPass:confirmPass, 
      otp:randomNum, 
      isVerified: false, 
      createdAt: Date.now() 
     }; 
     if(password != confirmPass){ 
      swal({ 
       title: 'passwords are not matching!', 
      }) 
     } 
     else{ 
      Meteor.call('registerUser',data,function (err,res) { 
       if(!err){ 
        //console.log('inside result ******* ',data) 
        sendSms(data.phoneNum,randomNum); 
        Router.go('verify') 
       } 
       else{ 
        console.log('error ******* ', err) 
       } 
      }) 
     } 
    } 
}) 

也请找我收到错误的截图: enter image description here

+0

确保客户端可用的功能 –

+0

如何在客户端调用服务器功能? – wrangler

+0

你的意思是我应该把发送短信功能的地方都可以访问客户端以及服务器 –

使用twilio的其他方法时也有同样的问题。

尝试使用方法client.messages.create()

client.messages.create({ 
     body: "MicroTM one time password:" + randomNum, 
     to: phoneNum, 
     from: "+16062631146" 
    }) 
    .then((message, err) => { 
     if (!err) { 
      console.log(message); 
     } else { 
      console.log(err); 
     } 
    }); 

而且一定要使用twilio的新版本,并保存版本的包:

npm install twilio --save

编辑:也似乎有您所呼叫sendSms method由于该特定文件中的方法不可用而无法访问的文件。尝试检查您正在访问的地方的功能范围sendSms。或者尝试在此发布更多代码以了解更多信息。

EDIT2:你不能呼吁在客户端服务器定义的方法,但使用ajaxsocket.io从客户端,你可以确保发送的任何事件和参数传递给服务器。在服务器上接收后,您可以调用并将您的参数传递给sendSms方法。可以帮助您。

+0

我很欣赏你的答案,但仍然没有运气....得到相同的控制台。尝试了client.messages.create和npm安装twilio --save –

+0

我从客户端(前端)传递这些参数,这些工作正常。 –

+0

您可以编辑您的答案,以便我能够了解更多 –

您声明的sendSms功能,所以它只会在当前范围内可见。

将其替换为:

Meteor.sendSms=(phoneNum,randomNum)=> { 
    ... 
} 

这将是任何地方访问。

+0

服务器上不存在窗口我猜 –

+0

@AnkushRishi,哦,谢谢,你说得对。我编辑了我的答案。 – Styx

+0

它使用流星运行,但仍然没有sendSms函数。可能是这是一个范围错误 –