是否可以通过编程方式向注册的SIP设备发送SIP通知消息?

时间:2009-07-10 01:43:10

标签: perl sip

是否可以以编程方式创建SIP数据包并将其发送到已注册的SIP设备? 我想发送SIP通知消息,如下所示:

      NOTIFY sip:alice@alice-phone.example.com SIP/2.0
      To: <sip:alice@example.com>;tag=78923
      From: <sip:alice@example.com>;tag=4442
      Date: Mon, 10 Jul 2000 04:28:53 GMT
      Contact: <sip:alice@vmail.example.com>
      Call-ID: 1349882@alice-phone.example.com
      CSeq: 31 NOTIFY
      Event: message-summary
      Subscription-State: active
      Content-Type: application/simple-message-summary
      Content-Length: 503

      Messages-Waiting: yes
      Message-Account: sip:alice@vmail.example.com
      Voice-Message: 4/8 (1/2)

我想使用Perl将此信息发送到SIP设备。 我是SIP世界的新手,所以我的问题可能听起来很模糊。但是对此的任何帮助都会非常感激。

谢谢。

2 个答案:

答案 0 :(得分:6)

是的,当然,这只是一个IP数据包。对于Perl,我的第一次尝试是来自CPAN的Net :: SIP。

或者如果您想让它保持简单,请查看此消息中的代码:http://archive.cert.uni-stuttgart.de/bugtraq/2005/07/msg00276.html

要符合标准,您需要处理来自手机的SUBSCRIBE消息并仅向订阅者发送NOTIFY - 但由于您的示例似乎是直接来自RFC 3842,我想您已经知道了。 :)

答案 1 :(得分:0)

SIP是一种基于文本的协议,可以通过IP运行,就像HTTP一样。这使得以几乎任何编程语言编写SIP客户端成为可能。当然,使用SIP堆栈时要容易得多。 @ Marie的建议看起来很适合PHP。 Java世界当然有几个非常成熟的SIP堆栈,例如JAIN。 C#也是如此:看到这个SO question