bougyman-freeswitcher 0.1.4 → 0.3.0

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,12 @@
1
+ require 'spec/helper'
2
+ require "fsr/app"
3
+ FSR::App.load_application("fs_break")
4
+
5
+ describe "Testing FSR::App::FsBreak" do
6
+
7
+ it "should break a connection" do
8
+ fs_break = FSR::App::FSBreak.new
9
+ fs_break.sendmsg.should == "call-command: execute\nexecute-app-name: break\n\n"
10
+ end
11
+
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec/helper'
2
+ require "fsr/app"
3
+ FSR::App.load_application("fs_sleep")
4
+
5
+ describe "Testing FSR::App::FsSleep" do
6
+
7
+ it "should put FreeSWITCH leg to sleep for 7000 miliseconds" do
8
+ fs_sleep = FSR::App::FSSleep.new(7000)
9
+ fs_sleep.sendmsg.should == "call-command: execute\nexecute-app-name: sleep\nexecute-app-arg: 7000\n\n"
10
+ end
11
+
12
+ end
@@ -3,10 +3,42 @@ require "fsr/cmd"
3
3
  FSR::Cmd.load_command("originate")
4
4
 
5
5
  describe "Testing FSR::Cmd::Originate" do
6
+ # Invalid originates
7
+ it "Must be passed an argument hash" do
8
+ lambda { FSR::Cmd::Originate.new(nil, :endpoint) }.should.raise(ArgumentError).
9
+ message.should.match(/args \(Passed: <<<.*?>>>\) must be a hash/)
10
+ end
11
+
12
+ it "Should require args[:target_options] to be a hash" do
13
+ lambda { FSR::Cmd::Originate.new(nil, :endpoint => "4000", :target => "user/bougyman", :target_options => 1) }.should.raise(ArgumentError).
14
+ message.should.match(/args\[:target_options\] \(Passed: <<<.*?>>>\) must be a hash/)
15
+ end
16
+
17
+ it "Can not originate without a target" do
18
+ lambda { FSR::Cmd::Originate.new(nil, :endpoint => "4000") }.should.raise(ArgumentError).
19
+ message.should.match(/Cannot originate without a :target set/)
20
+ end
21
+
22
+ it "Can not originate without an endpoint" do
23
+ lambda { FSR::Cmd::Originate.new(nil, :target => "4000") }.should.raise(ArgumentError).
24
+ message.should.match(/Cannot originate without an :endpoint set/)
25
+ end
26
+
6
27
  # Originate to an extension
7
28
  it "Originates calls to extensions" do
8
29
  originate = FSR::Cmd::Originate.new(nil, :target => "user/bougyman", :endpoint => "4000")
9
30
  originate.raw.should == "originate {ignore_early_media=true,originate_timeout=30,origination_caller_id_name=FSR,origination_caller_id_number=8675309}user/bougyman 4000"
10
31
  end
11
32
 
33
+ # Different options choices
34
+ it "Honors timeout in :timeout option" do
35
+ originate = FSR::Cmd::Originate.new(nil, :target => "user/bougyman", :timeout => 10, :endpoint => "4000")
36
+ originate.raw.should == "originate {ignore_early_media=true,originate_timeout=10,origination_caller_id_name=FSR,origination_caller_id_number=8675309}user/bougyman 4000"
37
+ end
38
+
39
+ it "Honors timeout in :target_options[timeout] option" do
40
+ originate = FSR::Cmd::Originate.new(nil, :target => "user/bougyman", :target_options => {:timeout => 10}, :endpoint => "4000")
41
+ originate.raw.should == "originate {ignore_early_media=true,originate_timeout=10,origination_caller_id_name=FSR,origination_caller_id_number=8675309}user/bougyman 4000"
42
+ end
43
+
12
44
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bougyman-freeswitcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jayson Vaughn
@@ -12,7 +12,7 @@ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
14
 
15
- date: 2009-05-11 00:00:00 -07:00
15
+ date: 2009-05-18 00:00:00 -07:00
16
16
  default_executable:
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: "0"
27
27
  version:
