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

Определение факса при исходящем звонке

DAHDI-канал
1 2>
Сообщений: 33

Определение факса при исходящем звонке

Встала задача определять при исходящих звонках, что на другом конце подняло трубку - человек или факс, и в зависимости от результата делать различные действия.
Канал - chan_dahdi.
В настройках стоит faxdetect=both (пробовал и outgoing).
Если делаю Dial на номер с голосом, то звонок проходит.
Если же на номер с факсом - соединение устанавливается (факс снимает трубку), успевает пропищать 0.5-1 секунду приблизительно, и потом звуки прекращаются. При этом дальше по контексту не идёт, только если руками повесить трубку - тогда Dial заканчивается.
Поиск даёт описания о том как слать и принимать факсы - с этим проблем-то нет.
А вот как определить, кто снял трубку на твой звонок?
2009-10-29 14:26

Сообщений: 6521

Re: Определение факса при исходящем звонке

Параметр faxdetect= отключает эхокомпенсацию, если факс, потому что для факса эхокомпенсация - вредит. На вашу задачу этот параметр не влияет.
Изучайте amd.conf
2009-10-29 14:39

Сообщений: 33

Re: Определение факса при исходящем звонке

ded:

Параметр faxdetect= отключает эхокомпенсацию, если факс, потому что для факса эхокомпенсация - вредит. На вашу задачу этот параметр не влияет.
Ух ты, ничего себе... Как-то неочевидно это, и не описано вроде нигде, к сожалению. Спасибо!

ded:

Изучайте amd.conf

Приложение AMD - это понятно, им я умею отличить человека от автоответчика. Я думал, есть что-нибудь что работает как NVFaxDetect (эх, почему оно на вход только работает...)
2009-10-29 14:52

Сообщений: 33

Re: Определение факса при исходящем звонке

Ну то есть вот вопрос даже как с помощью AMD различить человека, автоответчика, и факса...
В случае "machine" запускать второй раз AMD с другими параметрами, адаптированными под различение автоответчик/факс, что ли?
2009-10-29 15:03

Сообщений: 866

Re: Определение факса при исходящем звонке

ded:

Параметр faxdetect= отключает эхокомпенсацию, если факс, потому что для факса эхокомпенсация - вредит. На вашу задачу этот параметр не влияет.
это откуда такие сведения?
faxdetect таки говорит что нужно скать CNG тон в звуке на канале. и в зависимости от incoming/outgoing/both - ищется либо в одном направлении либо в обоих.

Проблема как я понимаю в том, что астериск ищет CNG - то есть тон _передающего_ факса. А на той стороне твечает принимающий. И отвечает он тоном CED который по умолчанию не ловится. Опций чтобы включить обнаружение CED - нет, нужно код поправить. Но изменения не сложные, нужно просто ast_dsp_set_faxmode вызвать и передать ему DSP_FAXMODE_DETECT_CNG|DSP_FAXMODE_DETECT_CED.
2009-10-30 04:37

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

Re: Определение факса при исходящем звонке

dimas, развей мысль плз!
В этом случае, мы ставим faxdetect=both, и ловим на fax exten'е звонки исходящие на факс, где можем либо hangup, либо, например, TxFax, right?
http://pbxware.ru - все для Asterisk! || Switchvox - сделано на Asterisk! Подробности на http://switchvox.ru
2009-10-30 09:36

Сообщений: 6521

Re: Определение факса при исходящем звонке

dimas, а для чего искать CNG тон в звуке на канале? Смысл?
Мой ответ: чтобы отключить эхокомпенсацию, если факс, потому что для факса эхокомпенсация - вредит.
Как на приём (в одном направлении) так и в обоих.
2009-10-30 10:25

Сообщений: 866

Re: Определение факса при исходящем звонке

litnimax,
все чуть сложнее чуть я написал но не сильно. В main/dsp.c нужно найти ast_dsp_new. В нем есть строчка:


dsp->faxmode = DSP_FAXMODE_DETECT_CNG;

Ее поменять на


dsp->faxmode = DSP_FAXMODE_DETECT_CNG|DSP_FAXMODE_DETECT_CED;

С этого момента при при установленном faxdetect, chan_dahdi в дополнение к DTMF "фрейму" 'f' получаемому от DSP при обнаружении CNG будет получать фрейм 'e' при обнаружении CED. Теперь в chan_dahdi.c в dahdi_handle_dtmfup находим
        } else if (f->subclass == 'f') {

и "расширяем" до
        } else if (f->subclass == 'f' || f->subclass == 'e' ) {

и астериск будет прыгать на fax-экстеншен при обнаружении этого СED.

PS: это 1.6
PPS: я этого не пробовал :=) это теоретически :=)

ded,
имхо chan_dahdi НЕ дизаблит EC при получении CED/CNG тонов. Это делает или сама плата или кернел-драйвер о чем chan_dahdi только уведомляется (посредством DAHDI_EVENT_EC_DISABLED). Так что смысл опции faxdetect это ТОЛЬКО переход на факс-экстеншен при обнаружении тона.
2009-10-30 11:21

Сообщений: 6521

Re: Определение факса при исходящем звонке

А, это альтернатива NVbackgroundDetect? От компании Digium? Где-то я это название компании встречал.... не помню.
2009-10-30 11:44

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

Re: Определение факса при исходящем звонке

ded, NVBackgroundDetect имеет другое применение. Она стримит файл типа приветствия и если обнаружит факс во этот период переведет на обработку. А опция faxdetect ловит факс во время разговора! Вы просто говорите, потом собеседник говорит примите факс, а Вы ему - принимаю! И он жмет start. В этот момент звонок убегает на fax exten. Я еще делал так, что после отправки он снова соединяется с абонентом, с которым говорил.
http://pbxware.ru - все для Asterisk! || Switchvox - сделано на Asterisk! Подробности на http://switchvox.ru
2009-10-30 12:45

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