VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

OOH323 не хочет слать dtmf в h245signal.

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

starterx
Сообщения: 16
Зарегистрирован: 18 янв 2014, 13:45

OOH323 не хочет слать dtmf в h245signal.

Сообщение starterx »

Столкнулся с новой проблемой в ooh323.
Провайдер (мера+quintum) требует dtmf в h245signal. rfc2833 принимать не хочет.
При установке dtmfmode в h245signal в ooh323.conf, ooh323 упорно шлет dtmf в information q931, вместо user input indicator в h245.
Аналогично и с h245alphanumeric. Насколько смог разобраться в дебаге ooh323 неправильно распознает TCS message прилетающий от терминатора и не видит в нем заявленного h245signal.
ниже привожу выдержки из h323_log.
пробовал разобраться в исходниках ooh323, но экспириенса не хватает :((
Можно это как-то поправить своими силами ?
ЗЫ: пробовал включать inband - коряво, работает не стабильно.

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

ippbx2*CLI> core show version
Asterisk 10.12.4 built by root @ ippbx2.tes-com.ru on a x86_64 running Linux on 2014-01-23 14:20:38 UTC

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

ippbx2*CLI> ooh323 show config 

Objective Open H.323 Channel Driver's Config:
IP:Port:            0.0.0.0:1720
H.225 port range:   12030-12230
FastStart           yes
Tunneling           yes
CallerId            asterisk
MediaWaitForConnect yes
Gatekeeper:         No Gatekeeper
H.323 LogFile:      /var/log/asterisk/h323_log
Context:            default
Capability:         (alaw)
DTMF Mode:          h245signal
T.38 Mode:          faxgw/chan_sip compatible
FAX Detect:         No
Call counter:       0
AccountCode:        ast_h323
AMA flags:          Unknown
Aliases:            
        ObjSysAsterisk                
TCS полученный от удаленной стороны

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

09:32:12:933           capabilityTable = {
09:32:12:933              elem[0] = {
09:32:12:933                 capabilityTableEntryNumber = {
09:32:12:933                    4
09:32:12:933                 }
09:32:12:933                 capability = {
09:32:12:933                    receiveAndTransmitAudioCapability = {
09:32:12:934                       g711Alaw64k = {
09:32:12:934                          20
09:32:12:934                       }
09:32:12:934                    }
09:32:12:934                 }
09:32:12:934              }
09:32:12:934              elem[1] = {
09:32:12:934                 capabilityTableEntryNumber = {
09:32:12:934                    7
09:32:12:934                 }
09:32:12:934                 capability = {
09:32:12:934                    receiveAndTransmitDataApplicationCapability = {
09:32:12:934                       application = {
09:32:12:934                          t38fax = {
09:32:12:934                             t38FaxProtocol = {
09:32:12:934                                udp = {
09:32:12:934                                   NULL
09:32:12:935                                }
09:32:12:935                             }
09:32:12:935                             t38FaxProfile = {
09:32:12:935                                fillBitRemoval = {
09:32:12:935                                   FALSE
09:32:12:935                                }
09:32:12:935                                transcodingJBIG = {
09:32:12:935                                   FALSE
09:32:12:935                                }
09:32:12:935                                transcodingMMR = {
09:32:12:935                                   FALSE
09:32:12:935                                }
09:32:12:936                                version = {
09:32:12:936                                   0
09:32:12:936                                }
09:32:12:936                                t38FaxRateManagement = {
09:32:12:936                                   localTCF = {
09:32:12:936                                      NULL
09:32:12:936                                   }
09:32:12:936                                }
09:32:12:936                             }
09:32:12:936                          }
09:32:12:936                       }
09:32:12:936                       maxBitRate = {
09:32:12:937                          144
09:32:12:937                       }
09:32:12:937                    }
09:32:12:937                 }
09:32:12:937              }
09:32:12:937              elem[2] = {
09:32:12:937                 capabilityTableEntryNumber = {
09:32:12:937                    8
09:32:12:937                 }
09:32:12:937                 capability = {
09:32:12:937                    receiveAndTransmitUserInputCapability = {
09:32:12:937                       dtmf = {
09:32:12:937                          NULL
09:32:12:937                       }
09:32:12:937                    }
09:32:12:937                 }
09:32:12:937              }
09:32:12:937              elem[3] = {
09:32:12:938                 capabilityTableEntryNumber = {
09:32:12:938                    9
09:32:12:938                 }
09:32:12:938                 capability = {
09:32:12:938                    receiveAndTransmitUserInputCapability = {
09:32:12:938                       hookflash = {
09:32:12:938                          NULL
09:32:12:938                       }
09:32:12:938                    }
09:32:12:938                 }
09:32:12:938              }
09:32:12:938           }
09:32:12:938           capabilityDescriptors = {
09:32:12:938              elem[0] = {
09:32:12:938                 capabilityDescriptorNumber = {
09:32:12:938                    1
09:32:12:938                 }
09:32:12:938                 simultaneousCapabilities = {
09:32:12:938                    elem[0] = {
09:32:12:938                       elem[0] = {
09:32:12:938                          4
09:32:12:939                       }
09:32:12:939                       elem[1] = {
09:32:12:939                          7
09:32:12:939                       }
09:32:12:939                       elem[2] = {
09:32:12:939                          8
09:32:12:939                       }
09:32:12:939                       elem[3] = {
09:32:12:939                          9
09:32:12:939                       }
09:32:12:939                    }
09:32:12:939                 }
09:32:12:939              }
09:32:12:939           }
Capability которые заявили мы

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

09:32:12:902           capabilityTable = {
09:32:12:902              elem[0] = {
09:32:12:902                 capabilityTableEntryNumber = {
09:32:12:902                    1
09:32:12:902                 }
09:32:12:902                 capability = {
09:32:12:902                    receiveAndTransmitDataApplicationCapability = {
09:32:12:902                       application = {
09:32:12:902                          t38fax = {
09:32:12:902                             t38FaxProtocol = {
09:32:12:902                                udp = {
09:32:12:902                                   NULL
09:32:12:902                                }
09:32:12:902                             }
09:32:12:902                             t38FaxProfile = {
09:32:12:903                                fillBitRemoval = {
09:32:12:903                                   FALSE
09:32:12:903                                }
09:32:12:903                                transcodingJBIG = {
09:32:12:903                                   FALSE
09:32:12:903                                }
09:32:12:903                                transcodingMMR = {
09:32:12:903                                   FALSE
09:32:12:903                                }
09:32:12:903                                version = {
09:32:12:903                                   0
09:32:12:903                                }
09:32:12:904                                t38FaxRateManagement = {
09:32:12:904                                   transferredTCF = {
09:32:12:904                                      NULL
09:32:12:904                                   }
09:32:12:904                                }
09:32:12:904                                t38FaxUdpOptions = {
09:32:12:904                                   t38FaxMaxBuffer = {
09:32:12:904                                      200
09:32:12:904                                   }
09:32:12:904                                   t38FaxMaxDatagram = {
09:32:12:904                                      72
09:32:12:905                                   }
09:32:12:905                                   t38FaxUdpEC = {
09:32:12:905                                      t38UDPRedundancy = {
09:32:12:905                                         NULL
09:32:12:905                                      }
09:32:12:905                                   }
09:32:12:905                                }
09:32:12:905                             }
09:32:12:905                          }
09:32:12:905                       }
09:32:12:905                       maxBitRate = {
09:32:12:906                          144
09:32:12:906                       }
09:32:12:906                    }
09:32:12:906                 }
09:32:12:906              }
09:32:12:906              elem[1] = {
09:32:12:906                 capabilityTableEntryNumber = {
09:32:12:906                    2
09:32:12:906                 }
09:32:12:906                 capability = {
09:32:12:906                    receiveAudioCapability = {
09:32:12:906                       g711Alaw64k = {
09:32:12:906                          20
09:32:12:906                       }
09:32:12:906                    }
09:32:12:906                 }
09:32:12:906              }
09:32:12:906              elem[2] = {
09:32:12:906                 capabilityTableEntryNumber = {
09:32:12:906                    3
09:32:12:906                 }
09:32:12:907                 capability = {
09:32:12:907                    receiveRTPAudioTelephonyEventCapability = {
09:32:12:907                       dynamicRTPPayloadType = {
09:32:12:907                          101
09:32:12:907                       }
09:32:12:907                       audioTelephoneEvent = {
09:32:12:907                          "0-16"
09:32:12:907                       }
09:32:12:907                    }
09:32:12:907                 }
09:32:12:907              }
09:32:12:907              elem[3] = {
09:32:12:907                 capabilityTableEntryNumber = {
09:32:12:907                    4
09:32:12:907                 }
09:32:12:907                 capability = {
09:32:12:907                    receiveDataApplicationCapability = {
09:32:12:907                       application = {
09:32:12:907                          nonStandard = {
09:32:12:908                             nonStandardIdentifier = {
09:32:12:908                                h221NonStandard = {
09:32:12:908                                   t35CountryCode = {
09:32:12:908                                      181
09:32:12:908                                   }
09:32:12:908                                   t35Extension = {
09:32:12:908                                      0
09:32:12:908                                   }
09:32:12:908                                   manufacturerCode = {
09:32:12:908                                      18
09:32:12:908                                   }
09:32:12:909                                }
09:32:12:909                             }
09:32:12:909                             data = {
09:32:12:909                                '52747044746d6652656c6179'H
09:32:12:909                             }
09:32:12:909                          }
09:32:12:909                       }
09:32:12:909                       maxBitRate = {
09:32:12:909                          0
09:32:12:909                       }
09:32:12:909                    }
09:32:12:909                 }
09:32:12:909              }
09:32:12:909              elem[4] = {
09:32:12:909                 capabilityTableEntryNumber = {
09:32:12:909                    5
09:32:12:909                 }
09:32:12:910                 capability = {
09:32:12:910                    receiveUserInputCapability = {
09:32:12:910                       basicString = {
09:32:12:910                          NULL
09:32:12:910                       }
09:32:12:910                    }
09:32:12:910                 }
09:32:12:910              }
09:32:12:910              elem[5] = {
09:32:12:910                 capabilityTableEntryNumber = {
09:32:12:910                    6
09:32:12:910                 }
09:32:12:910                 capability = {
09:32:12:910                    receiveUserInputCapability = {
09:32:12:910                       dtmf = {
09:32:12:910                          NULL
09:32:12:910                       }
09:32:12:910                    }
09:32:12:910                 }
09:32:12:910              }
09:32:12:911           }
09:32:12:911           capabilityDescriptors = {
09:32:12:911              elem[0] = {
09:32:12:911                 capabilityDescriptorNumber = {
09:32:12:911                    1
09:32:12:911                 }
09:32:12:911                 simultaneousCapabilities = {
09:32:12:911                    elem[0] = {
09:32:12:911                       elem[0] = {
09:32:12:911                          1
09:32:12:911                       }
09:32:12:911                       elem[1] = {
09:32:12:911                          2
09:32:12:911                       }
09:32:12:911                    }
09:32:12:911                    elem[1] = {
09:32:12:911                       elem[0] = {
09:32:12:911                          3
09:32:12:911                       }
09:32:12:912                       elem[1] = {
09:32:12:912                          4
09:32:12:912                       }
09:32:12:912                       elem[2] = {
09:32:12:912                          5
09:32:12:912                       }
09:32:12:912                       elem[3] = {
09:32:12:912                          6
09:32:12:912                       }
09:32:12:912                    }
09:32:12:912                 }
09:32:12:912              }
09:32:12:912           }
Разбираем полученный TCS

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

09:32:12:939  Handling H245 message. (outgoing, ooh323c_o_1)
09:32:12:939  Processing CapabilityTable Entry 0 (outgoing, ooh323c_o_1)
09:32:12:939  checking whether we need to add cap to joint capabilities(outgoing, ooh323c_o_1)
09:32:12:939  Determined Simple audio data type to be of type OO_G711ALAW64K. Searching for matching capability.(outgoing, ooh323c_o_1)
09:32:12:939  Local cap being compared OO_T38. (outgoing, ooh323c_o_1)
09:32:12:939  Local cap being compared OO_G711ALAW64K. (outgoing, ooh323c_o_1)
09:32:12:939  Found matching simple audio capability type OO_G711ALAW64K. Comparing other parameters. (outgoing, ooh323c_o_1)
09:32:12:939  We can transmit Simple capability OO_G711ALAW64K. (outgoing, ooh323c_o_1)
09:32:12:939  Returning copy of matched transmit capability OO_G711ALAW64K.(outgoing, ooh323c_o_1)
09:32:12:939  Adding cap to joint capabilities(outgoing, ooh323c_o_1)
09:32:12:939  Processing CapabilityTable Entry 1 (outgoing, ooh323c_o_1)
09:32:12:939  checking whether we need to add cap to joint capabilities(outgoing, ooh323c_o_1)
09:32:12:939  Local cap being compared OO_T38. (outgoing, ooh323c_o_1)
09:32:12:939  Found matching t38 capability type OO_T38. Comparing other parameters. (outgoing, ooh323c_o_1)
09:32:12:939  We can transmit Simple capability OO_T38. (outgoing, ooh323c_o_1)
09:32:12:939  Returning copy of matched transmit capability OO_T38.(outgoing, ooh323c_o_1)
09:32:12:939  Adding cap to joint capabilities(outgoing, ooh323c_o_1)

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

09:32:12:939  Processing CapabilityTable Entry 2 (outgoing, ooh323c_o_1)
09:32:12:939  Unsupported cap type encountered. Ignoring. (outgoing, ooh323c_o_1)
09:32:12:939  checking whether we need to add cap to joint capabilities(outgoing, ooh323c_o_1)
09:32:12:939  Unsupported cap type encountered. Ignoring. (outgoing, ooh323c_o_1)
09:32:12:939  Not adding to joint capabilities. (outgoing, ooh323c_o_1)
[/b]

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

09:32:12:939  Processing CapabilityTable Entry 3 (outgoing, ooh323c_o_1)
09:32:12:939  Unsupported cap type encountered. Ignoring. (outgoing, ooh323c_o_1)
09:32:12:939  checking whether we need to add cap to joint capabilities(outgoing, ooh323c_o_1)
09:32:12:939  Unsupported cap type encountered. Ignoring. (outgoing, ooh323c_o_1)
09:32:12:939  Not adding to joint capabilities. (outgoing, ooh323c_o_1)
09:32:12:939  Built TerminalCapabilitySet Ack (outgoing, ooh323c_o_1)
Далее подтвердили TCS, определили мастер-слейв.
И.... шлем information

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

09:32:16:212     Keypad IE = {
09:32:16:212        2
09:32:16:212     }
09:32:16:212     h323_uu_pdu = {
09:32:16:212        h323_message_body = {
09:32:16:212           information = {
09:32:16:212              protocolIdentifier = {
09:32:16:212                 { 
09:32:16:212  0 0 8 2250 0 4 }
09:32:16:212              }
09:32:16:212              callIdentifier = {
09:32:16:212                 guid = {
09:32:16:212                    '6f6f68333233632d1b93ed8b7a3100f4'H
09:32:16:212                 }
09:32:16:212              }
09:32:16:212           }
09:32:16:212        }
09:32:16:212        h245Tunneling = {
09:32:16:212           TRUE
09:32:16:212        }
09:32:16:212     }
may
Сообщения: 37
Зарегистрирован: 23 авг 2013, 14:51

Re: OOH323 не хочет слать dtmf в h245signal.

Сообщение may »

День добрый,

ooh323 не смотрит на удаленные капабилити для формирования метода передачи dtmf, зависит только от конфига.
Покажите ooh323 show config и ooh323 show peer <нужный пир>
amateur
Сообщения: 453
Зарегистрирован: 30 сен 2011, 09:58

Re: OOH323 не хочет слать dtmf в h245signal.

Сообщение amateur »

may писал(а):ooh323 не смотрит на удаленные капабилити для формирования метода передачи dtmf, зависит только от конфига.
При формировании TCS не смотрит, а при выборе метода передачи - как раз смотрит :)

P.S. ded, "Расширение patch запрещено администратором." - жесть! :)
Вложения
ooh323_cap_patch.tar.gz
(838 байт) 634 скачивания
starterx
Сообщения: 16
Зарегистрирован: 18 янв 2014, 13:45