28
- description: "========================================================= FreeSWITCHeR Copyright (c) 2009 The Rubyists (Jayson Vaughn, Tj Vanderpoel, Michael Fellinger, Kevin Berry) Distributed under the terms of the MIT License. ========================================================== ABOUT ----- A ruby library for interacting with the \"FreeSWITCH\" (http://www.freeswitch.org) opensource telephony platform REQUIREMENTS ------------ - ruby (>= 1.8) - eventmachine (If you wish to use Outbound and Inbound listener) USAGE ----- An Outbound Event Listener Example that reads and returns DTMF input: -------------------------------------------------------------------- Simply just create a subclass of FSR::Listner::Outbound and all new calls/sessions will invoke the \"session_initiated\" callback method. * NOTE: FSR uses blocks within the 'session_inititated' method to ensure that the next \"freeswich command\" is not executed until the previous \"Freeswitch command\" has finished. This is kicked off by \"answer do\" require 'fsr' require 'fsr/listener/outbound' class OutboundDemo < FSR::Listener::Outbound def session_initiated exten = @session.headers[:caller_caller_id_number] FSR::Log.info \"*** Answering incoming call from #{exten}\" answer do FSR::Log.info \"***Reading DTMF from #{exten}\" read(\"/home/freeswitch/freeswitch/sounds/music/8000/sweet.wav\", 4, 10, \"input\", 7000) do FSR::Log.info \"*** Updating session for #{exten}\" update_session do FSR::Log.info \"***Success, grabbed #{@session.headers[:variable_input].strip} from #{exten}\" hangup #Hangup the call end end end end end FSR.start_oes! OutboundDemo, :port => 8084, :host => \"127.0.0.1\" An Inbound Event Socket Listener example using FreeSWITCHeR's hook system: -------------------------------------------------------------------------- require 'pp' require 'fsr' require \"fsr/listener/inbound\" # EXAMPLE 1 # This adds a hook on CHANNEL_CREATE events. You can also create a method to handle the event you're after. See the next example FSL::Inbound.add_event_hook(:CHANNEL_CREATE) {|event| FSR::Log.info \"*** [#{event.content[:unique_id]}] Channel created - greetings from the hook!\" } # EXAMPLE 2 # Define a method to handle CHANNEL_HANGUP events. def custom_channel_hangup_handler(event) FSR::Log.info \"*** [#{event.content[:unique_id]}] Channel hangup. The event:\" pp event end # This adds a hook for EXAMPLE 2 FSL::Inbound.add_event_hook(:CHANNEL_HANGUP) {|event| custom_channel_hangup_handler(event) } # Start FSR Inbound Listener FSR.start_ies!(FSL::Inbound, :host => \"localhost\", :port => 8021) An Inbound Event Socket Listener example using the on_event callback method instead of hooks: --------------------------------------------------------------------------------------------- require 'pp' require 'fsr' require \"fsr/listener/inbound\" class IesDemo < FSR::Listener::Inbound def on_event(event) pp event.headers pp event.content[:event_name] end end FSR.start_ies!(IesDemo, :host => \"localhost\", :port => 8021) An example of using FSR::CommandSocket to originate a new call in irb: ---------------------------------------------------------------------- irb(main):001:0> require 'fsr' => true irb(main):002:0> FSR.load_all_commands => [:sofia, :originate] irb(main):003:0> sock = FSR::CommandSocket.new => #<FSR::CommandSocket:0xb7a89104 @server=\"127.0.0.1\", @socket=#<TCPSocket:0xb7a8908c>, @port=\"8021\", @auth=\"ClueCon\"> irb(main):007:0> sock.originate(:target => 'sofia/gateway/carlos/8179395222', :endpoint => FSR::App::Bridge.new(\"user/bougyman\")).run => {\"Job-UUID\"=>\"732075a4-7dd5-4258-b124-6284a82a5ae7\", \"body\"=>\"\", \"Content-Type\"=>\"command/reply\", \"Reply-Text\"=>\"+OK Job-UUID: 732075a4-7dd5-4258-b124-6284a82a5ae7\"} SUPPORT ------- Home page at http://code.rubyists.com/projects/fs #rubyists on FreeNode"
28
+ description: "========================================================= FreeSWITCHeR Copyright (c) 2009 The Rubyists (Jayson Vaughn, Tj Vanderpoel, Michael Fellinger, Kevin Berry) Distributed under the terms of the MIT License. ========================================================== ABOUT ----- A ruby library for interacting with the \"FreeSWITCH\" (http://www.freeswitch.org) opensource telephony platform REQUIREMENTS ------------ * ruby (>= 1.8) * eventmachine (If you wish to use Outbound and Inbound listener) USAGE ----- An Outbound Event Listener Example that reads and returns DTMF input: -------------------------------------------------------------------- Simply just create a subclass of FSR::Listner::Outbound and all new calls/sessions will invoke the \"session_initiated\" callback method. <b>NOTE</b>: FSR uses blocks within the 'session_inititated' method to ensure that the next \"freeswich command\" is not executed until the previous \"Freeswitch command\" has finished. This is kicked off by \"answer do\" #!/usr/bin/ruby require 'fsr' require 'fsr/listener/outbound' class OutboundDemo < FSR::Listener::Outbound def session_initiated exten = @session.headers[:caller_caller_id_number] FSR::Log.info \"*** Answering incoming call from #{exten}\" answer do FSR::Log.info \"***Reading DTMF from #{exten}\" read(\"/home/freeswitch/freeswitch/sounds/music/8000/sweet.wav\", 4, 10, \"input\", 7000) do |read_var| FSR::Log.info \"***Success, grabbed #{read_var.strip} from #{exten}\" hangup #Hangup the call end end end end FSR.start_oes! OutboundDemo, :port => 8084, :host => \"127.0.0.1\" An Inbound Event Socket Listener example using FreeSWITCHeR's hook system: -------------------------------------------------------------------------- #!/usr/bin/ruby require 'pp' require 'fsr' require \"fsr/listener/inbound\" # EXAMPLE 1 # This adds a hook on CHANNEL_CREATE events. You can also create a method to handle the event you're after. See the next example FSL::Inbound.add_event_hook(:CHANNEL_CREATE) {|event| FSR::Log.info \"*** [#{event.content[:unique_id]}] Channel created - greetings from the hook!\" } # EXAMPLE 2 # Define a method to handle CHANNEL_HANGUP events. def custom_channel_hangup_handler(event) FSR::Log.info \"*** [#{event.content[:unique_id]}] Channel hangup. The event:\" pp event end # This adds a hook for EXAMPLE 2 FSL::Inbound.add_event_hook(:CHANNEL_HANGUP) {|event| custom_channel_hangup_handler(event) } # Start FSR Inbound Listener FSR.start_ies!(FSL::Inbound, :host => \"localhost\", :port => 8021) An Inbound Event Socket Listener example using the on_event callback method instead of hooks: --------------------------------------------------------------------------------------------- #!/usr/bin/ruby require 'pp' require 'fsr' require \"fsr/listener/inbound\" class IesDemo < FSR::Listener::Inbound def on_event(event) pp event.headers pp event.content[:event_name] end end FSR.start_ies!(IesDemo, :host => \"localhost\", :port => 8021) An example of using FSR::CommandSocket to originate a new call in irb: ---------------------------------------------------------------------- irb(main):001:0> require 'fsr' => true irb(main):002:0> FSR.load_all_commands => [:sofia, :originate] irb(main):003:0> sock = FSR::CommandSocket.new => #<FSR::CommandSocket:0xb7a89104 @server=\"127.0.0.1\", @socket=#<TCPSocket:0xb7a8908c>, @port=\"8021\", @auth=\"ClueCon\"> irb(main):007:0> sock.originate(:target => 'sofia/gateway/carlos/8179395222', :endpoint => FSR::App::Bridge.new(\"user/bougyman\")).run => {\"Job-UUID\"=>\"732075a4-7dd5-4258-b124-6284a82a5ae7\", \"body\"=>\"\", \"Content-Type\"=>\"command/reply\", \"Reply-Text\"=>\"+OK Job-UUID: 732075a4-7dd5-4258-b124-6284a82a5ae7\"} SUPPORT ------- Home page at http://code.rubyists.com/projects/fs #rubyists on FreeNode"
29
29
  email: FreeSWITCHeR@rubyists.com
