Поддержка Т.38 в SendFAX/ReceiveFAX

Разработка и отладка Asterisk и его приложений.

Модераторы: Admins, Модераторы

Ded
Guru
Сообщения: 4428
Зарегистрирован: 10 янв 2005, 16:01
Откуда: Road Town, Tortola, British Virgin Islands

Сообщение Ded » 27 дек 2007, 01:13

о сколько раз твердили миру
Да, как то не явно было, месседж пиплу не отчётливый. Я и не скрывал, ранее писал, что тренируюсь на кошках, у меня 1.4.16.1.
4. снимается текущий транк asterisk-addons
Разве нельзя приклеивать транковые asterisk-addons к стабильной версии Астериска? Такая зависимость?

Должно быть по моему разумению 2 инструкции: одна для свежих stable версий (народ то хочет работать!), другая экскрементальная, для транка.
Я на нашем форуме уже много попыток выдел и первой и второй инструкции, к сожалению, всё быстро устаревает. На других ресурсах даже более внятные
http://www.asteriskguru.com/tutorials/spandsp.html
http://www.voipphreak.ca/archives/421
не увидел сразу... H323 я не занимался вообще.
Так с чего началось то! Один молодой человек по имени Игорь подкузьмил другого молодого человека Cache о наличии Т38 в коде Н323 канала, на что Cache ответил, что такой кусок там есть - строка 1042 в chan_h323.c
Это меня и заинтересовало, потому что тема Т38 в Н.323 очень хорошо раскрыта. Осталось её прилепить в Астериск, я и увидел переработаный код chan_h323.c

dimas
Сообщения: 177
Зарегистрирован: 19 апр 2007, 22:21

Сообщение dimas » 27 дек 2007, 01:31

Собственно единственное для чего я вообще делал Send/ReceiveFAX это чтобы инструкций больше не надо было :) - стащил сорсы с SVN, собрал и все есть. Чтобы инструкции не устаревали от версии к весрии астериска а сорсы были всегда актуальны - ибо если кто-то что-то поменял и факс перестал компилироваться - ему бы самому пришлось это поправить прежде чем коммититься.

У send/receivefax не было шансов войти в 1.4 потому как feature freeze. Соответственно и делал я их только для транка чтобы вошли.
Бэкпорт - примитивен по сути и делается за 15 минут. Но это то чем я заниматься точно не хочу. Кто хотел - уже отпортировали на 1.4 и думаю запросто поделяться. Но заниматься поддержкой того что все равно не войдет в астериск это нафик. Повторюсь ровно для того чтобы этого не было я вообще затеял это все.

Added after 4 minutes:
Ded писал(а):
о сколько раз твердили миру
не увидел сразу... H323 я не занимался вообще.
Так с чего началось то! Один молодой человек по имени Игорь подкузьмил другого молодого человека Cache о наличии Т38 в коде Н323 канала, на что Cache ответил, что такой кусок там есть - строка 1042 в chan_h323.c
Это меня и заинтересовало, потому что тема Т38 в Н.323 очень хорошо раскрыта. Осталось её прилепить в Астериск, я и увидел переработаный код chan_h323.c
да, я прочитал уже.
что-то там действительно есть, но что именно сказать не берусь. В SIP'е вообще "почти все" было, однако же для интерфейса с app_fax пришлось еще прилепить немало. Так что я берусь утверждать что с H323 не взлетит. Там точно нет кода который позволяет получить текущий статус T38 "извне" драйвера канала. Ровно как там нет и кода который позволяет инициировать T38 извне драйвера.

Ded
Guru
Сообщения: 4428
Зарегистрирован: 10 янв 2005, 16:01
Откуда: Road Town, Tortola, British Virgin Islands

Сообщение Ded » 27 дек 2007, 03:34

