Initial commit

This commit is contained in:
2018-02-15 22:55:59 +01:00
commit a4f088270d
28 changed files with 8934 additions and 0 deletions

150
AastraXMLSchema.xsd Normal file
View File

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="AastraIPPhoneTextScreen">
<xs:complexType>
<xs:sequence>
<xs:element name="Title" type="xs:string" />
<xs:element name="Text">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="1000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="SoftKey" type="softKeyType" minOccurs="0" maxOccurs="6"/>
</xs:sequence>
<xs:attribute name="destroyOnExit" type="textAttributeType" default="no" />
<xs:attribute name="Beep" type="textAttributeType" default="no" />
</xs:complexType>
</xs:element>
<xs:element name="AastraIPPhoneTextMenu">
<xs:complexType>
<xs:sequence>
<xs:element name="Title" type="xs:string" />
<xs:element name="MenuItem" minOccurs="1" maxOccurs="15">
<xs:complexType>
<xs:sequence>
<xs:element name="Prompt" type="xs:string" />
<xs:element name="URI" type="xs:string" />
<xs:element name="Selection" type="xs:string" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="base" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="SoftKey" type="softKeyType" minOccurs="0" maxOccurs="6"/>
</xs:sequence>
<xs:attribute name="destroyOnExit" type="textAttributeType" default="no" />
<xs:attribute name="Beep" type="textAttributeType" default="no" />
<xs:attribute name="defaultIndex" type="integerAttributeType" default="1" />
</xs:complexType>
</xs:element>
<xs:element name="AastraIPPhoneInputScreen">
<xs:complexType>
<xs:sequence>
<xs:element name="Title" />
<xs:element name="Prompt" />
<xs:element name="URL" />
<xs:element name="Parameter" />
<xs:element name="Default" />
<xs:element name="SoftKey" type="softKeyType" minOccurs="0" maxOccurs="6"/>
</xs:sequence>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="IP|string|number" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="password" type="textAttributeType" default="no" />
<xs:attribute name="destroyOnExit" type="textAttributeType" default="no" />
<xs:attribute name="editable" type="textAttributeType" default="yes" />
<xs:attribute name="Beep" type="textAttributeType" default="no" />
</xs:complexType>
</xs:element>
<xs:element name="AastraIPPhoneDirectory">
<xs:complexType>
<xs:sequence>
<xs:element name="Title" type="xs:string" />
<xs:element name="MenuItem" minOccurs="1" maxOccurs="15">
<xs:complexType>
<xs:sequence>
<xs:element name="Prompt" type="xs:string" />
<xs:element name="URI" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SoftKey" type="softKeyType" minOccurs="0" maxOccurs="6"/>
</xs:sequence>
<xs:attribute name="destroyOnExit" type="textAttributeType" default="no" />
<xs:attribute name="Beep" type="textAttributeType" default="no" />
<xs:attribute name="next" type="xs:string" />
<xs:attribute name="previous" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="AastraIPPhoneExecute">
<xs:complexType>
<xs:sequence>
<xs:element name="ExecuteItem" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="URI" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Beep" type="textAttributeType" default="no" />
</xs:complexType>
</xs:element>
<xs:element name="AastraIPPhoneStatus">
<xs:complexType>
<xs:sequence>
<xs:element name="Session" type="xs:string" minOccurs="0" />
<xs:element name="Message">
<xs:complexType mixed="true">
<xs:attribute name="index" type="integerAttributeType" use="required" />
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="alert" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Timeout" type="integerAttributeType" default="3" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Beep" type="textAttributeType" default="no" />
</xs:complexType>
</xs:element>
<xs:simpleType name="textAttributeType">
<xs:restriction base="xs:string">
<xs:pattern value="yes|no" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="integerAttributeType">
<xs:restriction base="xs:integer" />
</xs:simpleType>
<xs:complexType name="softKeyType">
<xs:sequence>
<xs:element name="Label" type="xs:string" />
<xs:element name="URI" type="xs:string" />
</xs:sequence>
<xs:attribute name="index" use="required">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1" />
<xs:maxInclusive value="6" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:schema>

BIN
PA-001004-00-02-XML-API.pdf Normal file

Binary file not shown.

19
README.txt Normal file
View File

@ -0,0 +1,19 @@
AASTRA TELECOM INC.
November 2006
-PA-001004-00-02-XML-API.pdf - Aastra IP Phone XML API document. For use with IP Phone SIP Release 1.4.1.
-AastraXMLSchema 1.4.1.xsd - XML Schema which can be used to validate XML development.
For use with IP Phone SIP Release 1.3.1.
-php_classes 1.4.1.zip - contains the directory php classes with all the XML classes.
The files are commented.
-asterisk sample source 1.4.1.zip - contains the source code of XML Asterisk integration described in the XML API document
The files are commented.
For XML documents related to IP Phone SIP Release 1.3.0, see file PA-001004-00-00.zip
For XML documents related to IP Phone SIP Release 1.3.1, see file PA-001004-00-01.zip

4714
XML-API.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
Copyright (c) 2006 Aastra Telecom US, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -0,0 +1,216 @@
<?
###################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###################################################################################################
# Asterisk Call Forward for Aastra SIP Phones R1.4.1 or better
#
# php source code
###################################################################################################
include (dirname(__FILE__)."/phpagi/misc.php");
include (dirname(__FILE__)."/phpagi/phpagi-asmanager.php");
###################################################################################################
# Aastra_decode_HTTP_header
#
# Returns an array
# 0 Phone Type
# 1 Phone MAC Address
# 2 Phone firmware version
###################################################################################################
function Aastra_decode_HTTP_header()
{
$user_agent=$_SERVER["HTTP_USER_AGENT"];
if(stristr($user_agent,"Aastra"))
{
$value=preg_split("/ MAC:/",$user_agent);
$fin=preg_split("/ /",$value[1]);
$value[1]=preg_replace("/\-/","",$fin[0]);
$value[2]=preg_replace("/V:/","",$fin[1]);
}
else
{
$value[0]="MSIE";
$value[1]="NA";
$value[2]="NA";
}
return($value);
}
###################################################################################################
# Global parameters
$Server = "http://$SERVER_ADDR".$_SERVER['SCRIPT_NAME'];
$cf="";
# Retrieve parameters
$user=$_GET['user'];
$action=$_GET['action'];
$value=$_GET['value'];
# Get header info
$header=Aastra_decode_HTTP_header();
# Connect to AGI
$as = new AGI_AsteriskManager();
$res = $as->connect();
#GET CFWD
$res = $as->Command('database get CF '.$user);
$line=split("\n", $res['data']);
$data=split(" ", $line[0]);
if($data[0]=="Value:") $cf=$data[1];
if($cf=="")
{
$data=split(" ", $line[1]);
if($data[0]=="Value:") $cf=$data[1];
}
# change CF status
if(isset($action))
{
if($action=="cancel")
{
$res = $as->Command('database del CF '.$user);
$output = "<AastraIPPhoneExecute>\n";
$output .= "<ExecuteItem URI=\"".$Server."?action=msg&amp;user=".$user."\"/>\n";
switch($header[0])
{
case "Aastra9112i":
case "Aastra9133i":
break;
default:
$output .= "<ExecuteItem URI=\"".$Server."?user=".$user."\"/>\n";
break;
}
$output .= "</AastraIPPhoneExecute>\n";
}
if($action=="set")
{
$res = $as->Command('database put CF '.$user.' '.$value);
$output = "<AastraIPPhoneExecute>\n";
$output .= "<ExecuteItem URI=\"".$Server."?action=msg&amp;user=".$user."\"/>\n";
switch($header[0])
{
case "Aastra9112i":
case "Aastra9133i":
break;
default:
$output .= "<ExecuteItem URI=\"".$Server."?user=".$user."\"/>\n";
break;
}
$output .= "</AastraIPPhoneExecute>\n";
}
if($action=="change")
{
$output = "<AastraIPPhoneInputScreen type=\"number\" destroyOnExit=\"yes\">\n";
$output .= "<Title>Call Forward</Title>\n";
$output .= "<Prompt>Enter destination</Prompt>\n";
$output .= "<URL>".$Server."?user=$user&amp;action=set</URL>\n";
$output .= "<Parameter>value</Parameter>\n";
$output .= "<Default></Default>\n";
$output .= "</AastraIPPhoneInputScreen>\n";
}
if($action=="msg")
{
$output = "<AastraIPPhoneStatus Beep=\"yes\">\n";
$output .= "<Session>CFDND</Session>\n";
if ($cf=="") $output .= "<Message index=\"1\"></Message>\n";
else $output .= "<Message index=\"1\">CFWD activated</Message>\n";
$output .= "</AastraIPPhoneStatus>\n";
}
# Disconnect properly
$as->disconnect();
header("Content-Type: text/xml");
header("Content-Length: ".strlen($output));
echo $output;
exit;
}
# Disconnect properly
$as->disconnect();
# Setup header type
header("Content-Type: text/xml");
switch($header[0])
{
case "Aastra9112i":
case "Aastra9133i":
$output = "<AastraIPPhoneTextMenu destroyOnExit=\"yes\">\n";
if($cf=="") $output .= "<Title>CFWD deactivated</Title>\n";
else $output .= "<Title>CFWD set (".$cf.")</Title>\n";
if($cf!="")
{
$output .= "<MenuItem>\n";
$output .= "<Prompt>Cancel</Prompt>\n";
$output .= "<URI>$Server/cfwd.php?action=cancel&amp;user=$user</URI>\n";
$output .= "</MenuItem>\n";
}
$output .= "<MenuItem>\n";
$output .= "<Prompt>Change</Prompt>\n";
$output .= "<URI>$Server/cfwd.php?action=change&amp;user=$user</URI>\n";
$output .= "</MenuItem>\n";
$output .= "</AastraIPPhoneTextMenu>\n";
break;
default:
$output = "<AastraIPPhoneTextScreen destroyOnExit=\"yes\">\n";
$output .= "<Title>Call Forward for $user</Title>\n";
if ($cf=="") $output .= "<Text>Call Forward is currently deactivated.</Text>\n";
else $output .= "<Text>Call Forward is currently set to $cf.</Text>\n";
$output .= "<SoftKey index=\"1\">\n";
$output .= "<Label>Change</Label>\n";
$output .= "<URI>$Server/cfwd.php?action=change&amp;user=$user</URI>\n";
$output .= "</SoftKey>\n";
if($cf!="")
{
$output .= "<SoftKey index=\"2\">\n";
$output .= "<Label>Cancel</Label>\n";
$output .= "<URI>$Server/cfwd.php?action=cancel&amp;user=$user</URI>\n";
$output .= "</SoftKey>\n";
}
$output .= "<SoftKey index=\"6\">\n";
$output .= "<Label>Done</Label>\n";
$output .= "<URI>SoftKey:Exit</URI>\n";
$output .= "</SoftKey>\n";
$output .= "</AastraIPPhoneTextScreen>\n";
break;
}
header("Content-Length: ".strlen($output));
echo $output;
?>

