· 5 years ago · Nov 14, 2020, 04:54 AM
1var axios = require('axios').default;
2
3exports.handler = function (context, event, callback) {
4 var redis = require('redis');
5 var uniqid = require('uniqid');
6 var twiml = new Twilio.twiml.MessagingResponse();
7
8 var redis_client = redis.createClient({
9 url: process.env.REDIS_ENDPOINT,
10 password: process.env.REDIS_PASSWORD,
11 });
12
13 var incoming_message = event.Body.split(' ');
14 var command = incoming_message[0].toLowerCase();
15 var action = incoming_message[1];
16 var details = incoming_message.splice(2).join(' ');
17
18 switch (command) {
19 case 'update':
20 let data = JSON.stringify({
21 message: action,
22 status: details,
23 timestamp: new Date().getTime(),
24 });
25 console.log('data', data);
26 let key = uniqid();
27
28 redis_client.hset('messages', key, data, redis.print);
29
30 twiml.message('Message inserted');
31
32 callback(null, twiml);
33 break;
34
35 case 'bbq':
36 // Where you would implement your API response for texted requests
37 // https://www.twilio.com/docs/runtime/quickstart/serverless-functions-make-a-read-request-to-an-external-api
38 console.log('Starting.');
39
40 axios
41 .get(
42 'https://www.breakingbadapi.com/api/quote/random?author=Skyler+White'
43 )
44 .then((res) => {
45 console.log(res);
46 console.log('here');
47 twiml.message('Done.');
48 callback(null, twiml);
49 })
50 .catch((err) => {
51 console.log(err);
52 twiml.message('Error.');
53 callback(null, twiml);
54 });
55
56 console.log('Ending.');
57 break;
58 case 'helpme':
59 twiml.message(
60 `helpme\n\nTo learn how to use a command type 'help [command]'.\n\nCommands:\n- shorten\n- update`
61 );
62 callback(null, twiml);
63 break;
64 case 'help':
65 switch (action) {
66 case 'shorten':
67 twiml.message(
68 `help\n\nThis command will shorten a url.\n\nCommand: shorten [url]\n\nExample: shorten https://www.google.ca/`
69 );
70 callback(null, twiml);
71 break;
72 case 'update':
73 twiml.message(
74 `help\n\nThis command will insert data into the redis database.\n\nCommand: update [status] [message]\n\nExample: update error This is an error message.`
75 );
76 callback(null, twiml);
77 break;
78 }
79 break;
80 default:
81 twiml.message("error\n\nText 'helpme' for help.");
82 callback(null, twiml);
83 break;
84 }
85 console.log('end of file');
86};
87