anest писал(а):давно уже не люблю редхат :(
Ясно дело - наш редхат
Стал чуть-чуточку пархат!
Евреи, евреи,
Кругом - одни евреи!

Added after 1 hours 31 minutes:

*CLI> == New H.323 Connection created.
--Received SETUP message
-- Setting up Call
-- Call token: [ip$10.151.91.124:51091/30226]
-- Calling party name: [OpenH323 Answering Machine v0.8.0]
-- Calling party number: []
-- Called party name: [888]
-- Called party number: [888]
-- Calling party IP: [10.151.91.124]
Setting capabilities to 0x4011f (g723|gsm|ulaw|alaw|g729|g726aal2|h261)
Capabilities in preference order is ()
DTMF mode is 1
Allowed Codecs for ip$10.151.91.124:51091/30226 (ip$10.16.72.21:1720):
Table:
G.723.1A <1>
G.723.1 <2>
GSM-06.10 <3>
G.711-uLaw-64k <4>
G.711-ALaw-64k <5>
G726r32 <6>
G.729A <7>
G.729 <8>
UserInput/hookflash <9>
UserInput/RFC2833 <10>
Set:
0:
0:
G.723.1A <1>
G.723.1 <2>
GSM-06.10 <3>
G.711-uLaw-64k <4>
G.711-ALaw-64k <5>
G726r32 <6>
G.729A <7>
G.729 <8>
1:
UserInput/hookflash <9>
2:
UserInput/RFC2833 <10>

=-= In OnAnswerCall for call 30226
- Progress Indicator: 0
- Inserting PI of 0 into ALERTING message
-- Started logical channel: sending G.711-uLaw-64k
-- channelsOpen = 1
External RTP Session Starting
RTP channel id 1 parameters:
-- remoteIpAddress: 10.244.128.17
-- remotePort: 5592
-- ExternalIpAddress: 10.16.72.21
-- ExternalPort: 10092
-- Started logical channel: receiving G.711-uLaw-64k
-- channelsOpen = 2
External RTP Session Starting
RTP channel id 1 parameters:
-- remoteIpAddress: 10.244.128.17
-- remotePort: 5592
-- ExternalIpAddress: 10.16.72.21
-- ExternalPort: 10092
ExternalRTPChannel Destroyed
ExternalRTPChannel Destroyed
-- Executing [888@from-internal-custom:1] Goto("H323/ip$10.151.91.124:51091/30226", "ext-fax,in_fax,1") in new stack
-- Goto (ext-fax,in_fax,1)
-- Executing [in_fax@ext-fax:1] StopPlayTones("H323/ip$10.151.91.124:51091/30226", "") in new stack
-- Executing [in_fax@ext-fax:2] GotoIf("H323/ip$10.151.91.124:51091/30226", "1?3:analog_fax,1") in new stack
-- Goto (ext-fax,in_fax,3)
-- Executing [in_fax@ext-fax:3] Macro("H323/ip$10.151.91.124:51091/30226", "faxreceive") in new stack
-- Executing [s@macro-faxreceive:1] Set("H323/ip$10.151.91.124:51091/30226", "FAXFILE=/var/spool/asterisk/fax/1198722459.0.tif") in new stack
-- Executing [s@macro-faxreceive:2] Set("H323/ip$10.151.91.124:51091/30226", "EMAILADDR=ded@anybodyhome.com") in new stack
-- Executing [s@macro-faxreceive:3] ReceiveFAX("H323/ip$10.151.91.124:51091/30226", "(/var/spool/asterisk/fax/1198722459.0.tif") in new stack
-- Receiving RFC2833 on payload 101
Peer capability is G.711-uLaw-64k <1>
Found peer capability G.711-uLaw-64k <1>, Asterisk code is 4, frame size (in ms) is 30
Peer capability is G.711-ALaw-64k <2>
Found peer capability G.711-ALaw-64k <2>, Asterisk code is 8, frame size (in ms) is 30
Peer capabilities = 0xc (ulaw|alaw), ordered list is (ulaw|alaw)
Answering call ip$10.151.91.124:51091/30226
-- Received Facility message...
=-= In OnConnectionEstablished for call 30226
-- Connection Established with "OpenH323 Answering Machine v0.8.0 [10.151.91.124]"
-- Received Facility message...
-- Received RELEASE COMPLETE message...
-- ClearCall: Request to clear call with token ip$10.151.91.124:51091/30226, cause EndedByRemoteUser
-- Sending RELEASE COMPLETE
== Spawn extension (macro-faxreceive, s, 3) exited non-zero on 'H323/ip$10.151.91.124:51091/30226' in macro 'faxreceive'
== Spawn extension (macro-faxreceive, s, 3) exited non-zero on 'H323/ip$10.151.91.124:51091/30226'
-- ClearCall: Request to clear call with token ip$10.151.91.124:51091/30226, cause EndedByTransportFail
channelsOpen = 1
channelsOpen = 0
ExternalRTPChannel Destroyed
ExternalRTPChannel Destroyed
-- OpenH323 Answering Machine v0.8.0 [10.151.91.124] has cleared the call
== H.323 Connection deleted.

dimas
Сообщения: 177
Зарегистрирован: 19 апр 2007, 22:21

Сообщение dimas » 27 дек 2007, 07:46

любопытно на самом деле.
ну что T38 не заживет, тут и сомнений не было, но почему не работает "аналоговый" факс через ulaw я не знаю.

можно попробовать логи детальные собрать

core set debug 10
udptl debug

как включается отладка h323 я не знаю да и понять ее все равно не смогу :)