View File

@ -0,0 +1,144 @@
<?
###################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###################################################################################################
# Asterisk Directory for Aastra SIP Phones R1.4.1 or better
#
# php source code
#
# Parses
# - SIP users
# - IAX users
#
# Warning
# Location of Asterisk config files is set to "/etc/asterisk"
###################################################################################################
# Location of asterisk config files
$location = "/etc/asterisk/";
# Global Variables
$Server = "http://$SERVER_ADDR".$_SERVER['SCRIPT_NAME'];
# Init number of records
$index=0;
# Parse sip.conf
$sip_array=parse_ini_file($location."sip_additional.conf", true);
while ($v=current($sip_array))
{
if((isset($v['callerid'])) and (key($sip_array)!="register"))
{
$temp=$v['callerid'];
$len=strlen($temp);
$callerid=substr($temp,0,$len-(strlen(strrchr($temp, '<')))-1);
$directory[] = "<Prompt>". $callerid."</Prompt>\n"."<URI>".key($sip_array)."</URI>\n"."<Selection>". key($sip_array)."&amp;name=".$callerid."</Selection>\n";
$index++;
}
next($sip_array);
}
# Parse iax.conf
$iax_array=parse_ini_file($location."iax.conf", true);
while($v=current($iax_array))
{
if(isset($v['name']))
{
$directory[]="<Prompt>".$v['name']."</Prompt>\n"."<URI>".key($iax_array)."</URI>\n";
$index++;
}
next($iax_array);
}
# Sort Directory
sort($directory);
# Retrieve last page
$last=intval($index/15);
if(($index-$last*15) != 0) $last++;
# Retrieve current page
$page=$_GET['page'];
if (empty($page)) $page=1;
# Display Page
$output ="<AastraIPPhoneTextMenu destroyOnExit=\"yes\">";
$output .= "<Title>Directory ($page/$last)</Title>\n";
$index=1;
foreach ($directory as $v)
{
if(($index>=(($page-1)*15+1)) and ($index<=$page*15))
{
$output .= "<MenuItem>\n";
$output .= $v;
$output .= "</MenuItem>\n";
}
$index++;
}
# Dial button
$output .= "<SoftKey index=\"1\">\n";
$output .= "<Label>Dial</Label>\n";
$output .= "<URI>SoftKey:Dial</URI>\n";
$output .= "</SoftKey>\n";
# Next button
if($page!=$last)
{
$next=$page+1;
$output .= "<SoftKey index=\"5\">\n";
$output .= "<Label>Next</Label>\n";
$output .= "<URI>$Server?page=$next</URI>\n";
$output .= "</SoftKey>\n";
}
# Previous button
if($page!=1)
{
$previous=$page-1;
$output .= "<SoftKey index=\"2\">\n";
$output .= "<Label>Previous</Label>\n";
$output .= "<URI>$Server?page=$previous</URI>\n";
$output .= "</SoftKey>\n";
}
# Exit Button
$output .= "<SoftKey index=\"6\">\n";
$output .= "<Label>Exit</Label>\n";
$output .= "<URI>SoftKey:Exit</URI>\n";
$output .= "</SoftKey>\n";
# End of the object
$output .= "</AastraIPPhoneTextMenu>\n";
# HTTP header and output
header("Content-Type: text/xml");
header("Content-Length: ".strlen($output));
echo $output;
?>

View File

@ -0,0 +1,173 @@
<?
###################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###################################################################################################
# Asterisk DND for Aastra SIP Phones R1.4.1 or better
#
# php source code
#####################################################################
include (dirname(__FILE__)."/phpagi/misc.php");
include (dirname(__FILE__)."/phpagi/phpagi-asmanager.php");
#####################################################################
# Aastra_decode_HTTP_header
#
# Returns an array
# 0 Phone Type
# 1 Phone MAC Address
# 2 Phone firmware version
#####################################################################
function Aastra_decode_HTTP_header()
{
$user_agent=$_SERVER["HTTP_USER_AGENT"];
if(stristr($user_agent,"Aastra"))
{
$value=preg_split("/ MAC:/",$user_agent);
$fin=preg_split("/ /",$value[1]);
$value[1]=preg_replace("/\-/","",$fin[0]);
$value[2]=preg_replace("/V:/","",$fin[1]);
}
else
{
$value[0]="MSIE";
$value[1]="NA";
$value[2]="NA";
}
return($value);
}
#####################################################################
# Global parameters
#####################################################################
$Server = "http://$SERVER_ADDR".$_SERVER['SCRIPT_NAME'];
$dnd=0;
# Retrieve parameters
$user=$_GET['user'];
$action=$_GET['action'];
$status=$_GET['status'];
# Force default action
if($action=="") $action="change";
# Get header info
$header=Aastra_decode_HTTP_header();
# Get current value only if action is change or update
if(($action=="change") || ($action=="update"))
{
# Connect to AGI
$as = new AGI_AsteriskManager();
$res = $as->connect();
#DND GET
$res = $as->Command('database get DND '.$user);
$line=split("\n", $res['data']);
$value=split(" ", $line[0]);
if($value[1]=="YES") $dnd=1;
if($dnd==0)
{
$value=split(" ", $line[1]);
if($value[1]=="YES") $dnd=1;
}
# CHANGE CURRENT VALUE
if($action=="change")
{
# change DND status
if($dnd==0)
{
$res = $as->Command('database put DND '.$user.' YES');
$dnd=1;
}
else
{
$res = $as->Command('database del DND '.$user);
$dnd=0;
}
}
# Disconnect properly
$as->disconnect();
}
# Setup header type
header("Content-Type: text/xml");
# Update action
if($action=="update")
{
$output = "<AastraIPPhoneExecute>\n";
$output .= "<ExecuteItem URI=\"".$Server."?action=msg&amp;status=".$status."\"/>\n";
$output .= "</AastraIPPhoneExecute>\n";
}
# Update message
if($action=="msg")
{
$output = "<AastraIPPhoneStatus Beep=\"yes\">\n";
$output .= "<Session>CFDND12345</Session>\n";
if ($status==1) $output .= "<Message index=\"0\">DND activated</Message>\n";
else $output .= "<Message index=\"0\"></Message>\n";
$output .= "</AastraIPPhoneStatus>\n";
}
# Action=change
if($action=="change")
{
switch($header[0])
{
case "Aastra9112i":
case "Aastra9133i":
$output = "<AastraIPPhoneStatus Beep=\"yes\">\n";
$output .= "<Session>CFDND12345</Session>\n";
if ($dnd==1) $output .= "<Message index=\"0\">DND activated</Message>\n";
else $output .= "<Message index=\"0\"></Message>\n";
$output .= "</AastraIPPhoneStatus>\n";
break;
default:
$output = "<AastraIPPhoneTextScreen destroyOnExit=\"yes\">\n";
$output .= "<Title></Title>\n";
if ($dnd==0) $output .= "<Text>DND deactivated.</Text>\n";
else $output .= "<Text>DND activated.</Text>\n";
$output .= "<SoftKey index=\"6\">\n";
$output .= "<Label>Done</Label>\n";
$output .= "<URI>".$Server."?action=update&amp;status=".$dnd."</URI>\n";
$output .= "</SoftKey>\n";
$output .= "</AastraIPPhoneTextScreen>\n";
break;
}
}
header("Content-Length: ".strlen($output));
echo $output;
?>