Re: OOH323 не хочет слать dtmf в h245signal.

Сообщение starterx »

may писал(а):День добрый,

Покажите ooh323 show config и ooh323 show peer <нужный пир>
config был в стартовом посте.
Ниже, вместе с пиром...

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

ippbx2*CLI> ooh323 show config 

Objective Open H.323 Channel Driver's Config:
IP:Port:            0.0.0.0:1720
H.225 port range:   12030-12230
FastStart           yes
Tunneling           yes
CallerId            asterisk
MediaWaitForConnect yes
Gatekeeper:         No Gatekeeper
H.323 LogFile:      /var/log/asterisk/h323_log
Context:            default
Capability:         (alaw)
DTMF Mode:          h245signal
T.38 Mode:          faxgw/chan_sip compatible
FAX Detect:         No
Call counter:       647
AccountCode:        ast_h323
AMA flags:          Unknown
Aliases:            
        ObjSysAsterisk              

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

ippbx2*CLI> ooh323 show peer mera
Name:          mera
FastStart/H.245 Tunneling:yes,yes
Format Prefs:  (alaw:20)
DTMF Mode:     h245signal
T.38 Mode:     faxgw/chan_sip compatible
FAX Detect:         No
AccountCode:   ast_h323
AMA flags:     Unknown
IP:Port:       10.50.67.146:1720
OutgoingLimit: 0
rtptimeout:    0
amateur
Сообщения: 453
Зарегистрирован: 30 сен 2011, 09:58