Ded
Guru
Сообщения: 4428
Зарегистрирован: 10 янв 2005, 16:01
Откуда: Road Town, Tortola, British Virgin Islands

Сообщение Ded » 27 дек 2007, 22:36

При попытке посылки факса UDP виден только чере tcpdump:

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

21&#58;56&#58;24.481671 IP &#40;tos 0x0, ttl  49, id 0, offset 0, flags &#91;DF&#93;, proto 17, length&#58; 280&#41; virtualfax.outgoing.com.5642 > asterisk-svn.trunk.org.15670&#58; UDP, length 252
21&#58;56&#58;24.481839 IP &#40;tos 0x0, ttl  64, id 499, offset 0, flags &#91;DF&#93;, proto 17, length&#58; 280&#41; asterisk-svn.trunk.org.15670 > virtualfax.outgoing.com.5642&#58; UDP, length 252
21&#58;56&#58;24.513244 IP &#40;tos 0x0, ttl  49, id 0, offset 0, flags &#91;DF&#93;, proto 17, length&#58; 280&#41; virtualfax.outgoing.com.5642 > asterisk-svn.trunk.org.15670&#58; UDP, length 252
UDPTL debug вообще ничего не показывает.

Peer capability is G.711-uLaw-64k <1>
Found peer capability G.711-uLaw-64k <1>, Asterisk code is 4, frame size (in ms) is 30
Peer capability is G.711-ALaw-64k <2>
Found peer capability G.711-ALaw-64k <2>, Asterisk code is 8, frame size (in ms) is 30
Peer capabilities = 0xc (ulaw|alaw), ordered list is (ulaw|alaw)

Answering call ip$10.151.91.124:64479/30256
-- Executing [s@ext-fax:2] Goto("H323/ip$10.151.91.124:64479/30256", "in_fax,1") in new stack
-- Goto (ext-fax,in_fax,1)
-- Executing [in_fax@ext-fax:1] StopPlayTones("H323/ip$10.151.91.124:64479/30256", "") in new stack
-- Executing [in_fax@ext-fax:2] GotoIf("H323/ip$10.151.91.124:64479/30256", "1?3:analog_fax,1") in new stack
-- Goto (ext-fax,in_fax,3)
-- Executing [in_fax@ext-fax:3] Macro("H323/ip$10.151.91.124:64479/30256", "faxreceive") in new stack
-- Executing [s@macro-faxreceive:1] Set("H323/ip$10.151.91.124:64479/30256", "FAXFILE=/var/spool/asterisk/fax/1198790898.7.tif") in new stack
-- Executing [s@macro-faxreceive:2] Set("H323/ip$10.151.91.124:64479/30256", "EMAILADDR=my@mama.com") in new stack
-- Executing [s@macro-faxreceive:3] ReceiveFAX("H323/ip$10.151.91.124:64479/30256", "/var/spool/asterisk/fax/1198790898.7.tif") in new stack

je-demo*-- Received Facility message...
=-= In OnConnectionEstablished for call 30252
-- Connection Established with "OpenH323 Answering Machine v0.8.0 [10.151.91.124]"
je-demo*-- Received Facility message...
je-demo*-- Received RELEASE COMPLETE message...
-- ClearCall: Request to clear call with token ip$10.151.91.124:64479/30256, cause EndedByRemoteUser
-- Sending RELEASE COMPLETE
-- ClearCall: Request to clear call with token ip$10.151.91.124:64479/30256, cause EndedByTransportFail
== Spawn extension (macro-faxreceive, s, 3) exited non-zero on 'H323/ip$10.151.91.124:64479/30256' in macro 'faxreceive'
== Spawn extension (macro-faxreceive, s, 3) exited non-zero on 'H323/ip$10.151.91.124:64479/30256'
channelsOpen = 1
channelsOpen = 0
ExternalRTPChannel Destroyed
ExternalRTPChannel Destroyed
-- OpenH323 Answering Machine v0.8.0 [10.151.91.124] has cleared the call
== H.323 Connection deleted.
Последний раз редактировалось Ded 01 май 2008, 04:30, всего редактировалось 1 раз.

dimas
Сообщения: 177
Зарегистрирован: 19 апр 2007, 22:21

Сообщение dimas » 27 дек 2007, 23:25

