summaryrefslogtreecommitdiff
path: root/misc/freeswitch/scripts/phones/uacsta.lua
diff options
context:
space:
mode:
authorStefan Wintermeyer <stefan.wintermeyer@amooma.de>2012-12-17 12:01:45 +0100
committerStefan Wintermeyer <stefan.wintermeyer@amooma.de>2012-12-17 12:01:45 +0100
commitb80bd744ad873f6fc43018bc4bfb90677de167bd (patch)
tree072c4b0e33d442528555b82c415f5e7a1712b2b0 /misc/freeswitch/scripts/phones/uacsta.lua
parent3e706c2025ecc5523e81ad649639ef2ff75e7bac (diff)
Start of GS5.
Diffstat (limited to 'misc/freeswitch/scripts/phones/uacsta.lua')
-rw-r--r--misc/freeswitch/scripts/phones/uacsta.lua100
1 files changed, 100 insertions, 0 deletions
diff --git a/misc/freeswitch/scripts/phones/uacsta.lua b/misc/freeswitch/scripts/phones/uacsta.lua
new file mode 100644
index 0000000..61cb788
--- /dev/null
+++ b/misc/freeswitch/scripts/phones/uacsta.lua
@@ -0,0 +1,100 @@
+-- CommonModule: Uacsta
+--
+module(...,package.seeall)
+
+Uacsta = {}
+
+-- Create Uacsta object
+function Uacsta.new(self, arg)
+ arg = arg or {}
+ object = arg.object or {}
+ setmetatable(object, self)
+ self.__index = self
+ self.log = arg.log;
+
+ return object
+end
+
+function Uacsta.send(self, sip_account, domain, body)
+ local event = freeswitch.Event("NOTIFY");
+ event:addHeader("profile", "gemeinschaft");
+ event:addHeader("event-string", "uaCSTA");
+ event:addHeader("user", sip_account);
+ event:addHeader("host", domain);
+ event:addHeader("content-type", "application/csta+xml");
+ event:addBody(body);
+ event:fire();
+end
+
+function Uacsta.make_call(self, sip_account, domain, number)
+ local body =
+[[<?xml version="1.0" encoding="UTF-8"?>
+<MakeCall xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed4">
+ <callingDevice>]] .. sip_account .. [[</callingDevice>
+ <calledDirectoryNumber>]] .. number .. [[</calledDirectoryNumber>
+ <autoOriginate>doNotPrompt</autoOriginate>
+</MakeCall>]]
+
+ self:send(sip_account, domain, body);
+end
+
+function Uacsta.answer_call(self, sip_account, domain)
+ local body =
+[[<?xml version="1.0" encoding="UTF-8"?>
+<AnswerCall xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed4">
+ <callToBeAnswered>
+ <deviceID>]] .. sip_account .. [[</deviceID>
+ </callToBeAnswered>
+</AnswerCall>]]
+
+ self:send(sip_account, domain, body);
+end
+
+function Uacsta.set_microphone_mute(self, sip_account, domain, value)
+ local body =
+[[<?xml version="1.0" encoding="UTF-8"?>
+<SetMicrophoneMute xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed3">
+ <device>]] .. sip_account .. [[</device>
+ <auditoryApparatus>1</auditoryApparatus>
+ <microphoneMuteOn>]] .. tostring(value) .. [[</microphoneMuteOn>
+</SetMicrophoneMute>]]
+
+ self:send(sip_account, domain, body);
+end
+
+function Uacsta.set_speaker_volume(self, sip_account, domain, value)
+ local body =
+[[<?xml version="1.0" encoding="UTF-8"?>
+<SetSpeakerVolume xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed3">
+ <device>]] .. sip_account .. [[</device>
+ <auditoryApparatus>1</auditoryApparatus>
+ <speakerVolume>]] .. tonumber(value) .. [[</speakerVolume>
+</SetSpeakerVolume>]]
+
+ self:send(sip_account, domain, body);
+end
+
+function Uacsta.set_do_not_disturb(self, sip_account, domain, value)
+ local body =
+[[<?xml version="1.0" encoding="UTF-8"?>
+<SetDoNotDisturb xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed3">
+ <device>]] .. sip_account .. [[</device>
+ <doNotDisturbOn>]] .. tostring(value) .. [[</doNotDisturbOn>
+</SetDoNotDisturb>]]
+
+ self:send(sip_account, domain, body);
+end
+
+function Uacsta.set_forwarding(self, sip_account, domain, forwarding_type, number, activate)
+ local forwarding_types = { "forwardImmediate", "forwardBusy", "forwardNoAns" }
+ local body =
+[[<?xml version="1.0" encoding="UTF-8"?>
+<SetForwarding xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed3">
+ <device>]] .. sip_account .. [[</device>
+ <forwardingType>]] .. tostring(forwarding_types[tonumber(forwarding_type)]) .. [[</forwardingType>
+ <forwardDN>]] .. number .. [[</forwardDN>
+ <activateForward>]] .. tostring(activate) .. [[</activateForward>
+</SetForwarding>]]
+
+ self:send(sip_account, domain, body);
+end