aastra_xml_api 1.0.0 → 1.0.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.
- checksums.yaml +4 -4
- data/.ruby-version +1 -0
- data/README.md +10 -2
- data/aastra_xml_api.gemspec +1 -1
- data/lib/aastra_xml_api.rb +1 -1
- data/lib/aastra_xml_api/array_extensions.rb +61 -0
- data/lib/aastra_xml_api/phone.rb +205 -0
- data/lib/aastra_xml_api/phone_configuration.rb +56 -0
- data/lib/aastra_xml_api/phone_configuration_entry.rb +43 -0
- data/lib/aastra_xml_api/phone_directory.rb +122 -0
- data/lib/aastra_xml_api/phone_directory_entry.rb +34 -0
- data/lib/aastra_xml_api/phone_execute.rb +60 -0
- data/lib/aastra_xml_api/phone_execute_entry.rb +32 -0
- data/lib/aastra_xml_api/phone_formatted_text_screen.rb +119 -0
- data/lib/aastra_xml_api/phone_formatted_text_screen_entry.rb +50 -0
- data/lib/aastra_xml_api/phone_gd_image.rb +187 -0
- data/lib/aastra_xml_api/phone_icon_entry.rb +29 -0
- data/lib/aastra_xml_api/phone_image_menu.rb +145 -0
- data/lib/aastra_xml_api/phone_image_menu_entry.rb +27 -0
- data/lib/aastra_xml_api/phone_image_screen.rb +141 -0
- data/lib/aastra_xml_api/phone_input_screen.rb +251 -0
- data/lib/aastra_xml_api/phone_input_screen_entry.rb +86 -0
- data/lib/aastra_xml_api/phone_softkey_entry.rb +39 -0
- data/lib/aastra_xml_api/phone_status.rb +68 -0
- data/lib/aastra_xml_api/phone_status_entry.rb +58 -0
- data/lib/aastra_xml_api/phone_text_menu.rb +148 -0
- data/lib/aastra_xml_api/phone_text_menu_entry.rb +54 -0
- data/lib/aastra_xml_api/phone_text_screen.rb +95 -0
- data/lib/aastra_xml_api/version.rb +1 -1
- metadata +28 -27
- data/lib/aastra_xml_api/AastraIPPhone.rb +0 -203
- data/lib/aastra_xml_api/AastraIPPhoneConfiguration.rb +0 -55
- data/lib/aastra_xml_api/AastraIPPhoneConfigurationEntry.rb +0 -41
- data/lib/aastra_xml_api/AastraIPPhoneDirectory.rb +0 -119
- data/lib/aastra_xml_api/AastraIPPhoneDirectoryEntry.rb +0 -32
- data/lib/aastra_xml_api/AastraIPPhoneExecute.rb +0 -58
- data/lib/aastra_xml_api/AastraIPPhoneExecuteEntry.rb +0 -30
- data/lib/aastra_xml_api/AastraIPPhoneFormattedTextScreen.rb +0 -117
- data/lib/aastra_xml_api/AastraIPPhoneFormattedTextScreenEntry.rb +0 -48
- data/lib/aastra_xml_api/AastraIPPhoneGDImage.rb +0 -185
- data/lib/aastra_xml_api/AastraIPPhoneIconEntry.rb +0 -27
- data/lib/aastra_xml_api/AastraIPPhoneImageMenu.rb +0 -143
- data/lib/aastra_xml_api/AastraIPPhoneImageMenuEntry.rb +0 -25
- data/lib/aastra_xml_api/AastraIPPhoneImageScreen.rb +0 -139
- data/lib/aastra_xml_api/AastraIPPhoneInputScreen.rb +0 -249
- data/lib/aastra_xml_api/AastraIPPhoneInputScreenEntry.rb +0 -84
- data/lib/aastra_xml_api/AastraIPPhoneSoftkeyEntry.rb +0 -37
- data/lib/aastra_xml_api/AastraIPPhoneStatus.rb +0 -66
- data/lib/aastra_xml_api/AastraIPPhoneStatusEntry.rb +0 -56
- data/lib/aastra_xml_api/AastraIPPhoneTextMenu.rb +0 -145
- data/lib/aastra_xml_api/AastraIPPhoneTextMenuEntry.rb +0 -52
- data/lib/aastra_xml_api/AastraIPPhoneTextScreen.rb +0 -93
- data/lib/aastra_xml_api/arraynatsort.rb +0 -63
@@ -1,145 +0,0 @@
|
|
1
|
-
################################################################################
|
2
|
-
# Aastra XML API Classes - AastraIPPhoneTextMenu
|
3
|
-
# Copyright Aastra Telecom 2008
|
4
|
-
#
|
5
|
-
# AastraIPPhoneTextMenu object.
|
6
|
-
#
|
7
|
-
# Public methods
|
8
|
-
#
|
9
|
-
# Inherited from AastraIPPhone
|
10
|
-
# setTitle(Title) to setup the title of an object (optional)
|
11
|
-
# setTitleWrap to set the title to be wrapped on 2 lines (optional)
|
12
|
-
# setDestroyOnExit to set DestroyOnExit parameter to "yes" (optional)
|
13
|
-
# setCancelAction(uri) to set the cancel parameter with the URI to be called on Cancel (optional)
|
14
|
-
# setBeep to enable a notification beep with the object (optional)
|
15
|
-
# setLockIn to set the Lock-in tag to 'yes' (optional)
|
16
|
-
# setAllowAnswer to set the allowAnswer tag to 'yes' (optional)
|
17
|
-
# setTimeout(timeout) to define a specific timeout for the XML object (optional)
|
18
|
-
# addSoftkey(index,label,uri,icon_index) to add custom softkeys to the object (optional)
|
19
|
-
# addIcon(index,icon) to add custom icons to the object (optional)
|
20
|
-
# setRefresh(timeout,URL) to add Refresh parameters to the object (optional)
|
21
|
-
#
|
22
|
-
# Specific to the object
|
23
|
-
# setDefaultIndex(index) to set the default selection in the list (optional)
|
24
|
-
# setStyle(style) to set the style of the list numbered/none/radio (optional)
|
25
|
-
# setWrapList to allow 2 lines items (optional)
|
26
|
-
# addEntry(name,url,selection,icon,dial) to add an element in the list to be displayed
|
27
|
-
# natsortbyname to order the list
|
28
|
-
#
|
29
|
-
# Example 1
|
30
|
-
# require 'AastraIPPhoneTextMenu.rb'
|
31
|
-
# menu = AastraIPPhoneTextMenu.new
|
32
|
-
# menu.setTitle('Title')
|
33
|
-
# menu.setDestroyOnExit
|
34
|
-
# menu.setDeFaultIndex('3')
|
35
|
-
# menu.addEntry('Choice 2', 'http://myserver.com/script.php?choice=2', 'Value=2')
|
36
|
-
# menu.addEntry('Choice 1', 'http://myserver.com/script.php?choice=1', 'Value=1')
|
37
|
-
# menu.addEntry('Choice 3', 'http://myserver.com/script.php?choice=3', 'Value=3')
|
38
|
-
# menu.natsortByName
|
39
|
-
# menu.addSoftkey('1', 'My Select', 'http://myserver.com/script.php?action=1')
|
40
|
-
# menu.addSoftkey('6', 'Exit', 'SoftKey:Exit')
|
41
|
-
# aastra_output menu
|
42
|
-
#
|
43
|
-
# Example 2
|
44
|
-
# require 'AastraIPPhoneTextMenu.rb'
|
45
|
-
# menu = AastraIPPhoneTextMenu.new
|
46
|
-
# menu.setTitle('Title')
|
47
|
-
# menu.setDestroyOnExit
|
48
|
-
# menu.setDeFaultIndex('2')
|
49
|
-
# menu.addEntry('Choice 2', 'http://myserver.com/script.php?choice=2', 'Value=2','1')
|
50
|
-
# menu.addEntry('Choice 1', 'http://myserver.com/script.php?choice=1', 'Value=1','2')
|
51
|
-
# menu.addEntry('Choice 3', 'http://myserver.com/script.php?choice=3', 'Value=3','3')
|
52
|
-
# menu.natsortByName
|
53
|
-
# menu.addSoftkey('1', 'My Select', 'http://myserver.com/script.php?action=1')
|
54
|
-
# menu.addSoftkey('6', 'Exit', 'SoftKey:Exit')
|
55
|
-
# menu.addIcon('1', 'Icon:PhoneOnHook')
|
56
|
-
# menu.addIcon('2', 'Icon:PhoneOffHook')
|
57
|
-
# menu.addIcon('3', 'Icon:PhoneRinging')
|
58
|
-
# aastra_output menu
|
59
|
-
#
|
60
|
-
################################################################################
|
61
|
-
|
62
|
-
class AastraIPPhoneTextMenu < AastraIPPhone
|
63
|
-
@defaultIndex
|
64
|
-
@style
|
65
|
-
@wraplist
|
66
|
-
@maxitems
|
67
|
-
|
68
|
-
# Sets the default index to highlight when first shown.
|
69
|
-
def setDefaultIndex(defaultIndex)
|
70
|
-
@defaultIndex = defaultIndex
|
71
|
-
end
|
72
|
-
|
73
|
-
# Set the style to one of numbered (default), none, or radio.
|
74
|
-
def setStyle(style)
|
75
|
-
@style = style
|
76
|
-
end
|
77
|
-
|
78
|
-
# Add a menu entry with name displayed and calls url when selected. The
|
79
|
-
# selection option is the value appended to a custom softkey URL when
|
80
|
-
# this item is highlighted. icon is a reference to an included icon
|
81
|
-
# that is shown with the menu entry. dial is what is called when
|
82
|
-
# the user hits a softkey with the URI "SoftKey:Dial2".
|
83
|
-
def addEntry(name, url, selection=nil, icon=nil, dial=nil)
|
84
|
-
@entries += [AastraIPPhoneTextMenuEntry.new(name, url, selection, icon, dial)]
|
85
|
-
end
|
86
|
-
|
87
|
-
# Allows entries in the list to wrap.
|
88
|
-
def setWrapList
|
89
|
-
@wraplist = "yes"
|
90
|
-
end
|
91
|
-
|
92
|
-
# Use natural order sorting to sort the menu by name.
|
93
|
-
def natsortByName
|
94
|
-
tmparray = []
|
95
|
-
linklist = {}
|
96
|
-
for i in 0..@entries.size-1
|
97
|
-
tmparray += [@entries[i].getName]
|
98
|
-
linklist[@entries[i].getName] = i
|
99
|
-
end
|
100
|
-
tmparray.natsort!
|
101
|
-
newentries = []
|
102
|
-
tmparray.each do |name|
|
103
|
-
newentries += [@entries[linklist[name]]]
|
104
|
-
end
|
105
|
-
@entries = newentries
|
106
|
-
end
|
107
|
-
|
108
|
-
# Create XML text output.
|
109
|
-
def render
|
110
|
-
@maxitems = 30 if @maxitems.nil?
|
111
|
-
xml = "<AastraIPPhoneTextMenu"
|
112
|
-
xml += " destroyOnExit=\"yes\"" if @destroyOnExit == "yes"
|
113
|
-
xml += " cancelAction=\"#{escape(@cancelAction)}\"" if not @cancelAction.nil?
|
114
|
-
xml += " defaultIndex=\"#{@defaultIndex}\"" if not @defaultIndex.nil?
|
115
|
-
xml += " style=\"#{@style}\"" if not @style.nil?
|
116
|
-
xml += " Beep=\"yes\"" if @beep == "yes"
|
117
|
-
xml += " LockIn=\"yes\"" if @lockin == "yes"
|
118
|
-
xml += " wrapList=\"yes\"" if @wraplist == "yes"
|
119
|
-
xml += " allowAnswer=\"yes\"" if @allowAnswer == "yes"
|
120
|
-
xml += " Timeout=\"#{@timeout}\"" if @timeout != 0
|
121
|
-
xml += ">\n"
|
122
|
-
if not @title.nil? then
|
123
|
-
xml += "<Title"
|
124
|
-
xml += " wrap=\"yes\"" if @title_wrap == "yes"
|
125
|
-
xml += ">#{escape(@title)}</Title>\n"
|
126
|
-
end
|
127
|
-
index = 0
|
128
|
-
@entries.each do |entry|
|
129
|
-
xml += entry.render if index < @maxitems
|
130
|
-
index += 1
|
131
|
-
end
|
132
|
-
@softkeys.each { |softkey| xml += softkey.render }
|
133
|
-
iconList = 0
|
134
|
-
@icons.each do |icon|
|
135
|
-
if iconList == 0 then
|
136
|
-
xml += "<IconList>\n"
|
137
|
-
iconList = 1
|
138
|
-
end
|
139
|
-
xml += icon.render
|
140
|
-
end
|
141
|
-
xml += "</IconList>\n" if iconList != 0
|
142
|
-
xml += "</AastraIPPhoneTextMenu>\n"
|
143
|
-
return xml
|
144
|
-
end
|
145
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
################################################################################
|
2
|
-
# Aastra XML API Classes - AastraIPPhoneTextMenuEntry
|
3
|
-
# Copyright Aastra Telecom 2008
|
4
|
-
#
|
5
|
-
# Ruby adaptation by Carlton O'Riley
|
6
|
-
#
|
7
|
-
# Internal class for AastraIPPhoneTextMenu object.
|
8
|
-
################################################################################
|
9
|
-
|
10
|
-
class AastraIPPhoneTextMenuEntry < AastraIPPhone
|
11
|
-
@name
|
12
|
-
@url
|
13
|
-
@selection
|
14
|
-
@icon
|
15
|
-
@dial
|
16
|
-
|
17
|
-
# Create new text menu entry with given name to be displayed, url to be
|
18
|
-
# called when selected. Selection is the value appended to a custom URI
|
19
|
-
# attached to a softkey. This will be added as either ?selection=value
|
20
|
-
# or &selection=value depending on if the URI already has parameters.
|
21
|
-
# icon is the index of the icon to be displayed to the left of the
|
22
|
-
# given entry. dial is the number to call if the user pushes a softkey
|
23
|
-
# with URI SoftKey:Dial2.
|
24
|
-
def initialize(name, url, selection, icon, dial)
|
25
|
-
@name = name
|
26
|
-
@url = url
|
27
|
-
@selection = selection
|
28
|
-
@icon = icon
|
29
|
-
@dial = dial
|
30
|
-
@selection = nil if @selection == ''
|
31
|
-
@icon = nil if @icon == ''
|
32
|
-
@dial = nil if @dial == ''
|
33
|
-
end
|
34
|
-
|
35
|
-
# Returns the name associated with this entry.
|
36
|
-
def getName
|
37
|
-
return @name
|
38
|
-
end
|
39
|
-
|
40
|
-
# Create XML text output of this entry.
|
41
|
-
def render
|
42
|
-
xml = "<MenuItem"
|
43
|
-
xml += " icon=\"#{@icon}\"" if not @icon.nil?
|
44
|
-
xml += ">\n"
|
45
|
-
xml += "<Prompt>#{escape(@name)}</Prompt>\n"
|
46
|
-
xml += "<URI>#{escape(@url)}</URI>\n"
|
47
|
-
xml += "<Selection>#{escape(@selection)}</Selection>\n" if not @selection.nil?
|
48
|
-
xml += "<Dial>#{@dial}</Dial>\n" if not @dial.nil?
|
49
|
-
xml += "</MenuItem>\n"
|
50
|
-
return xml
|
51
|
-
end
|
52
|
-
end
|
@@ -1,93 +0,0 @@
|
|
1
|
-
################################################################################
|
2
|
-
# Aastra XML API Classes - AastraIPPhoneTextScreen
|
3
|
-
# Copyright Aastra Telecom 2008
|
4
|
-
#
|
5
|
-
# Ruby adaptation by Carlton O'Riley
|
6
|
-
#
|
7
|
-
# AastraIPPhoneTextScreen object.
|
8
|
-
#
|
9
|
-
# Public methods
|
10
|
-
#
|
11
|
-
# Inherited from AastraIPPhone
|
12
|
-
# setTitle(Title) to setup the title of an object (optional)
|
13
|
-
# setTitleWrap to set the title to be wrapped on 2 lines (optional)
|
14
|
-
# setDestroyOnExit to set DestroyonExit parameter to 'yes', 'no' by default (optional)
|
15
|
-
# setCancelAction(uri) to set the cancel parameter with the URI to be called on Cancel (optional)
|
16
|
-
# setBeep to enable a notification beep with the object (optional)
|
17
|
-
# setLockIn to set the Lock-in tag to 'yes' (optional)
|
18
|
-
# setAllowAnswer to set the allowAnswer tag to 'yes' (optional)
|
19
|
-
# setTimeout(timeout) to define a specific timeout for the XML object (optional)
|
20
|
-
# addSoftkey(index,label,uri,iconindex) to add custom softkeys to the object (optional)
|
21
|
-
# addIcon(index,icon) to add custom icons to the object (optional)
|
22
|
-
# setRefresh(timeout,URL) to add Refresh parameters to the object (optional)
|
23
|
-
#
|
24
|
-
# Specific to the object
|
25
|
-
# setText(text) to set the text to be displayed.
|
26
|
-
# setDoneAction(uri) to set the URI to be called when the user selects the default "Done" key (optional)
|
27
|
-
# setAllowDTMF to allow DTMF passthrough on the object
|
28
|
-
#
|
29
|
-
# Example
|
30
|
-
# require 'AastraIPPhoneTextScreen.rb'
|
31
|
-
# text = AastraIPPhoneTextScreen.new
|
32
|
-
# text.setTitle('Title')
|
33
|
-
# text.setText('Text to be displayed.')
|
34
|
-
# text.setDestroyOnExit
|
35
|
-
# text.addSoftkey('1', 'Mail', 'http://myserver.com/script.php?action=1', '1')
|
36
|
-
# text.addSoftkey('6', 'Exit', 'SoftKey:Exit')
|
37
|
-
# text.addIcon('1', 'Icon:Envelope')
|
38
|
-
# aastra_output text
|
39
|
-
#
|
40
|
-
################################################################################
|
41
|
-
|
42
|
-
class AastraIPPhoneTextScreen < AastraIPPhone
|
43
|
-
@text
|
44
|
-
@doneAction
|
45
|
-
@allowDTMF
|
46
|
-
|
47
|
-
# Set the text to be displayed on this screen.
|
48
|
-
def setText(text)
|
49
|
-
@text = text
|
50
|
-
end
|
51
|
-
|
52
|
-
# Set the URI to be called when done viewing this screen.
|
53
|
-
def setDoneAction(uri)
|
54
|
-
@doneAction = uri
|
55
|
-
end
|
56
|
-
|
57
|
-
# When set allows DTMF tones to be sent while viewing this screen.
|
58
|
-
def setAllowDTMF
|
59
|
-
@allowDTMF = "yes"
|
60
|
-
end
|
61
|
-
|
62
|
-
# Create XML text output.
|
63
|
-
def render
|
64
|
-
xml = "<AastraIPPhoneTextScreen"
|
65
|
-
xml += " destroyOnExit=\"yes\"" if @destroyOnExit == "yes"
|
66
|
-
xml += " cancelAction=\"#{escape(@cancelAction)}\"" if not @cancelAction.nil?
|
67
|
-
xml += " doneAction=\"#{escape(@doneAction)}\"" if not @doneAction.nil?
|
68
|
-
xml += " Beep=\"yes\"" if @beep == "yes"
|
69
|
-
xml += " Timeout=\"#{@timeout}\"" if @timeout != 0
|
70
|
-
xml += " LockIn=\"yes\"" if @lockin == "yes"
|
71
|
-
xml += " allowAnswer=\"yes\"" if @allowAnswer == "yes"
|
72
|
-
xml += " allowDTMF=\"yes\"" if @allowDTMF == "yes"
|
73
|
-
xml += ">\n"
|
74
|
-
if not @title.nil? then
|
75
|
-
xml += "<Title"
|
76
|
-
xml += " wrap=\"yes\"" if @title_wrap == "yes"
|
77
|
-
xml += ">#{escape(@title)}</Title>\n"
|
78
|
-
end
|
79
|
-
xml += "<Text>#{escape(@text)}</Text>\n"
|
80
|
-
@softkeys.each { |softkey| xml += softkey.render }
|
81
|
-
iconList = 0
|
82
|
-
@icons.each do |icon|
|
83
|
-
if iconList == 0 then
|
84
|
-
xml += "<IconList>\n"
|
85
|
-
iconList = 1
|
86
|
-
end
|
87
|
-
xml += icon.render
|
88
|
-
end
|
89
|
-
xml += "</IconList>\n" if iconList != 0
|
90
|
-
xml += "</AastraIPPhoneTextScreen>\n"
|
91
|
-
return xml
|
92
|
-
end
|
93
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
# Performs natural order sorting of an array. Natural order is the way in
|
2
|
-
# which a human might sort a list of files that are incremented by
|
3
|
-
# one. They will sort normally as long as they have leading zeros,
|
4
|
-
# however this doesn't look good and is hard to read. What natural sorting
|
5
|
-
# does is allow the following to be sorted properly (as shown):
|
6
|
-
#
|
7
|
-
# file1
|
8
|
-
# file2
|
9
|
-
# file4
|
10
|
-
# file22
|
11
|
-
# file30
|
12
|
-
# file100
|
13
|
-
#
|
14
|
-
# Code used is from http://zijab.blogspot.com/2007/05/natural-order-string-comparison-for.html
|
15
|
-
#
|
16
|
-
|
17
|
-
class Array
|
18
|
-
|
19
|
-
# Method which sort an array composed of strings with embedded numbers by
|
20
|
-
# the 'natural' representation of numbers inside a string.
|
21
|
-
def natsort
|
22
|
-
|
23
|
-
reg_number = /\d+/
|
24
|
-
|
25
|
-
# We call the sort method of the Array class.
|
26
|
-
self.sort do |str1, str2|
|
27
|
-
|
28
|
-
# We try to find an embedded number
|
29
|
-
a = str1.match(reg_number)
|
30
|
-
b = str2.match(reg_number)
|
31
|
-
|
32
|
-
# If there is no number
|
33
|
-
if [a,b].include? nil
|
34
|
-
str1 <=> str2
|
35
|
-
else
|
36
|
-
while true
|
37
|
-
begin
|
38
|
-
# We compare strings before the number. If there
|
39
|
-
# are equal, we will have to compare the numbers
|
40
|
-
if (comp = a.pre_match <=> b.pre_match) == 0
|
41
|
-
# If the numbers are equal
|
42
|
-
comp = (a[0] == b[0]) ? comp = a[0] + a.post_match <=> b[0] + b.post_match :
|
43
|
-
comp = a[0].to_i <=> b[0].to_i
|
44
|
-
end
|
45
|
-
|
46
|
-
str1, str2 = a.post_match, b.post_match
|
47
|
-
a = str1.match(reg_number)
|
48
|
-
b = str2.match(reg_number)
|
49
|
-
rescue
|
50
|
-
break
|
51
|
-
end
|
52
|
-
end
|
53
|
-
comp
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
# Same as 'natsort' but replace in place.
|
59
|
-
def natsort!
|
60
|
-
self.replace(natsort)
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|