是否有任何 Perl 模块可用于向 Office Communicator 发送消息?我在 CPAN 中搜索但没有任何运气。我可以使用 Python 或 Ruby 向 Office Communicator 发送消息吗?我想从 Linux Box 中做到这一点。
问问题
1997 次
2 回答
4
由于“Office Communicator”使用的是 SIP 的修改版本,您可以尝试使用 SIP 客户端,例如Net::SIP(或来自同一软件包的Net::SIP::Simple )。
于 2010-10-18T16:03:37.597 回答
2
我想你会在一年多之后找到解决方案,但是,如果你只是想发送一个编写 perl 程序的 SIP 消息,你可以看看这个方法:http://archive.cert.uni -stuttgart.de/bugtraq/2005/07/msg00276.html
可能的定制:
#!/usr/bin/perl
use strict;
use warnings;
use Socket;
sub SendSIPTo {
my ($from, $to, $text, $ProxyIP) = @_;
my $contentLength = length($text);
my $AT = '@';
my $domain = 'example.com';
my $ToURI = 'sip:' . $to . $AT . $domain;
my $FromURI = 'sip:' . $from . $AT . $domain;
my $MESG = "MESSAGE $ToURI SIP\/2.0\r
Via: SIP/2.0/UDP 10.10.10.10;branch=z9hG4bK8fe6.db5fade4.0\r
To: $ToURI\r
From: <$FromURI>;tag=578c0e59d7504cca4dc4a96522981b0a-0c8b\r
CSeq: 1 MESSAGE\r
Call-ID: 609ded3a79a9cbd5\r
Content-Length: $contentLength\r
User-Agent: perl\r
\r
" . $text;
my $proto = getprotobyname('udp');
socket(SOCKET, PF_INET, SOCK_DGRAM, $proto) ;
my $iaddr = inet_aton("0.0.0.0");
my $paddr = sockaddr_in(5060, $iaddr);
bind(SOCKET, $paddr) ;
my $port = 5060;
my $hisiaddr = inet_aton($ProxyIP) ;
my $hispaddr = sockaddr_in($port, $hisiaddr);
send(SOCKET, $MESG, 0, $hispaddr ) || warn "send $!\n";
return 'OK';
}
1;
于 2011-12-21T14:50:08.427 回答