View File

@ -0,0 +1,218 @@
phpagi-asmanager: an Asterisk Manager class written in PHP
Matthew Asham <matthewa@bcwireless.net>
http://phpagi.sourceforge.net
------------------------------------------------------------------------------
------------------------------------------------------------------------------
SECURITY
------------------------------------------------------------------------------
Validation:
******If asterisk is running as root, the manager interface may allow the
execution of arbitrary shell commands as root. If the user can update any
configuration file that can execute arbitrary command (like the dialplan),
the system may be compromised.
Also, look out for command injection. Consider the following example:
$as->Events($_POST['events_status']);
We expect either 'on' or 'off', but the attacker uses:
"\r\n\r\nAction: Command\r\nCommand: database put forward 54321 19005551212";
Validation is a *must* for all user data.
Username and Secret:
Storing the username and secret in the config file will isolate them from your
code.
Isolation of username and secret in the config file does not mean that the
script cannot simple read the config file. The config file must be readable
by the script.
CREATING A NEW INSTANCE OF THE CLASS
------------------------------------------------------------------------------
The class can be created standalone of phpagi.php, or through phpagi.
STANDALONE:
require "phpagi-asmanager.php";
$as = new AGI_AsteriskManager();
FROM PHPAGI:
require "phpagi.php";
$agi = new AGI();
$as = $agi->new_AsteriskManager();
Notes:
* If the class is created using $agi->new_AsteriskManager(),
AGI_AsteriskManager will use the parent phpagi for logging to the Asterisk
console.
* phpagi.php will include phpagi-asmanager.php by itself.
* If phpagi-asmanager.php is included _before_ phpagi.php, phpagi.php will
not attempt to re-include it.
* If phpagi.php tries to include phpagi-asmanager.php but is unable to do
so, an error will be echoed to the asterisk console and the script will
continue running normally. in this case the return value of
new_AsteriskManager() will be FALSE.
------------------------------------------------------------------------------
CONFIGURATION
------------------------------------------------------------------------------
phpagi-asmanager uses the same configuration file as phpagi.conf (usually
/etc/asterisk/phpagi.conf). All configuration information specific to
phpagi-asmanager is contained in the [asmanager] section of the .conf file.
supported directives:
[asmanager]
# server to connect to
server=localhost
# default manager port
port=5038
#username for login
username=me_and_only_me
#password for login
secret=i_am_not_telling
------------------------------------------------------------------------------
CONNECTING
------------------------------------------------------------------------------
$res = $as->connect("localhost", "username", "password");
if($res == FALSE) {
echo "Connection failed.\n";
}
elseif($res == TRUE){
echo "Connection established.\n";
}
A port can also be specified for the hostname. eg:
$res = $as->connect("my.asterisk.server:1234", "username", "port");
If the no parameters are specified, the defaults from the config will be used.
------------------------------------------------------------------------------
DISCONNECTING
------------------------------------------------------------------------------
$as->disconnect();
------------------------------------------------------------------------------
SENDING REQUESTS
------------------------------------------------------------------------------
$as->send_request($eventname, $arrayofparameterstopass);
send_request() calls wait_request and returns an array of returned data from
the manager. If something went wrong, it returns false.
wait_request() shouldn't need to be called from a script directly unless you
are implementing merely an event listener.
wait_request() will also detect events and dispatch any registered event
handlers for the event.
examples:
$res = $as->send_request('EventName',
array('Channel'=>'Zap/1/16045551212',
'SomeParameter'=>'data'));
echo "Dump of returned data:\n";
foreach($res as $var=>$val)
echo "$var = $val\n";
$res['Response'] will generally be 'Success' on success and 'Error' on
failure. But this is not always true. If $res['Response'] == 'Follows', a
multi-line response will be stored in $res['data'].
Several manager commands have been aliased for convenience. See below.
------------------------------------------------------------------------------
EVENTS
------------------------------------------------------------------------------
TODO: non-blocking socket i/o.
The class uses event callbacks to process events received from the manager.
The event callback prototype looks like:
function dump_event($ecode, $data, $server, $port)
{
echo "received event '$ecode' from $server:$port\n";
print_r($data);
}
To register an event call back:
$as->add_event_handler('eventname', 'eventfunction');
eg:
$as->add_event_handler('registry', 'dump_event');
The special eventname "*" can also be registered. any eventname not
specifically registered will be handled by the "*" handler. If no "*" handler
is defined, the event will be silently ignored.
------------------------------------------------------------------------------
PRECANNED FUNCTIONS
------------------------------------------------------------------------------
The following Manager functions have been aliased for convenience:
AbsoluteTimeout
ChangeMonitor
Command
Events
ExtensionState
GetVar
Hangup
IAXPeers
ListCommands
Logoff
MailboxCount
MailboxStatus
Monitor
Originate
ParkedCalls
Ping
Queues
QueueStatus
Redirect
SetCDRUserField
SetVar
SIPpeers
Status
StopMontor
ZapDialOffhook
ZapDNDoff
ZapDNDon
ZapHangup
ZapTransfer

View File

@ -0,0 +1,42 @@
<?php
require "phpagi-asmanager.php";
$as = new AGI_AsteriskManager();
// && CONNECTING
$res = $as->connect();
$room = 1234;
$res = $as->Command('meetme list '.$room);
//echo $res['data'].'</br>';
$line= split("\n", $res['data']);
//print_r ($line);
echo $line[0];
$element= split(' ', $line[0]);
print_r ($element);
/*
</br>Array
(
[0] => User #: 1 Channel: IAX2/areskiax@areskiax-2 (Admn Muted) (unmonitored)
[1] => User #: 2 Channel: SIP/kphone-b15c (unmonitored)
[2] => 2 users in that conference.
[3] =>
)
*/
flush();
ob_flush();
// && DISCONNECTING
$as->disconnect();
?>

View File

@ -0,0 +1,22 @@
<?php
function getpost_ifset($test_vars)
{
if (!is_array($test_vars)) {
$test_vars = array($test_vars);
}
foreach($test_vars as $test_var) {
if (isset($_POST[$test_var])) {
global $$test_var;
$$test_var = $_POST[$test_var];
} elseif (isset($_GET[$test_var])) {
global $$test_var;
$$test_var = $_GET[$test_var];
}
}
}
?>

View File

