私はファックスゲートウェイに電子メールを送信しようとしています --- Pythonプログラムでアスタリスク 通話ファイルそして、それらを何らかのキュー(ファイルまたは DB ベース)に配置します。
次に、別のプログラムがキューから「呼び出しタスク」を取得し、それをアスタリスクに「フィード」する必要があります (制限を超えたタスクは削除されるため、設定された制限を尊重しますres_fax_digium
)。
次に、すべてが順調で、Asterisk が FAX 文書を正常に送信したと仮定します。この操作のステータスを取得する方法は何でしょうか?
ログファイルの解析が最適であれば、おそらく、accountcode
CDR を別のファイルにドロップするための特別な (おそらくこのフィールドで操作できる) 割り当ても行うでしょう。
他にどのような方法で評価すればよいでしょうか?
答え1
そこで、私はこのアプローチをやめて、別の方法、つまり AMI (Asterisk Management Interface API) を採用することにしました。
一言で言えば。
次のようなダイヤルプランを作成しました:
[01-sendfax]
exten => _X.,1,NoOp()
same => n,SendFax(${faxfile},f)
(を使用して)電話をかけることができますピスト):
res = mgr.originate(
'SIP/m2000/1234567',
'1234567',
context='01-sendfax',
priority='1',
caller_id='7654321',
async=True,
variables={
'TRUNK': 'SIP/m2000',
'faxfile': '/tmp/file.tiff',
}
)
そして、設定したらdebug = on
、manager.conf
必要なイベントを聞くことができます。
# will catch a status of `originate` call
# (this does not require `debug = on` in `manager.conf`):
mgr.register_event('OriginateResponse', handle_response)
# will catch `SendFax` application's result:
mgr.register_event('FaxStatus', handle_response)
したがって、完了後にイベントres_fax_digium
が発生します。FaxStatus
SendFax