2017-08-13 2 views
0

Ich benutze Twilio Node zum Senden von SMS. aber ich bin immer Fehler:Twilio senden SMS funktioniert nicht in Meteor

sendSms is not defined

Hier ist meine Twilio Datei im Server-Ordner:

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

Wenn ich jetzt Twilio trösten, ich war nicht in der Lage, die SendSMS Funktion zu finden. Hier sind die Protokolle:

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 } 

Hier ist meine package.json Datei:

{ 
    "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" 
    } 
} 

Es könnte einige Problem mit der package.json Datei sein, wie ich bin nicht in der Lage ein Problem mit Twilio api zu finden .

EDIT:

Hier ist meine Client-Seite, wo ich die Send SMS-Funktion aufgerufen:

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

Bitte beachten Sie auch den Screenshot für den Fehler finden Ich erhalte: enter image description here

+0

stellen Sie sicher, Client ist in der Funktion verfügbar –

+0

Wie können Sie eine Serverfunktion auf der Clientseite aufrufen? – wrangler

+0

du meine ich sollte die send sms-funktion irgendwo zugänglich für sowohl client als auch server –

Antwort

3

Hatte das gleiche Problem bei der Verwendung anderer Methoden von Twilio.

Versuchen Sie es mit Methode 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); 
     } 
    }); 

Auch sicher sein, neuere Version von Twilio zu verwenden und die Version Paket sparen:

npm install twilio --save

EDIT: Auch scheint es Sie anrufen sendSms method aus einer Datei, auf die aufgrund der Nichtverfügbarkeit der Methode in dieser bestimmten Datei nicht zugegriffen werden kann. Überprüfen Sie den Gültigkeitsbereich der Funktion an den Stellen, auf die Sie zugreifen möchten sendSms. Oder versuchen Sie, mehr von Ihrem Code hier zu posten, um mehr zu verstehen.

EDIT2: mit ajax oder socket.io und übergeben Sie Parameter an den Server vom Client Sie kann nicht auf dem Server auf Client-Seite definiert eine Methode aufrufen, aber man könnte sicher ein Ereignis senden. Nach dem Empfang auf dem Server können Sie Ihre Parameter aufrufen und an sendSms Methode übergeben. Das hilft Ihnen.

+0

Ich schätze Ihre Antwort, aber immer noch kein Glück .... die gleiche Konsole zu bekommen. habe versucht, sowohl client.messages.create und npm installieren twilio --save –

+0

Ich übergebe diese Argumente von Client-Seite (Frontend) und diese funktionieren gut. –

+0

können Sie Ihre Antwort so bearbeiten, dass ich mehr verstehen kann –

1

Ihre Deklaration sendSms Funktion auf diese Weise, so dass es nur in diesem aktuellen Bereich sichtbar sein wird.

Ersetzen Sie es mit:

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

Und es wird überall zugänglich sein.

+0

Fenster existiert nicht auf dem Server Ich denke –

+0

@AnkushRishi, oh, danke, du hast Recht. Ich habe meine Antwort bearbeitet. – Styx

+0

Es läuft mit Meteor, aber ich bekomme immer noch keine sendSms-Funktion. Könnte sein, dass dies ein Scope-Fehler ist –