-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
54 lines (44 loc) · 1.64 KB
/
index.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
require("dotenv").config();
const express = require("express");
const bodyParser = require("body-parser");
// Twilio Config
const accountSid = process.env.ACCOUNT_SID;
const authToken = process.env.AUTH_TOKEN;
const MessagingResponse = require("twilio").twiml.MessagingResponse;
const client = require("twilio")(accountSid, authToken);
const PORT = process.env.PORT || 5000;
const app = express();
// MIDDLEWARES
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));
// parse application/json
app.use(bodyParser.json());
// ROUTES
// Hello Word
app.use("/", (req, res) => {
res.end("Hello World");
});
// Listens for new messages from twilio and determine message response
app.use("/api/twilio-webhook", async (req, res) => {
// console.log(res);
// Grab the Twilio Request Params from request (req).
// Basic Params
const { MessageSid, SmsSid, AccountSid, From, To, Body, NumMedia } =
req.params;
// WhatsApp-specific Parameters
const { ProfileName, WaId, Forwarded, FrequentlyForwarded, ButtonText } =
req.params;
// For incoming WhatsApp messages that share a location
// const { Latitude, Longitude, Address, Label } = req.params;
// Geographic Data-related Parameters
const { FromCity, FromState, FromZip, FromCountry } = req.params;
// responding to an imcoming message
const twiml = new MessagingResponse();
const message = twiml.message();
message.body(`Hello World ${ProfileName}, you said:\n${Body}`);
res.writeHead(200, { "Content-Type": "text/xml" });
res.end(twiml.toString());
});
app.listen(PORT, () => {
console.log(`Express server listening on port ${PORT}`);
});