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代码测试却可以:

<?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后面多了一个空格,删除空格后正常。小细节引发大问题,一定要细心细心再细心。