30
30
  executables: []
31
31
 
@@ -42,14 +42,6 @@ files:
42
42
  - NEWS
43
43
  - README
44
44
  - Rakefile
45
- - examples/bin/cmd_demo.rb
46
- - examples/bin/dtmf_test.rb
47
- - examples/bin/ies_demo.rb
48
- - examples/bin/ies_demo_with_hook.rb
49
- - examples/bin/oes_demo.rb
50
- - examples/dtmf_test.rb
51
- - examples/ies_demo.rb
52
- - examples/ies_demo_with_hook.rb
53
45
  - examples/inbound_event_socket.rb
54
46
  - examples/inbound_socket_events.rb
55
47
  - examples/outbound_event_socket.rb
@@ -97,7 +89,6 @@ files:
97
89
  - lib/fsr/listener/inbound.rb
98
90
  - lib/fsr/listener/inbound/event.rb
99
91
  - lib/fsr/listener/outbound.rb
100
- - lib/fsr/listener/outbound.rb.orig
101
92
  - lib/fsr/model/call.rb
102
93
  - lib/fsr/version.rb
103
94
  - tasks/authors.rake
@@ -116,9 +107,12 @@ files:
116
107
  - tasks/yard.rake
117
108
  - spec/helper.rb
118
109
  - spec/fsr/app.rb
