Рубрики
Linux & Unix voip

Сервисы в voip телефонах

Чтобы начать использовать сервисы в телефонах 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:

 

My_Firma
Kakoe-to privetstvie

Kyiv
http://10.0.1.1cisco/kyiv/kyiv.php


Odessa
http://10.0.1.1/cisco/odessa/odessa.php


Weather
http://10.0.1.1/cisco/weather.php

это просто для генерации корневого меню в котором можно глянуть номера телефонов двух филий либо посмотреть погоду.
файл с телефонным справочником должен отдавать xml с такой структурой:

 
       
   Users
   People reachable via VoIP in my company                    
                                                 
      Aleksey xxxxxx         
      8050
                                         
                
      Nastya xxxxxx       
      8051                                            
         

Чтоб не мучатся с составлением списка телефонов – можно распарсить sip.conf
Вот примерно так выглядит парсер:

\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, выглядит он примерно так:


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 дней… ветер, влажность, облачность и т.д.

Добавить комментарий