如何在android中设置自定义SIP用户代理?

时间:2012-03-09 13:21:31

标签: android sip asterisk

我正在开发一个SIP应用程序。当我通过我的Android应用程序在SIP服务器上注册时,android在星号服务器上显示的默认用户代理是 SIPAUA / 0.1.001 。我该如何改变?我在互联网上搜索过什么都找不到? android中是否有任何方法可以更改它?我使用的资源是

  1. asterisk 1.8.7.1
  2. android 2.3.3

2 个答案:

答案 0 :(得分:0)

您可以使用REGISTER方法中的User-Agent标头字段指定该值。

参见SIP RFC的第20.41节。

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:11@192.168.16.181:32262;rinstance=9dd2c78e6ac0a5a5>
        To: "soft 2"<sip:11@192.168.16.40>
        From: "soft 2"<sip:11@192.168.16.40>;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 Stack库是 - MjSipDoubango - 许多开源软件SIP客户端(电话)都使用它们。

基本上在SIP堆栈中,每个头字段都有一个类(根据RFC) - 几乎就像一个POJO /简单Java Bean。比你有一个消息工厂,它支持所有SIP2.0的创建(有时为SIMPLE的+扩展消息 - 即聊天和在线服务)消息 - REGISTER,INVITE,ACK等。 比你有一个Parser,它提供了从消息体中提取信息的便捷方法(支持所有消息类型)。这大致是SIPStack所持有的。

因此,当您创建一条消息时,您已经附加到该消息的头字段集合(以及SDP的属性集合,如果需要)(以编程方式,它实际上取决于SIPStack实现)并且您只需添加收集必要的标题字段。

答案 1 :(得分:0)

您还要指定使用哪个sip库并查阅lib的文档。 大多数probalby你只是没有在库中设置该字段,因此它使用默认值。