Чтобы начать использовать сервисы в телефонах Cisco нужно в конфиг файл телефона добавить строки:
Для Cisco 7910(7911, 7941)^
http://10.0.1.1/cisco/directory.php
для 7940:
services_url: "http://10.0.1.1/cisco/directory.php"
где 10.0.1.1 – сервер с apache и php
Там я создал пару php скриптов спертых с http://www.voip-info.org/
directory.php:
header("Content-type: text/xml");
header("Connection: close");
header("Expires: -1");
?>
My_Firma
Kakoe-to privetstvie
это просто для генерации корневого меню в котором можно глянуть номера телефонов двух филий либо посмотреть погоду.
файл с телефонным справочником должен отдавать xml с такой структурой:
header("Content-type: text/xml");
header("Connection: close");
header("Expires: -1");
?>
Users
People reachable via VoIP in my company
Aleksey xxxxxx
8050
Nastya xxxxxx
8051
Чтоб не мучатся с составлением списка телефонов – можно распарсить sip.conf
Вот примерно так выглядит парсер:
header("Content-type: text/xml");
header("Connection: close");
header("Expires: -1");
// location of asterisk config files
$location = "/var/www/"; # либо на ходу из /etc/asterisk/
$dirname = "Company Directory";
// parse sip.conf
$sip_array = parse_ini_file($location."sip.conf", true);
reset($sip_array);
echo "\n";
echo "".$dirname." \n";
echo "People reachable via VoIP ";
while (list($key, $val) = each($sip_array)) {
if (isset($val["callerid"]))
{echo "\n\n";
$caller = substr($val["callerid"],0,strpos($val["callerid"],'<',4));
echo "".$caller." \n".
"".$key." \n";
echo " \n";
}
}
echo "\nChoose Name and Press Dial \n";
echo " \n";
?>
так получилось для моего конфига , если не подойдет – можно взять с voip-info пример и его помучать
Так-же можно в сервис всунуть прогноз погоды….
Я пока только тренируюсь, поэтому у меня стоит тестовый парсер погоды с yahoo, выглядит он примерно так:
header("Content-type: text/xml");
header("Connection: close");
header("Expires: -1");
?>
units = ($units == 'c')?'c':'f';
$url = 'http://xml.weather.yahoo.com/forecastrss?p='.
$code.'&u='.$this->units;
$xml_contents = file_get_contents($url);
if($xml_contents === false)
throw new Exception('Error loading '.$url);
$xml = new SimpleXMLElement($xml_contents);
// Ветер
$tmp = $xml->xpath('/rss/channel/yweather:wind');
if($tmp === false) throw new Exception("Error parsing XML.");
$tmp = $tmp[0];
$this->wind_chill = (int)$tmp['chill'];
$this->wind_direction = (int)$tmp['direction'];
$this->wind_speed = (int)$tmp['speed'];
// Атмосферные показатели
$tmp = $xml->xpath('/rss/channel/yweather:atmosphere');
if($tmp === false) throw new Exception("Error parsing XML.");
$tmp = $tmp[0];
$this->humidity = (int)$tmp['humidity'];
$this->visibility = (int)$tmp['visibility'];
$this->pressure = (int)$tmp['pressure'];
// Время восхода и заката переводим в формат unix time
$tmp = $xml->xpath('/rss/channel/yweather:astronomy');
if($tmp === false) throw new Exception("Error parsing XML.");
$tmp = $tmp[0];
$this->sunrise = strtotime($tmp['sunrise']);
$this->sunset = strtotime($tmp['sunset']);
// Текущая температура воздуха и погода
$tmp = $xml->xpath('/rss/channel/item/yweather:condition');
if($tmp === false) throw new Exception("Error parsing XML.");
$tmp = $tmp[0];
$this->temp = (int)$tmp['temp'];
$this->condition_text = strtolower((string)$tmp['text']);
$this->condition_code = (int)$tmp['code'];
// Прогноз погоды на 5 дней
$forecast = array();
$tmp = $xml->xpath('/rss/channel/item/yweather:forecast');
if($tmp === false) throw new Exception("Error parsing XML.");
foreach($tmp as $day) {
$this->forecast[] = array(
'date' => strtotime((string)$day['date']),
'low' => (int)$day['low'],
'high' => (int)$day['high'],
'text' => (string)$day['text'],
'code' => (int)$day['code']
);
}
}
public function __toString() {
$u = "°".(($this->units == 'c')?'C':'F');
return $this->temp.' '.$u.', '.$this->condition_text;
}
}
?>
getMessage();
exit();
}
try {
$weather1 = new YahooWeather('UPXX0021');
} catch(Exception $e) {
echo "Caught exception: ".$e->getMessage();
exit();
}
echo "
Kyiv
current temperature
Now in Kyiv ".$weather->temp."C
Now in Odessa ".$weather1->temp."C ";
echo " ";
?>
В данном случае я показываю температуру для Киева и Одессы… если подправить, то можно получить отсюда погоду на 5 дней… ветер, влажность, облачность и т.д.