как установить пользовательский агент пользователя SIP в Android?

Я разрабатываю SIP-приложение. Когда я регистрируюсь на SIP-сервере через свое приложение для Android, пользовательский агент по умолчанию, отображаемый Android на сервере asterisk, — SIPAUA/0.1.001. Как мне это изменить? Я искал в Интернете, ничего не мог найти? Есть ли способ в андроиде изменить его? Ресурсы, которые я использую, это

  1. звездочка 1.8.7.1
  2. андроид 2.3.3

person Juned    schedule 09.03.2012    source источник


Ответы (2)


Вы можете указать это значение, используя поле заголовка User-Agent в методе REGISTER.

См. раздел 20.41 SIP RFC.

Пример тела метода REGISTER, который содержит поле заголовка User-Agent:

Session Initiation Protocol
    Request-Line: REGISTER sip:192.168.16.40 SIP/2.0
        Method: REGISTER
        [Resent Packet: False]
    Message Header
        Via: SIP/2.0/UDP 192.168.16.181:32262;branch=z9hG4bK-d87543-624dc77d9c1b9618-1--d87543-;rport
        Max-Forwards: 70
        Contact: <sip:[email protected]:32262;rinstance=9dd2c78e6ac0a5a5>
        To: "soft 2"<sip:[email protected]>
        From: "soft 2"<sip:[email protected]>;tag=394aa21c
        Call-ID: YjYzYTAyNzM0NGVkYmEzZWMyMzJmNzMzNDZjMzIyMjg.
        CSeq: 1 REGISTER
        Expires: 3600
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
        User-Agent: X-Lite release 1011s stamp 41150
        Content-Length: 0

РЕДАКТИРОВАТЬ:

Этот код должен быть в вашем приложении, а не на сервере.

Вам следует внедрить или использовать готовый стек SIP.

Популярные бесплатные библиотеки стека SIP: MjSip и Doubango — многие SIP-клиенты (телефоны) с открытым исходным кодом используют их.

По сути, в стеке SIP у вас есть класс для каждого поля заголовка (согласно RFC) — почти как POJO/Simple Java Bean. Затем у вас есть Фабрика сообщений, которая поддерживает создание для всех SIP2.0 (иногда + сообщения расширения для SIMPLE - это чат и служба присутствия) Сообщения - РЕГИСТРАЦИЯ, ПРИГЛАШЕНИЕ, ПОДТВЕРЖДЕНИЕ и т.д. Затем у вас есть парсер, который предлагает удобные методы для извлечения информации из тела сообщения (поддерживает все типы сообщений). Это примерно то, что содержит SIPStack.

Итак, когда вы создаете сообщение, у вас есть коллекция полей заголовка (и коллекция атрибутов для SDP, если требуется), прикрепленная к этому сообщению (программно, это действительно зависит от реализации SIPStack), и вы просто добавляете в коллекцию необходимые поля заголовка.

person hovanessyan    schedule 09.03.2012
comment
спасибо за ваш ответ. но где я могу найти этот метод? в моем коде Android или в файлах конфигурации Asterisk. Пожалуйста, укажите, в каком файле и где я должен реализовать этот код? заранее спасибо - person Juned; 10.03.2012
comment
спасибо за ваше хорошее объяснение. но я не использую какие-либо SIP-библиотеки, такие как MjSip и Doubango, я использую встроенную библиотеку Android. В этом случае можно ли изменить имя пользовательского агента? - person Juned; 10.03.2012
comment
в случае, если я хочу реализовать эти библиотеки (MjSip или Doubango), то как это сделать? есть ли какой-либо подтверждающий документ и ссылка для этого? пожалуйста, дайте мне знать. - person Juned; 10.03.2012
comment
вы указали, что использовали Android 2.3.3, Android SIPStack предоставляется в Android 4.0, я думаю... - person hovanessyan; 10.03.2012
comment
Насколько я знаю, Android SIPStack предлагает очень ограниченные возможности (хотя я им не пользовался). В соответствии с приведенными выше библиотеками - у них обоих есть обширная документация на их сайтах. Вам нужно проверить библиотеки и включить пакеты в свой проект. Но вам, вероятно, придется начать с самого начала. Взгляните, например, на sipDroid (который использует MjSIP), чтобы увидеть, как используются библиотеки. - person hovanessyan; 10.03.2012
comment
с андроидом 2.3.3 SIP работает. Итак, теперь мой вопрос: могу ли я изменить существующие библиотеки SIPStack, чтобы установить кодек и пользовательский агент? - person Juned; 12.03.2012
comment
@hovanessyan: хороший ответ ... но теперь у вас есть идеи, как мы можем добавить или изменить эти поля заголовка ??? - person uniruddh; 07.01.2014

Вы также должны указать, какую sip-библиотеку вы используете, и ознакомиться с документацией по этой библиотеке. Скорее всего, вы просто не установили это поле в библиотеке, поэтому оно используется по умолчанию.

person arheops    schedule 10.03.2012
comment
спасибо за ответ, но я не использую какие-либо SIP-библиотеки, такие как MjSip и Doubango, я использую встроенную библиотеку Android. В этом случае можно ли изменить имя пользовательского агента? - person Juned; 10.03.2012