Ded писал(а):При попытке посылки факса UDP виден только чере tcpdump:
UDPTL debug вообще ничего не показывает.
ну а с чего ему показывать? разве кто-то говорит H323 драйверу идти в T38? Нет, никто не говорит потому что и не умеет.
Так что UDPTL там вряд ли нарисуется.
Есть лог с консоли с параметрами который я давал?

Ded
Guru
Сообщения: 4428
Зарегистрирован: 10 янв 2005, 16:01
Откуда: Road Town, Tortola, British Virgin Islands

Сообщение Ded » 27 дек 2007, 23:53

core set debug 10
?
Хочешь изучить? Многа букав.
Вложения
debug.11156.txt
(124.67 КБ) 29 скачиваний

dimas
Сообщения: 177
Зарегистрирован: 19 апр 2007, 22:21

Сообщение dimas » 28 дек 2007, 01:11

Ded писал(а):
core set debug 10
?
Хочешь изучить? Многа букав.
ну да, ну да, ничего не понятно :)
могу сказать только что CNG тон app_fax услышал, то есть какой-никакой звук там бегает.

Не нравится мне вот это вот:
[Dec 27 22] NOTICE[11156] channel.c: Dropping incompatible voice frame on H323/ip$10.151.91.124:64052/30252 of format slin since our native format has changed to ulaw

но такая штука вылезает и на SIP'е тоже и именно в тот же момент - после того как обнаружен факс тон. Так что это мне на потом: разобраться откуда оно лезет. Хотя повторюсь, SIP'у это работать не мешает.

Еще я не знаю что вот это такое и с чем его едят:
[Dec 27 22] DEBUG[11156] rtp.c: Difference is 20888, ms is 2641

единственное отличие от SIP'а на моем тестовом стенде видное по логу это 30 ms пакеты а не 25 ms. Ну и internal_timing у меня enabled.

Added after 39 minutes:

ну варнинг "Dropping incompatible voice frame " лечится легко. Надо в app_fax

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

fr = ast_dsp_process&#40;s->chan, dsp, fr&#41;;
поменять на

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

fr = ast_dsp_process&#40;NULL, dsp, fr&#41;;
только от этой правки накакой пользы кроме эстетического удовольствия.

Ded
Guru
Сообщения: 4428
Зарегистрирован: 10 янв 2005, 16:01
Откуда: Road Town, Tortola, British Virgin Islands

Сообщение Ded » 28 дек 2007, 01:41

Да Вы батенька эстет, как я погляжу! :)
Я весь этот Т30-Т37-Т38 информационный мусор перерабатывал 2.5 года назад, когда дебажил Т38 модем.
После того как было отлажено, благополучно вычистил из головы.
Вот недавно опять тема вскрылась, и не имея такого же по надёжности механизма в новых версиях Астериска, пришлось уйти в сторону - Cisco voice applications: on-ramp, off-ramp. На шлюзе поднято, протестировано, и, надеюсь, будет забыто ещё на пару лет. Пока что это верх надёжности. Ни кусочка VoIP, Cisco из ТФОП сама распознаёт факс, даже в середине разговора, принимает, запечатывает в ТИФФ, и отсылает по электропочте.
А исходящие идеально принимает по Т38 и отправляет по цифре в ТФОП.

Я утёк в другую тему сейчас.

Аватара пользователя
Cache
Модератор
Сообщения: 688
Зарегистрирован: 12 янв 2007, 11:39
Откуда: Россия. Шатура
Контактная информация:

Сообщение Cache » 16 янв 2008, 10:24

вопрос

сидел тут ковырял h323 в аддонах наткнулся на удивительные весчи я так и не понял почему они есть а их не описали

папка asterisk-ooh323c/ooh323c/src/h323
файл MULTIMEDIA-SYSTEM-CONTROLDec.c

он где нить используеца вообще?? что то мне не удалось отследить :(

подсказка поисчите по файлу по метке t38 :D
нанотехнолигии в области Asterisk

Deniq
Сообщения: 90
Зарегистрирован: 26 дек 2007, 18:11

Сообщение Deniq » 19 янв 2008, 15:55

Вообщем засунул Я распознование факсов в app_fax с поддержкой Т38 под 1.4.17(http://www.asteriskforum.ru/viewtopic.php?t=1761). Пока что грубо и банально тк Dimas фукции раздробил, не было времени разбираться. Работает 100% с wrtp54g в лабе, буду пробывать на audiocodes mp118.
Если у кого есть интерес, буду разрабатывать дальше.

Ответить