1 <script src="prototype.js"></script>
2 <script src="astman.js"></script>
3 <link href="astman.css" media="all" rel="Stylesheet" type="text/css" />
6 var logins = new Object;
7 var logoffs = new Object;
8 var channels = new Object;
9 var pongs = new Object;
11 var selectedchan = null;
13 var transferedchan = "";
15 var demo = new Object;
22 $('statusbar').innerHTML = "<i>Retrieving channel status...</i>";
23 astmanEngine.pollEvents();
24 astmanEngine.sendRequest('action=status', demo.channels);
27 function clearChannelList() {
28 $('channellist').innerHTML = "<i class='light'>Not connected</i>";
31 function loggedOff() {
37 astmanEngine.channelClear();
41 function updateButtons()
43 if ($(selectedchan)) {
44 $('transfer').disabled = 0;
45 $('hangup').disabled = 0;
47 $('transfer').disabled = 1;
48 $('hangup').disabled = 1;
52 $('logoff').disabled = 0;
53 $('login').disabled = 1;
54 $('refresh').disabled = 0;
56 $('logoff').disabled = 1;
57 $('login').disabled = 0;
58 $('refresh').disabled = 1;
62 demo.channelCallback = function(target) {
63 selectedchan = target;
67 demo.channels = function(msgs) {
68 resp = msgs[0].headers['response'];
69 if (resp == "Success") {
74 for (i=1;i<msgs.length - 1;i++)
75 astmanEngine.channelUpdate(msgs[i]);
76 $('channellist').innerHTML = astmanEngine.channelTable(demo.channelCallback);
77 $('statusbar').innerHTML = "Ready";
80 demo.logins = function(msgs) {
81 $('statusbar').innerHTML = msgs[0].headers['message'];
82 resp = msgs[0].headers['response'];
83 if (resp == "Success")
90 demo.logoffs = function(msgs) {
91 $('statusbar').innerHTML = msgs[0].headers['message'];
95 demo.hungup = function(msgs) {
96 $('statusbar').innerHTML = "Hungup " + hungupchan;
99 demo.transferred = function(msgs) {
100 $('statusbar').innerHTML = "Transferred " + transferredchan;
103 function doHangup() {
104 hungupchan = selectedchan;
105 astmanEngine.sendRequest('action=hangup&channel=' + selectedchan, demo.hungup);
108 function doStatus() {
109 $('statusbar').innerHTML = "<i>Updating channel status...</i>";
110 astmanEngine.channelClear();
111 astmanEngine.sendRequest('action=status', demo.channels);
115 $('statusbar').innerHTML = "<i>Logging in...</i>";
116 astmanEngine.sendRequest('action=login&username=' + $('username').value + "&secret=" + $('secret').value, demo.logins);
119 function doTransfer() {
120 var channel = astmanEngine.channelInfo(selectedchan);
121 var exten = prompt("Enter new extension for " + selectedchan);
125 if (confirm("Transfer " + channel.link + " too?"))
126 altchan = channel.link;
129 transferredchan = selectedchan + " and " + altchan + " to " + exten;
130 astmanEngine.sendRequest('action=redirect&channel=' + selectedchan + "&priority=1&extrachannel=" + altchan + "&exten=" + exten, demo.transferred);
132 transferredchan = selectedchan + " to " + exten;
133 astmanEngine.sendRequest('action=redirect&channel=' + selectedchan + "&priority=1&exten=" + exten, demo.transferred);
138 function doLogoff() {
139 $('statusbar').innerHTML = "<i>Logging off...</i>";
140 astmanEngine.sendRequest('action=logoff', demo.logoffs);
143 demo.pongs = function(msgs) {
144 resp = msgs[0].headers['response'];
145 if (resp == "Pong") {
146 $('statusbar').innerHTML = "<i>Already connected...</i>";
149 $('statusbar').innerHTML = "<i>Please login...</i>";
154 demo.eventcb = function(msgs) {
157 for (i=1;i<msgs.length - 1;i++) {
158 astmanEngine.channelUpdate(msgs[i]);
160 $('channellist').innerHTML = astmanEngine.channelTable(demo.channelCallback);
161 astmanEngine.pollEvents();
166 function localajaminit() {
167 astmanEngine.setURL('../rawman');
168 astmanEngine.setEventCallback(demo.eventcb);
169 //astmanEngine.setDebug($('ditto'));
171 astmanEngine.sendRequest('action=ping', demo.pongs);
175 <title>Asterisk™ AJAM Demo</title>
176 <body onload="localajaminit()">
177 <table align="center" width=600>
178 <tr valign="top"><td>
180 <tr><td colspan="2"><h2>Asterisk™ AJAM Demo</h2></td>
181 <tr><td>Username:</td><td><input id="username"></td></tr>
182 <tr><td>Secret:</td><td><input type="password" id="secret"></td></tr>
183 <tr><td colspan=2 align="center">
185 <span style="margin-left: 4px;font-weight:bold"> </span>
189 <tr><td><input type="submit" id="login" value="Login" onClick="doLogin()"></td>
190 <td><input type="submit" id="logoff" value="Logoff" disabled=1 onClick="doLogoff()"></td></tr>
192 </td><td valign='bottom'>
194 <div style="margin-left:10;margin-right:50;margin-top:10;margin-bottom:20">
195 <i>This is a demo of the Asynchronous Javascript Asterisk Manager interface. You can login with a
196 valid, appropriately permissioned manager username and secret.</i>
199 <td><input type="submit" onClick="doStatus()" id="refresh" value="Refresh"></td>
200 <td><input type="submit" onClick="doTransfer()" id="transfer" value="Transfer..."></td>
201 <td><input type="submit" onClick="doHangup()" id="hangup" value="Hangup"></td>
206 <div id="channellist" class="chanlist">
209 <tr><td align="center" colspan=2>
211 Copyright (C) 2006 Digium, Inc. Asterisk and Digium are trademarks of Digium, Inc.