cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
755
Views
0
Helpful
1
Replies

Searching Phone name and LoginUserId by phone IP using API Python Zeep Factory

Did anyone manage to do this?

I'm trying to use zeep factory to search phone on a subnet and return the sep name and login user id

 

1 Reply 1

from zeep import Client
from zeep.cache import SqliteCache
from zeep.transports import Transport
from zeep.plugins import HistoryPlugin
from requests import Session
from requests.auth import HTTPBasicAuth
from lxml import etree
import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

USERNAME = 'username'
PASSWORD = 'password'
WSDL = 'file://C://temp//API//RISService70.wsdl'
IPS = ['192.168.1.*']

session = Session()
session.verify = False
session.auth = HTTPBasicAuth(USERNAME, PASSWORD)
transport = Transport(cache=SqliteCache(), session=session, timeout=20)
history = HistoryPlugin()
#client = Client(wsdl=WSDL, transport=transport, plugins=[history])
client = Client(wsdl=WSDL, transport=transport)
factory = client.type_factory('ns0')

item = []
for ip in IPS:
    item.append(factory.SelectItem(Item=ip))
Item = factory.ArrayOfSelectItem(item)

stateInfo = ''
criteria = factory.CmSelectionCriteria(
    MaxReturnedDevices=1000,
    DeviceClass='Phone',
    Model=255,
    Status='Any',
    NodeName='',
    SelectBy='IPV4Address',
    SelectItems=Item,
    Protocol='Any',
    DownloadStatus='Any'
)


rawresult = client.service.selectCmDevice(stateInfo, criteria)['SelectCmDeviceResult']['CmNodes']['item']

for rawphone in rawresult:
    phone = (rawphone['CmDevices']['item'])
    for singlefield in phone:
        field = singlefield
        print(field['Name'])

        for rawip in (field['IPAddress']['item']):
            ip = rawip
            print(rawip['IP'])

        print(field['LoginUserId'])

        for rawdn in (field['LinesStatus']['item']):
            dn = rawdn
            print(rawdn['DirectoryNumber'])