Вы можете указать это значение, используя поле заголовка 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