Ich bin dabei, ein E-Mail-zu-Fax-Gateway zu erstellen --- ein Python-Programm wirdSternchen Anrufdateienund legen Sie sie in eine Warteschlange (datei- oder datenbankbasiert).
Dann sollte ein anderes Programm „Aufrufaufgaben“ aus der Warteschlange nehmen und sie an Asterisk „weiterleiten“ (unter Beachtung einiger konfigurierter Grenzen, da res_fax_digium
Aufgaben, die zu viele Aufgaben umfassen, gelöscht werden).
Nehmen wir als Nächstes an, alles ist in Ordnung und Asterisk hat erfolgreich ein Faxdokument gesendet. Wie kann ich den Status dieses Vorgangs abrufen?
Wenn die Analyse der Protokolldateien am besten ist, würde ich wahrscheinlich etwas Spezielles zuweisen accountcode
(ich kann wahrscheinlich mit diesem Feld spielen), um CDRs auch in separate Dateien abzulegen.
Bitte, welche anderen Möglichkeiten sollte ich bewerten?
Antwort1
Daher habe ich diesen Ansatz verworfen und werde einen anderen Weg einschlagen – AMI, Asterisk Management Interface API.
In ein paar Worten.
Nachdem Sie einen Dialplan wie diesen erstellt haben:
[01-sendfax]
exten => _X.,1,NoOp()
same => n,SendFax(${faxfile},f)
Ich kann Anrufe tätigen mit (mitpyst):
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',
}
)
Und nachdem ich mich eingerichtet habe debug = on
, manager.conf
kann ich auf die erforderlichen Ereignisse hören:
# 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)
Das Ereignis wird also res_fax_digium
ausgelöst FaxStatus
, nachdem SendFax
es abgeschlossen ist.