<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><o:SmartTagType
namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
h2
        {mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:18.0pt;
        font-family:"Times New Roman";
        font-weight:bold;}
h3
        {mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:13.5pt;
        font-family:"Times New Roman";
        font-weight:bold;}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
p
        {mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman";}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
/* List Definitions */
@list l0
        {mso-list-id:1596552398;
        mso-list-template-ids:-1591151856;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</style>
</head>
<body lang=EN-US link=blue vlink=blue>
<div class=Section1>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>FYI,<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I’ve been playing with this and it
is very cool. I am working on a mini web-page that will be like a control
panel, although it’s just for me to watch what’s happening on my FS
box via a web page using Dojo widgets + Ajax/(D)HTML/CSS. I have a need
for my users to be able to monitor certain aspects of OpenZAP calls/spans and a
simple web page is the best option I’ve got. The webapi is very
cool – you can fetch via the web interface <i><span style='font-style:
italic'>anything</span></i> that you could type at the CLI and get it back in
an HTML table, or in some cases, raw text. (I’m using 8080/api/oz?list,
etc. for OpenZAP list/dump commands but I’m using 8080/webapi/show?channels,
etc. for the more traditional CLI commands.)<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Note: use the question mark to separate the
command from the first argument, and then spaces to separate additional
arguments:<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><a
href="http://my.fs.box:8080/webapi/show?channels">http://my.fs.box:8080/webapi/show?channels</a><o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><a
href="http://my.fs.box:8080/webapi/oz?dump">http://my.fs.box:8080/webapi/oz?dump</a>
1<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>-or-<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><a
href="http://my.fs.box:8080/webapi/oz?dump%201">http://my.fs.box:8080/webapi/oz?dump%201</a><o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Enjoy!<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>-MC<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>
<div>
<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
<hr size=2 width="100%" align=center tabindex=-1>
</span></font></div>
<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> freeswitch-users-bounces@lists.freeswitch.org
[mailto:freeswitch-users-bounces@lists.freeswitch.org] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Anthony Minessale<br>
<b><span style='font-weight:bold'>Sent:</span></b> Tuesday, May 27, 2008 9:40
AM<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">freeswitch-users@lists.freeswitch.org</st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [Freeswitch-users]
RESTful Bounty ..... Putting the competitionto REST with RestFul VoIP2.x
services</span></font><o:p></o:p></p>
</div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Also, did you know that
mod_xml_rpc not only does RPC but it also lets you access FSAPI functions by
URL access which sounds to be the same idea as this.<br>
<br>
Try it by building and loading mod_xml_rpc<br>
<br>
The point your web browser at it<br>
<br>
<a href="http://my.fs.box:8080/webapi/status" target="_blank">http://my.fs.box:8080/webapi/status</a><br>
<br>
The default login/password is "freeswitch/works"<br>
<br>
The voicemail app can do this too see:<br>
<br>
<a href="http://my.fs.box:8080/api/voicemail/web">http://my.fs.box:8080/api/voicemail/web</a><br>
<br>
you can actually use user@domain login based on your vm directory and auth per
user and see your VM on the web.<br>
<br>
<br>
When you go to /webapi/foo FSAPI function foo is called after an implicit
content-type: text/html is sent.<br>
if you go to /api/foo it is up to your function to print the Content-Type
header similar to a cgi<br>
<br>
<br>
<br>
<o:p></o:p></span></font></p>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>On Tue, May 27, 2008 at 10:46 AM, Anthony Minessale <<a
href="mailto:anthony.minessale@gmail.com" target="_blank">anthony.minessale@gmail.com</a>>
wrote:<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>cool, how much is the
bounty?<o:p></o:p></span></font></p>
<div>
<div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>On Tue, May 27, 2008 at 10:42 AM, EdPimentl <<a
href="mailto:edpimentl@gmail.com" target="_blank">edpimentl@gmail.com</a>>
wrote:<o:p></o:p></span></font></p>
</div>
</div>
<blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;
margin-left:4.8pt;margin-right:0in'>
<div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>I am putting a bounty to add RESTful WebServices in FreeSwitch.<br>
The bounty ask that TONIC is use as the RESTful Framework.<br>
TONIC should then be use to create simple CALLback application and establish
ad-hoc VoiceConference.<br>
<br>
To those not familiar with TONIC here is write up.<o:p></o:p></span></font></p>
<h2><b><font size=5 face="Times New Roman"><span style='font-size:18.0pt'><a
href="http://tonic.sourceforge.net/" target="_blank">Tonic</a> A RESTful Web
App Development Framework<o:p></o:p></span></font></b></h2>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Tonic is
an open source less is more, RESTful Web application development and Web site
management PHP script designed to do things "the right way", where
resources are king and the framework gets out of the way and leaves the
developer to get on with it. <o:p></o:p></span></font></p>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Tonic
helps you develop Web applications that embrace the way the Web really works,
enabling your applications to scale, extend and work with other systems easily.
<o:p></o:p></span></font></p>
</div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>Everything is a resource<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Tonic works exclusively with resources, a resource is
simply a piece of data with some metadata accessable by a URL using HTTP
methods. Everything within a Tonic system is a resource and so can be handled
via the standard HTTP interface.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>Domain modelling through resources<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>When modelling your problem domain within a Tonic
system, every domain object is a resource or a collection of resources.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>Keep it simple, stupid!<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Following the Unix philosophy of many small parts
working together via a common interface, Tonic uses resources as it's "programs"
and HTTP as it's "streams" to enable you to build complexity out of
simplicity.<o:p></o:p></span></font></p>
<h3><b><font size=4 face="Times New Roman"><span style='font-size:13.5pt'>Main
features<o:p></o:p></span></font></b></h3>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Tonic
embraces a number of standard Web features and best practices, as well as
features, principles and ideas taken from PHP, Unix, and other software design
patterns:<o:p></o:p></span></font></p>
<ul type=disc>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Resource editing via HTTP PUT and DELETE methods
(or via the Resource::save() and Resource::remove() PHP methods)<o:p></o:p></span></font></li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Easy to extend via new resource classes<o:p></o:p></span></font></li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>HTTP basic and digest authentication<o:p></o:p></span></font></li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Resource method permissions to provide authorisation
to individual resource methods<o:p></o:p></span></font></li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Output templating via Smarty<o:p></o:p></span></font></li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Output caching via HTTP 304 response codes and
modified headers<o:p></o:p></span></font></li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Extendable resource storage types via adapters<o:p></o:p></span></font></li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Content negotiation<o:p></o:p></span></font></li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Match multiple URLs to a single resource<o:p></o:p></span></font></li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Follows Unix modular design principles<o:p></o:p></span></font></li>
</ul>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><br>
And here is why everything one does or will do, should be done via RESTFul
messaging..<br>
Think about it, Google, AMAZON, YAHOO have standardized on REST.<br>
<br>
<a href="http://www.infoq.com/articles/rest-introduction" target="_blank">http://www.infoq.com/articles/rest-introduction</a><br>
<a href="http://wiki.opengarden.org/REST/REST_for_the_Rest_of_Us"
target="_blank">http://wiki.opengarden.org/REST/REST_for_the_Rest_of_Us</a><br>
<a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"
target="_blank">http://en.wikipedia.org/wiki/Representational_State_Transfer</a><br>
<a href="http://rest.blueoxen.net/cgi-bin/wiki.pl?FrontPage" target="_blank">http://rest.blueoxen.net/cgi-bin/wiki.pl?FrontPage</a><br>
<a href="http://www.jibbering.com/2002/4/httprequest.html" target="_blank">http://www.jibbering.com/2002/4/httprequest.html</a><br>
<a href="http://java.sun.com/developer/technicalArticles/WebServices/restful/"
target="_blank">http://java.sun.com/developer/technicalArticles/WebServices/restful/</a><br>
<a
href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/software_arch.htm#sec_1_2"
target="_blank">http://www.ics.uci.edu/~fielding/pubs/dissertation/software_arch.htm#sec_1_2</a>
******<br>
<br>
-E<br>
<a href="http://mobiquity.ws" target="_blank">http://mobiquity.ws</a><o:p></o:p></span></font></p>
</div>
</div>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>_______________________________________________<br>
Freeswitch-users mailing list<br>
<a href="mailto:Freeswitch-users@lists.freeswitch.org" target="_blank">Freeswitch-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users"
target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a
href="http://lists.freeswitch.org/mailman/options/freeswitch-users"
target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><o:p></o:p></span></font></p>
</blockquote>
</div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><br>
<br clear=all>
<br>
-- <br>
Anthony Minessale II<br>
<br>
FreeSWITCH <a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org/</a><br>
ClueCon <a href="http://www.cluecon.com/" target="_blank">http://www.cluecon.com/</a><br>
<br>
AIM: anthm<br>
<a href="mailto:MSN%3Aanthony_minessale@hotmail.com" target="_blank">MSN:anthony_minessale@hotmail.com</a><br>
GTALK/JABBER/<a href="mailto:PAYPAL%3Aanthony.minessale@gmail.com"
target="_blank">PAYPAL:anthony.minessale@gmail.com</a><br>
IRC: <a href="http://irc.freenode.net" target="_blank">irc.freenode.net</a>
#freeswitch<br>
<br>
FreeSWITCH Developer Conference<br>
<a href="mailto:sip%3A888@conference.freeswitch.org" target="_blank">sip:888@conference.freeswitch.org</a><br>
<a href="http://iax:guest@conference.freeswitch.org/888" target="_blank">iax:guest@conference.freeswitch.org/888</a><br>
<a href="mailto:googletalk%3Aconf%2B888@conference.freeswitch.org"
target="_blank">googletalk:conf+888@conference.freeswitch.org</a><br>
pstn:213-799-1400 <o:p></o:p></span></font></p>
</div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><br>
<br clear=all>
<br>
-- <br>
Anthony Minessale II<br>
<br>
FreeSWITCH <a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org/</a><br>
ClueCon <a href="http://www.cluecon.com/" target="_blank">http://www.cluecon.com/</a><br>
<br>
AIM: anthm<br>
<a href="mailto:MSN%3Aanthony_minessale@hotmail.com" target="_blank">MSN:anthony_minessale@hotmail.com</a><br>
GTALK/JABBER/<a href="mailto:PAYPAL%3Aanthony.minessale@gmail.com"
target="_blank">PAYPAL:anthony.minessale@gmail.com</a><br>
IRC: <a href="http://irc.freenode.net" target="_blank">irc.freenode.net</a>
#freeswitch<br>
<br>
FreeSWITCH Developer Conference<br>
<a href="mailto:sip%3A888@conference.freeswitch.org" target="_blank">sip:888@conference.freeswitch.org</a><br>
<a href="http://iax:guest@conference.freeswitch.org/888" target="_blank">iax:guest@conference.freeswitch.org/888</a><br>
<a href="mailto:googletalk%3Aconf%2B888@conference.freeswitch.org"
target="_blank">googletalk:conf+888@conference.freeswitch.org</a><br>
pstn:213-799-1400 <o:p></o:p></span></font></p>
</div>
</div>
</body>
</html>