Я изучаю 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.
Просто распечатайте весь ответ и посмотрите, какое в нем поле.
Также может быть, что действие возвращает ответ как набор событий. Так что для тестового приложения неплохо иметь дамп всех событий.
Надеюсь, это вам поможет.