@ -0,0 +1,699 @@
<?php
/**
* phpagi-asmanager.php : PHP Asterisk Manager functions
* Website: http://phpagi.sourceforge.net
*
* $Id: phpagi-asmanager.php,v 1.6 2005/02/16 23:31:50 pinhole Exp $
*
* Copyright (c) 2004 Matthew Asham <matthewa@bcwireless.net>
* All Rights Reserved.
*
* This software is released under the terms of the GNU Public License v2
* A copy of which is available from http://www.fsf.org/licenses/gpl.txt
*
*
* You are requested to drop me an Email letting me know that you're
* using it. This is more of a courtesy than anything else, but I am
* interested to know how it is being used.
*
* @package phpAGI
* @version 2.0
*/
/**
* Written for PHP 4.3.4, should work with older PHP 4.x versions.
* Please submit bug reports, patches, etc to http://sourceforge.net/projects/phpagi/
* Gracias. :)
*
*/
if(!class_exists('AGI'))
{
require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'phpagi.php');
}
/**
* Asterisk Manager class
*
* @link http://www.voip-info.org/wiki-Asterisk+config+manager.conf
* @link http://www.voip-info.org/wiki-Asterisk+manager+API
* @example examples/sip_show_peer.php Get information about a sip peer
* @package phpAGI
*/
class AGI_AsteriskManager
{
/**
* Config variables
*
* @var array
* @access public
*/
var $config;
/**
* Socket
*
* @access public
*/
var $socket = NULL;
/**
* Server we are connected to
*
* @access public
* @var string
*/
var $server;
/**
* Port on the server we are connected to
*
* @access public
* @var integer
*/
var $port;
/**
* Parent AGI
*
* @access private
* @var AGI
*/
var $pagi;
/**
* Event Handlers
*
* @access private
* @var array
*/
var $event_handlers;
/**
* Constructor
*
* @param string $config is the name of the config file to parse or a parent agi from which to read the config
* @param array $optconfig is an array of configuration vars and vals, stuffed into $this->config['asmanager']
*/
function AGI_AsteriskManager($config=NULL, $optconfig=array())
{
// load config
if(!is_null($config) && file_exists($config))
$this->config = parse_ini_file($config, true);
elseif(file_exists(DEFAULT_PHPAGI_CONFIG))
$this->config = parse_ini_file(DEFAULT_PHPAGI_CONFIG, true);
// If optconfig is specified, stuff vals and vars into 'asmanager' config array.
foreach($optconfig as $var=>$val)
$this->config['asmanager'][$var] = $val;
// add default values to config for uninitialized values
if(!isset($this->config['asmanager']['server'])) $this->config['asmanager']['server'] = 'localhost';
if(!isset($this->config['asmanager']['port'])) $this->config['asmanager']['port'] = 5038;
if(!isset($this->config['asmanager']['username'])) $this->config['asmanager']['username'] = 'phpagi';
if(!isset($this->config['asmanager']['secret'])) $this->config['asmanager']['secret'] = 'phpagi';
}
/**
* Send a request
*
* @param string $action
* @param array $parameters
* @return array of parameters
*/
function send_request($action, $parameters=array())
{
$req = "Action: $action\r\n";
foreach($parameters as $var=>$val)
$req .= "$var: $val\r\n";
$req .= "\r\n";
fwrite($this->socket, $req);
return $this->wait_response();
}
/**
* Wait for a response
*
* If a request was just sent, this will return the response.
* Otherwise, it will loop forever, handling events.
*
* @param boolean $allow_timeout if the socket times out, return an empty array
* @return array of parameters, empty on timeout
*/
function wait_response($allow_timeout=false)
{
$timeout = false;
do
{
$type = NULL;
$parameters = array();
$buffer = trim(fgets($this->socket, 4096));
while($buffer != '')
{
$a = strpos($buffer, ':');
if($a)
{
if(!count($parameters)) // first line in a response?
{
$type = strtolower(substr($buffer, 0, $a));
if(substr($buffer, $a + 2) == 'Follows')
{
// A follows response means there is a miltiline field that follows.
$parameters['data'] = '';
$buff = fgets($this->socket, 4096);
while(substr($buff, 0, 6) != '--END ')
{
$parameters['data'] .= $buff;
$buff = fgets($this->socket, 4096);
}
}
}
// store parameter in $parameters
$parameters[substr($buffer, 0, $a)] = substr($buffer, $a + 2);
}
$buffer = trim(fgets($this->socket, 4096));
}
// process response
switch($type)
{
case '': // timeout occured
$timeout = $allow_timeout;
break;
case 'event':
$this->process_event($parameters);
break;
case 'response':
break;
default:
$this->log('Unhandled response packet from Manager: ' . print_r($parameters, true));
break;
}
} while($type != 'response' && !$timeout);
return $parameters;
}
/**
* Connect to Asterisk
*
* @example examples/sip_show_peer.php Get information about a sip peer
*
* @param string $server
* @param string $username
* @param string $secret
* @return boolean true on success
*/
function connect($server=NULL, $username=NULL, $secret=NULL)
{
// use config if not specified
if(is_null($server)) $server = $this->config['asmanager']['server'];
if(is_null($username)) $username = $this->config['asmanager']['username'];
if(is_null($secret)) $secret = $this->config['asmanager']['secret'];
// get port from server if specified
if(strpos($server, ':') !== false)
{
$c = explode(':', $server);
$this->server = $c[0];
$this->port = $c[1];
}
else
{
$this->server = $server;
$this->port = $this->config['asmanager']['port'];
}
// connect the socket
$errno = $errstr = NULL;
$this->socket = @fsockopen($this->server, $this->port, $errno, $errstr);
if($this->socket == false)
{
$this->log("Unable to connect to manager {$this->server}:{$this->port} ($errno): $errstr");
return false;
}
// read the header
$str = fgets($this->socket);
if($str == false)
{
// a problem.
$this->log("Asterisk Manager header not received.");
return false;
}
else
{
// note: don't $this->log($str) until someone looks to see why it mangles the logging
}
// login
$res = $this->send_request('login', array('Username'=>$username, 'Secret'=>$secret));
if($res['Response'] != 'Success')
{
$this->log("Failed to login.");
$this->disconnect();
return false;
}
return true;
}
/**
* Disconnect
*
* @example examples/sip_show_peer.php Get information about a sip peer
*/
function disconnect()
{
$this->logoff();
fclose($this->socket);
}
/**
* Set Absolute Timeout
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+AbsoluteTimeout
* @param string $channel
* @param integer $timeout
*/
function AbsoluteTimeout($channel, $timeout)
{
return $this->send_request('AbsoluteTimeout', array('Channel'=>$channel, 'Timeout'=>$timeout));
}
/**
* Change monitoring filename of a channel
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+ChangeMonitor
* @param string $channel
* @param string $file
*/
function ChangeMonitor($channel, $file)
{
return $this->send_request('ChangeMontior', array('Channel'=>$channel, 'File'=>$file));
}
/**
* Execute Command
*
* @example examples/sip_show_peer.php Get information about a sip peer
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+Command
* @link http://www.voip-info.org/wiki-Asterisk+CLI
* @param string $commadn
*/
function Command($command)
{
return $this->send_request('Command', array('Command'=>$command));
}
/**
* Enable/Disable sending of events to this manager
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+Events
* @param string $eventmask is either 'on', 'off', or 'system,call,log'
*/
function Events($eventmask)
{
return $this->send_request('Events', array('EventMask'=>$eventmask));
}
/**
* Check Extension Status
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+ExtensionState
* @param string $exten
* @param string $context
* @param string $actionid
*/
function ExtensionState($exten, $context, $actionid)
{
return $this->send_request('ExtensionState', array('Exten'=>$exten, 'Context'=>$context, 'ActionID'=>$actionid));
}
/**
* Gets a Channel Variable
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+GetVar
* @param string $channel
* @param string $variable
*/
function GetVar($channel, $variable)
{
return $this->send_request('GetVar', array('Channel'=>$channel, 'Variable'=>$variable));
}
/**
* Hangup Channel
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+Hangup
* @param string $channel
*/
function Hangup($channel)
{
return $this->send_request('Hangup', array('Channel'=>$channel));
}
/**
* List IAX Peers
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+IAXpeers
*/
function IAXPeers()
{
return $this->send_request('IAXPeers');
}
/**
* List available manager commands
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+ListCommands
*/
function ListCommands()
{
return $this->send_request('ListCommands');
}
/**
* Logoff Manager
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+Logoff
*/
function Logoff()
{
return $this->send_request('Logoff');
}
/**
* Check Mailbox Message Count
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+MailboxCount
* @param string $mailbox
*/
function MailboxCount($mailbox)
{
return $this->send_request('MailboxCount', array('Mailbox'=>$mailbox));
}
/**
* Check Mailbox
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+MailboxStatus
* @param string $mailbox
*/
function MailboxStatus($mailbox)
{
return $this->send_request('MailboxStatus', array('Mailbox'=>$mailbox));
}
/**
* Monitor a channel
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+Monitor
* @param string $channel
* @param string $file
*/
function Monitor($channel, $file)
{
return $this->send_request('Monitor', array('Channel'=>$channel, 'File'=>$file));
}
/**
* Originate Call
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+Originate
* @param string $channel
* @param string $exten
* @param string $context
* @param string $priority
* @param integer $timeout
* @param string $callerid
* @param string $variable
* @param string $account
* @param string $application
* @param string $data
*/
function Originate($channel, $exten, $context, $priority, $timeout, $callerid, $variable, $account, $application, $data)
{
$parameters = array();
if($channel) $parameters['Channel'] = $channel;
if($exten) $parameters['Exten'] = $exten;
if($context) $parameters['Context'] = $context;
if($priority) $parameters['Priority'] = $priority;
if($timeout) $parameters['Timeout'] = $timeout;
if($callerid) $parameters['CallerID'] = $callerid;
if($variable) $parameters['Variable'] = $variable;
if($account) $parameters['Account'] = $account;
if($application) $parameters['Application'] = $application;
if($data) $parameters['Data'] = $data;
return $this->send_request('Originate', $parameters);
}
/**
* List parked calls
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+ParkedCalls
*/
function ParkedCalls()
{
return $this->send_request('ParkedCalls');
}
/**
* Ping
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+Ping
*/
function Ping()
{
return $this->send_request('Ping');
}
/**
* Queues
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+Queues
*/
function Queues()
{
return $this->send_request('Queues');
}
/**
* Queue Status
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+QueueStatus
*/
function QueueStatus()
{
return $this->send_request('QueueStatus');
}
/**
* Redirect
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+Redirect
* @param string $channel
* @param string $extrachannel
* @param string $exten
* @param string $context
* @param string $priority
*/
function Redirect($channel, $extrachannel, $exten, $context, $priority)
{
return $this->send_request('Redirect', array('Channel'=>$channel, 'ExtraChannel'=>$extrachannel, 'Exten'=>$exten,
'Context'=>$context, 'Priority'=>$priority));
}
/**
* Set the CDR UserField
*/
function SetCDRUserField()
{
// XXX need to look at source to find this function...
return $this->send_request('SetCDRUserField');
}
/**
* Set Channel Variable
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+SetVar
* @param string $channel
* @param string $variable
* @param string $value
*/
function SetVar($channel, $variable, $value)
{
return $this->send_request('SetVar', array('Channel'=>$channel, 'Variable'=>$variable, 'Value'=>$value));
}
/**
* List SIP Peers
*/
function SIPpeers()
{
// XXX need to look at source to find this function...
return $this->send_request('SIPpeers');
}
/**
* Channel Status
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+Status
* @param string $channel
*/
function Status($channel)
{
return $this->send_request('Status', array('Channel'=>$channel));
}
/**
* Stop monitoring a channel
*
* @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+StopMonitor
* @param string $channel
*/
function StopMontor($channel)
{
return $this->send_request('StopMonitor', array('Channel'=>$channel));
}
/**
* Dial over Zap channel while offhook
*/
function ZapDialOffhook()
{
// XXX need to look at source to find this function...
return $this->send_request('ZapDialOffhook');
}
/**
* Toggle Zap channel Do Not Disturb status OFF
*/
function ZapDNDoff()
{
// XXX need to look at source to find this function...
return $this->send_request('ZapDNDoff');
}
/**
* Toggle Zap channel Do Not Disturb status ON
*/
function ZapDNDon()
{
// XXX need to look at source to find this function...
return $this->send_request('ZapDNDon');
}
/**
* Hangup Zap Channel
*/
function ZapHangup()
{
// XXX need to look at source to find this function...
return $this->send_request('ZapHangup');
}
/**
* Transfer Zap Channel
*/
function ZapTransfer()
{
// XXX need to look at source to find this function...
return $this->send_request('ZapTransfer');
}
/*
* Log a message
*
* @param string $message
* @param integer $level from 1 to 4
*/
function log($message, $level=1)
{
if($this->pagi != false)
$this->pagi->conlog($message, $level);
else
error_log(date('r') . ' - ' . $message);
}
/**
* Add event handler
*
* Known Events include ( http://www.voip-info.org/wiki-asterisk+manager+events )
* Link - Fired when two voice channels are linked together and voice data exchange commences.
* Unlink - Fired when a link between two voice channels is discontinued, for example, just before call completion.
* Newexten -
* Hangup -
* Newchannel -
* Newstate -
* Reload - Fired when the "RELOAD" console command is executed.
* Shutdown -
* ExtensionStatus -
* Rename -
* Newcallerid -
* Alarm -
* AlarmClear -
* Agentcallbacklogoff -
* Agentcallbacklogin -
* Agentlogoff -
* MeetmeJoin -
* MessageWaiting -
* join -
* leave -
* AgentCalled -
* ParkedCall -
* Cdr -
* ParkedCallsComplete -
* QueueParams -
* QueueMember -
* QueueStatusEnd -
* Status -
* StatusComplete -
* ZapShowChannels -
* ZapShowChannelsComplete -
*
* @param string $event type or * for default handler
* @param string $callback function
* @return boolean sucess
*/
function add_event_handler($event, $callback)
{
$event = strtolower($event);
if(isset($this->event_handlers[$event]))
{
$this->log("$event handler is already defined, not over-writing.");
return false;
}
$this->event_handlers[$event] = $callback;
return true;
}
/**
* Process event
*
* @access private
* @param array $parameters
* @return mixed result of event handler or false if no handler was found
*/
function process_event($parameters)
{
$ret = false;
$e = strtolower($parameters['Event']);
$this->log("Got event.. $e");
$handler = '';
if(isset($this->event_handlers[$e])) $handler = $this->event_handlers[$e];
elseif(isset($this->event_handlers['*'])) $handler = $this->event_handlers['*'];
if(function_exists($handler))
{
$this->logg("Execute handler $handler");
$ret = $handler($e, $parameters, $this->server, $this->port);
}
else
$this->log("No event handler for event '$e'");
return $ret;
}
}
?>

View File

@ -0,0 +1,42 @@
// example phpagi.conf
[phpagi]
#enable debuging
debug=true
#use internal error handler
error_handler=true
#mail errors to
admin=errors@intertech.net
#host name of this server
hostname=sip.mydomain.com
# temporary directory for storing temporary output
tempdir=/var/spool/asterisk/tmp/
[festival]
#path to text2wave binary
text2wave=/usr/bin/text2wave
[asmanager]
# server to connect to
server=localhost
# default manager port
port=5038
#username for login
username=me_and_only_me
#password for login
secret=i_am_not_telling
[cepstral]
#alternate text to speech engine
swift=/opt/swift/bin/swift
voice=David

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,106 @@
<?php
###################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###################################################################################################
# Aastra XML API Classes - AastraIPPhone
#
# AastraIPPhone is the root class for all the Aastra XML objects.
#
# Public methods
# setTitle(Title) to setup the title of an object
# setDestroyOnExit() to set DestroyonExit parameter to 'yes', 'no' by default (optional)
# setBeep() to enable a notification beep with the object (optional)
# setRefresh(timeout,URL) to add Refresh parameters to the object (optional)
# addSoftkey(index,label,uri) to add custom soktkeys to the object (optional)
# output() to display the object
#
###################################################################################################
require_once('AastraIPPhoneSoftkeyEntry.class.php');
class AastraIPPhone {
var $_entries;
var $_softkeys;
var $_title;
var $_destroyOnExit='';
var $_refreshTimeout=0;
var $_refreshURL='';
var $_beep='';
function AastraIPPhone()
{
$this->_entries = array();
$this->_softkeys = array();
$this->_title = '';
}
function setTitle($title)
{
$this->_title = $title;
}
function setRefresh($timeout,$URL)
{
$this->_refreshTimeout = $timeout;
$this->_refreshURL = $URL;
}
function setBeep()
{
$this->_beep='yes';
}
function setDestroyOnExit()
{
$this->_destroyOnExit='yes';
}
function output()
{
header("Content-type: text/xml");
if (($this->_refreshTimeout!=0) and ($this->_refreshURL!='')) header("Refresh: ".$this->_refreshTimeout."; url=".$this->_refreshURL);
$output=$this->render();
header("Content-Length: ".strlen($output));
echo($output);
}
function addSoftkey($index, $label, $uri)
{
$this->_softkeys[] = new AastraIPPhoneSoftkeyEntry($index, $label, $uri);
}
function escape($string)
{
return(str_replace(
array('<', '>', '&'),
array('&lt;', '&gt;', '&amp;'),
$string
));
}
}
?>

