我正在学习 Asterisk :: AMI,但所有示例都涉及操作命令。
我尝试执行以下操作(没有成功)
my $action = $astman->action({
Action => "Agents"
});
我有以下子程序用于打印响应工作正常,Action => 'Command'
如果我尝试其他不同的事情,我没有在 CMD 中得到响应,我如何才能从其他操作中得到响应?
sub print_response {
my $action = shift;
print "\nResponse: ", $action->{'Response'};
print "\nMessage: ", $action->{'Message'};
print "\nActionID: ", $action->{'ActionID'};
if(defined $action->{'CMD'}) {
print "\nCMD: ", scalar(@{$action->{'CMD'}});
print "\n-------------------------------------------\n";
foreach (@{$action->{'CMD'}}) {
print $_, "\n";
}
print "\n-------------------------------------------\n";
}
print "\nCompleted: ", $action->{'COMPLETED'};
print "\nGood: ", $action->{'GOOD'};
}
答案1
在您担心 API(它只是 Asterisk AMI 上的一层)之前,我建议您远程登录到 AMI 端口并尝试直接与 AMI 交互。在那里您可以了解命令结构和响应 - 然后上面的内容对您来说会更有意义!
答案2
为了调试,我通常使用 Data::Dumper。
只需打印所有响应并查看其包含哪些字段。
也可以是操作以事件集的形式返回响应。因此,对于测试应用程序来说,最好转储所有事件。
希望对您有帮助。