【问题标题】:how to set custom SIP user agent in android?如何在 android 中设置自定义 SIP 用户代理?
【发布时间】:2012-03-12 03:02:02
【问题描述】:

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

  1. 星号 1.8.7.1
  2. 安卓2.3.3

【问题讨论】:

    标签: android sip asterisk


    【解决方案1】:

    您可以使用 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 堆栈库是 - MjSipDoubango - 许多开源软件 SIP 客户端(电话)使用它们。

    基本上,在 SIP 堆栈中,每个标头字段都有一个类(根据 RFC)——几乎就像一个 POJO/Simple Java Bean。比你有一个消息工厂,它支持创建所有 SIP2.0(有时 + SIMPLE 的扩展消息 - 那是聊天和在线服务)消息 - 注册、邀请、确认等。 比你有一个解析器,它提供了从消息体中提取信息的便捷方法(支持所有消息类型)。 SIPStack 大致就是这样。

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

    【讨论】:

    • 感谢您的回答。但是我在哪里可以找到这种方法?在我的 android 代码或 Asterisk 配置文件中。请指定在哪个文件中以及我应该在哪里实现这个代码?提前致谢
    • 感谢您的精彩解释。但我没有使用任何 SIP 库,如 MjSip 和 Doubango,我使用的是内置的 android 库。在这种情况下,是否可以更改用户代理的名称?
    • 如果我想实现这些库(MjSip 或 Doubango),那么该怎么做呢?是否有任何支持文件和链接?请告诉我。
    • 您列出,您使用的是 android 2.3.3,我认为 Android SIPStack 是在 Android 4.0 中提供的...
    • AFAIK Android SIPStack 提供的选项非常有限(虽然我没有使用过)。根据上面的那些库 - 他们都在他们的网站上有广泛的文档。您需要签出库并将包合并到您的项目中。但是您可能必须从头开始。以 sipDroid 为例(它使用 MjSIP),了解如何使用这些库。
    【解决方案2】:

    您还指定了您使用的 sip 库并查阅该库的文档。 很可能您只是没有在库中设置该字段,因此它使用默认值。

    【讨论】:

    • 感谢您的回答,但我没有使用任何 SIP 库,例如 MjSip 和 Doubango,我使用的是内置的 android 库。在这种情况下,是否可以更改用户代理的名称?
    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多