0

私はアスタリスクを使用して数年の確かな経験を持っていますが、python は初めてです。Pythonスクリプトから接続して、いくつかのイベントを受け取りたいです。AMIUSERNAMEおよび資格情報として管理者ユーザーを作成し、AMIPASSWORD正常に動作することをテストしました。StarPyもインストールしました。次に、コマンドpython ami.py USERNAME PASSWORDで次のスクリプトを実行します。

import sys
from starpy import manager
f = manager.AMIFactory(sys.argv[1], sys.argv[2])
df = f.login('127.0.0.1',5038)

アスタリスクコンソールを監視している間、何も起こりません。誰かが私が欠けているものを知っていますか?

Ping アクションを送信して、Pong 応答を待ちたいと思います。

4

2 に答える 2

0

以下は、 Asterisk Test Suiteの ami モジュール (および他のいくつかの場所) から取得されます。テスト スイート全体で starpy を広く使用しているため、いくつかの例を確認することをお勧めします。次のコードが、メンバー メソッド login を持つクラスにあるとします。

def login(self):

  def on_login_success(self, ami):
      self.ami_factory.ping().addCallback(ping_response)
      return ami

  def on_login_error(self, reason):
      print "Failed to log into AMI"
      return reason

  def ping_response(self, ami)
      print "Got a ping response!"
      return ami

  self.ami_factory = manager.AMIFactory("user", "mysecret")
  self.ami_factory.login("127.0.0.1", 5038).addCallbacks(on_login_success, on_login_error)

manager.conf が適切に構成されていることも確認してください。Asterisk テスト スイートでは、以下を使用します。

[general]
enabled = yes
webenabled = yes
port = 5038
bindaddr = 127.0.0.1

[user]
secret = mysecret
read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan,test
write = system,call,agent,user,config,command,reporting,originate
于 2012-04-20T13:39:31.247 に答える
0

メソッドを持つインスタンスがf.login()返されると思います。AMIProtocolping()

私は starpy について何も知らないので、漠然としたアドバイス:

  • Python をインタラクティブ シェルとして起動します。コードを実行し、その場で結果を調べます。help関数はあなたの友達です。help(df)スクリプトの最後の行の後で試してください。

  • examplesstarpy ディストリビューションのディレクトリを見てください。おそらく、必要なコードの 90% は既にそこにあります。

于 2012-04-19T13:16:41.733 に答える