使用H.323测试传统语音邮件系统
问题描述:
我被要求开发一个脚本,可以通过H.323拨打需要更好监控的语音邮件系统。 (该设备以神秘的方式死亡,并提供snmp很少)。这个想法是打电话给一个号码,看看这条线路是否得到了答复。如果出现问题,语音信箱系统将响铃或不响应。使用H.323测试传统语音邮件系统
我的问题在于我对H.323或可用库一无所知。 (Perl是我公司的选择语言,但是对于这个特定的东西,我可能会用python或使用一些二进制程序逃脱。)
我找到了一个黑暗的兔子洞, H.323。我不知道C还是想作为客户端运行一个pbx,我找到了开放源代码库,但没有“call()”函数。我没有周期来学习每一个进出。
(如果这是不工作我会挂钩蟒蛇几行,并使用Twilio做所有繁重。)
我想我需要就如何解决问题的一些指导。
感谢
答
发出测试H.323呼叫,你不能击败ohphone:
(sleep 30; echo q) | ohphone -s Default -n -u from_user [email protected] > /tmp/output.$$
通常,您可以找到ohphone作为一个整体在你的Linux发行版:
apt-get install ohphone
来源可以是发现在voxgratia 虽然年纪大了,它仍然出色地工作。
使用ohphone处理输出有点棘手,但是您可以使用类似perl脚本的东西将其处理为errno值。
这里有一个快速和肮脏的例子就是这样做的:
#!/usr/bin/env perl
$delay=$ARGV[0];
if(! $delay) { $delay = 10; }
$from=$ARGV[1];
if(! $from) { $from = "default_from_user"; }
$to=$ARGV[2];
if(! $to) { $to = "default_to_user"; }
$gateway=$ARGV[3];
if(! $gateway) { $gateway = "127.0.0.1"; }
print "Running: (sleep $delay; echo q) | (ohphone -s Default -n -u $from $to\@$gateway)|\n";
open(IN,"(sleep $delay; echo q) | (ohphone -s Default -n -u $from $to\@$gateway)|");
my $call_started=false;
my $call_completed=false;
my @results;
my $skip=1;
while($line=<IN>) {
if($line=~/Listening interfaces/) {
$skip=0;
next;
}
if($skip) {
next;
}
if($line=~/^Could not open sound device/) {
next;
}
chomp($line);
push(@results,$line);
if($line=~/was busy$/) {
print "$to: Called party busy\n";
exit 1;
}
if($line=~/^Call with .* completed, duration (.*)$/) {
print "$to: Completed duration $1 call.\n";
exit 0;
}
if($line=~/has cleared the call, duration (.*)$/) {
print "$to: Completed duration $1 call.\n";
exit 0;
}
if($line=~/^Call with .* completed$/) {
print "$to: No call duration.\n";
exit 2;
}
}
close(IN);
$result=join("\n",@results);
print "$ARGV[0]: Unknown results:\n$result\n";
exit 255;
这个脚本是一个相当几年的历史,但在这段时间里的工作很适合我们。
这看起来很有希望! “SIPp可用于运行一个呼叫并退出,提供通过/失败的判决” – reconbot 2010-11-10 17:07:32
woops - 错误的协议不再适用= \你有一个用于h.323吗? – reconbot 2010-11-10 20:16:15