123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- <!--
- Asterisk -- An open source telephony toolkit.
- Copyright (C) 1999 - 2012, Digium, Inc.
- Mark Spencer <markster@digium.com>
- See http://www.asterisk.org for more information about
- the Asterisk project. Please do not directly contact
- any of the maintainers of this project for assistance;
- the project provides a web site, mailing lists and IRC
- channels for your use.
- This program is free software, distributed under the terms of
- the GNU General Public License Version 2. See the LICENSE file
- at the top of the source tree.
- -->
- <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>
|