Назад | Перейти на главную страницу

обрабатывать действия, отличные от Command с 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'};
}

Прежде чем беспокоиться об API (который просто накладывается на Asterisk AMI), я бы посоветовал вам подключиться к порту AMI через Telnet и попробовать взаимодействовать напрямую с AMI. Там вы можете узнать о структуре команд и ответах - тогда все вышесказанное станет для вас более понятным!

Для отладки я обычно использую Data :: Dumper.

Просто распечатайте весь ответ и посмотрите, какое в нем поле.

Также может быть, что действие возвращает ответ как набор событий. Так что для тестового приложения неплохо иметь дамп всех событий.

Надеюсь, это вам поможет.