AMI( Asterisk Manager Interface ) 的连接测试

AMI 登录:

配置/etc/asterisk/manager.conf如下:

[general]
enabled = yes
webenabled = yes
port = 5038
bindaddr = 0.0.0.0
httptimeout = 60 

[admin]
secret = 123456
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.255
read = all,system,call,log,verbose,command,agent,user,config
write = all,system,call,log,verbose,command,agent,user,config

#include manager_additional.conf
#include manager_custom.conf

 

用Telnet测试:

root@ubuntu:/home/flashmx# telnet 127.0.0.1 5038

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Asterisk Call Manager/1.1

Action: login
UserName: admin
Secret: 123456

Response: Error
Message: Permission denied

 

折腾了两天,用telnet登录总是不成功,总是显示Permission Denied.

后来用网上的一段php代码测试却可以:

View Code
<?php

$errno = "";
$errstr = "";
$timeout = "60";
$wrets =""; 

$socket = fsockopen("127.0.0.1","5038", $errno, $errstr, $timeout);
fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: admin\r\n");
fputs($socket, "Secret: 123456\r\n\r\n");
//fputs($socket, "Action: ListCommands\r\n\r\n");
fputs($socket, "Action: Logoff\r\n\r\n");

while (!feof($socket)) {
   $wrets .= fread($socket, 4096);
}

fclose($socket);
echo "ASTERISK MANAGER OUTPUT:$wrets";

?>

 

输入 # php login.php测试,显示成功。

反复对比,发现原来的写法中,由于是拷贝过来的,login后面多了一个空格,删除空格后正常。小细节引发大问题,一定要细心细心再细心。

posted @ 2012-05-02 23:14  万里沙来手一挥  阅读(1009)  评论(0)    收藏  举报