Estou prestes a enviar um e-mail para o gateway de fax --- algum programa python faráAsterisco arquivos de chamadae coloque-os em alguma fila (com base em arquivos ou banco de dados).
Em seguida, outro programa deve pegar as "tarefas de chamada" da fila e "alimentá-las" para o asterisco (honrando algum limite configurado, pois res_fax_digium
eliminará tarefas excessivamente limitadas).
A seguir, vamos supor que tudo esteja ótimo e o asterisco tenha enviado com sucesso algum documento de fax. Qual poderia ser uma maneira de obter o status desta operação?
Se a análise dos arquivos de log for a melhor, eu provavelmente atribuiria algum especial accountcode
(provavelmente posso brincar com esse campo) para colocar os CDRs em arquivos separados também.
Por favor, quais outras formas devo avaliar?
Responder1
Então, abandonei essa abordagem e seguirei outro caminho --- AMI, API Asterisk Management Interface.
Em algumas palavras.
Tendo criado dialplan como este:
[01-sendfax]
exten => _X.,1,NoOp()
same => n,SendFax(${faxfile},f)
Posso originar chamadas com (usandopyst):
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',
}
)
E depois de configurado debug = on
, manager.conf
posso ouvir os eventos necessários:
# 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)
Então, res_fax_digium
dispara FaxStatus
o evento após SendFax
a conclusão.