Python ile Cisco AXL Kullanarak Phone Register İşlemleri

Python ile Cisco AXL Service kullanarak basit bir şekilde phone register işlemi yapılabilir. Zeep kütüphanesini kullanarak bağlantı ve sorgu işlemlerini gerçekleştireceğim.

Öncelikle tanımlamaları yapıyoruz.

#Değişkenler / Variables
CUCM_SERVER_IP_ADDRESS = "1.1.1.1"
CUCM_AXL_USERNAME = "admin" #Kullanıcı AXL erişim yetkisine sahip olmalı / The user must access the AXL service
CUCM_AXL_PASSWORD = "C!sco123"
#AXLAPI.wsdl ve AXLSoap.xsd dosyalarının CUCM üzerinden indirilip yolunun belirtilmesi gerekiyor.
#Defining path AXLAPI.wsdl and AXLSOAP.xsd files downloaded from CUCM
AXL_WSDL_FILE = "AXLAPI.wsdl"

Oturumu başlatıyoruz.

#Oturum başlatıyoruz. /  Starting session.
session = requests.Session()
#SSL Sertifikası kullanmak istemiyorsanız. / Avoid using an SSL certificate.
session.verify = False
#Güvensiz istekler uyarısını atlamak için / Ignores Insecure request warning.
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
#Kimlik doğrulama / Authentication
session.auth = requests.auth.HTTPBasicAuth(CUCM_AXL_USERNAME,CUCM_AXL_PASSWORD)
#Hata Ayıklama / Debugging
history = zeep.plugins.HistoryPlugin()
#Zeep client oluşturuyoruz / Create an instance of the zeep.
client = zeep.Client(wsdl=AXL_WSDL_FILE, transport=zeep.Transport(session=session), plugins=[history])
#AXL servisini oluşturuyoruz / Create the AXL service
service = client.create_service('{http://www.cisco.com/AXLAPIService/}AXLAPIBinding',
                                f'https://' + CUCM_SERVER_IP_ADDRESS + ':8443/axl/')

Artık ekleyeceğimiz telefona ait bilgileri içeren bir değişken tanımlayabiliriz. Zorunlu olarak belirtilmesi gereken argümanlar ile birlikte Cisco’nun izin verdiği diğer tüm argümanları ekleyebilirsiniz.

#Telefon Detayları / Phone Data
add_phone_data = {
    'name': 'A1B2C3D4B5C6',
    'description': 'Cisco AXL Adding Phone',
    'product': 'Cisco Unified Client Services Framework',
    'class': 'Phone',
    'protocol': 'SIP',
    'protocolSide': 'User',
    'commonPhoneConfigName': 'Standard Common Phone Profile',
    'devicePoolName': 'Default',
    'locationName': 'Hub_None',
    'securityProfileName': 'Universal Device Template - Model-independent Security Profile',
    'sipProfileName': 'Standard SIP Profile_PING',
    'lines': {
        'line': {
            'index': '1',
            'dirn': {
                'pattern': '1905',
            },
            'display': 'Cisco User',
            'displayAscii': 'Cisco User'
        }
    }
}

Artık addPhone fonksiyonunu çağırarak ekleme işlemini gerçekleştirebiliriz.

response = service.addPhone(phone=add_phone_data)

İstek, gelen cevap ve biçimlendirilmiş halini ise aşağıdaki örnek kod ile loglayabilirsiniz.

#Sonuçlar/Results
logging.info('Sorgu/Query:\n %s', etree.tostring(history.last_sent["envelope"], encoding="unicode", pretty_print=True))
logging.info('Cevap/Response:\n %s', etree.tostring(history.last_received["envelope"], encoding="unicode", pretty_print=True))
logging.info('Biçimlendirilmiş/Parsed:\n %s', pprint.pformat(response))

Telefon sorunsuz bir şekilde, belirttiğimiz argümanlar ile CUCM üzerinde kaydedildi:

Python ile Cisco AXL Kullanarak Phone Register İşlemleri

Bir yanıt yazın

Başa dön