Я собираюсь отправить электронное письмо на шлюз факса - какая-то программа на Python сделает Звездочка файлы вызова и поместите их в какую-то очередь (файлы или на основе БД).
Затем другая программа должна взять «задачи вызова» из очереди и «скормить» их звездочке (соблюдая некоторый настроенный лимит, поскольку res_fax_digium
сбросит слишком ограниченные задачи).
Далее, допустим, все отлично и звездочка успешно отправила какой-то факсимильный документ. Как можно узнать статус этой операции?
Если парсинг лог-файлов самый лучший, я бы, наверное, назначил какой-нибудь специальный accountcode
(Возможно, я могу поиграть с этим полем), чтобы тоже разбить CDR в отдельные файлы.
Пожалуйста, какие еще способы мне следует оценить?
Итак, я отказался от этого подхода и выбрал другой путь - AMI, Asterisk Management Interface API.
В двух словах.
Создав такой диалплан:
[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
завершено.