Решил поделиться скриптом для набора номера на аппаратах Cisco IP Phone 7960/7940 (возможно, работает и на других с аналогичной прошивкой). Зачем это может быть нужно? Я это использую для интеграции с callto:// links и интеграцией со своим телефонным справочником. Скрипт работает через telnet, так что вы должны включить его на телефоне. Набор номера использует команду test, которая служит для эмуляции нажатия кнопок на аппарате. Пауза (с зависимостью от длинны номера) требуется для того, чтобы телефон не сходил с ума.Надеюсь, кому-то это скрипт тоже пригодится.
#!/usr/bin/perl
use Net::Telnet;
use Time::HiRes;# cisco phone host name
my $host='192.168.0.1';
# cisco phone password
my $password='cisco';
# mute on a dial 0/1
my $mute=0;my $sleeptime=.2;
my $prompt='/> $/';my $argc = @ARGV;
if ($argc!=1){
print "Usage: call.pl <number>\n";
exit;
}
my $number=@ARGV[0];if($number!~/^[0-9*#]+$/) {
print "Error: wrong characters in the numer\n";
exit 2;
}
$telnet = new Net::Telnet ( Timeout=>3, Errmode=>'die');
# connecting
$telnet->open($host);
$telnet->waitfor('/Password :$/i');
$telnet->print($password);
$telnet->waitfor($prompt);
$telnet->print('test open');
$telnet->waitfor($prompt);
$telnet->print('test key spkr');
$telnet->waitfor($prompt);Time::HiRes::sleep($sleeptime);
if($mute){
$telnet->print('test key mute');
$telnet->waitfor($prompt);Time::HiRes::sleep($sleeptime);
}
$telnet->print("test key ".$number."#");
$telnet->waitfor($prompt);Time::HiRes::sleep((length($number)+1)*$sleeptime);
$telnet->print('test close');
$telnet->waitfor($prompt);
$telnet->close($host);
URL:
Обсуждается: http://www.opennet.me/tips/info/2675.shtml
Так все тоже самое можно сделать на expect
Наверняка можно. Просто перл у меня уже был, а expect - нет, да и не сильно нужен. А так - хоть на асме, в чём проблема.
респект Алекс
я бы еще добавил для очистки номера от ненужных символов$number =~ s/^\+7/8/g;
$number =~ s/^\(/8/g;
$number =~ s/[-,(,), ]//g;вот только как в MacOS X прикрутить к callto:// ???
так это только для sip? смысл тогда платить столько бабла за цискофоны и не получать кайфа от sccp?
> так это только для sip? смысл тогда платить столько бабла за
> цискофоны и не получать кайфа от sccp?1) не совсем понимаю почему это только для сип.
2) Вообще не понимаю в чём для меня "кайф" sccp
3) 7940/7960 на ебее можно купить крайне дешёво, модель уже давно снята с производства.Такие дела.
1) telnet в sccp прошивке недоступен (по крайней мере сccm8.6.2 последний device pack)
2) Не поймите неправильно, я про себя. По мне SCCP в разы удобнее (проще в обслуге), будучи клиент-серверным протоколом.
3) Представьте, что у конторы > 3k циско-телефонов. Данная контора не будет их покупать на ибее.
> 1) telnet в sccp прошивке недоступен (по крайней мере сccm8.6.2 последний device
> pack)А, ну может, я за ним не следил. Тогда для меня это еще 1 минус.
> 2) Не поймите неправильно, я про себя. По мне SCCP в разы
> удобнее (проще в обслуге), будучи клиент-серверным протоколом.Ну от сервера зависит, опять же. Но это наколенное решение явно не подходит для случая с 3000 телефонов ))
> 3) Представьте, что у конторы > 3k циско-телефонов. Данная контора не будет
> их покупать на ибее.Данная контора их не будет покупать в принципе, потому что они уже давно end of life и end of sale. А вот для маленького офиса или дома эти телефоны вполне себе гуд.
SCCP фактически позволяет server-side provisioning.
Настроил на сервере, и на телефонах уже делать ничего не надо. Это его основное и наверное единственное достоинство.
Спасибо большое!