Advertisement
rafaelsnsa

Asterisk AlarmClock AEL

Apr 10th, 2016
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. // Despertador em AEL
  2. // AlarmClock in AEL
  3. // Create by: Rafael Saraiva
  4. // rafaelsnsa@gmail.com
  5. context from-sip {
  6. _1XX => {
  7. Dial(SIP/${EXTEN});
  8. };
  9.  
  10. *48 => {
  11. Answer();
  12. timezone = "America/Sao_Paulo";
  13. begin:
  14. opt = 0;
  15. if(${DB_EXISTS(alarm/${CALLERID(num)})} == 1) {
  16. Read(opt,pt_BR/to-change&&pt_BR/press-1&pt_BR/and&pt_BR/press-2,1,,3,5); // 1 - set time, 2 - cancel
  17. if (${opt} == 1) {
  18. goto begin-alarm;
  19. } else if(${opt} == 2) {
  20. del = "${DB_DELETE(alarm/${CALLERID(num)})}";
  21. del_file = "${SHELL(rm -rf /var/spool/asterisk/outgoing/alarm-${CALLERID(num)}.call && echo 1 || echo 0)}";
  22. if(${del_file} == 1) {
  23. Playback(pt_BR/de-activated);
  24. Playback(pt_BR/auth-thankyou);
  25. hangup;
  26. } else {
  27. Playback(pt_BR/an-error-has-occured);
  28. hangup;
  29. }
  30. } else {
  31. goto begin;
  32. }
  33. } else {
  34. begin-alarm:
  35. hour = 0;
  36. minutes = 0;
  37. begin-hour:
  38. Read(hour,pt_BR/hour,2);
  39. if(${hour} > 23) {
  40. Playback(pt_BR/invalid);
  41. goto begin-hour;
  42. } else {
  43. begin-minute:
  44. Read(minutes,pt_BR/minute,2);
  45. if(${minutes} > 59) {
  46. Playback(pt_BR/invalid);
  47. goto begin-minute;
  48. } else {
  49. year=${STRFTIME(${DAY},${timezone},%Y)};
  50. month=${STRFTIME(${DAY},${timezone},%m)};
  51. day=${STRFTIME(${DAY},${timezone},%d)};
  52. now="${STRFTIME(${EPOCH},${timezone},%Y-%m-%d %H:%M:%S)}";
  53. now_epoch=${STRPTIME(${now},${timezone},%Y-%m-%d %H:%M:%S)};
  54. alarm=${STRPTIME(${year}-${month}-${day} ${hour}:${minutes}:00,${timezone},%Y-%m-%d %H:%M:%S)};
  55. if(${alarm} < ${now_epoch}) {
  56. alarm=${MATH(${alarm}+86400,int)};
  57. year=${STRFTIME(${alarm},${timezone},%Y)};
  58. month=${STRFTIME(${alarm},${timezone},%m)};
  59. day=${STRFTIME(${alarm},${timezone},%d)};
  60. }
  61. tmp_file = "/var/spool/asterisk/tmp/alarm-${CALLERID(num)}.call";
  62. end_file = "/var/spool/asterisk/outgoing/alarm-${CALLERID(num)}.call";
  63. res1 = ${SHELL(echo "Channel: SIP/${CALLERID(num)}" > ${tmp_file} && echo 1 || echo 0)};
  64. res2 = ${SHELL(echo "CallerID: \"Despertador\" <${CALLERID(num)}>" >> ${tmp_file} && echo 1 || echo 0)};
  65. res3 = ${SHELL(echo "Context: from-sip" >> ${tmp_file} && echo 1 || echo 0)};
  66. res4 = ${SHELL(echo "Extension: alarm-${CALLERID(num)}" >> ${tmp_file} && echo 1 || echo 0)};
  67. res5 = ${SHELL(echo "Priority: 1" >> ${tmp_file} && echo 1 || echo 0)};
  68. res = ${res1}+${res2}+${res3}+${res4}+${res5};
  69. if(${res} == 5) {
  70. System(touch -t ${year}${month}${day}${hour}${minutes}.00 ${tmp_file});
  71. move_file = ${SHELL(mv ${tmp_file} ${end_file} && echo 1 || echo 0)};
  72. if(${move_file} == 1) {
  73. DB(alarm/${CALLERID(num)})="${year}-${month}-${day} ${hour}:${minutes}:00";
  74. Playback(pt_BR/activated);
  75. Playback(pt_BR/auth-thankyou);
  76. hangup;
  77. } else {
  78. Playback(pt_BR/an-error-has-occured);
  79. goto begin-hour;
  80. }
  81. } else {
  82. Playback(pt_BR/an-error-has-occured);
  83. goto begin-hour;
  84. }
  85. }
  86. }
  87. }
  88. }
  89.  
  90. _alarm-X. => {
  91. Answer();
  92. del = "${DB_DELETE(alarm/${CALLERID(num)})}";
  93. Playback(tt-monkeys);
  94. hangup;
  95. }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement