我最近开始使用Twilio平台向我的用户发送短信。我完全能够使用以下命令从节点终端运行node.js文件:
node twilio.js
现在,我的目标是能够从我的网站发送这些短信。例如,当用户提供他的电话号码并按下"发送短信"按钮。我怎样才能做到这一点?我已经看了一段时间,我遇到了Express平台,ajax发布请求,http服务器等等。但是,我无法弄清楚如何使用它们。我目前在我的网站上发出了许多ajax请求(POST和GET),但我无法向节点文件发出请求。
提前致谢,
这是twilio.js文件:
// Twilio Credentials
var accountSid = 'ACCOUNT SID';
var authToken = 'ACCOUNT TOKEN';
//require the Twilio module and create a REST client
var client = require('twilio')(accountSid, authToken);
client.messages.create({
to: 'TO',
from: 'FROM',
body: 'Message sent from Twilio!',
}, function (err, message) {
console.log(message.sid);
});

答案 0 :(得分:0)
能够从网页上运行服务器上的任意脚本将是一个巨大的安全风险 - 不要这样做。我不确定您在哪里托管您的网站,或者您正在运行您的网站的技术堆栈,但是因为您提到了Express和Node - 如果您使用的是Express,我建议您设置一条路线,处理ajax请求。当有人按下“发送短信”时,你会向该路由发送一个ajax请求,并在被调用的处理程序中放置Twilio逻辑。
答案 1 :(得分:0)
这是设置调用节点模块的Express请求的一种非常简单的方法:
twilio.js:
// Twilio Credentials
var accountSid = 'ACCOUNT SID';
var authToken = 'ACCOUNT TOKEN';
//require the Twilio module and create a REST client
var client = require('twilio')(accountSid, authToken);
function sendSms(callback) {
client.messages.create({
to: 'TO',
from: 'FROM',
body: 'Message sent from Twilio!',
}, callback);
}
// Export this function as a node module so that you can require it elsewhere
module.exports = sendSms;
Here是Express的良好开端。
server.js:
var express = require('express');
var app = express();
// Requiring that function that you exported
var twilio = require('/path/to/twilio.js');
// Creating a controller for the get request: localhost:8081/send/sms
app.get('/send/sms', function (req, res) {
twilio(function(err, message) {
if (err) res.send(err);
res.send('Message sent: ' + message);
});
});
// Creating an HTTP server that listens on port 8081 (localhost:8081)
var server = app.listen(8081, function () {
var host = server.address().address;
var port = server.address().port;
console.log("Example app listening at http://%s:%s", host, port);
});
然后您可以运行node server.js
,转到您的浏览器并转到网址:localhost:8081/send/sms
,系统会发送您的消息:)
答案 2 :(得分:0)
我这样做,以便客户端向服务器发送HTTP POST请求,然后服务器将代表客户端发送消息。
最简单的方法是使用快递。我不确定您是如何在不使用快递的情况下从Node.js应用程序为您的网站提供服务的。你有一个自定义解决方案,还是只有一个非连接的端点,或者类似heroku的东西?在任何情况下,您都可以使用以下内容创建处理帖子的路线:
app.post("send_twilio_message_route", function(req,res){
// this receives the post request -- process here
});
^请注意,实际上并没有创建快递应用。请参阅下面的链接,他们举例说明了一些细节和语法。
所以上面的内容将在你的Node.js应用程序的服务器上。从浏览器中运行的前端客户端代码,您需要创建一个帖子。最简单的方法和最可能的方法是通过Jquery中的$ .post。如果你使用的是Angular,那么语法略有不同,但它的想法是一样的。你调用post,将它指向一个url,并输入正文数据。
使帖子请求的正文包含消息,电话号码等数据 身份验证令牌可能。
看到这个能够从帖子请求中获取正文以及如何设置它的更多实现细节: How to retrieve POST query parameters?
根据您所做的事情的性质,您可能会考虑将短信处理内容与实际的Web服务分开运行。我会创建短信独特的东西作为自己的模块,并有一个功能检索路由器,以便您可以安装到应用程序并稍后移动它。如果你做的事情很小,这可能有点过头了,但我基本上鼓励你一开始就考虑隔离你的网站服务,否则你会制造一团糟。话虽这么说,如果它只是一件小事而且对你而言也许并不重要。取决于您的需求。