View File

@ -0,0 +1,124 @@
<?
##################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###################################################################################################
# Aastra XML API Classes - AastraIPPhoneDirectory
#
# AastraIPPhoneDirectory object.
#
# Public methods
#
# Inherited from AastraIPPhone
# setTitle(Title) to setup the title of an object
# setDestroyOnExit() to set DestroyonExit parameter to 'yes', 'no' by default (optional)
# setBeep() to enable a notification beep with the object (optional)
# addSoftkey(index,label,uri) to add custom softkeys to the object (optional)
# setRefresh(timeout,URL) to add Refresh parameters to the object (optional)
# output() to display the object
#
# Specific to the object
# setNext(next) to set URI of the next page, optional
# setPrevious(previous) to set URI of the previous page, optional
# addEntry(name,phone) to add an element in the list to be displayed, at least one is needed.
# natsortbyname() to order the list
#
# Example
# require_once('AastraIPPhoneDirectory.class.php');
# $directory = new AastraIPPhoneDirectory();
# $directory->setTitle('Title');
# $directory->setNext('http://myserver.com/script.php?page=2');
# $directory->setPrevious('http://myserver.com/script.php?page=0');
# $directory->setDestroyOnExit();
# $directory->addEntry('John Doe', '200');
# $directory->addEntry('Jane Doe', '201');
# $directory->natsortByName();
# $directory->addSoftkey('1','Label 1','http://myserver.com/script.php?action=1');
# $directory->addSoftkey('6','Exit','SoftKey:Exit');
# $directory->output();
#
########################################################################################################
require_once('AastraIPPhone.class.php');
require_once('AastraIPPhoneDirectoryEntry.class.php');
class AastraIPPhoneDirectory extends AastraIPPhone {
var $_next="";
var $_previous="";
function setNext($next)
{
$this->_next = $next;
}
function setPrevious($previous)
{
$this->_previous = $previous;
}
function addEntry($name, $telephone)
{
$this->_entries[] = new AastraIPPhoneDirectoryEntry($name, $telephone);
}
function natsortByName()
{
$tmpary = array();
foreach ($this->_entries as $id => $entry) {
$tmpary[$id] = $entry->getName();
}
natsort($tmpary);
foreach ($tmpary as $id => $name) {
$newele[] = $this->_entries[$id];
}
$this->_entries = $newele;
}
function render()
{
$title = $this->escape($this->_title);
$next = $this->escape($this->_next);
$previous = $this->escape($this->_previous);
$out = '';
$out .= "<AastraIPPhoneDirectory";
if($previous!="") $out .= " previous=\"$previous\"";
if($next!="") $out .= " next=\"$next\"";
if($this->_destroyOnExit == 'yes') $out .= " destroyOnExit=\"yes\"";
if($this->_beep=='yes') $out .= " Beep=\"yes\"";
$out .= ">\n";
$out .= "<Title>{$title}</Title>\n";
$index=0;
foreach ($this->_entries as $entry) {
if($index<15) $out .= $entry->render();
$index++;
}
foreach ($this->_softkeys as $softkey) $out .= $softkey->render();
$out .= "</AastraIPPhoneDirectory>\n";
return $out;
}
}
?>

View File

@ -0,0 +1,58 @@
<?php
###################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###################################################################################################
# Aastra XML API Classes - AastraIPPhoneDirectoryEntry
#
# Internal class for AastraIPPhoneDirectory object.
########################################################################################################
class AastraIPPhoneDirectoryEntry extends AastraIPPhone {
var $_name;
var $_telephone;
function AastraIPPhoneDirectoryEntry($name, $telephone)
{
$this->_name=$name;
$this->_telephone=$telephone;
}
function getName()
{
return($this->_name);
}
function render()
{
$name = $this->escape($this->_name);
$telephone = $this->escape($this->_telephone);
return("<MenuItem>\n<Prompt>{$name}</Prompt>\n<URI>{$telephone}</URI>\n</MenuItem>\n");
}
}
?>

View File

@ -0,0 +1,73 @@
<?php
###################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
########################################################################################################
# Aastra XML API Classes - AastraIPPhoneExecute
#
# AastraIPPhoneTextMenu object.
#
# Public methods
#
# Inherited from AastraIPPhone
# output() to display the object
# setBeep() to enable a notification beep with the object (optional)
#
# Specific to the object
# addEntry(url) to add an action to be executed.
#
# Example
# require_once('AastraIPPhoneExecute.class.php');
# $execute = new AastraIPPhoneExecute();
# $execute->addEntry('http://myserver.com/script.php?choice=2');
# $execute->addEntry('Command: Reset');
# $execute->output();
#
########################################################################################################
require_once('AastraIPPhone.class.php');
require_once('AastraIPPhoneExecuteEntry.class.php');
class AastraIPPhoneExecute extends AastraIPPhone {
function addEntry($url)
{
$this->_entries[] = new AastraIPPhoneExecuteEntry($url);
}
function render()
{
$title = $this->escape($this->_title);
$out = "<AastraIPPhoneExecute";
if($this->_beep=='yes') $out .= " Beep=\"yes\"";
$out .= ">\n";
foreach ($this->_entries as $entry) $out .= $entry->render();
$out .= "</AastraIPPhoneExecute>\n";
return($out);
}
}
?>

View File

@ -0,0 +1,51 @@
<?php
###################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###################################################################################################
# Aastra XML API Classes - AastraIPPhoneExecuteEntry
# Aastra 480i Firmware 1.4.1 or better
#
# Internal class for AastraIPPhoneExecute object.
################################################################################
class AastraIPPhoneExecuteEntry extends AastraIPPhone {
var $_url;
function AastraIPPhoneExecuteEntry($url)
{
$this->_url=$url;
}
function render()
{
$url = $this->escape($this->_url);
$xml = "<ExecuteItem URI=\"".$url."\"/>\n";
return($xml);
}
}
?>

View File