Re: OOH323 не хочет слать dtmf в h245signal.

Сообщение amateur »

ddkprog писал(а):это не админ запрешал, это стандартные запреты phpbb
А я думал: боятся, что кто-нибудь форум "про-patch-ит" :)
starterx
Сообщения: 16
Зарегистрирован: 18 янв 2014, 13:45

Re: OOH323 не хочет слать dtmf в h245signal.

Сообщение starterx »

amateur писал(а): При формировании TCS не смотрит, а при выборе метода передачи - как раз смотрит :)
И тем не менее игнорирует...
Спасибо за патч, вечером попробую накатить.
may
Сообщения: 37
Зарегистрирован: 23 авг 2013, 14:51

Re: OOH323 не хочет слать dtmf в h245signal.

Сообщение may »

amateur писал(а):
may писал(а):ooh323 не смотрит на удаленные капабилити для формирования метода передачи dtmf, зависит только от конфига.
При формировании TCS не смотрит, а при выборе метода передачи - как раз смотрит :)
И правда, при отправке смотрит на jointDtmfMode, что-то я уже подзабыл ;)
На самом деле много странностей бывает в h.323 устройствах и отправляемые капабилити не всегда корректно
показывают, что реально может принять или отправить оппозитная сторона.
Патч лучше бы в отдельном issue на issues.asterisk.org
amateur
Сообщения: 453
Зарегистрирован: 30 сен 2011, 09:58