110
+ - spec/fsr/app/answer.rb
119
111
  - spec/fsr/app/bridge.rb
120
112
  - spec/fsr/app/conference.rb
121
113
  - spec/fsr/app/fifo.rb
114
+ - spec/fsr/app/fs_break.rb
115
+ - spec/fsr/app/fs_sleep.rb
122
116
  - spec/fsr/app/hangup.rb
123
117
  - spec/fsr/app/limit.rb
124
118
  - spec/fsr/app/log.rb
@@ -150,8 +144,8 @@ post_install_message: |
150
144
 
151
145
  REQUIREMENTS
152
146
  ------------
153
- - ruby (>= 1.8)
154
- - eventmachine (If you wish to use Outbound and Inbound listener)
147
+ * ruby (>= 1.8)
148
+ * eventmachine (If you wish to use Outbound and Inbound listener)
155
149
 
156
150
  USAGE
157
151
  -----
@@ -162,97 +156,94 @@ post_install_message: |
162
156
  Simply just create a subclass of FSR::Listner::Outbound and all
163
157
  new calls/sessions will invoke the "session_initiated" callback method.
164
158
 
165
- * NOTE: FSR uses blocks within the 'session_inititated' method to ensure
166
- that the next "freeswich command" is not executed until the previous
167
- "Freeswitch command" has finished. This is kicked off by "answer do"
159
+ <b>NOTE</b>: FSR uses blocks within the 'session_inititated' method to ensure that the next "freeswich command" is not executed until the previous "Freeswitch command" has finished. This is kicked off by "answer do"
168
160
 
169
- require 'fsr'
170
- require 'fsr/listener/outbound'
161
+ #!/usr/bin/ruby
162
+ require 'fsr'
163
+ require 'fsr/listener/outbound'
171
164
 
172
- class OutboundDemo < FSR::Listener::Outbound
165
+ class OutboundDemo < FSR::Listener::Outbound
173
166
 
174
- def session_initiated
175
- exten = @session.headers[:caller_caller_id_number]
176
- FSR::Log.info "*** Answering incoming call from #{exten}"
167
+ def session_initiated
168
+ exten = @session.headers[:caller_caller_id_number]
169
+ FSR::Log.info "*** Answering incoming call from #{exten}"
177
170
 
178
- answer do
179
- FSR::Log.info "***Reading DTMF from #{exten}"
180
- read("/home/freeswitch/freeswitch/sounds/music/8000/sweet.wav", 4, 10, "input", 7000) do
181
- FSR::Log.info "*** Updating session for #{exten}"
182
- update_session do
183
- FSR::Log.info "***Success, grabbed #{@session.headers[:variable_input].strip} from #{exten}"
184
- hangup #Hangup the call
185
- end
186
- end
171
+ answer do
172
+ FSR::Log.info "***Reading DTMF from #{exten}"
173
+ read("/home/freeswitch/freeswitch/sounds/music/8000/sweet.wav", 4, 10, "input", 7000) do |read_var|
174
+ FSR::Log.info "***Success, grabbed #{read_var.strip} from #{exten}"
175
+ hangup #Hangup the call
187
176
  end
