Я собираюсь создать шлюз электронной почты на факс --- какая-нибудь программа на Python сделает этоЗвездочка файлы вызовови поместить их в какую-то очередь (на основе файлов или базы данных).
Затем другая программа должна взять «задачи вызова» из очереди и «скормить» их asterisk (соблюдая некоторый настроенный лимит, поскольку asterisk res_fax_digium
отбросит задачи с превышением лимита).
Далее, предположим, что все отлично и asterisk успешно отправил какой-то факсимильный документ. Какой может быть способ узнать статус этой операции?
Если парсинг лог-файлов — лучший вариант, я бы, наверное, назначил какое-то специальное 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
завершения.