dect
/
asterisk
Archived
13
0
Fork 0
This repository has been archived on 2022-02-17. You can view files and clone it, but cannot push or open issues or pull requests.
asterisk/static-http/ajamdemo.html

220 lines
5.9 KiB
HTML

<script src="prototype.js"></script>
<script src="astman.js"></script>
<link href="astman.css" media="all" rel="Stylesheet" type="text/css" />
<script>
var logins = new Object;
var logoffs = new Object;
var channels = new Object;
var pongs = new Object;
var loggedon = -1;
var selectedchan = null;
var hungupchan = "";
var transferedchan = "";
var demo = new Object;
function loggedOn() {
if (loggedon == 1)
return;
loggedon = 1;
updateButtons();
$('statusbar').innerHTML = "<i>Retrieving channel status...</i>";
astmanEngine.pollEvents();
astmanEngine.sendRequest('action=status', demo.channels);
}
function clearChannelList() {
$('channellist').innerHTML = "<i class='light'>Not connected</i>";
}
function loggedOff() {
if (loggedon == 0)
return;
loggedon = 0;
selectedchan = null;
updateButtons();
astmanEngine.channelClear();
clearChannelList();
}
function updateButtons()
{
if ($(selectedchan)) {
$('transfer').disabled = 0;
$('hangup').disabled = 0;
} else {
$('transfer').disabled = 1;
$('hangup').disabled = 1;
selectedchan = null;
}
if (loggedon) {
$('username').disabled = 1;
$('secret').disabled = 1;
$('logoff').disabled = 0;
$('login').disabled = 1;
$('refresh').disabled = 0;
} else {
$('username').disabled = 0;
$('secret').disabled = 0;
$('logoff').disabled = 1;
$('login').disabled = 0;
$('refresh').disabled = 1;
}
}
demo.channelCallback = function(target) {
selectedchan = target;
updateButtons();
}
demo.channels = function(msgs) {
resp = msgs[0].headers['response'];
if (resp == "Success") {
loggedOn();
} else
loggedOff();
for (i=1;i<msgs.length - 1;i++)
astmanEngine.channelUpdate(msgs[i]);
$('channellist').innerHTML = astmanEngine.channelTable(demo.channelCallback);
$('statusbar').innerHTML = "Ready";
}
demo.logins = function(msgs) {
$('statusbar').innerHTML = msgs[0].headers['message'];
resp = msgs[0].headers['response'];
if (resp == "Success")
loggedOn();
else
loggedOff();
};
demo.logoffs = function(msgs) {
$('statusbar').innerHTML = msgs[0].headers['message'];
loggedOff();
};
demo.hungup = function(msgs) {
$('statusbar').innerHTML = "Hungup " + hungupchan;
}
demo.transferred = function(msgs) {
$('statusbar').innerHTML = "Transferred " + transferredchan;
}
function doHangup() {
hungupchan = selectedchan;
astmanEngine.sendRequest('action=hangup&channel=' + selectedchan, demo.hungup);
}
function doStatus() {
$('statusbar').innerHTML = "<i>Updating channel status...</i>";
astmanEngine.channelClear();
astmanEngine.sendRequest('action=status', demo.channels);
}
function doLogin() {
$('statusbar').innerHTML = "<i>Logging in...</i>";
astmanEngine.sendRequest('action=login&username=' + $('username').value + "&secret=" + $('secret').value, demo.logins);
}
function doTransfer() {
var channel = astmanEngine.channelInfo(selectedchan);
var exten = prompt("Enter new extension for " + selectedchan);
var altchan;
if (exten) {
if (channel.link) {
if (confirm("Transfer " + channel.link + " too?"))
altchan = channel.link;
}
if (altchan) {
transferredchan = selectedchan + " and " + altchan + " to " + exten;
astmanEngine.sendRequest('action=redirect&channel=' + selectedchan + "&priority=1&extrachannel=" + altchan + "&exten=" + exten, demo.transferred);
} else {
transferredchan = selectedchan + " to " + exten;
astmanEngine.sendRequest('action=redirect&channel=' + selectedchan + "&priority=1&exten=" + exten, demo.transferred);
}
}
}
function doLogoff() {
$('statusbar').innerHTML = "<i>Logging off...</i>";
astmanEngine.sendRequest('action=logoff', demo.logoffs);
}
demo.pongs = function(msgs) {
resp = msgs[0].headers['response'];
if (resp == "Pong") {
$('statusbar').innerHTML = "<i>Already connected...</i>";
loggedOn();
} else {
$('statusbar').innerHTML = "<i>Please login...</i>";
loggedOff();
}
}
demo.eventcb = function(msgs) {
var x;
if (loggedon) {
for (i=1;i<msgs.length - 1;i++) {
astmanEngine.channelUpdate(msgs[i]);
}
$('channellist').innerHTML = astmanEngine.channelTable(demo.channelCallback);
astmanEngine.pollEvents();
}
updateButtons();
}
function localajaminit() {
astmanEngine.setURL('../rawman');
astmanEngine.setEventCallback(demo.eventcb);
//astmanEngine.setDebug($('ditto'));
clearChannelList();
astmanEngine.sendRequest('action=ping', demo.pongs);
}
</script>
<title>Asterisk&trade; AJAM Demo</title>
<body onload="localajaminit()">
<table align="center" width=600>
<tr valign="top"><td>
<table align="left">
<tr><td colspan="2"><h2>Asterisk&trade; AJAM Demo</h2></td>
<tr><td>Username:</td><td><input id="username"></td></tr>
<tr><td>Secret:</td><td><input type="password" id="secret"></td></tr>
<tr><td colspan=2 align="center">
<div id="statusbar">
<span style="margin-left: 4px;font-weight:bold">&nbsp;</span>
</div>
</td></tr>
<tr><td><input type="submit" id="login" value="Login" onClick="doLogin()"></td>
<td><input type="submit" id="logoff" value="Logoff" disabled=1 onClick="doLogoff()"></td></tr>
</table>
</td><td valign='bottom'>
<table>
<div style="margin-left:10;margin-right:50;margin-top:10;margin-bottom:20">
<i>This is a demo of the Asynchronous Javascript Asterisk Manager interface. You can login with a
valid, appropriately permissioned manager username and secret.</i>
</div>
<tr>
<td><input type="submit" onClick="doStatus()" id="refresh" value="Refresh"></td>
<td><input type="submit" onClick="doTransfer()" id="transfer" value="Transfer..."></td>
<td><input type="submit" onClick="doHangup()" id="hangup" value="Hangup"></td>
</tr>
</table>
</td></tr>
<tr><td colspan=2>
<div id="channellist" class="chanlist">
</div>
</td></tr>
<tr><td align="center" colspan=2>
<font size=-1><i>
Copyright (C) 2006 Digium, Inc. Asterisk and Digium are trademarks of Digium, Inc.
</i></font>
</td></tr>
</table>
</body>