Страница 1 из 2

Не работает шумодав

Добавлено: 20 июн 2017, 14:02
discripter
Раньше на сервере стоял Asterisk + FreePBX, ответы клиентов распознавались корректно.
Сейчас на сервере стоит голый Asterisk, диалпланы не изменились, если у клиента чуть шумно, то астериск учитывает этот шум, а раньше не учитывал.
Есть мнение что функция DENOISE перестала работать в данном случае.
Кодеки во время звонка используются alaw, ulaw
Диалпланы ниже.

Код: Выделить всё

[call-out]
exten => s,1,Set(DENOISE(rx)=on)
exten => s,n,Wait(10)

[talk-detect-on]
exten => s,1,Set(TALK_DETECT(set)=300)
exten => s,n,Wait(10)

[talk-detect-off]
exten => s,1,Set(TALK_DETECT(remove)=)
exten => s,n,Wait(10)

[mix-monitor]
exten => s,1,MixMonitor(${mix-monitor-file})
exten => s,n,Wait(10)

Как удостовериться что денойс таки работает? Если он неработает, как починить?

Re: Не работает шумодав

Добавлено: 20 июн 2017, 14:11
awsswa
для начало нужно понять версию которую поставили и sip или pjsip

Re: Не работает шумодав

Добавлено: 20 июн 2017, 14:29
discripter
для начало нужно понять версию которую поставили и sip или pjsip

Код: Выделить всё

Asterisk 13.15.0, Copyright (C) 1999 - 2014, Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Running as user 'asterisk'
Running under group 'asterisk'
SIP.

Re: Не работает шумодав

Добавлено: 20 июн 2017, 16:42
ded
Админ вижу Вы знающий, знатный и толковый. И оверквотинг сразу об этом говорит. Диалпланы

Код: Выделить всё

[call-out]
exten => s,1,Set(DENOISE(rx)=on)
exten => s,n,Wait(10)

[talk-detect-on]
exten => s,1,Set(TALK_DETECT(set)=300)
exten => s,n,Wait(10)

[talk-detect-off]
exten => s,1,Set(TALK_DETECT(remove)=)
exten => s,n,Wait(10)
никак с друг другом не связаны, непонятно вообще - инициализируется ли опция DENOISE(rx)=on ?? Тут Вам бы в консоль смотреть, когда вызов идёт. Да и дебаг очень помогает, если его включать.
awsswa писал(а):для начало нужно понять версию которую поставили и sip или pjsip
Как Ваш пост (выше) отвечает на поставленный вопрос?

Re: Не работает шумодав

Добавлено: 21 июн 2017, 11:02
discripter
Диалпланы никак с друг другом не связаны, непонятно вообще - инициализируется ли опция DENOISE(rx)=on ?? Тут Вам бы в консоль смотреть, когда вызов идёт. Да и дебаг очень помогает, если его включать.
Ребят, я конечно понимаю что тут на форуме по умолчанию пишут дурачки которые ничего не понимают в диалпланах, но все же прошу не причислять меня к оным.
Диалпланы переключаются во время разговора в нужные моменты.
Конкретно по денойсу - он запускается вначале разговора, если планируется распознавание речи.

теперь конкретно по редиректу - он выполняется следующим образом:

Код: Выделить всё

  $socket = self::connect();
        if (!$socket) {
            return FALSE;
        }
        self::login($socket);

        if ($set_vars && is_array($set_vars)) {
            foreach ($set_vars as $key => $value) {

                $req = "Action: Setvar\r\nChannel: $channel\r\nVariable: $key\r\nValue: $value\r\n\r\n";

                fputs($socket, $req);
                fflush($socket);

                $result = self::read_from_socket($socket, "\r\n\r\n");
                if ($result == -1) {
                    self::log($req, "timeout");
                } elseif (self::ASTERISK_DEBUG) {
                    self::log($req, $result);
                }
            }

        }

        $req = "Action: Redirect\r\nChannel: $channel\r\nContext: $context\r\nExten: $exten\r\nPriority: 1\r\n\r\n";

        fputs($socket, $req);
        fflush($socket);

        $result = self::read_from_socket($socket, "\r\n\r\n");
        if ($result == -1) {
            self::log($req, "timeout");
        } elseif (self::ASTERISK_DEBUG) {
            self::log($req, $result);
        }

        self::logout($socket);
        return $result;
Отмечу что система работает в продакшене уже более года и ошибки редиректа и прочие возражения подобного исключены.

Re: Не работает шумодав

Добавлено: 21 июн 2017, 11:25
zzuz
Диалпланы переключаются во время разговора в нужные моменты.
Я вот этому не верю. Где подтверждение ?

Re: Не работает шумодав

Добавлено: 21 июн 2017, 11:43
ded
ded писал(а): Тут Вам бы в консоль смотреть, когда вызов идёт. Да и дебаг очень помогает, если его включать.
Если система работает в продакшене уже более года и ошибки редиректа и прочие возражения подобного исключены, то зачем Вы приводите здесь свои куски кода и диал-план?
Одной рукой пишем, другой зачёркиваем? Одной исключаем, другой ставим под сомнение? Что мешает дебажить и разбираться?

Re: Не работает шумодав

Добавлено: 21 июн 2017, 12:41
Wapo
А что говорит: core show function DENOISE

Re: Не работает шумодав

Добавлено: 21 июн 2017, 12:44
ded
Ну вообще то то же, что и у всех -
*CLI> core show function DENOISE

-= Info about function 'DENOISE' =-

[Synopsis]
Apply noise reduction to audio on a channel.

[Description]
The DENOISE function will apply noise reduction to audio on the channel that
it is executed on. It is very useful for noisy analog lines, especially when
adjusting gains or using AGC. Use 'rx' for audio received from the channel
and 'tx' to apply the filter to the audio being sent to the channel.
Examples:
exten => 1,1,Set(DENOISE(rx)=on)
exten => 1,2,Set(DENOISE(tx)=off)

[Syntax]
DENOISE(channeldirection)

[Arguments]
channeldirection
This can be either 'rx' or 'tx' the values that can be set to this
are either 'on' and 'off'

Re: Не работает шумодав

Добавлено: 21 июн 2017, 12:55
Wapo
А вот не всегда:

Код: Выделить всё

Connected to Asterisk 12.8.2 currently running on ubuntu (pid = 677)
ubuntu*CLI> core show function DENOISE
No function by that name registered.
Command 'core show function DENOISE' failed.