ファックスゲートウェイに電子メールを送信しようとしています---いくつかのpythonプログラムは アスタリスク呼び出しファイル を作成し、それらをいくつかのキューに入れます(ファイルまたはデータベースベース)。
次に、別のプログラムがキューから「呼び出しタスク」を取得し、それらをアスタリスクに「フィード」する必要があります(res_fax_digium
は制限を超えたタスクをドロップするため、構成された制限を尊重します)。
次に、すべてが素晴らしく、アスタリスクがファックス文書を正常に送信したとしましょう。この操作のステータスを取得する方法は何でしょうか?
ログファイルの解析が最適な場合は、おそらく、CDRを別のファイルにドロップするために特別なaccountcode
(おそらくこのフィールドで遊ぶことができます)を割り当てます。
他にどのように評価すべきですか?
そこで、私はこのアプローチをやめ、別の方法に進みます--- AMI、Asterisk Management InterfaceAPI。
一言で言えば。
このようなダイヤルプランを作成した:
[01-sendfax]
exten => _X.,1,NoOp()
same => n,SendFax(${faxfile},f)
私は( pyst を使用して)で電話をかけることができます:
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
イベントを発生させます。