簡體   English   中英

如何使用 pyst 獲取 SIP 對等體列表?

[英]How can I obtain a SIP peer list using pyst?

我想在我的 Python 應用程序中顯示 Asterisk SIP 對等體。

我可以看到這樣的列表正在執行:

[pbx:~] # asterisk -rx "sip show peers"
Name/username    Host              Dyn Forcerport Comedia    ACL Port     Status      Description
212              (Unspecified)      D  No         No             0        UNKNOWN
213              (Unspecified)      D  No         No             0        UNKNOWN
217/217          169.0.5.17         D  No         No             5060     OK (29 ms)
....

在 Python 我使用pyst 0.8庫:

import asterisk.manager
...
manager = asterisk.manager.Manager()
try:
    manager.connect(host, port)
    manager.login(usr, passwd)
    r = manager.sippeers()

    print('------- r ----')
    pp.pprint(r)
    print('-----------')
    # ...

然后我漂亮地打印了一些響應字段。 但我得到的只是:

------- r ----
Success
-----------
------ response -----
[   u'Response: Success\r\n',
    u'ActionID: pbx-25332-00000001\r\n',
    u'EventList: start\r\n',
    u'Message: Peer status list will follow\r\n']
-----------
------ data -----
u''
-----------
------ headers -----
{   u'ActionID': u'pbx-25332-00000001',
    u'EventList': u'start',
    u'Message': u'Peer status list will follow',
    u'Response': u'Success'}
-----------
----- multiheaders ------
{   u'ActionID': [u'pbx-25332-00000001'],
    u'EventList': [u'start'],
    u'Message': [u'Peer status list will follow'],
    u'Response': [u'Success']}
-----------

如何使用pyst獲取 SIP 對等方列表?

星號版本:

asterisk -r -vvvvv
Asterisk 11.17.1, Copyright (C) 1999 - 2013 Digium, Inc. and others. ...

sippeers()只是直接發送SIPpeers命令的快捷方式。 它不會對結果事件進行任何偵聽。 根據文檔,您在發送命令后會收到PeerlistPeerlistComplete事件,因此您需要為這些事件注冊一個偵聽器。 我沒有使用過 pyst,所以我不熟悉事件的結構,但希望這會有所幫助。

import asterisk.manager
...

def evt_handler(evt, mgr):
    print(f'Got event {evt.name}')
    # do something with evt.data or evt.message

    if evt.name == 'PeerlistComplete':
        mgr.close()
    
manager = manager.Manager()
try:
    manager.connect(host, port)
    manager.login(usr, passwd)
    manager.register_event('Peerlist', evt_handler)
    manager.register_event('PeerlistComplete', evt_handler)
    manager.sippeers()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM