我试图使用 python 套接字获取 Asterisk 服务器的状态,但没有任何反应。
这是我的代码:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
HOST = '192.168.1.105'
PORT = 5038
s.connect((HOST, PORT))
params = """Action: login
Events: off
Username: admin
Secret: mypass
Action: status
Action: Logoff
"""
s.send(params)
data = s.recv(1024)
print data + '\n'
s.close()
我只收到一条消息说星号版本,仅此而已。
我希望有人能帮助我解决这个问题。
提前致谢。
您那里的代码格式错误。 Asterisk AMI 要求命令之间\r\n 终止。
您需要在单独的数据包中发送每个命令:
params = """Action: login
Events: off
Username: admin
Secret: mypass"""
s.send(params + '\r\n')
data = s.recv(1024)
print data + '\n'
params = 'Action: status'
s.send(params + '\r\n')
data = s.recv(1024)
print data + '\n'
params = 'Action: Logoff'
s.send(params + '\r\n')
data = s.recv(1024)
print data + '\n'
这应该够了吧。显然你还想为它创建一个函数或者其他什么,但这将使它工作。
始终将 AMI 命令分开!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)