188
-
189
177
  end
190
178
 
191
179
  end
192
180
 
193
- FSR.start_oes! OutboundDemo, :port => 8084, :host => "127.0.0.1"
181
+ end
194
182
 
183
+ FSR.start_oes! OutboundDemo, :port => 8084, :host => "127.0.0.1"
195
184
 
196
185
  An Inbound Event Socket Listener example using FreeSWITCHeR's hook system:
197
186
  --------------------------------------------------------------------------
198
187
 
199
- require 'pp'
200
- require 'fsr'
201
- require "fsr/listener/inbound"
188
+ #!/usr/bin/ruby
189
+ require 'pp'
190
+ require 'fsr'
191
+ require "fsr/listener/inbound"
202
192
 
203
- # EXAMPLE 1
204
- # This adds a hook on CHANNEL_CREATE events. You can also create a method to handle the event you're after. See the next example
205
- FSL::Inbound.add_event_hook(:CHANNEL_CREATE) {|event| FSR::Log.info "*** [#{event.content[:unique_id]}] Channel created - greetings from the hook!" }
193
+ # EXAMPLE 1
194
+ # This adds a hook on CHANNEL_CREATE events. You can also create a method to handle the event you're after. See the next example
195
+ FSL::Inbound.add_event_hook(:CHANNEL_CREATE) {|event| FSR::Log.info "*** [#{event.content[:unique_id]}] Channel created - greetings from the hook!" }
206
196
 
207
- # EXAMPLE 2
208
- # Define a method to handle CHANNEL_HANGUP events.
209
- def custom_channel_hangup_handler(event)
210
- FSR::Log.info "*** [#{event.content[:unique_id]}] Channel hangup. The event:"
211
- pp event
212
- end
197
+ # EXAMPLE 2
198
+ # Define a method to handle CHANNEL_HANGUP events.
199
+ def custom_channel_hangup_handler(event)
200
+ FSR::Log.info "*** [#{event.content[:unique_id]}] Channel hangup. The event:"
201
+ pp event
202
+ end
213
203
 
214
- # This adds a hook for EXAMPLE 2
215
- FSL::Inbound.add_event_hook(:CHANNEL_HANGUP) {|event| custom_channel_hangup_handler(event) }
204
+ # This adds a hook for EXAMPLE 2
205
+ FSL::Inbound.add_event_hook(:CHANNEL_HANGUP) {|event| custom_channel_hangup_handler(event) }
216
206
 
217
207
 
218
- # Start FSR Inbound Listener
219
- FSR.start_ies!(FSL::Inbound, :host => "localhost", :port => 8021)
208
+ # Start FSR Inbound Listener
209
+ FSR.start_ies!(FSL::Inbound, :host => "localhost", :port => 8021)
220
210
 
221
211
 
222
212
  An Inbound Event Socket Listener example using the on_event callback method instead of hooks:
223
213
  ---------------------------------------------------------------------------------------------
224
214
 
225
- require 'pp'
226
- require 'fsr'
227
- require "fsr/listener/inbound"
215
+ #!/usr/bin/ruby
216
+ require 'pp'
217
+ require 'fsr'
218
+ require "fsr/listener/inbound"
228
219
 
229
220
 
230
- class IesDemo < FSR::Listener::Inbound
231
-
232
- def on_event(event)
233
- pp event.headers
234
- pp event.content[:event_name]
235
- end
221
+ class IesDemo < FSR::Listener::Inbound
236
222
 
223
+ def on_event(event)
224
+ pp event.headers
225
+ pp event.content[:event_name]
237
226
  end
238
227
 
239
- FSR.start_ies!(IesDemo, :host => "localhost", :port => 8021)
228
+ end
229
+
230
+ FSR.start_ies!(IesDemo, :host => "localhost", :port => 8021)
240
231
 
241
232
 
242
233
  An example of using FSR::CommandSocket to originate a new call in irb:
243
234
  ----------------------------------------------------------------------
244
235
 
245
- irb(main):001:0> require 'fsr'
246
- => true
236
+ irb(main):001:0> require 'fsr'
237
+ => true
247
238
 
