Jump to content

Recommended Posts

Posted

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

Posted

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 яте в котором всю порнографию эту я заточил дам. Но под двойкой оно уже не соберется. Если руки растут не из одного места можно переложить и под двойку, туда этот модуль переехал с косметическими изменениями.

Posted

ram_scan

 

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

 

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

Posted

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

 

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

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

 

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

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

Posted

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

 

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

Posted

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

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

Posted

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

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

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

 

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

Posted

ram_scan

 

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

Posted

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

 

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

Posted

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

Posted

ram_scan

 

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

 

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

Posted (edited)

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).

Edited by tma
Posted
Я вижу, Вы хорошо разбираетесь в 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.

 

Posted
Я вижу, Вы хорошо разбираетесь в 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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.