@ -0,0 +1,143 @@
<?
###################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###################################################################################################
# Aastra XML API Classes - AastraIPPhoneInputScreen
#
# AastraIPPhoneInputScreen object.
#
# Public methods
#
# Inherited from AastraIPPhone
# setTitle(Title) to setup the title of an object
# setDestroyOnExit() to set DestroyonExit parameter to 'yes', 'no' by default (optional)
# setBeep() to enable a notification beep with the object (optional)
# addSoftkey(index,label,uri) to add custom softkeys to the object (optional)
# output() to display the object
#
# Specific to the object
# setURL() to set the URL to called after the input
# setType(type) to set type of input ('IP', 'string'or 'number'), 'string'by default
# setDefault(default) to set default value for the input (optional)
# setParameter(param) to set the parameter name to be parsed after the input
# setPassword() to set the Password parameter to 'yes', 'no' by default (optional)
# setNotEditable() to set the editable parameter to 'no', 'yes' by default (optional)
# setEditable() is now replaced by setNotEditable but kept for compatibility reasons (optional)
# setPrompt(prompt) to set the prompt to be displayed for the input.
#
# Example
# require_once('AastraIPPhoneInputScreen.class.php');
# $input = new AastraIPPhoneInputScreen();
# $input->setTitle('Title');
# $input->setPrompt('Enter your password');
# $input->setParameter('param');
# $input->setType('string');
# $input->setURL('http://myserver.com/script.php');
# $input->setPassword();
# $input->setDefault('');
# $input->setDestroyOnExit();
# $input->setNotEditable();
# $input->addSoftkey('1','Label 1','http://myserver.com/script.php?action=1');
# $input->addSoftkey('6','Exit','SoftKey:Exit');
# $input->output();
#
########################################################################################################
require_once('AastraIPPhone.class.php');
class AastraIPPhoneInputScreen extends AastraIPPhone {
var $_url;
var $_type='string';
var $_parameter;
var $_prompt;
var $_editable='';
var $_default='';
var $_password='';
function setURL($url)
{
$this->_url=$url;
}
function setType($type)
{
$this->_type=$type;
}
function setEditable()
{
$this->_editable='no';
}
function setNotEditable()
{
$this->_editable='no';
}
function setDefault($default)
{
$this->_default=$default;
}
function setParameter($parameter)
{
$this->_parameter=$parameter;
}
function setPassword()
{
$this->_password='yes';
}
function setPrompt($prompt)
{
$this->_prompt=$prompt;
}
function render()
{
$title = $this->escape($this->_title);
$prompt = $this->escape($this->_prompt);
$url = $this->escape($this->_url);
$out = '';
$out .= "<AastraIPPhoneInputScreen type=\"$this->_type\"";
if($this->_password == 'yes') $out .= " password=\"yes\"";
if($this->_destroyOnExit == 'yes') $out .= " destroyOnExit=\"yes\"";
if($this->_editable == 'no') $out .= " editable=\"no\"";
if($this->_beep=='yes') $out .= " Beep=\"yes\"";
$out .= ">\n";
$out .= "<Title>{$title}</Title>\n";
$out .= "<Prompt>{$prompt}</Prompt>\n";
$out .= "<URL>{$url}</URL>\n";
$out .= "<Parameter>{$this->_parameter}</Parameter>\n";
$out .= "<Default>{$this->_default}</Default>\n";
foreach ($this->_softkeys as $softkey) $out .= $softkey->render();
$out .= "</AastraIPPhoneInputScreen>\n";
return $out;
}
}
?>

View File

@ -0,0 +1,57 @@
<?php
###################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###################################################################################################
# Aastra XML API Classes - AastraIPSoftkeyEntry
# Aastra 480i Firmware 1.4.1 or better
#
# Internal class for AastraIPPhone object.
################################################################################
class AastraIPPhoneSoftkeyEntry extends AastraIPPhone {
var $_index;
var $_label;
var $_uri;
function AastraIPPhoneSoftkeyEntry($index, $label, $uri)
{
$this->_index=$index;
$this->_label=$label;
$this->_uri=$uri;
}
function render()
{
$index = $this->_index;
$uri = $this->escape($this->_uri);
$label = $this->escape($this->_label);
$xml = "<SoftKey index=\"$index\">\n<Label>{$label}</Label>\n<URI>{$uri}</URI>\n</SoftKey>\n";
return($xml);
}
}
?>

View File

@ -0,0 +1,83 @@
<?php
###################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###################################################################################################
# Aastra XML API Classes - AastraIPPhoneStatus
#
# AastraIPPhoneStatus object.
#
# Public methods
#
# Inherited from AastraIPPhone
# output() to display the object
# setBeep() to enable a notification beep with the object (optional)
#
# Specific to the object
# setSession(session) to setup the session ID
# addEntry(index,message,type,timeout) to add a message to be displayed on the idle screen.
#
# Example
# require_once('AastraIPPhoneStatus.class.php');
# $status = new AastraIPPhoneStatus();
# $status->setSession('Session');
# $status->setBeep();
# $status->addEntry('1','Message 1','',0);
# $status->addEntry('2','Message 2','alert',5);
# $status->output();
#
########################################################################################################
require_once('AastraIPPhone.class.php');
require_once('AastraIPPhoneStatusEntry.class.php');
class AastraIPPhoneStatus extends AastraIPPhone {
var $_session;
function setSession($session)
{
$this->_session=$session;
}
function addEntry($index, $message, $type='', $timeout=NULL)
{
$this->_entries[] = new AastraIPPhoneStatusEntry($index, $message, $type, $timeout);
}
function render()
{
$session = $this->escape($this->_session);
$out = "<AastraIPPhoneStatus";
if($this->_beep=='yes') $out .= " Beep=\"yes\"";
$out .= ">\n";
$out .= "<Session>".$session."</Session>\n";
foreach ($this->_entries as $entry) $out .= $entry->render();
$out .= "</AastraIPPhoneStatus>\n";
return($out);
}
}
?>

View File

@ -0,0 +1,66 @@
<?php
##################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
##################################################################################################
# Aastra XML API Classes - AastraIPPhoneStatusEntry
# Aastra 480i Firmware 1.4.1 or better
#
# Internal class for AastraIPPhoneStatus object.
##################################################################################################
class AastraIPPhoneStatusEntry extends AastraIPPhone {
var $_index;
var $_message;
var $_type='';
var $_timeout=NULL;
function AastraIPPhoneStatusEntry($index, $message, $type, $timeout)
{
$this->_index=$index;
$this->_message=$message;
$this->_type=$type;
$this->_timeout=$timeout;
}
function render()
{
$index = $this->escape($this->_index);
$message = $this->escape($this->_message);
$type = $this->_type;
$timeout = $this->_timeout;
$xml = "<Message index=\"{$index}\"";
if ($type!='')
{
$xml .= " type=\"{$type}\"";
if ($timeout!=NULL) $xml .= " Timeout=\"{$timeout}\"";
}
$xml .= ">{$message}</Message>\n";
return($xml);
}
}
?>

View File

@ -0,0 +1,114 @@
<?php
###################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###################################################################################################
# Aastra XML API Classes - AastraIPPhoneTextMenu
#
# AastraIPPhoneTextMenu object.
#
# Public methods
#
# Inherited from AastraIPPhone
# setTitle(Title) to setup the title of an object
# setDestroyOnExit() to set DestroyOnExit parameter to "yes" (optional)
# setBeep() to enable a notification beep with the object (optional)
# addSoftkey(index,label,uri) to add custom softkeys to the object (optional)
# setRefresh(timeout,URL) to add Refresh parameters to the object (optional)
# output() to display the object
#
# Specific to the object
# setDestroyOnExit() to set DestroyOnExit parameter to "yes", optional
# addEntry(name,url,selection) to add an element in the list to be displayed, at
# least one is needed.
# natsortbyname() to order the list
#
# Example
# require_once('AastraIPPhoneTextMenu.class.php');
# $menu = new AastraIPPhoneTextMenu();
# $menu->setTitle('Title');
# $menu->setDestroyOnExit();
# $menu->setDefaultIndex();
# $menu->addEntry('Choice 2', 'http://myserver.com/script.php?choice=2','');
# $menu->addEntry('Choice 1', 'http://myserver.com/script.php?choice=1','');
# $menu->addEntry('Choice 3', 'http://myserver.com/script.php?choice=3','');
# $menu->natsortByName();
# $menu->addSoftkey('1','Label 1','http://myserver.com/script.php?action=1');
# $menu->addSoftkey('6','Exit','SoftKey:Exit');
# $menu->output();
#
####################################################################################################
require_once('AastraIPPhone.class.php');
require_once('AastraIPPhoneTextMenuEntry.class.php');
class AastraIPPhoneTextMenu extends AastraIPPhone {
var $_defaultIndex="";
function setDefaultIndex($defaultIndex)
{
$this->_defaultIndex = $defaultIndex;
}
function addEntry($name, $url, $selection=NULL)
{
$this->_entries[] = new AastraIPPhoneTextMenuEntry($name, $url, $selection);
}
function natsortByName()
{
$tmpary = array();
foreach ($this->_entries as $id => $entry) {
$tmpary[$id] = $entry->getName();
}
natsort($tmpary);
foreach ($tmpary as $id => $name) {
$newele[] = $this->_entries[$id];
}
$this->_entries = $newele;
}
function render()
{
$title = $this->escape($this->_title);
$out = "<AastraIPPhoneTextMenu ";
if ($this->_destroyOnExit=='yes') $out .= "destroyOnExit=\"yes\" ";
if ($this->_defaultIndex!="") $out .= "defaultIndex=\"{$this->_defaultIndex}\"";
if($this->_beep=='yes') $out .= " Beep=\"yes\"";
$out .= ">\n";
$out .= "<Title>".$title."</Title>\n";
$index=0;
foreach ($this->_entries as $entry) {
if($index<15) $out .= $entry->render();
$index++;
}
foreach ($this->_softkeys as $softkey) $out .= $softkey->render();
$out .= "</AastraIPPhoneTextMenu>\n";
return($out);
}
}
?>

