Запрет звонков
Откуда: Уфа
Сообщений: 5856
|
Re: Запрет звонков
гыгы.
дело еще в том, что инструкция
exten => _11[02]/115,1,Dial(SIP/${EXTEN})
отработала, вызов должен попасть в контекст, в котором она находится.
если Mirael_Karamir просто напишет ее то работать не будет. контекст нада оределять по-любому
|
Сообщений: 12
|
Re: Запрет звонков
А смогут ли все остальные номера звонить на 115 если они находятся в другом контексте???
И еще один глупый вопрос в догонку тогда: можно ли сделать, что бы после трансфера звонка, если никто не подымает трубку в течении какого то времени, либо если там занято, то что бы звонок возвращался назад?
|
Откуда: pl Earth
Сообщений: 224
|
Re: Запрет звонков
отвечу сразу обоим (cron333 и switch):
вопрос не стоял чтобы я сделал полностью всё. это уже будет РАБОТОЙ.
вопрос был - как. я показал как. умный человек додумает уже сам как дальше привязать это к своей ситуации и под свои задачи. а дураку хоть разжевывай хоть нет, пользы будет ноль.
если вы привыкли работать даром для других - ради бога, допишите всё что не хватает, разве я против? ;)
только не нужно мне говорить что я ленивый и недописал чтото потому что не хочу задаром всё продумать до конца (тоесть поработать).
сделайте сами раз такие умные.
Успехов!
|
Откуда: Уфа
Сообщений: 5856
|
Re: Запрет звонков
2 anest: яж не для тебя объяснял, ты-то понятно шарящий,
а вот Mirael_Karamir видно не очень. вот и объяснил ему.
также хочу объяснить ему почитать voip.rus.net
|
Сообщений: 12
|
Re: Запрет звонков
Люди, не ссорьтесь :) я идею понял, спасибо за помощь всем :) Просто сразу начал думать насчет функции которая бы проверяла кто звонит, куда, и можно ли ему это делать. Но ваш вариант конешно же проще :) Может подкините идею насчет трансферов? Еще раз спасибо всем за помощь.
|
Откуда: Уфа
Сообщений: 5856
|
Re: Запрет звонков
можно и трансфер сделать.
читай лучше voip.rus.net и что угодно сделаешь
|
Откуда: Санкт-Петербург
Сообщений: 568
|
Re: Запрет звонков
Mirael_Karamir: Люди, не ссорьтесь :) я идею понял, спасибо за помощь всем :) Просто сразу начал думать насчет функции которая бы проверяла кто звонит, куда, и можно ли ему это делать.
Если правил будет много, предыдущий вариант будет проблематично поддерживать и админить. Функцию написать не сложно, пример на phpagi:
#!/usr/bin/php -q
<?php
require_once "phpagi.php";
$agi = new AGI();
$cid = $agi->request['agi_callerid'];
$ext = $agi->request['agi_dnid'];
$agi->verbose("##### FROM: $cid | TO: $ext");
if ($cid == 115) and (($ext != 112) or ($ext != 110)) {
$agi->hangup();
}
?>
|
Откуда: Москва
Сообщений: 3421
|
Re: Запрет звонков
Mirael_Karamir: ... Просто сразу начал думать насчет функции которая бы проверяла кто звонит, куда, и можно ли ему это делать.
Решение зависит от уровня. Если у Вас сотни абонентов, ставьте биллинг. Ибо это уже называется authentication и authorization.
А если внутри офиса разруливать на пару десятков сотрудников, то можно и так (не обязательно это делать на AGI)
Можно реализовать на уровне диалплана + astdb для удобства администрирования.
Пример:
[users]
exten => _8X.,1,Macro(check-dial,8)
exten => _8X.,2,Dial(...)
exten => _810X.,1,Macro(check-dial,810)
exten => _810X.,2,Dial(...)
[macro-check-dial]
exten => s,1,ExecIf($[ "${DB(block_${ARG1}/${CALLERID(num)})}" = "" ]|MacroExit)
exten => s,n,Answer
exten => s,n,Playback(blocked)
exten => s,n,Hangup
Таким образром, надо из CLI добавить номера сотрудников, кому нельзя использовать 8 или 810.
|
Откуда: Уфа
Сообщений: 5856
|
Re: Запрет звонков
Эволюция Программиста, на примере программы Hello World!
1. Старший курс школы.
10 PRINT "HELLO WORLD"
20 END
2. Младший курс института.
program Hello(input,output)
begin
writeln('Hello World')
end.
3. Старший курс института.
(defun hello
(print
(cons' Hello (list 'World))))
4. Молодой специалист.
#include
void main(void)
{
char *message[] = {"Hello ","World"};
int x;
for(x = 0; x < 2; ++x)
printf("%s", message[x]);
printf("\n");
}
5. Опытный профессионал.
#include
class string
{ private:
int size;
char *ptr;
public:
string() : size(0), ptr(new char('\0')) {}
string(const string &s) : size(s.size)
{
ptr = new char[size + 1];
strcpy(ptr, s.ptr);
}
~string()
{
delete [] ptr;
}
friend ostream &operator << (ostream &, const string &);
string &operator = (const char *);
};
ostream &operator << (ostream &stream, const tring &s)
{
return(stream << s.ptr);
}
string &string:perator = (const char *chrs)
{
if(this != &chr)
{
delete [] ptr;
size = strlen(chrs);
ptr = new char[size + 1];
strcpy(ptr, chr);
}
return(*this);
}
int main()
{
string str;
str = "Hello World";
cout << str << endl;
return(0);
}
6. Системный администратор.
#include
main()
{ char *tmp;
int i=0;
/*Хапнем побольше*/
tmp = (char *)malloc(1024*sizeof(char));
while (tmp[I ]="Hello World"[i++]);
/*Блин, лажанулся*/
i = (int)tmp[8];
tmp[8] = tmp[9];
tmp[9] = (char)i;
printf("%s\n",tmp);
}
7. Hачинающий хакер.
#!/usr/local/bin/perl
$msg="Hello, World.\n";
if ($#ARGV >= 0)
{
while(defined($arg=shift(@ARGV)))
{
$outfilename = $arg;
YwWy(FILE, ">" . $outfile name) || die "Can't close $arg:$!\n";
}
} else {
print($msg);
}
1;
8. Понаторевший хакер.
#include
#define S "Hello, World\n"
main()
{exit(printf(S)==strlen(S)?0:1);}
9. Закаленный хакер.
% cc -o a.out
~/src/misc/hw/hw.c
% a.out
10. Хакер-гуру.
% cat
Hello, World.
^D
11. Младший менеджер.
10 PRINT "HELLO WORLD"
20 END
12. Менеджер среднего уровня.
% mail -s "Hello, World."
bob@b12
Боб, не могли бы Вы написать для меня программу "Hello, World."?
Она понадобится мне завтра.
^D
13. Старший менеджер.
% zmail jim
Мне нужна программа "Hello, World.", и немедленно!
14. Президент компании.
% letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% Черт!
!: Event unrecognized.
% logout
|
|