248
- irb(main):002:0> FSR.load_all_commands
249
- => [:sofia, :originate]
239
+ irb(main):002:0> FSR.load_all_commands
240
+ => [:sofia, :originate]
250
241
 
251
- irb(main):003:0> sock = FSR::CommandSocket.new
252
- => #<FSR::CommandSocket:0xb7a89104 @server="127.0.0.1", @socket=#<TCPSocket:0xb7a8908c>, @port="8021", @auth="ClueCon">
242
+ irb(main):003:0> sock = FSR::CommandSocket.new
243
+ => #<FSR::CommandSocket:0xb7a89104 @server="127.0.0.1", @socket=#<TCPSocket:0xb7a8908c>, @port="8021", @auth="ClueCon">
253
244
 
254
- irb(main):007:0> sock.originate(:target => 'sofia/gateway/carlos/8179395222', :endpoint => FSR::App::Bridge.new("user/bougyman")).run
255
- => {"Job-UUID"=>"732075a4-7dd5-4258-b124-6284a82a5ae7", "body"=>"", "Content-Type"=>"command/reply", "Reply-Text"=>"+OK Job-UUID: 732075a4-7dd5-4258-b124-6284a82a5ae7"}
245
+ irb(main):007:0> sock.originate(:target => 'sofia/gateway/carlos/8179395222', :endpoint => FSR::App::Bridge.new("user/bougyman")).run
246
+ => {"Job-UUID"=>"732075a4-7dd5-4258-b124-6284a82a5ae7", "body"=>"", "Content-Type"=>"command/reply", "Reply-Text"=>"+OK Job-UUID: 732075a4-7dd5-4258-b124-6284a82a5ae7"}
256
247
 
257
248
 
258
249
 
@@ -286,9 +277,12 @@ specification_version: 2
286
277
  summary: A library for interacting with the "FreeSWITCH":http://freeswitch.org telephony platform
287
278
  test_files:
288
279
  - spec/fsr/app.rb
280
+ - spec/fsr/app/answer.rb
289
281
  - spec/fsr/app/bridge.rb
290
282
  - spec/fsr/app/conference.rb
291
283
  - spec/fsr/app/fifo.rb
284
+ - spec/fsr/app/fs_break.rb
285
+ - spec/fsr/app/fs_sleep.rb
292
286
  - spec/fsr/app/hangup.rb
293
287
  - spec/fsr/app/limit.rb
294
288
  - spec/fsr/app/log.rb
@@ -1,19 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'pp'
4
- require File.join(File.dirname(__FILE__), "..", 'lib', 'fsr')
5
- require "fsr/cmd"
6
-
7
- FSR.load_all_commands
8
- sock = FSR::CommandSocket.new
9
-
10
- # Check the status of our server
11
- pp sock.status.run
12
-
13
- # Check max sessions
14
- pp sock.fsctl.max_sessions
15
- # Set max sessions
16
- pp sock.fsctl.max_sessions = 3000
17
-
18
- # Check up a sofia user
19
- pp sock.sofia_contact(:contact => "internal/user@domain.com").run
@@ -1,38 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.join(File.dirname(__FILE__), "..", 'start_common')
3
- require 'eventmachine'
4
- require "fsr/listener/outbound"
5
- require 'pp'
6
- $stdout.flush
7
- FSR.load_all_applications
8
- FSR.load_all_commands
9
- class ConsumerLogin < FSR::Listener::Outbound
10
-
11
- def session_initiated(session, step = 0)
12
- @step ||= step
13
- exten = session.headers[:channel_caller_id_number]
14
- pp session.headers
15
- FSR::Log.info "*** Answering incoming call from #{exten}"
16
- answer # Answer the call
17
- end
18
-
19
- def receive_reply(reply)
20
- exten = @session.headers[:channel_caller_id_number]
21
- @step += 1
22
- case @step
23
- when 1
24
- FSR::Log.info "*** Reading dtmf for #{exten}"
25
- read "/home/freeswitch/freeswitch/sounds/music/8000/sweet.wav",4,10,"test",15000 # read test
26
- when 2
27
- FSR::Log.info "*** updating session for #{exten}"
28
- update_session
29
- when 3
30
- FSR::Log.info "** Success, grabbed #{reply.content[:variable_test].strip} from #{exten}"
31
- FSR::Log.info "*** Hanging up call"
32
- hangup # Hangup the call
33
- end
34
- end
35
-
36
- end
37
-
38
- FSR.start_oes! ConsumerLogin, :port => 8084, :host => "127.0.0.1"
@@ -1,19 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'pp'
4
- require File.join(File.dirname(__FILE__), "..", 'lib', 'fsr')
5
- puts $LOAD_PATH.inspect
6
- $stdout.flush
7
- require "fsr/listener/inbound"
8
-
9
-
10
- class IesDemo < FSR::Listener::Inbound
11
-
12
- def on_event(event)
13
- pp event.headers
14
- pp event.content[:event_name]
15
- end
16
-
17
- end
18
-
19
- FSR.start_ies!(IesDemo, :host => "localhost", :port => 8021)
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'pp'
4
- require File.join(File.dirname(__FILE__), "..", 'lib', 'fsr')
5
- puts $LOAD_PATH.inspect
6
- $stdout.flush
7
- require "fsr/listener/inbound"
8
-
9
- # EXAMPLE 1
10
- # This adds a hook on CHANNEL_CREATE events. You can also create a method to handle the event you're after. See the next example
11
- FSL::Inbound.add_event_hook(:CHANNEL_CREATE) {|event| FSR::Log.info "*** [#{event.content[:unique_id]}] Channel created - greetings from the hook!" }
12
-
13
- # EXAMPLE 2
14
- # Define a method to handle CHANNEL_HANGUP events.
15
- def custom_channel_hangup_handler(event)
16
- FSR::Log.info "*** [#{event.content[:unique_id]}] Channel hangup. The event:"
17
- pp event
18
- end
19
- # This adds a hook for EXAMPLE 2
20
- FSL::Inbound.add_event_hook(:CHANNEL_HANGUP) {|event| custom_channel_hangup_handler(event) }
21
-
22
-
23
- # Start FSR Inbound Listener
24
- FSR.start_ies!(FSL::Inbound, :host => "localhost", :port => 8021)
25
-
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require File.join(File.dirname(__FILE__), "..", 'lib', 'fsr')
4
- puts $LOAD_PATH.inspect
5
- $stdout.flush
6
- require "fsr/listener/outbound"
7
-
8
- class OesDemo < FSR::Listener::Outbound
9
-
10
- def session_initiated(session)
11
- number = session.headers[:caller_caller_id_number] # Grab the inbound caller id
12
- FSR::Log.info "*** Answering incoming call from #{number}"
13
- answer # Answer the call
14
- log("1", "Pong from the FSR event socket!")
15
- set("hangup_after_bridge", "true") # Set a variable
16
- speak 'Hello, This is your phone switch. Have a great day' # use mod_flite to speak
17
- hangup # Hangup the call
18
- end
19
-
20
- end
21
-
22
- FSR.start_oes!(OesDemo, :port => 1888, :host => "localhost")
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require File.join(File.dirname(__FILE__), "..", 'lib', 'fsr')
4
- require "fsr/listener/outbound"
5
- $stdout.flush
6
-
7
- FSR.load_all_applications
8
- FSR.load_all_commands
9
- class DtmfDemo < FSR::Listener::Outbound
10
-
11
- def session_initiated
12
- exten = @session.headers[:caller_caller_id_number]
13
- FSR::Log.info "*** Answering incoming call from #{exten}"
14
- answer # Answer the call
15
- end
16
-
17
- def receive_reply(reply)
18
- exten = @session.headers[:caller_caller_id_number]
19
- case @step
20
- when 1
21
- FSR::Log.info "*** Reading dtmf for #{exten}"
22
- read "/home/freeswitch/freeswitch/sounds/music/8000/sweet.wav",4,10,"test",15000 # read test
23
- when 2
24
- FSR::Log.info "*** updating session for #{exten}"
25
- update_session
26
- when 3
27
- FSR::Log.info "** Success, grabbed #{@session.headers[:variable_test].strip} from #{exten}"
28
- FSR::Log.info "*** Hanging up call"
29
- hangup # Hangup the call
30
- end
31
- end
32
-
33
- end
34
-
35
- FSR.start_oes! DtmfDemo, :port => 8084, :host => "127.0.0.1"