使用 Asterisk::AMI 处理与命令不同的操作

使用 Asterisk::AMI 处理与命令不同的操作

我正在学习 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。

只需打印所有响应并查看其包含哪些字段。

也可以是操作以事件集的形式返回响应。因此,对于测试应用程序来说,最好转储所有事件。

希望对您有帮助。

相关内容