asterisk-mailcmd 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NTdkMjFjYTkwZTNlNDUzY2UwYTkxYWEyM2FmYzZjYjlmNzAyMzdhYQ==
5
+ data.tar.gz: !binary |-
6
+ YmI2ZGI1YmZiMzhkMDM4NDExNzUzMWYxNWM5ZTc1NTEwNDg4NWIxOA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ Y2Q0MWIwZDY5Y2EyOWM1MDBhZmNmNmQ4ZTcyM2YwMTNiODY4NDFjNzM3OGFh
10
+ MGJmM2I3MDMxOGU5NTU3ZjAwYWQ0ZWVhYzBjNzRlMWEyZWU4NzFjNmRhMDkw
11
+ OWQ2NzM4Mzg1MTcxYWU5NDExMDcyYjkwMTg3ZTM0MzVmNmM2YTI=
12
+ data.tar.gz: !binary |-
13
+ MzY5MjJhNzkzNmE4NmU3ZjRiNzcxNmY5YmNhYzA0MTFmOTJkZTAzZTQ1ODYx
14
+ ZjNkMWUyM2MyNzRlMDY5Mjc4MDU2MzdkZTdlNmJkNGQ5NWUwYWZjOTg4ZDc4
15
+ ZTM3ZTg1NWUyYjQzMDBiNGJiMGU4ZjUyYzdlZWYxMTVmN2JjOTA=
@@ -0,0 +1,27 @@
1
+ # Ignore temporary files
2
+ .*swp
3
+ *~
4
+
5
+ *.gem
6
+ *.rbc
7
+ .bundle
8
+ .config
9
+ coverage
10
+ InstalledFiles
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+
19
+ # YARD artifacts
20
+ .yardoc
21
+ _yardoc
22
+ doc/
23
+
24
+ .DS_Store
25
+ results.html
26
+ html
27
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in asterisk-mailcmd.gemspec
4
+ gemspec
@@ -0,0 +1,59 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ asterisk-mailcmd (0.0.1)
5
+ mail
6
+ methadone (~> 1.2.6)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ aruba (0.5.1)
12
+ childprocess (~> 0.3.6)
13
+ cucumber (>= 1.1.1)
14
+ rspec-expectations (>= 2.7.0)
15
+ builder (3.2.0)
16
+ childprocess (0.3.9)
17
+ ffi (~> 1.0, >= 1.0.11)
18
+ cucumber (1.2.3)
19
+ builder (>= 2.1.2)
20
+ diff-lcs (>= 1.1.3)
21
+ gherkin (~> 2.11.6)
22
+ multi_json (~> 1.3)
23
+ diff-lcs (1.2.1)
24
+ ffi (1.4.0)
25
+ gherkin (2.11.6)
26
+ json (>= 1.7.6)
27
+ i18n (0.6.4)
28
+ json (1.7.7)
29
+ mail (2.5.3)
30
+ i18n (>= 0.4.0)
31
+ mime-types (~> 1.16)
32
+ treetop (~> 1.4.8)
33
+ metaclass (0.0.1)
34
+ methadone (1.2.6)
35
+ bundler
36
+ mime-types (1.21)
37
+ mocha (0.13.3)
38
+ metaclass (~> 0.0.1)
39
+ multi_json (1.6.1)
40
+ polyglot (0.3.3)
41
+ rake (0.9.6)
42
+ rdoc (4.0.0)
43
+ json (~> 1.4)
44
+ rspec-expectations (2.13.0)
45
+ diff-lcs (>= 1.1.3, < 2.0)
46
+ treetop (1.4.12)
47
+ polyglot
48
+ polyglot (>= 0.3.1)
49
+
50
+ PLATFORMS
51
+ ruby
52
+
53
+ DEPENDENCIES
54
+ aruba
55
+ asterisk-mailcmd!
56
+ bundler (~> 1.3)
57
+ mocha
58
+ rake (~> 0.9.2)
59
+ rdoc
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Stas Kobzar
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,111 @@
1
+ # Asterisk::Mailcmd
2
+
3
+ # Extending Asterisk voicemail message body for emails
4
+
5
+ Asterisk Voicemail email seems to be quite limited when it comes about
6
+ configuring email body:
7
+ * Email body is a one line text with backslash escapes and Asterisk variables.
8
+ * It is limited to *512* characters (see voicemail.conf.sample)
9
+
10
+ Under these circumstances it is impossible to create nice looking, formatted emails,
11
+ to have individual email templates per user or multi-languages emails' templates.
12
+
13
+ This simple a simple library which is supposed to address these shortcomings.
14
+
15
+ ## HTML Voicemail notification example
16
+ ![html email](https://raw.github.com/staskobzar/asterisk-mailcmd/master/sample/html_email.png)
17
+
18
+ ## Installation
19
+
20
+ ### Library for your application
21
+ Add this line to your application's Gemfile:
22
+
23
+ gem 'asterisk-mailcmd', :git => git://github.com/staskobzar/asterisk-mailcmd.git
24
+
25
+ And then execute:
26
+
27
+ $ bundle
28
+
29
+ ### Command line application
30
+ Or install it yourself as:
31
+
32
+ $ git clone git://github.com/staskobzar/asterisk-mailcmd.git
33
+ $ cd asterisk-mailcmd
34
+ $ gem build asterisk-mailcmd.gemspec
35
+ $ gem install asterisk-mailcmd-X.X.X.gem
36
+
37
+ ## Asterisk configuration
38
+ Asterisk voice mail must be configured to run this library when new voicemail received. There is an option **mailcmd** in voicemail.conf which must link to the executable script with this library:
39
+
40
+ mailcmd=/usr/local/bin/mailcmd
41
+
42
+ Another option that must be set is the `mailbody` :
43
+ ```
44
+ mailbody=VM_NAME:${VM_NAME}\nVM_DUR:${VM_DUR}\nVM_MSGNUM:${VM_MSGNUM}\nVM_MAILBOX:${VM_MAILBOX}\nVM_CALLERID:${VM_CALLERID}\nVM_CIDNUM:${VM_CIDNUM}\nVM_CIDNAME:${VM_CIDNAME}\nVM_DATE:${VM_DATE}\nVM_MESSAGEFILE:${VM_MESSAGEFILE}
45
+ ```
46
+
47
+ This is a list of variables that will be used in ERB templates.
48
+
49
+ You can not use *asterisk-mailcmd* CLI application installed with this gem directly as a reference in in option **mailcmd** because Asterisk when asterisk run the command, it will not have information about your environment like path to ruby interpreter.
50
+ For that you must have a wrapper. Example of the wrapper can be found with the source: "sample/mailcmd.rvm.sh". Here is sample code:
51
+
52
+
53
+ ```bash
54
+
55
+ #!/bin/sh
56
+
57
+ # This is as simple wrapper for ruby application asterisk-mailcmd
58
+ # when using RVM (Ruby Version Manager: https://rvm.io/)
59
+
60
+ # path to HTML and TEXT templates in ERB format
61
+ # see samples in "sample" directory
62
+ HTML_TMPL=/etc/asterisk/vmtemplate/html.erb
63
+ TEXT_TMPL=/etc/asterisk/vmtemplate/text.erb
64
+
65
+ # load RVM profile
66
+ source /etc/profile.d/rvm.sh
67
+ # run mail command
68
+ asterisk-mailcmd -t $TEXT_TMPL -m $HTML_TMPL
69
+
70
+ exit 0
71
+
72
+ ```
73
+
74
+ Save this to file */usr/local/bin/mailcmd*, just like it is set with **mailcmd** option.
75
+ Make sure that the file is executable.
76
+
77
+
78
+ ### Ruby gem library
79
+ You can create your own ruby script:
80
+
81
+ ```ruby
82
+ require 'asterisk/mailcmd'
83
+
84
+ Asterisk::Mailcmd::Email.set_and_send :text_tmpl => '/path/text.erb',
85
+ :html_tmpl => '/path/html.erb'
86
+ ```
87
+
88
+ ## `Asterisk::Mailcmd::Email.set_and_send` parameters list:
89
+
90
+ ```
91
+ :html_tmpl => String: MANDATORY: HTML part ERB template file path
92
+ :text_tmpl => String: MANDATORY: Text part ERB template file path
93
+ :charset => String: OPTIONAL: Content type charset
94
+ :date => Time: OPTIONAL: Email date
95
+ ```
96
+ ## Templates
97
+ Templates are ERB format with variables that are set with Asterisk (see option *mailbody*):
98
+
99
+ ```
100
+ <h1>There is new mail in mailbox: <%= @astvars[:VM_MAILBOX].to_s %> </h1>
101
+ ```
102
+ There are two example files in directory *sample*.
103
+
104
+ ## Contributing
105
+
106
+ 1. Fork it
107
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
108
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
109
+ 4. Push to the branch (`git push origin my-new-feature`)
110
+ 5. Create new Pull Request
111
+
@@ -0,0 +1,23 @@
1
+ = asterisk-mailcmd - DESCRIBE YOUR GEM
2
+
3
+ Author:: YOUR NAME (YOUR EMAIL)
4
+ Copyright:: Copyright (c) 2013 YOUR NAME
5
+
6
+
7
+ License:: mit, see LICENSE.txt
8
+
9
+
10
+
11
+ DESCRIBE YOUR GEM HERE
12
+
13
+ == Links
14
+
15
+ * {Source on Github}[LINK TO GITHUB]
16
+ * RDoc[LINK TO RDOC.INFO]
17
+
18
+ == Install
19
+
20
+ == Examples
21
+
22
+ == Contributing
23
+
@@ -0,0 +1,62 @@
1
+ def dump_load_path
2
+ puts $LOAD_PATH.join("\n")
3
+ found = nil
4
+ $LOAD_PATH.each do |path|
5
+ if File.exists?(File.join(path,"rspec"))
6
+ puts "Found rspec in #{path}"
7
+ if File.exists?(File.join(path,"rspec","core"))
8
+ puts "Found core"
9
+ if File.exists?(File.join(path,"rspec","core","rake_task"))
10
+ puts "Found rake_task"
11
+ found = path
12
+ else
13
+ puts "!! no rake_task"
14
+ end
15
+ else
16
+ puts "!!! no core"
17
+ end
18
+ end
19
+ end
20
+ if found.nil?
21
+ puts "Didn't find rspec/core/rake_task anywhere"
22
+ else
23
+ puts "Found in #{path}"
24
+ end
25
+ end
26
+ require 'bundler'
27
+ require 'rake/clean'
28
+
29
+ require 'rake/testtask'
30
+
31
+ require 'cucumber'
32
+ require 'cucumber/rake/task'
33
+ gem 'rdoc' # we need the installed RDoc gem, not the system one
34
+ require 'rdoc/task'
35
+
36
+ include Rake::DSL
37
+
38
+ Bundler::GemHelper.install_tasks
39
+
40
+
41
+ Rake::TestTask.new do |t|
42
+ t.libs << 'test'
43
+ t.pattern = 'test/test_*.rb'
44
+ end
45
+
46
+
47
+ CUKE_RESULTS = 'results.html'
48
+ CLEAN << CUKE_RESULTS
49
+ Cucumber::Rake::Task.new(:features) do |t|
50
+ t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty --no-source -x"
51
+ t.fork = false
52
+ end
53
+
54
+ Rake::RDocTask.new do |rd|
55
+
56
+ rd.main = "README.rdoc"
57
+
58
+ rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
59
+ end
60
+
61
+ task :default => [:test,:features]
62
+
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'asterisk/mailcmd/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "asterisk-mailcmd"
8
+ spec.version = Asterisk::Mailcmd::VERSION
9
+ spec.authors = ["Stas Kobzar"]
10
+ spec.email = ["stas@modulis.ca"]
11
+ spec.description = %q{Asterisk voicemail emails enhancement}
12
+ spec.summary = %q{Command to use with Asterisk mailcmp option. See: voicemail.conf}
13
+ spec.homepage = "http://www.modulis.ca"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency('rdoc')
24
+ spec.add_development_dependency('aruba')
25
+ spec.add_development_dependency('mocha')
26
+ spec.add_development_dependency('rake', '~> 0.9.2')
27
+ spec.add_dependency('mail')
28
+ spec.add_dependency('methadone', '~> 1.2.6')
29
+ end
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+ require 'methadone'
5
+ require 'asterisk/mailcmd'
6
+
7
+ require 'pp'
8
+
9
+ class App
10
+ include Methadone::Main
11
+ include Methadone::CLILogging
12
+
13
+ main do # main proc
14
+ Asterisk::Mailcmd::Email.set_and_send options
15
+ end
16
+
17
+ # supplemental methods here
18
+
19
+ # Description
20
+ description %Q{Command to use with Asterisk mailcmp option. See: voicemail.conf.
21
+ Default delivery method is sendmail}
22
+
23
+ # Email text template file
24
+ on("-t FILE","--text-tmpl","Email TEXT template file (ERB format).") do |file|
25
+ options[:text_tmpl] = file
26
+ end
27
+
28
+ # Email HTML template file
29
+ on("-m FILE","--html-tmpl","Email HTML template file (ERB format).") do |file|
30
+ options[:html_tmpl] = file
31
+ end
32
+
33
+ # Email HTML charset
34
+ on("-c CHARSET","--charset","Email HTML content-type charset.") do |ch|
35
+ options[:charset] = ch
36
+ end
37
+
38
+ version Asterisk::Mailcmd::VERSION
39
+
40
+ use_log_level_option
41
+
42
+ go!
43
+ end
@@ -0,0 +1,13 @@
1
+ Feature: My bootstrapped app kinda works
2
+ In order to get going on coding my awesome app
3
+ I want to have aruba and cucumber setup
4
+ So I don't have to do it myself
5
+
6
+ Scenario: App just runs
7
+ When I get help for "asterisk-mailcmd"
8
+ Then the exit status should be 0
9
+ And the banner should be present
10
+ And the banner should document that this app takes options
11
+ And the following options should be documented:
12
+ |--version|
13
+ And the banner should document that this app takes no arguments
@@ -0,0 +1 @@
1
+ # Put your step definitions here
@@ -0,0 +1,16 @@
1
+ require 'aruba/cucumber'
2
+ require 'methadone/cucumber'
3
+
4
+ ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
5
+ LIB_DIR = File.join(File.expand_path(File.dirname(__FILE__)),'..','..','lib')
6
+
7
+ Before do
8
+ # Using "announce" causes massive warnings on 1.9.2
9
+ @puts = true
10
+ @original_rubylib = ENV['RUBYLIB']
11
+ ENV['RUBYLIB'] = LIB_DIR + File::PATH_SEPARATOR + ENV['RUBYLIB'].to_s
12
+ end
13
+
14
+ After do
15
+ ENV['RUBYLIB'] = @original_rubylib
16
+ end
@@ -0,0 +1,8 @@
1
+ require "asterisk/mailcmd/settings"
2
+ require "asterisk/mailcmd/email"
3
+ require "asterisk/mailcmd/version"
4
+
5
+ module Asterisk
6
+ module Mailcmd
7
+ end
8
+ end