View File

@ -0,0 +1,64 @@
<?php
###################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###################################################################################################
# Aastra XML API Classes - AastraIPTextMenuEntry
# Aastra 480i Firmware 1.4.1 or better
#
# Internal class for AastraIPPhoneTextMenu object.
###################################################################################################
class AastraIPPhoneTextMenuEntry extends AastraIPPhone {
var $_name;
var $_url;
var $_selection;
function AastraIPPhoneTextMenuEntry($name, $url, $selection)
{
$this->_name=$name;
$this->_url=$url;
$this->_selection=$selection;
}
function getName()
{
return($this->_name);
}
function render()
{
$name = $this->escape($this->_name);
$url = $this->escape($this->_url);
$selection = $this->escape($this->_selection);
$xml = "<MenuItem>\n<Prompt>{$name}</Prompt>\n<URI>{$url}</URI>\n";
if($selection!=NULL) $xml .= "<Selection>{$selection}</Selection>\n";
$xml .= "</MenuItem>\n";
return($xml);
}
}
?>

View File

@ -0,0 +1,85 @@
<?
###################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###################################################################################################
# Aastra XML API Classes - AastraIPPhoneTextScreen
#
# AastraIPPhoneTextScreen object.
#
# Public methods
#
# Inherited from AastraIPPhone
# setTitle(Title) to setup the title of an object
# setDestroyOnExit() to set DestroyonExit parameter to 'yes', 'no' by default (optional)
# setBeep() to enable a notification beep with the object (optional)
# addSoftkey(index, label, uri) to add custom softkeys to the object (optional)
# setRefresh(timeout,URL) to add Refresh parameters to the object (optional)
# output() to display the object
#
# Specific to the object
# setText(text) to set the text to be displayed.
#
# Example
# require_once('AastraIPPhoneTextScreen.class.php');
# $text = new AastraIPPhoneTextScreen();
# $text->setTitle('Title');
# $text->setText('Text to be displayed.');
# $text->setDestroyOnExit();
# $text->addSoftkey('1','Label 1','http://myserver.com/script.php?action=1');
# $text->addSoftkey('6','Exit','SoftKey:Exit');
# $text->output();
#
###################################################################################################
require_once('AastraIPPhone.class.php');
class AastraIPPhoneTextScreen extends AastraIPPhone {
var $_text;
function setText($text)
{
$this->_text = $text;
}
function render()
{
$title = $this->escape($this->_title);
$text = $this->escape($this->_text);
$out = '';
$out .= "<AastraIPPhoneTextScreen";
if($this->_destroyOnExit == 'yes') $out .= " destroyOnExit=\"yes\"";
if($this->_beep=='yes') $out .= " Beep=\"yes\"";
$out .= ">\n";
$out .= "<Title>{$title}</Title>\n";
$out .= "<Text>{$text}</Text>\n";
foreach ($this->_softkeys as $softkey) $out .= $softkey->render();
$out .= "</AastraIPPhoneTextScreen>\n";
return $out;
}
}
?>

24
php_classes/License.txt Normal file
View File

@ -0,0 +1,24 @@
Copyright (c) 2006 Aastra Telecom US, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

148
php_classes/sample.php Normal file
View File

@ -0,0 +1,148 @@
<?php
###################################################################################################
# Copyright (c) 2006 Aastra Telecom US, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of Aastra Telecom US, Inc. may not be used to endorse or promote
# products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY AASTRA TELECOM US, INC. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL AASTRA TELECOM US, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
###################################################################################################
# Sample php applications using the Aastra XML API Classes
# Aastra SIP Phones Firmware 1.4.1 or better
#
# @param type, type of XML object to display
# type=textmenu AastraIPPhoneTextMenu
# type=textscreen AastraIPPhoneTextScreen
# type=directory AastraIPPhoneDirectory
# type=input AastraIPPhoneInputScreen
# type=status AastraIPPhoneStatus
# type=execute AastraIPPhoneExecute
#
##########################################################
##########################################################
# Retrieve type parameter
$type=$_GET['type'];
$type='inputscreen';
# Display the object
switch($type)
{
case 'textmenu':
require_once('AastraIPPhoneTextMenu.class.php');
$menu = new AastraIPPhoneTextMenu();
$menu->setTitle('Title');
# $menu->setDestroyOnExit();
$menu->setDeFaultIndex('3');
$menu->addEntry('Choice 2', 'http://65.205.71.13/php_classes/php_classes_1.4.1/sample.php', 'Value=2');
$menu->addEntry('Choice 1', 'http://65.205.71.13/php_classes/php_classes_1.4.1/sample.php', 'Value=1');
$menu->addEntry('Choice 3', 'http://65.205.71.13/php_classes/php_classes_1.4.1/sample.php', 'Value=3');
$menu->output();
# $menu = new AastraIPPhoneTextMenu();
# $menu->setTitle('Title');
# $menu->setDestroyOnExit();
# $menu->setDeFaultIndex('3');
# $menu->addEntry('Choice 2', 'http://myserver.com/script.php?choice=2', 'Value=2');
# $menu->addEntry('Choice 1', 'http://myserver.com/script.php?choice=1', 'Value=1');
# $menu->addEntry('Choice 3', 'http://myserver.com/script.php?choice=3', 'Value=3');
# $menu->natsortByName();
# $menu->addSoftkey('1', 'Label', 'http://myserver.com/script.php?action=1');
# $menu->addSoftkey('6', 'Exit', 'SoftKey:Exit');
# $menu->output();
break;
case 'textscreen':
require_once('AastraIPPhoneTextScreen.class.php');
$text = new AastraIPPhoneTextScreen();
$text->setTitle('Title');
$text->setText('Text to be displayed.');
$text->setDestroyOnExit();
$text->addSoftkey('1', 'Label', 'http://myserver.com/script.php?action=1');
$text->addSoftkey('6', 'Exit', 'SoftKey:Exit');
$text->output();
break;
case 'inputscreen':
require_once('AastraIPPhoneInputScreen.class.php');
$input = new AastraIPPhoneInputScreen();
$input->setTitle('Test Input');
$input->setPrompt('Pin code');
$input->setParameter('password');
$input->setType('number');
$input->setURL('http://192.168.0.49/VoIPer/Default.aspx?type=T001&user=TEST&number=');
$input->setPassword();
$input->setDestroyOnExit();
$input->output();
# $input = new AastraIPPhoneInputScreen();
# $input->setTitle('Title');
# $input->setPrompt('Enter your password');
# $input->setParameter('param');
# $input->setType('string');
# $input->setURL('http://myserver.com/script.php');
# $input->setPassword();
# $input->setDestroyOnExit();
# $input->setDefault('Default');
# $input->addSoftkey('1', 'Label', 'http://myserver.com/script.php?action=1');
# $input->addSoftkey('6', 'Exit', 'SoftKey:Exit');
# $input->output();
break;
case 'directory':
require_once('AastraIPPhoneDirectory.class.php');
$directory = new AastraIPPhoneDirectory();
$directory->setTitle('Title');
$directory->setNext('http://myserver.com/script.php?page=2');
$directory->setPrevious('http://myserver.com/script.php?page=0');
$directory->setDestroyOnExit();
$directory->addEntry('John Doe', '200');
$directory->addEntry('Jane Doe', '201');
$directory->natsortByName();
$directory->addSoftkey('1', 'Label', 'http://myserver.com/script.php?action=1');
$directory->addSoftkey('6', 'Exit', 'SoftKey:Exit');
$directory->output();
break;
case 'status':
require_once('AastraIPPhoneStatus.class.php');
$status = new AastraIPPhoneStatus();
$status->setSession('Session');
$status->setBeep();
$status->addEntry('1','Message 1',"alert",5);
$status->addEntry('2','Message 2');
$status->output();
break;
case 'execute':
require_once('AastraIPPhoneExecute.class.php');
$execute = new AastraIPPhoneExecute();
$execute->addEntry('http://myserver.com/script.php?choice=2');
$execute->addEntry('Command: Reset');
$execute->output();
break;
}
?>