ifbyphone_response 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/README.md +39 -0
- data/lib/ifbyphone_response.rb +108 -0
- data/spec/ifbyphone_response_spec.rb +66 -0
- metadata +50 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NWJhYWFhOWFjNzY1OTBjODVlNTc0MDE1YTNmMmExMzczNDQwNTIyOQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MGViNzQ3MDM5MmFhNWEyNjU2ZjZhZjZlODZlYzQ3NzRlNDMxMDM2Mg==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YTRmYmY2OWRmZjkwM2Y5YTkxNGI1NzIxM2RkMjQ2Y2Q0NDZjNmY2NmNiNDhk
|
10
|
+
ZmQ4MjRkZTNkYTIxNWE4MzhkZGRhMTE0NjRhN2JiNDY1NzYyNzUzOGJiMjgx
|
11
|
+
N2Y3NjQ3OTcxOWViNzE4NGVmZGQ2NDg5NzM2NDY0OWVjOWZhMDE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MjRmMTU3ZDQ0YjgwMzJlZTJiMDk3OTBhZmZmN2NiNTM3YjI2NDFlOTNjOWNh
|
14
|
+
NTY1NzVjOTI2OWE1NjYxYjEyZmQwNGVjYzQxMmNjYTVkODE1YTVjNTAzYTlm
|
15
|
+
MjVmMTEzM2MzNzY3ZmFjNzQyZDIxYjhkYjVlZDQ2N2ZhNGU1ZDg=
|
data/README.md
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
Ifbyphone XML Generator
|
2
|
+
=======================
|
3
|
+
|
4
|
+
[![Build Status](https://travis-ci.org/Opus1no2/Ifbyphone-Responses-Gem.png)](https://travis-ci.org/Opus1no2/Ifbyphone-Responses-Gem)
|
5
|
+
|
6
|
+
A simple interface for creating valid Ifbyphone XML structures
|
7
|
+
|
8
|
+
Installation
|
9
|
+
------------
|
10
|
+
|
11
|
+
```sh
|
12
|
+
gem install ifbypone_response
|
13
|
+
```
|
14
|
+
|
15
|
+
Usage
|
16
|
+
-----
|
17
|
+
|
18
|
+
Using the gem is easy:
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
|
22
|
+
require 'ifbyphone_response'
|
23
|
+
|
24
|
+
route = Route.new
|
25
|
+
|
26
|
+
# Performa a blind transfer
|
27
|
+
route.transfer(952457****)
|
28
|
+
|
29
|
+
# Route to an IVR
|
30
|
+
route.survo(1234)
|
31
|
+
|
32
|
+
# Gracefully end a call
|
33
|
+
route.hangup
|
34
|
+
|
35
|
+
```
|
36
|
+
|
37
|
+
License
|
38
|
+
--------
|
39
|
+
MIT
|
@@ -0,0 +1,108 @@
|
|
1
|
+
require 'rexml/document'
|
2
|
+
|
3
|
+
class Route
|
4
|
+
include REXML
|
5
|
+
|
6
|
+
# Initialize new dom doc and global elements
|
7
|
+
def initialize
|
8
|
+
@doc = Document.new
|
9
|
+
@action = @doc.add_element('action')
|
10
|
+
@param = Element.new('parameter')
|
11
|
+
end
|
12
|
+
|
13
|
+
# Performa a blind transfer
|
14
|
+
#
|
15
|
+
# @param [int] num | transfer number
|
16
|
+
# @return [string]
|
17
|
+
def transfer(num)
|
18
|
+
@action.add_element('app').text = 'transfer'
|
19
|
+
@action.add_element(@param)
|
20
|
+
@param.add_element('destination').text = num
|
21
|
+
return @doc.to_s
|
22
|
+
end
|
23
|
+
|
24
|
+
# Route a caller to an IVR app
|
25
|
+
#
|
26
|
+
# @param [int] id | IVR ID
|
27
|
+
# @param [hash] usr_param | customer user parameters
|
28
|
+
# @pt [string] | user defined string
|
29
|
+
# @return [string]
|
30
|
+
def survo(id, usr_param={}, pt='')
|
31
|
+
self.helper('survo', id)
|
32
|
+
|
33
|
+
if usr_param.any?
|
34
|
+
params = @param.add_element('user_params')
|
35
|
+
usr_param.each do |k,v|
|
36
|
+
params.add_element(k).text = v
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
unless pt.nil?
|
41
|
+
@param.add_element('pt').text = pt
|
42
|
+
end
|
43
|
+
return @doc.to_s
|
44
|
+
end
|
45
|
+
|
46
|
+
# Route caller to a findme (hunt group) app
|
47
|
+
#
|
48
|
+
# @param [int] id | findme ID
|
49
|
+
# @return [string]
|
50
|
+
def findme(id)
|
51
|
+
self.helper('findme',id)
|
52
|
+
return @doc.to_s
|
53
|
+
end
|
54
|
+
|
55
|
+
# Dynamically create a hunt group
|
56
|
+
#
|
57
|
+
# @param [array] list | list of transfer numbers
|
58
|
+
# @param [hash] config | additional options
|
59
|
+
# @return [string]
|
60
|
+
def findme_list(list, config={})
|
61
|
+
@action.add_element('app').text = 'findme'
|
62
|
+
@action.add_element(@param)
|
63
|
+
@param.add_element('phone_list').text = list.join('|')
|
64
|
+
|
65
|
+
if config.any?
|
66
|
+
config.each do |k,v|
|
67
|
+
@param.add_element(k).text = v
|
68
|
+
end
|
69
|
+
end
|
70
|
+
return @doc.to_s
|
71
|
+
end
|
72
|
+
|
73
|
+
# Route caller to a virtual receptionist
|
74
|
+
#
|
75
|
+
# @param [int] id | VR ID
|
76
|
+
# @return [string]
|
77
|
+
def virtual_receptionist(id)
|
78
|
+
self.helper('vr',id)
|
79
|
+
return @doc.to_s
|
80
|
+
end
|
81
|
+
|
82
|
+
# Route caller to a voicemail app
|
83
|
+
#
|
84
|
+
# @param [int] int | VM ID
|
85
|
+
# @return [string]
|
86
|
+
def voicemail(id)
|
87
|
+
self.helper('voicemail',id)
|
88
|
+
return @doc.to_s
|
89
|
+
end
|
90
|
+
|
91
|
+
# Gracefully hangu up a call
|
92
|
+
#
|
93
|
+
# @return [string]
|
94
|
+
def hangup
|
95
|
+
@action.add_element('app').text = 'hangup'
|
96
|
+
return @doc.to_s
|
97
|
+
end
|
98
|
+
|
99
|
+
# Convenience method
|
100
|
+
#
|
101
|
+
# @param [string] app
|
102
|
+
# @param [int] id
|
103
|
+
def helper(app, id)
|
104
|
+
@action.add_element('app').text = app
|
105
|
+
@action.add_element(@param)
|
106
|
+
@param.add_element('id').text = id
|
107
|
+
end
|
108
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), '..', 'lib', 'ifbyphone_response')
|
4
|
+
|
5
|
+
describe Route do
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
@route = Route.new
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "#hangup" do
|
12
|
+
it 'Should respond with valid xml' do
|
13
|
+
result = @route.hangup
|
14
|
+
result.should eql '<action><app>hangup</app></action>'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "#transfer" do
|
19
|
+
it 'should respond with valid xml' do
|
20
|
+
result = @route.voicemail(1234)
|
21
|
+
result.should == '<action><app>voicemail</app><parameter><id>1234</id></parameter></action>'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "#trasnfer" do
|
26
|
+
it 'should respond with valid xml' do
|
27
|
+
result = @route.transfer(1112223333)
|
28
|
+
result.should == '<action><app>transfer</app><parameter><destination>1112223333</destination></parameter></action>'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "#survo" do
|
33
|
+
it 'should respond with valid xml' do
|
34
|
+
result = @route.survo(1234, {'foo' => 'bar'}, 'passthrough')
|
35
|
+
result.should == '<action><app>survo</app><parameter><id>1234</id><user_params><foo>bar</foo></user_params><pt>passthrough</pt></parameter></action>'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "#findme" do
|
40
|
+
it 'should respond with valid xml' do
|
41
|
+
result = @route.findme(1234)
|
42
|
+
result.should == '<action><app>findme</app><parameter><id>1234</id></parameter></action>'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "#findme_list" do
|
47
|
+
it 'should respond with valid xml' do
|
48
|
+
result = @route.findme_list([1112223333, 2223334444], {'nextactionitem' => 7})
|
49
|
+
result.should == '<action><app>findme</app><parameter><phone_list>1112223333|2223334444</phone_list><nextactionitem>7</nextactionitem></parameter></action>'
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "#virtual_receptionist" do
|
54
|
+
it 'should resond with valid xml' do
|
55
|
+
result = @route.virtual_receptionist(1234)
|
56
|
+
result.should == '<action><app>vr</app><parameter><id>1234</id></parameter></action>'
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "#voicemail" do
|
61
|
+
it 'should respond wiht valid xml' do
|
62
|
+
result = @route.voicemail(1234)
|
63
|
+
result.should == '<action><app>voicemail</app><parameter><id>1234</id></parameter></action>'
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
metadata
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ifbyphone_response
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Travis Tillotson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-07-27 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Convenience class that provides an interface for creating valid Ifbyphone
|
14
|
+
XML responses
|
15
|
+
email:
|
16
|
+
- tillotson.travis@gmail.com
|
17
|
+
executables: []
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files:
|
20
|
+
- README.md
|
21
|
+
files:
|
22
|
+
- lib/ifbyphone_response.rb
|
23
|
+
- README.md
|
24
|
+
- spec/ifbyphone_response_spec.rb
|
25
|
+
homepage: https://github.com/Opus1no2/Ifbyphone-response-Gem
|
26
|
+
licenses:
|
27
|
+
- MIT
|
28
|
+
metadata: {}
|
29
|
+
post_install_message:
|
30
|
+
rdoc_options: []
|
31
|
+
require_paths:
|
32
|
+
- lib
|
33
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ! '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
requirements: []
|
44
|
+
rubyforge_project:
|
45
|
+
rubygems_version: 2.0.4
|
46
|
+
signing_key:
|
47
|
+
specification_version: 4
|
48
|
+
summary: Interface for creating valid XML responses
|
49
|
+
test_files:
|
50
|
+
- spec/ifbyphone_response_spec.rb
|