freeswitcher 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,29 @@
1
+ require "fsr/cmd"
2
+ require "fsr/utils/dtmf"
3
+ module FSR
4
+ module Cmd
5
+ class UuidSendDtmf < Command
6
+ def initialize(fs_socket = nil, args = {})
7
+ @fs_socket = fs_socket # FSR::CommandSocket obj
8
+ @uuid, dtmf = args.values_at(:uuid, :dtmf)
9
+ raise(ArgumentError, "No uuid given") unless @uuid
10
+ raise(ArgumentError, "No dtmf data given") unless dtmf
11
+ @dtmf = FSR::Utils::DTMF.from_string(dtmf)
12
+ end
13
+
14
+ # Send the command to the event socket, using bgapi by default.
15
+ def run(api_method = :api)
16
+ orig_command = "%s %s" % [api_method, raw]
17
+ Log.debug "saying #{orig_command}"
18
+ @fs_socket.say(orig_command)
19
+ end
20
+
21
+ # This method builds the API command to send to the freeswitch event socket
22
+ def raw
23
+ "uuid_send_dtmf #{@uuid} #{@dtmf}"
24
+ end
25
+ end
26
+
27
+ register(:uuid_send_dtmf, UuidSendDtmf)
28
+ end
29
+ end
@@ -0,0 +1,27 @@
1
+ module FSR
2
+ module Utils
3
+ module DTMF
4
+ MAP = Hash[
5
+ [%w{a b c},
6
+ %w{d e f},
7
+ %w{g h i},
8
+ %w{j k l},
9
+ %w{m n o},
10
+ %w{p q r s},
11
+ %w{t u v},
12
+ %w{w x y z}
13
+ ].zip((2 .. 9).to_a)
14
+ ]
15
+
16
+ def self.from_string(dtmf)
17
+ dtmf.each_char.map { |char|
18
+ if digit = MAP[MAP.keys.detect { |k| k.include? char }]
19
+ digit
20
+ else
21
+ char
22
+ end
23
+ }.join
24
+ end
25
+ end
26
+ end
27
+ end
data/lib/fsr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module FSR
2
- VERSION = "0.6.0"
2
+ VERSION = "0.6.1"
3
3
  end
@@ -0,0 +1,22 @@
1
+ require './spec/helper'
2
+ require "fsr/cmd"
3
+ FSR::Cmd.load_command("uuid_send_dtmf")
4
+
5
+ describe "Testing FSR::Cmd::UuidSendDtmf" do
6
+ ## UUID Send DTMF Tones ##
7
+ #uuid_send_dtmf <uuid> <uuid_data>
8
+ it "FSR::Cmd::UuidSendData should Send DTMF with digits" do
9
+ cmd = FSR::Cmd::UuidSendDtmf.new nil, uuid: 1234, dtmf: "5555"
10
+ cmd.raw.should == 'uuid_send_dtmf 1234 5555'
11
+ end
12
+
13
+ it "FSR::Cmd::UuidSendData should Send DTMF with letters" do
14
+ cmd = FSR::Cmd::UuidSendDtmf.new nil, uuid: 1234, dtmf: "aceventura"
15
+ cmd.raw.should == 'uuid_send_dtmf 1234 2238368872'
16
+ end
17
+
18
+ it "FSR::Cmd::UuidSendData should raise an argument error without uuid or dtmf" do
19
+ lambda { FSR::Cmd::UuidSendDtmf.new nil, uuid: 1234 }.should.raise ArgumentError
20
+ lambda { FSR::Cmd::UuidSendDtmf.new nil, dtmf: 1234 }.should.raise ArgumentError
21
+ end
22
+ end
data/spec/fsr/loading.rb CHANGED
@@ -16,7 +16,7 @@ describe "Testing FSR module loading methods" do
16
16
 
17
17
  # When you add commands you must modify the expected cmds_loaded behavior
18
18
  it "Loads all commands" do
