[英]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
命令的快捷方式。 它不會對結果事件進行任何偵聽。 根據文檔,您在發送命令后會收到Peerlist
和PeerlistComplete
事件,因此您需要為這些事件注冊一個偵聽器。 我沒有使用過 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.