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

tma

Активный участник
  • Публикации

    114
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем tma


  1. Даже в документации где-то про это написано. Только в очень сильно хитром месте, я сам не вспомню где я это вычитал. Он не может работать двумя портами этим кодеком одновременно. По раздельности то пожалуйста :-) Проверял сей факт.

    PAP2T -- да. SPA2102 врое как на обоих портах. Сам не проверял, но читал где-то (уже не помню где именно).

    Мы из-за того, что 100Mb не держит, все адаптеры обратно поставщику отдали.

  2. Использую Kamailio, как наиболее близкий к исходному проекту.

    И Auth и Acc поддерживаются в полном объёме, причём, наверно, это единственный проект, в котором можно самостоятельно инициировать Acc в любое время и с любыми аттрибутами.

    Хотя конфиг поначалу выглядит устрашающе :), после некоторого опыта затруднений не вызывает, несколько напоминает PHP.

    А примером конфига не поделитесь?

  3. Accounting - однозначно есть :), в стабильной версии без кастомизации (лечится патчем), в svn версии уже с кастомизацией.

    Что понравилось - очень гибкие настройки, полная свобода действий.

    Быстро поднимается - это хорошо, но лучше когда не падает :)

    OpenSER быстро и безглючно работает.

    Раньше у OpenSER'а небыло аккаунтинга, о сессии он ничего вроде бы не знал после соединения и т.д.

    А authorization там поддерживается?

    Надо будет внимательнее посмотреть.

    Вы используете Kamailio? А то расплодилось форков -- непонятно что лучше.

     

    Yate периодически валится, по крайней мере на FreeBSD :(

    Под Linux у меня пока ни разу не валился...

  4. 2102 работает с T.38 превосходно. К задаче не подходит потому-что не может работать 729 кодеком двумя портами одновременно (точнее одновременно по двум портам любым high compexity кодеком).

    Разве? g729 в 2102 на обоих портах работает.

    Там другой глюк есть -- при работе в качестве роутера скорость выше 8Mb не поднимается. Производители отправили к поставщику.

  5. Добрый день!

     

    Кто-нибудь полноценно скрещивал Yate и radius?

    authentication и accounting работает, правда accounting'ом с глюками -- плодит лишние start/stop записи,

    но вот authorization не работает. Сделал небольшой патч для поддержки authorization (см yate maillist).

    Вроде даже работает, но больше на костыль похоже.

    Очень не хватает возможности задать значение calledid/callerid для передачи через radius в биллинг,

    чтобы Yate преобразовывал номер к e164 (для биллинга).

     

    Сейчас у меня работает связка Yate+radius с моим мини-патчем, но клиент должен использовать нумерацию

    только в формате e164, а они привыкли к 8 и 810...

    С клиентами, у который Linksys'ы и др. адаптеры все просто -- задал правильный dialplan, а вот со всякими X-Lite

    что делать?

  6. P.S. Вот я тебя и поймал!

    Интересно на чем?..

     

    Ты у себя в кол-центре какие гарнитуры используешь?

    Причем тут гарнитуры? Теперь от них зависит надежность? 8-)

    У меня практически нет гарнитур.

     

    P.P.S. И перешел ли ты с Callweaver обратно на Asterisk?

    А я и не переходил на Callweaver. У меня и asterisk и callweaver используются.

    Речь вообще не об этом, а о заложенных в asterisk проблемах. Callweaver получил эти проблемы по-наследству...

    Причем в callweaver добавили в некоторых местах дополнительное протоколирование действий и становится

    понятным, в какой момент и где спотыкается asterisk.

    Но во-первых я не профессиональный программист, чтобы решить это проблемы,

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

  7. А писать можно хоть на чем, yate тупо свои мессаджи в pipe сует (extmodule). Парсите чем хотите.

    Вот бы пошаговый пример такого взаимодействия найти... Может дадите ссылочку?

    Заранее спасибо.

  8. Добрый день!

     

    Проблему с разбором атрибутов решил. Оказалось, что нужно вернуть пароль и digest модуль сам все разберет.

    Но т.к. возвращать пароль наобум нельзя, я думаю, то пришлось писать свой разбор атрибутов на pgplsql (у меня PostgreSQL).

     

    Но, возник новый вопрос -- какие нужно возвращать атрибуты в случае с SIP-сессией?

    Сейчас freeradius получает от SQL-сервера следующие атрибуты:

     h323-return-code=0
    h323-credit-amount=2137.15
    h323-currency=RUB
    h323-billing-model=2
    h323-ivr-in=terminal-alias:^$

     

    Что нужно вернуть для SIP-сервера?

    Заранее спасибо!

  9. Попробовал с OpenSER, получил тот же результат:

     

    rad_recv: Access-Request packet from host 192.168.102.3 port 40438, id=221, length=252
            User-Name = "tma@voip.zet"
            Digest-Attributes = "\n\005tma"
            Digest-Attributes = "\001\nvoip.zet"
            Digest-Attributes = "\002*4919a559371dcf3469748a4e19d18aa3f38f8fcc"
            Digest-Attributes = "\004\030sip:192.168.102.3:5061"
            Digest-Attributes = "\003\nREGISTER"
            Digest-Response = "185bf4620df28f6aa6752b18f241c186"
            Service-Type = Sip-Session
            Sip-Uri-User = "tma"
            Cisco-AVPair = "call-id=NDY3MWM2ZTVjMjZlYTA5YjFkNzA1OGRlODFiOGQyYmQ."
            NAS-Port = 5060
            NAS-IP-Address = 192.168.102.3
    +- entering group authorize {...}
    ++[preprocess] returns ok
    [digest] Adding Auth-Type = DIGEST
    ++[digest] returns ok
    [suffix] Looking up realm "voip.zet" for User-Name = "tma@voip.zet"
    [suffix] No such realm "voip.zet"

     

    В чем я могу ошибаться?

    Словарь неправильный или еще что-нибудь?

     

    P.S. FreeRADIUS обновил до 2.1.1

  10. Добрый день!

     

    Пытаюсь доработать свой биллинг для поддержки Digest авторизации (биллинг базируется на биллинге от gnugk):

    На настоящий момент есть следующая проблема.

    Есть пакет radius'а от Yate к FreeRadius:

            User-Name = "tma"
            Service-Type = Sip-Session
            Cisco-AVPair = "h323-session-protocol=sipv2"
            NAS-Identifier = "Yate"
            NAS-IP-Address = 192.168.128.3
            Digest-Response = "fa96fef0b9320ae074838911df257a64"
            Digest-Attributes = "\002-851e610d10581ae4ed5e8be9a1bb84fe.1226160482"
            Digest-Attributes = "\003\nREGISTER"
            Digest-Attributes = "\004\023sip:10.0.0.1:5061"
            Digest-Attributes = "\n\005tma"
            Digest-Attributes = "\001\006Yate"
            Digest-Attributes = "\006\005MD5"
            h323-remote-address = "h323-remote-address=10.0.0.20"

     

    Вопрос -- как в программе разобрать аттрибут Digest-Attributes на составляющие?

    Можно, конечно, в конфиге написать что-то типа Digest-Attributes='%{Digest-Attributes[2]}' (как массив), но это не правильно, т.к. если вдруг поменяется

    порядок следования аттрибутов, то все нарушится. А в примере FreeRadius порядок как раз иной:

       NAS-IP-Address = d5 89 45 26 (213.137.69.38)
       NAS-Port-Type = 5 (Virtual)
       User-Name = "12345678"
       Digest-Response (206) = "2ae133421cda65d67dc50d13ba0eb9bc"
       Digest-Attributes (207) = [Realm (1) = "deltathree"]
       Digest-Attributes (207) = [Nonce (2) = "3bada1a0"]
       Digest-Attributes (207) = [Method (3) = "INVITE"]
       Digest-Attributes (207) = [URI (4) = "sip:97226491335@213.137.69.38"]
       Digest-Attributes (207) = [Algorithm (5) = "md5"]
       Digest-Attributes (207) = [User-Name (10) = "12345678"]

     

    Пример взят из draft-sterman-aaa-sip-00.txt.

     

    Натолкните, пожалуйста, на мысль! Ссылки приветствуются!

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

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

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

     

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

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

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

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

     

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

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

     

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

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

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

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

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

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