mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-03 04:16:43 +00:00 
			
		
		
		
	git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@25260 65c4cc65-6c06-0410-ace0-fbb531ad65f3
		
			
				
	
	
		
			220 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			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™ AJAM Demo</title>
 | 
						|
<body onload="localajaminit()">
 | 
						|
<table align="center" width=600>
 | 
						|
<tr valign="top"><td>
 | 
						|
<table align="left">
 | 
						|
<tr><td colspan="2"><h2>Asterisk™ 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"> </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>
 |