forked from kwhinnery/twilio-express
-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
133 lines (108 loc) · 3.71 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/**
* Module dependencies.
*/
var express = require('express'),
http = require('http'),
path = require('path'),
twilio = require('twilio');
var app = express();
app.configure(function () {
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function () {
app.use(express.errorHandler());
});
//Twilio goodness
var config = {};
//prod/heroku
if (process.env.ACCOUNT_SID) {
config.accountSid = process.env.ACCOUNT_SID;
config.authToken = process.env.AUTH_TOKEN;
}
//local dev
else {
config = require('./config');
}
//Quick Start Example 1 - Make an outbound call
function qs1(request, response) {
var capability = new twilio.Capability(config.accountSid, config.authToken);
//This is a TwiML app SID configured with a voice URL
//https://www.twilio.com/user/account/apps
capability.allowClientOutgoing('APd0aa702e9a16856c36d4476075cc212c');
// Render an EJS template with the token and page title in context
// EJS template is found in views/qs1.ejs
response.render('qs1', {
title:'Hello Monkey 1',
token:capability.generate()
});
}
app.get('/', qs1);
app.get('/qs1', qs1);
//Quick Start Example 2 - Hang up a call
app.get('/qs2', function(request, response) {
var capability = new twilio.Capability(config.accountSid, config.authToken);
capability.allowClientOutgoing('APd0aa702e9a16856c36d4476075cc212c');
response.render('qs2', {
title:'Hello Monkey 2',
token:capability.generate()
});
});
//Quick Start Example 3 - Accept an incoming call
app.get('/qs3', function(request, response) {
var capability = new twilio.Capability(config.accountSid, config.authToken);
capability.allowClientOutgoing('APd0aa702e9a16856c36d4476075cc212c');
capability.allowClientIncoming('jenny');
response.render('qs3', {
title:'Hello Monkey 3',
token:capability.generate()
});
});
//Quick Start Example 4 - Make outgoing calls from the browser
app.get('/qs4', function(request, response) {
var capability = new twilio.Capability(config.accountSid, config.authToken);
capability.allowClientOutgoing('APd0aa702e9a16856c36d4476075cc212c');
capability.allowClientIncoming('jenny');
response.render('qs4', {
title:'Hello Monkey 4',
token:capability.generate()
});
});
//Quick Start Example 5 - browser to browser
app.get('/qs5', function(request, response) {
var clientName='new-client';
if (request.query.client){
clientName=request.query.client;
}
console.log('clientName: ' + clientName);
var capability = new twilio.Capability(config.accountSid, config.authToken);
capability.allowClientOutgoing('APd0aa702e9a16856c36d4476075cc212c');
capability.allowClientIncoming(clientName);
response.render('qs5', {
title:'Hello Monkey 5',
clientName: clientName,
token:capability.generate()
});
});
//Twilio request authentication
app.post('/twiml', function(req, res) {
if (twilio.validateExpressRequest(req, config.authToken)) {
var resp = new twilio.TwimlResponse();
resp.say('express sez - hello twilio!');
res.type('text/xml');
res.send(resp.toString());
}
else {
res.send('you are not twilio. Buzz off.');
}
});
http.createServer(app).listen(app.get('port'), function () {
console.log("Express server listening on port " + app.get('port'));
});