sms.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. module.exports = function(request, response) {
  2. /**
  3. * Intégration des dépendences SQLITE3
  4. */
  5. const sqlite3 = require('sqlite3').verbose();
  6. const db = new sqlite3.Database('./db/data.db');
  7. /**
  8. * Fichier contenant les configurations nécéssaires au bon fonctionnement du système
  9. */
  10. const config = require('../config');
  11. /**
  12. * Identification et déclaration Twilio
  13. */
  14. const client = require('twilio')(config.accountSid, config.authToken);
  15. /**
  16. * Récupération des variables postées permettant d'ordonner l'appel
  17. */
  18. var to = request.body.to || null;
  19. var user = request.body.user || null;
  20. var service = request.body.service + 'sms';
  21. /**
  22. * Si il manque l'une des variable, transmettre l'erreur et empêcher le fonctionnement du système
  23. */
  24. if (to == null || user == null || service == null) {
  25. response.status(200).json({
  26. error: 'Please post all the informations needed.'
  27. });
  28. return false;
  29. }
  30. /**
  31. * Si l'on ne trouve pas l'emplacement du fichier service, alors cela veut dire que le service n'est pas supporté et l'on retourne une erreur
  32. */
  33. if (config[service] == undefined) {
  34. response.status(200).json({
  35. error: 'The service wasn\'t recognised.'
  36. });
  37. return false;
  38. }
  39. /**
  40. * Si le numéro de téléphone est correcte, alors on lance l'appel
  41. */
  42. if (to.match(/^\d{8,14}$/g) && !!user && !!service) {
  43. /**
  44. * API Twilio permettant d'émettre le SMS
  45. */
  46. client.messages.create({
  47. body: config[service],
  48. from: config.callerid,
  49. statusCallback: config.serverurl + '/status/' + config.apipassword,
  50. to: '+' + to
  51. }).then((message) => {
  52. smssid = message.sid;
  53. response.status(200).json({
  54. smssid
  55. });
  56. response.send(smssid);
  57. /**
  58. * Ajout à la DB Sqlite3 du SMS envoyé
  59. */
  60. db.run(`INSERT INTO sms(smssid, user, itsfrom, itsto, content, service, date) VALUES(?, ?, ?, ?, ?, ?, ?)`, [smssid, user, config.callerid, to, config[service], service, Date.now()], function(err) {
  61. if (err) {
  62. return console.log(err.message);
  63. }
  64. });
  65. });
  66. } else {
  67. response.status(200).json({
  68. error: 'Bad phone number or username or service.'
  69. });
  70. }
  71. };