19
- all_commands = [:uuid_dump, :originate, :sofia, :fsctl, :sofia_contact, :status, :calls, :call_center, :channels, :enum, :sched_hangup, :sched_transfer, :uuid_transfer] # If you add a command add it to this set
19
+ all_commands = [:uuid_dump, :originate, :sofia, :fsctl, :sofia_contact, :status, :calls, :call_center, :channels, :enum, :sched_hangup, :sched_transfer, :uuid_transfer, :uuid_send_dtmf] # If you add a command add it to this set
20
20
  cmds_loaded = FSR.load_all_commands
21
21
  cmds_loaded.kind_of?(Array).should == true
22
22
  all_commands.each do |cmd|
@@ -0,0 +1,18 @@
1
+ require "spec/helper"
2
+ describe "FSR::Utils::DTMF module" do
3
+ it "Converts letters to numbers" do
4
+ require "fsr/utils/dtmf"
5
+ FSR::Utils::DTMF.from_string("afr").should.equal '237'
6
+ end
7
+
8
+ it "Doesn't Affect numbers" do
9
+ require "fsr/utils/dtmf"
10
+ FSR::Utils::DTMF.from_string("1234567890").should.equal '1234567890'
11
+ end
12
+
13
+ it "Allows mixed number/letter" do
14
+ require "fsr/utils/dtmf"
15
+ FSR::Utils::DTMF.from_string("1a2d3g4k5n6s7u8z90").should.equal '122334455667788990'
16
+ end
17
+ end
18
+
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 6
8
- - 0
9
- version: 0.6.0
8
+ - 1
9
+ version: 0.6.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jayson Vaughn
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2011-02-18 00:00:00 -06:00
20
+ date: 2011-02-24 00:00:00 -06:00
21
21
  default_executable:
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
@@ -93,6 +93,7 @@ files:
93
93
  - lib/fsr/cmd/sofia_contact.rb
94
94
  - lib/fsr/cmd/status.rb
95
95
  - lib/fsr/cmd/uuid_dump.rb
96
+ - lib/fsr/cmd/uuid_send_dtmf.rb
96
97
  - lib/fsr/cmd/uuid_transfer.rb
97
98
  - lib/fsr/command_socket.rb
98
99
  - lib/fsr/database.rb
@@ -117,6 +118,7 @@ files:
117
118
  - lib/fsr/model/queue.rb
118
119
  - lib/fsr/model/tier.rb
119
120
  - lib/fsr/ostruct.rb
121
+ - lib/fsr/utils/dtmf.rb
120
122
  - lib/fsr/version.rb
121
123
  - lib/rack/middleware.rb
122
124
  - tasks/authors.rake
@@ -161,6 +163,7 @@ files:
161
163
  - spec/fsr/cmd/sofia.rb
162
164
  - spec/fsr/cmd/sofia/profile.rb
163
165
  - spec/fsr/cmd/uuid_dump.rb
166
+ - spec/fsr/cmd/uuid_send_dtmf.rb
164
167
  - spec/fsr/cmd/uuid_transfer.rb
165
168
  - spec/fsr/file_methods.rb
166
169
  - spec/fsr/listener.rb
@@ -168,6 +171,7 @@ files:
168
171
  - spec/fsr/listener/inbound.rb
169
172
  - spec/fsr/listener/outbound.rb
170
173
  - spec/fsr/loading.rb
174
+ - spec/fsr/utils/dtmf.rb
171
175
  has_rdoc: true
172
176
  homepage: http://code.rubyists.com/projects/fs
173
177
  licenses: []
@@ -409,6 +413,7 @@ test_files:
409
413
  - spec/fsr/cmd/sofia.rb
410
414
  - spec/fsr/cmd/sofia/profile.rb
411
415
  - spec/fsr/cmd/uuid_dump.rb
416
+ - spec/fsr/cmd/uuid_send_dtmf.rb
412
417
  - spec/fsr/cmd/uuid_transfer.rb
413
418
  - spec/fsr/file_methods.rb
414
419
  - spec/fsr/listener.rb
@@ -416,3 +421,4 @@ test_files:
416
421
  - spec/fsr/listener/inbound.rb
417
422
  - spec/fsr/listener/outbound.rb
418
423
  - spec/fsr/loading.rb
424
+ - spec/fsr/utils/dtmf.rb