Re: OOH323 не хочет слать dtmf в h245signal.

Сообщение amateur »

may писал(а):Патч лучше бы в отдельном issue на issues.asterisk.org
Это Вы лучше самостоятельно. Меня эта "бюрократическая возня" приводит в глубочайшее уныние. Уж извините...
may
Сообщения: 37
Зарегистрирован: 23 авг 2013, 14:51

Re: OOH323 не хочет слать dtmf в h245signal.

Сообщение may »

starterx писал(а):
amateur писал(а): При формировании TCS не смотрит, а при выборе метода передачи - как раз смотрит :)
И тем не менее игнорирует...
Спасибо за патч, вечером попробую накатить.
Патч должен подойти, отпишите пожалуйста результат, при успешном результате внесу в основную ветку.
starterx
Сообщения: 16
Зарегистрирован: 18 янв 2014, 13:45

Re: OOH323 не хочет слать dtmf в h245signal.

Сообщение starterx »

В моем случае патч помог - DTMF стал ходить...

Но похоже надо допиливать.
При h245alphanumeric в конфиге

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

ippbx2*CLI> ooh323 show config 

Objective Open H.323 Channel Driver's Config:
IP:Port:            0.0.0.0:1720
H.225 port range:   12030-12230
FastStart           yes
Tunneling           yes
CallerId            asterisk
MediaWaitForConnect yes
Gatekeeper:         No Gatekeeper
H.323 LogFile:      /var/log/asterisk/h323_log
Context:            default
Capability:         (alaw)
DTMF Mode:          h245alphanumeric
T.38 Mode:          faxgw/chan_sip compatible
FAX Detect:         No
Call counter:       0
AccountCode:        ast_h323
AMA flags:          Unknown
Aliases:            
        ObjSysAsterisk                
