parent
ea95383deb
commit
f71cf0c156
@ -0,0 +1,75 @@
|
||||
|
||||
from time import time
|
||||
from random import randint
|
||||
|
||||
from twisted.internet import reactor,task
|
||||
from twisted.internet.defer import Deferred
|
||||
from twisted.internet.protocol import ClientFactory,ReconnectingClientFactory,Protocol
|
||||
from twisted.protocols.basic import LineReceiver
|
||||
|
||||
class AMI():
|
||||
def __init__(self,host,port):
|
||||
self._AMIClient = self.AMIClient
|
||||
|
||||
|
||||
self.CF = reactor.connectTCP(host, port, self.CCClientFactory(self._AMIClient))
|
||||
|
||||
def closeConnection(self):
|
||||
self.transport.loseConnection()
|
||||
|
||||
class AMIClient(LineReceiver):
|
||||
|
||||
delimiter = b'\r\n'
|
||||
|
||||
end = b"Bye-bye!"
|
||||
|
||||
def connectionMade(self):
|
||||
print('b')
|
||||
self.sendLine('Action: login')
|
||||
self.sendLine('Username: admin')
|
||||
self.sendLine('Secret: ilcgi')
|
||||
self.sendLine('\r\n')
|
||||
|
||||
def lineReceived(self,line):
|
||||
|
||||
print(line)
|
||||
|
||||
if line == 'Asterisk Call Manager/1.0':
|
||||
print('OK')
|
||||
return
|
||||
|
||||
k,v = line.split(':')
|
||||
|
||||
if v == ' Success':
|
||||
self.lastresponse = True
|
||||
elif k == 'Response' and v == ' Error':
|
||||
self.transport.loseConnection()
|
||||
|
||||
else:
|
||||
self.sendLine('Action: command')
|
||||
self.sendLine('Command:' + self.command)
|
||||
self.sendline('\r\n')
|
||||
self.transport.loseConnection()
|
||||
|
||||
|
||||
|
||||
class AMIClientFactory(ReconnectingClientFactory):
|
||||
def __init__(self,AMIClient,command):
|
||||
self.command = command
|
||||
self.done = Deferred()
|
||||
self.protocol = AMIClient
|
||||
self.protocol.command = command
|
||||
print('a')
|
||||
|
||||
def clientConnectionFailed(self, connector, reason):
|
||||
print("connection failed:", reason.getErrorMessage())
|
||||
ReconnectingClientFactory.clientConnectionLost(self, connector, reason)
|
||||
|
||||
def clientConnectionLost(self, connector, reason):
|
||||
print("connection lost:", reason.getErrorMessage())
|
||||
ReconnectingClientFactory.clientConnectionLost(self, connector, reason)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
AMIc = AMI.AMIClientFactory(AMI.AMIClient,'rpt cmd 29177 ilink 3 2001')
|
||||
|
||||
Loading…
Reference in new issue