2016-08-05 17 views
1

Ich arbeite derzeit mit der Express-Plattform, die Twilio Node.js SMS API und natürlich Javascript, um Textnachrichten an meine Benutzer zu senden. Das Problem ist, ich weiß nicht, was ich tun soll, um Daten über meine GET-Variablen auf dem Front-End zu senden und diese Werte mit node.js auf dem Back-End zu erfassen.Senden/Empfangen von Daten von Javascript zu Node.js mit Express

Zu Testzwecken habe ich eine einfache Schaltfläche erstellt, die beim Klicken eine Textnachricht an eine feste Nummer sendet. Hier

ist die Javascript-Seite:

function sms() { 
 
    xmlhttp = new XMLHttpRequest(); 
 
    xmlhttp.open("GET","http://localhost:5001", true); 
 
    xmlhttp.onreadystatechange=function(){ 
 
    if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
 
      alert(xmlhttp.responseText); 
 
     } 
 
    } 
 
    xmlhttp.send(); 
 
}

Hier ist die node.js Seite:

var accountSid = 'ACCOUNT_SID'; 
 
var authToken = 'ACCOUNT_TOKEN'; 
 
//require the Twilio module and create a REST client 
 
var client = require('twilio')(accountSid, authToken); 
 

 
var express = require("express"); 
 
var app = express(); 
 

 
app.get('/',function(request,response){ 
 
    
 
    var to = "TO"; 
 
    var from = "FROM"; 
 
    client.messages.create({ 
 
     to: to, 
 
     from: from, 
 
     body: 'Another message from Twilio!', 
 
    }, function (err, message) { 
 
     console.log("message sent"); 
 
     
 
    }); 
 

 
}); 
 
app.listen(5001);

kam ich habe acros s zwei Möglichkeiten, eine response von Node.js zu senden, aber nicht verwalten können, um sie erste Variablen zu machen arbeiten schicken response.write("Hello again"); response.end();

Also nur es zusammenzufassen, ich will mit response.send("Hello World"); oder die zweite (zu, von, Nachricht, etc.) durch meine http-Anfrage, erfassen sie in node.js und senden Sie eine AntwortText! Als Head-Up bin ich sehr zufrieden mit AJAX-Anfragen zwischen JS und PHP, aber Node.js ist neu für mich.

Vielen Dank im Voraus

+0

Beide von Ihnen bereitgestellten Bitcodes sollten funktionieren, Sie haben sie jedoch nicht im serverseitigen Code angezeigt. Was ist das Problem? Wo hast du sie in den Server-Code gesetzt? Was passiert, wenn Sie die Anfrage stellen? Haben Sie die Entwicklerwerkzeuge in Ihrem Browser verwendet, um die Anfrage zu prüfen? Bekommt es eine 200 OK Antwort? Enthält es die erwarteten Daten? Hast du in der Konsole nach Fehlermeldungen gesucht? (Ich würde eine Cross-Origin-Ausnahme erwarten, die wirklich einfach in Google zu finden ist, um eine Lösung zu finden) – Quentin

+2

Eine kleine Anmerkung, Sie senden nichts zurück an das Frontend, um es über den Erfolg zu benachrichtigen. Um dies zu tun, eine einfache response.send() oder response.send ('Empfangen der Daten'); würde dem Frontend 200 sagen. – Brant

+0

@Quentin Wenn ich die Anfrage im Browser mache, bekomme ich eine 200 OK-Antwort, aber wenn ich es in der JS auswerte, kann ich den responseText nicht alarmieren. In den Konsolenprotokollen gibt es keine alarmierenden Fehlermeldungen. – Felix

Antwort

0

Ich denke, der neue Guides Ihnen helfen wird hier mit Wie SMS in Node.js zu empfangen und antworten:

https://www.twilio.com/docs/guides/sms/how-to-receive-and-reply-in-node-js

Die CodeRail entlang der rechten Seite Ich werde Sie Schritt für Schritt durchgehen, aber Sie sollten besonders auf den Abschnitt "Erzeugen einer dynamischen TwiML-Nachricht" achten.

var http = require('http'), 
    express = require('express'), 
    twilio = require('twilio'), 
    bodyParser = require('body-parser'); 

var app = express(); 
app.use(bodyParser.urlencoded({ extended: true })); 

app.post('/', function(req, res) { 
    var twilio = require('twilio'); 
    var twiml = new twilio.TwimlResponse(); 
    if (req.body.Body == 'hello') { 
     twiml.message('Hi!'); 
    } else if(req.body.Body == 'bye') { 
     twiml.message('Goodbye'); 
    } else { 
     twiml.message('No Body param match, Twilio sends this in the request to your server.'); 
    } 
    res.writeHead(200, {'Content-Type': 'text/xml'}); 
    res.end(twiml.toString()); 
}); 

http.createServer(app).listen(1337, function() { 
    console.log("Express server listening on port 1337"); 
}); 
Verwandte Themen