ippbx2*CLI> ooh323 show peer mera
Name:          mera
FastStart/H.245 Tunneling:yes,yes
Format Prefs:  (alaw:20)
DTMF Mode:     h245alphanumeric
T.38 Mode:     faxgw/chan_sip compatible
FAX Detect:         No
AccountCode:   ast_h323
AMA flags:     Unknown
IP:Port:       10.50.67.146:1720
OutgoingLimit: 0
rtptimeout:    0     
все равно шлем h245signal

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

09:44:30:048  Built UserInputIndication_signal (outgoing, ooh323c_o_3)
09:44:30:048  Sending H.245 Message = {
09:44:30:048     indication = {
09:44:30:048        userInput = {
09:44:30:048           signal = {
09:44:30:048              signalType = {
09:44:30:048                 "2"
09:44:30:048              }
09:44:30:048           }
09:44:30:048        }
09:44:30:048     }
09:44:30:048  }
09:44:30:048  Building Facility message for tunneling OOUserInputIndication (outgoing, ooh323c_o_3)
09:44:30:048  UserInfo encoding - successful
09:44:30:048  Q931 Message = {
09:44:30:048     protocolDiscriminator = 8
09:44:30:048     callReference = 89
09:44:30:048     from = originator
09:44:30:048     messageType = 62
09:44:30:048     Display IE = {
09:44:30:048        599
09:44:30:048     }
09:44:30:048     h323_uu_pdu = {
09:44:30:048        h323_message_body = {
09:44:30:048           facility = {
09:44:30:048              protocolIdentifier = {
09:44:30:048                 { 
09:44:30:048  0 0 8 2250 0 4 }
09:44:30:048              }
09:44:30:048              reason = {
09:44:30:048                 transportedInformation = {
09:44:30:049                    NULL
09:44:30:049                 }
09:44:30:049              }
09:44:30:049              callIdentifier = {
09:44:30:049                 guid = {
09:44:30:049                    '6f6f68333233632d04c8cc567b3100c2'H
09:44:30:049                 }
09:44:30:049              }
09:44:30:049           }
09:44:30:049        }
09:44:30:049        h245Tunneling = {
09:44:30:049           TRUE
09:44:30:049        }
09:44:30:049        h245Control = {
09:44:30:049           elem[0] = {
09:44:30:049              '6d81020640'H
09:44:30:049           }
09:44:30:049        }
09:44:30:049     }
09:44:30:049  UUIE decode successful
09:44:30:049  }
09:44:30:049  Queued H225 messages 1. (outgoing, ooh323c_o_3)
09:44:30:049  msgCtxt Reset?Not Done (outgoing, ooh323c_o_3)
09:44:30:049  Sending H225 message (outgoing, ooh323c_o_3)
09:44:30:049  Sending Q931 message (outgoing, ooh323c_o_3)
09:44:30:049  H2250/Q931 Message sent successfully (outgoing, ooh323c_o_3)
09:44:30:049  Sent Message - Facility(OOUserInputIndication) (outgoing, ooh323c_o_3)
09:44:30:588  INFO: FinCall returned 7f9640005378 for call: ooh323c_o_3
09:44:30:588  Built UserInputIndication_signal (outgoing, ooh323c_o_3)
09:44:30:588  Sending H.245 Message = {
09:44:30:588     indication = {
09:44:30:588        userInput = {
09:44:30:588           signal = {
09:44:30:588              signalType = {
09:44:30:588                 "3"
09:44:30:588              }
09:44:30:588           }
09:44:30:588        }
09:44:30:588     }
09:44:30:588  }
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH