Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Конфигурация и настройка / Extension mobility

Extension mobility

Extension mobility on Asterisk
<1 2
Avatara of litnimax
Откуда: Москва
Сообщений: 3421

Re: Extension mobility

Дважды молодец!
1) Что нашел решение!
2) Что поделился с другими!
Увековечим это хорошее дело - http://asteriskpbx.ru/wiki/extension-mobility?
http://pbxware.ru - все для Asterisk! || Switchvox - сделано на Asterisk! Подробности на http://switchvox.ru
2009-03-05 15:51

Avatara of litnimax
Откуда: Москва
Сообщений: 3421

Re: Extension mobility

ded:

Ох-ох!
А во freePBX просто бери готовое
*11 Logon
*12 Logoff
Ох уз эти сказоцники...

http://pbxware.ru - все для Asterisk! || Switchvox - сделано на Asterisk! Подробности на http://switchvox.ru
2009-03-05 15:51

Откуда: Kyiv
Сообщений: 7

Re: Extension mobility

Конечно вековечим, я ничуть не против:).
2009-03-05 15:58

Откуда: Kyiv
Сообщений: 7

Re: Extension mobility

На этапе развития решения возник вопрос, как после успешного прохождения авторизации по данным из voicemail.conf вытянуть ФИО пользователя для установки CallerID(name)?
2009-03-10 12:09

Сообщений: 6521

Re: Extension mobility

Это должен быть ответ, а не вопрос.
2009-03-10 14:27

Откуда: Kyiv
Сообщений: 7

Re: Extension mobility

ded:

Это должен быть ответ, а не вопрос.
Может я не совсем коректно задал вопрос, но ответ смысла вовсе не содержит. Попробую перефразировать:

Нужно чтобы после регистрации Callerid телефона заменялся на номер и имя пользователя под которыми он регистрировался. С номером проблем не возникло, так как после регистрации он попадает в переменную ${AUTH_MAILBOX}. А вот как вытянуть Имя Пользователя?
2009-03-10 18:13

Сообщений: 6521

Re: Extension mobility

Для программиста, который осваивает Астериск это не должно быть вопросом, это краткое ТЗ, которое почитал, глянул на списко переменных и сделал. То есть Вам нужно писать так:

Чтобы после регистрации Callerid телефона заменялся на номер и имя пользователя под которыми он регистрировался и с номером проблем не возникло, так как после регистрации он попадает в переменную ${AUTH_MAILBOX} можно вытянуть Имя Пользователя из переменной CALLERID(name) так то и так то.

Вот так то.
2009-03-10 18:53

Avatara of Alekz
Откуда: Санкт-Петербург
Сообщений: 931

Re: Extension mobility

Ради интереса сделал более универсальный обработчик на Perl Agi

#!/usr/bin/perl
use Asterisk::AGI;
use strict;

my $AGI = new Asterisk::AGI;
my @account;
my $line;
my %input = $AGI->ReadParse();
my $pass_file = $AGI->get_variable('FILE');
my $pass = $AGI->get_variable('PASSWORD');

$AGI->send_text("Password is $pass");
$input{extension} =~s/^(\*1)?//;

open(FILE,$pass_file) or die "Can't open file $pass_file";

while ($line = <FILE>) {
if ($line =~m/^(;)*(\d){3,4}(\s)*(=){1}(>)?(\s)*(\w)+/i) {
$line =~s/(\s)*(=){1}(>)?(\s)*/,/;
chop $line;
@account = split(/,/,$line,5);
if ($account[1] eq $pass) {
$AGI->send_text("Found extension $account[0] -- $input{extension}");
my $act = 0;
if ($account[0] =~m/^(;)+/) {
$account[0] =~s/^(;)+//;
$act = 1;
}
if (($input{extension} eq "") || ($input{extension} eq $account[0])) {
$AGI->send_text("Trying to put to the DB");
$input{channel} =~s/(-){1}(\w){8}$//;
$AGI->database_put("MOBILITY/".$account[0],"dev",$input{channel});
if ($act eq "0") { $AGI->database_put("MOBILITY/".$account[0],"status","active"); }
else { $AGI->database_put("MOBILITY/".$account[0],"status","blocked"); }
$AGI->database_put("MOBILITY/".$account[0],"name","\"".$account[2]."\"");
}
}
}
}
close FILE;
Создам аварийную ситуацию. Дорого. На долго =)
2009-03-13 11:25

Avatara of Alekz
Откуда: Санкт-Петербург
Сообщений: 931

Re: Extension mobility

Предварительно должны быть в диалплане заданы переменные PASSWORD и FILE(файл из которого тянуться учетные данные, в частности voicemail.conf). Пока не понял почему не работает передача переменных в agi.

Скрипт может работать с любыми файлами с синтаксисом ящиков из voicemail.conf. Закомментированные в файле ящики считает заблокированными (). Результат работы пишет в astdb MOBILITY/${EXTEN}/dev|name|status.

exten = _*.,1,Answer()
exten = _*.,n,Playback(vm-password)
exten = _*.,n,Read(PASSWORD,,4)
exten = _*.,n,Set(FILE=/etc/asterisk/voicemail.conf)
exten = _*.,n,AGI(parse_conf_pass.pl)
exten = _*.,n,Wait(1)
exten = _*.,n,HangUp()

При звонке на *1 будет выбран voicemail с совпадающим паролем, если же звонок выполнен в формате *1[номер почтового ящика] будет выполнятся проверка mailbox\password.

Про конструкцию "_*." - ни слова, делал для теста.=)
Создам аварийную ситуацию. Дорого. На долго =)
2009-03-13 11:34

<1 2
Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru