Перейти к содержимому
Калькуляторы

Yate H.323 Gatekeeper Интересует настройка register.conf

Собрал последнюю версию yate2 из SVN. Поднял гейткипер. Шлюзы на нём регистрируются, но звонить друг на друга автоматом не хотят :( После копания в мейллистах понял что это можно сделать только через модуль register, но как его настраивать так и не понял :( Документации 0. Вроде кто-то на форуме разбирался с yate. Может подскажет кто...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Register предназначен для регистрирования через БД. Для опытов проще копать regfile. Это во первых. Во вторых гейткипер в yate ущербный (я его доделал более менее но только для версии 1.3). Родной выполняет регистрацию только по h323-id (а если быть точным то по самому первому заявленому алиасу), а для автоматического рутинга в голове держит только ту запись которая прописана в regfile/register. Это означает принципиальное отсутствие рутинга по e164 алиасам и префиксам (все ручками придется писать в regexroute) и кросссигнального рутинга. В принципе те же грабли и на сипе там, только помельче потому-что сип сам по себе без бубна не дает сделать транкинг и понятия алиаса там как такового нет.

 

Решить можно двумя способами.

 

Способ первый. Идеологически правильный но коряво работающий.

1) В regfile есть опция, как называется не помню, что-то типа autocreate. Включить. Тогда при беспарольной регистрации оно все-таки будет создавать в голове у себя записи, но алиасов все равно не будет. 2) настроить точки доступа так чтобы они в h323-id заявляли свой e164 номер. Для более чем однопортовых шлюзов способ не годится, маршрутизации по префиксам и алиасам один фиг не будет.

 

Способ второй. Идеологически неправильный но правильно работающий.

1) прописать адреса-пароли-явки в regfile или register. 2) прописать всю маршрутизацию ручками в regexroute. Работать при этом будет все, но ручная писанина не есть гуд.

 

PS: h323 для 1.3 яте в котором всю порнографию эту я заточил дам. Но под двойкой оно уже не соберется. Если руки растут не из одного места можно переложить и под двойку, туда этот модуль переехал с косметическими изменениями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ram_scan

 

Шлюзы от 2-х портов и выше. Вручную писать всю маршрутизацию невозможно по тз.

 

Если не сложно поделись модулем и желательно конфигом. Попробую под yate2 подточить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Конфиги рабочие я на старой работе прощелкал. Хомяковый каталог забрал весь а в /etc забыл за конфигами залезть. Мыло в личку скажи, вышлю сорцы.

 

PS: а ежели тока h323 нужен, то мож лучше в сторону GnuGK посмотреть ? К нему вроде как и сиповалка на подходе уже...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ram_scan

 

Ещё и SIP нужен поэтому на yate и остановился.

Мыло скинул.

Изменено пользователем ant0xa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ram_scan

 

Пока ничего не получил :( Пришли пожалуйста, а то не терпится к работе приступить

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Конфиги рабочие я на старой работе прощелкал. Хомяковый каталог забрал весь а в /etc забыл за конфигами залезть. Мыло в личку скажи, вышлю сорцы.

 

PS: а ежели тока h323 нужен, то мож лучше в сторону GnuGK посмотреть ? К нему вроде как и сиповалка на подходе уже...

где енто к нему сиповалка на подходе если не секрет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ram_scan

 

Собрал. Вроде рабоает. Большое спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Та не зачто. Там есть параметр кстати хитрый, routepriority. Сделано для правильного префиксного рутинга, так как для рутинга по префиксам (чтобы работали море специфик маршруты) пришлось городить огород внутри самого модуля h323 (стандартный рутер потому-что иначе пришлось бы здорово перепахивать а я лазить лишний раз не хотел в другие места). Если на пальцах, то сначала должны отработать все роуты написаные врукопашную, потом все через все протоколы по максимальному совпадению, а потом уже префиксы. А там есть клин с приоритетами модулей по умолчанию, поэтому пришлось приоритет префиксной рутилки задавать явно (по дефолту приоритет у всех одинаковый, поэтому в очередь рутинга они встают в порядке загрузки,а порядок можетотличаться). И в итоге может создаться ситуевина когда у префиксной рутилки и сиповой скажем приоритет один но h323 был загружен раньше, и вместо море специфик маршрутов из сипа начнут матчиться префиксы из h323. Хотя там кажется я там сделал дефолт такой что он должен нормально подходить (если в других модулях ничо с дефолта не сдвинуто).

 

Ну и в модуле там часть багов пофикшена, в частности сделана нормальная разрегистрация через regfile по expire, поправлен мапинг cause codes с сипа на h323, поправлено отбитие сессии по занятости (там при отбое в предответном состоянии cause code терялся) и еще что-то. Сделал еще анонсирование префиксов и алиасов на вышестоящий гейткипер. Была у меня мысль passthrouhg анонсирование сделать, но я отложил. Собсно вся эта ботва должна была в виде моих патчей в yate2 попасть, а 1.3 последний релиз был, поэтому там уже не появится. Но попало в yate2 не все, только багофиксы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

где енто к нему сиповалка на подходе если не секрет?

Мне тоже очень интересно, т.к. по моим данным никакого SIP'а даже в планах нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В openh323 SIP реализован уже через OPAL и даже активно юзается. С полгода тому как в cvs уже лежало. А OPAL собсно и придумал был для разделения уровней абстракции, чтобы на сигнальный протокол в базовых вещах круто не морочиться. Так что если оно в гнугк не появляется, то только от лени девелоперов, в принципе библиотека под руками считай что готовая.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В openh323 SIP реализован уже через OPAL и даже активно юзается. С полгода тому как в cvs уже лежало. А OPAL собсно и придумал был для разделения уровней абстракции, чтобы на сигнальный протокол в базовых вещах круто не морочиться. Так что если оно в гнугк не появляется, то только от лени девелоперов, в принципе библиотека под руками считай что готовая.

эм, не путайте openh323 и opal, это уже 2 разные библиотеки несмотря на то что у опала ноги из openh323 растут, gnugk переползает на h323plus вообще, openh323 практически труп на данный момент, и он идеологически таки гейткипер а не софтсвич хоть и имеет некоторый функционал оных, поэтому врятли там будет какая либо сиповался в любом виде

 

P.S. в cvs gnugk я ничего такого не видил:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ram_scan

 

Прикрутил 2 AddPac200 в режиме fast start. Звонящий не получает адрес вызываемого (в дебаге AddPac получает адес 0.0.0.0) в итоге голос ходит только от вызываемого к звонящему. В чём может быть проблема ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да много геморроя разного потенциально может быть. Кажите конфиг от h323 и отладку (соберите яту make debug или лучче make ddebug) и запуск с ключом -Do -vvvv. В h323 отладку включите (четвертый левел должен подойти). Будем сессию посмотреть. Там в яте есть одна шляпа со встроенным в гейткипер ендпоинтом это раз, все наступают на граблю эту, и я наступал тоже. И второе - модуль то мож и собрался под двойку, но в двойке местами круто message flow поменяли. Там разделили мессадж флоу на "ко мне - от меня", может статься что там чисто несовместимость выезла и из-за этого. Плюс встроенным монитором message flow можно проконтролировать (через модуль msgsniff). diff сделайте на модули, гляньте не скопытилось ли чо. Я двойку последний раз из cvs еще тянул, до релиза, и сорцы на рабочем компе а я дома уже.

 

Ну или 1.3 соберите, я там проверял, в том числе и с аддпаками, все работало. В фастстарте с сотыми аддпаками был замут какой-то с алертами, рингбэка я не добивался при трансляции в сип при определенных настройках, но я разобраться в проблеме не успел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ram_scan

 

regfile в 2.0 не изменился совсем так что просто заменил

 

исходник с конфигом прикрепил

 

буду пробовать 1.3 пока.

yate.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В конфиге криминала не увидел. Надо смотреть отладку со стороны yate.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ram_scan

 

Собрал 1.3.0-1 с заменёнными модулями. Результат тотже :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тогда отладку кажи неудачной сессии. Будем разбираццо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ram_scan

Заработало если сделать forward_rtp=no. Буду снова собирать 2.0 :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С forward-rtp=no оно проксирует rtp. Так что ежели оно не стартует без проксирования, то видимо фастстарт с одной из сторон не подымается. Отладку бы...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ram_scan

 

По дебагу адпаков получается как раз наоборот... С forward-rtp=yes rtp бежит через yate вроде как..

 

З.Ы.: как бы дебаг в файл записать а то просто копировать мутарно т.к. дабаг большой :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тамо кажется ключик -l имеется. Для записи лога в файл.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

to ram_scan:

Добрый день!

Я вижу, Вы хорошо разбираетесь в Yate!

Я недавно достаточно активно стал его использовать и у меня появилось несколько вопросов по нему.

Можно ли как-то связаться с Вами по email или ICQ? Мой email: tma <at> tma <dot> spb <dot> ru

Отправить личное сообщение через форум почему-то не получается -- пишет, что мне запрещена отправка ЛС...

 

Вопросы пока такие:

1. Я понял, как отправить исходящий звонок на SIP-trunk (в случае, когда Yate регистрируется по SIP'у), но я так и не понял, как

можно позвонить на SIP-аккаунт, который зарегистрировался на Yate через regfile.conf ?

Интересует возможность маршрутизировать звонки через SIP-аккаунт (в моем случае это GSM-шлюз).

Пока прописал в regexroute.conf звонок по IP:port, но это абсолютно не правильно.

 

2. Хотелось бы построить на Yate свой IVR сервер (взамен asterisk'а), но не хочется использовать PHP или питон, т.к. их не знаю.

Есть ли наработки на Си (plain C, не C++) для работы с сообщениями Yate, что-нибудь вроде библиотеки?

Есть ли опыт по созданию подобные систем?

 

В перспективе бы хотелось создать полноценный сервер IVR с очередями, voicemail, faxserver'ом и записью разговоров.

 

Заранее благодарен!

 

P.S. Забыл добавить -- использую Yate2.

В частности использовал его в качестве SIP-H323 транслятора без проксирования между MVTS и asterisk.

Но почему-то время от времени возникают проблемы с отсутствием звука, отдиагностировать не смог, т.к. звонков много, а со всех сторон орут, чтобы

срочно решал проблему. Настраивал простенькую маршрутизацию по DID'ам и во внешний мир между теми же MVTS и asterisk.

Использую как транслятор SIP-H323 при терминации по H323 на SIP-GSM шлюзы (с регистрацией через regfile, но на IP:port).

Изменено пользователем tma

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я вижу, Вы хорошо разбираетесь в Yate!

Да я на самом деле не очнь в ней разбираюсь. Просто проект интересный и я взялся ковырять и дописывать местами. Разработчики разбираются гораздо лучше :-)

 

Можно ли как-то связаться с Вами по email или ICQ? Мой email: tma <at> tma <dot> spb <dot> ru

Моя аська у меня есть в профиле тут на сайте.

 

1. Я понял, как отправить исходящий звонок на SIP-trunk (в случае, когда Yate регистрируется по SIP'у), но я так и не понял, как

можно позвонить на SIP-аккаунт, который зарегистрировался на Yate через regfile.conf ?

Звонок на транковую линию делается более нетривиально на самом деле чем на зарегистрированого абонента. Маршрутизация должна работать автоматически. Единственное - номер абонента должен совпадать с юзернэймом. Это 1) особенность yate которая была туда введена в целях секурити безопасности и 2) идеологическая недоработка sip стадарта как такового. Большинство софтсвитчей ведут себя также, не позволяя регистрировать от авторизованого пользователя произвольный номер.

 

2. Хотелось бы построить на Yate свой IVR сервер (взамен asterisk'а), но не хочется использовать PHP или питон, т.к. их не знаю.

Есть ли наработки на Си (plain C, не C++) для работы с сообщениями Yate, что-нибудь вроде библиотеки?

Есть ли опыт по созданию подобные систем?

У меня была мысль реализовать и IVR и очереди нативно, модулями, но меня остановила безудержная лень и отсутствие необходимости (я даже 729 кодек не дописал, только 723 сделал, хотя за него мне бы памятник поставили не только те кто с яте работает, его и под астериск переточить несложно потом). Может быть однажды и сделаю, когда пойду в длинный отпуск и выйду из запоя. На php голосовой сервер написать вполне реально кстати, а осваивается он не сложнее plain c. Нативный модуль можно написать только на cpp.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я вижу, Вы хорошо разбираетесь в Yate!

Да я на самом деле не очнь в ней разбираюсь. Просто проект интересный и я взялся ковырять и дописывать местами. Разработчики разбираются гораздо лучше :-)

Ну разработчики -- ясное дело. :-)

 

Звонок на транковую линию делается более нетривиально на самом деле чем на зарегистрированого абонента. Маршрутизация должна работать автоматически. Единственное - номер абонента должен совпадать с юзернэймом. Это 1) особенность yate которая была туда введена в целях секурити безопасности и 2) идеологическая недоработка sip стадарта как такового. Большинство софтсвитчей ведут себя также, не позволяя регистрировать от авторизованого пользователя произвольный номер.

Как позвонить на транковую линию я разобрался.

Звонить на зарегистрированного пользователя по номеру я не пробовал, да и нужно мне звонить на зарегистрированную линию как на транковую, т.е. указывая произвольный номер.

Т.е. для этого нужно патчить Yate, как я понимаю?

 

У меня была мысль реализовать и IVR и очереди нативно, модулями, но меня остановила безудержная лень и отсутствие необходимости (я даже 729 кодек не дописал, только 723 сделал, хотя за него мне бы памятник поставили не только те кто с яте работает, его и под астериск переточить несложно потом).

Ох! А можно воспользоваться Вашими наработками?

 

Может быть однажды и сделаю, когда пойду в длинный отпуск и выйду из запоя. На php голосовой сервер написать вполне реально кстати, а осваивается он не сложнее plain c. Нативный модуль можно написать только на cpp.

Я немного php знаю, но честно говоря отношусь к php исключительно как к WEB-примочке. Может я и не прав.

Но в любом случае plain C будет работать быстрее любого php/питона. Да и знаю я только plain C, проще мне на нем...

Имея какой-нибудь пример (не php с питоном, который я вообще не знаю), я бы сделал свою библиотеку.

А нативный модуль для Yate я даже и не думал делать -- C++ не знаю, увы. Хотя может был бы самый лучший вариант!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.