Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

спросил 2012-08-25 21:18:25 +0400

abr_asterisk Gravatar abr_asterisk

Как передать несколько файлов по факсу?

В Астериске новичок, хотя диалплан понимаю и составляю по-немногу.

Задача в том, что есть несколько файлов и есть команда, которая преобразует их в tiff. Необходимо, преобразовать и передать их абоненту.

extensions.conf выглядит в данный момент так:

[macro-fax-tx]
exten => s,1,NoOp(dial_fax)
same => 2,Answer()
same => 3,Playback(hello-world)
same => 4,System(/home/astmsk/proceed-fax-queue.sh)
same => 5,System(rm /var/spool/asterisk/fax/outgoing.tif)
; same => n,Read(faxQueue,/var/spool/asterisk/tmp/fax-queue,255)
same => 6,Goto(s,4)
same => 7,Hangup()
same => 106,System(logger 'Files not found')
same => 107,Hangup()


Скрипт proceed-fax-queue.sh представляет собой:

\#!/bin/bash
logger 'Message from asterisk...............'

SPOOL=/var/spool/asterisk/fax
NEXT_FILE=$SPOOL/`ls $SPOOL | head -n1`

convert ... $NEXT_FILE $SPOOL/outgoing.tif #Длинная строка преобразования файла
rm $NEXT_FILE


Судя по документации, если происходит ошибка в System(), то выполняется команда с приоритетом n+101. В моём случае, когда все файлы отправляются, команда System с пятым приоритетом должна получить ошибку, ведь все файлы уже отправлены и, по-идее, перейти на команду System со 106-м приоритетом. Но етого не происходит и диалплан зацикливается. Подскажите, в каком месте я ошибся? Огромная благодарность тому, кто скажет, как сделать такой диалплан по-умному, если мой напоминает бред сивой кобылы.

Как передать несколько файлов по факсу?

В Астериске новичок, хотя диалплан понимаю и составляю по-немногу.

Задача в том, что есть несколько файлов и есть команда, которая преобразует их в tiff. Необходимо, преобразовать и передать их абоненту.

extensions.conf выглядит в данный момент так:


[macro-fax-tx]
exten => s,1,NoOp(dial_fax)
same => 2,Answer()
same => 3,Playback(hello-world)
same => 4,System(/home/astmsk/proceed-fax-queue.sh)
same => 5,System(rm /var/spool/asterisk/fax/outgoing.tif)
; same => n,Read(faxQueue,/var/spool/asterisk/tmp/fax-queue,255)
same => 6,Goto(s,4)
same => 7,Hangup()
same => 106,System(logger 'Files not found')
same => 107,Hangup()



Скрипт proceed-fax-queue.sh представляет собой:


\#!/bin/bash
logger 'Message from asterisk...............'

SPOOL=/var/spool/asterisk/fax
NEXT_FILE=$SPOOL/`ls $SPOOL | head -n1`

convert ... $NEXT_FILE $SPOOL/outgoing.tif #Длинная строка преобразования файла
rm $NEXT_FILE



Судя по документации, если происходит ошибка в System(), то выполняется команда с приоритетом n+101. В моём случае, когда все файлы отправляются, команда System с пятым приоритетом должна получить ошибку, ведь все файлы уже отправлены и, по-идее, перейти на команду System со 106-м приоритетом. Но етого не происходит и диалплан зацикливается. Подскажите, в каком месте я ошибся? Огромная благодарность тому, кто скажет, как сделать такой диалплан по-умному, если мой напоминает бред сивой кобылы.

Как передать несколько файлов по факсу?

В Астериске новичок, хотя диалплан понимаю и составляю по-немногу.

Задача в том, что есть несколько файлов и есть команда, которая преобразует их в tiff. Необходимо, преобразовать и передать их абоненту.

extensions.conf выглядит в данный момент так:


[macro-fax-tx]
exten => s,1,NoOp(dial_fax)
same => 2,Answer()
same => 3,Playback(hello-world)
same => 4,System(/home/astmsk/proceed-fax-queue.sh)
same => 5,System(rm /var/spool/asterisk/fax/outgoing.tif)
; same => n,Read(faxQueue,/var/spool/asterisk/tmp/fax-queue,255)
same => 6,Goto(s,4)
same => 7,Hangup()
same => 106,System(logger 'Files not found')
same => 107,Hangup()



Скрипт proceed-fax-queue.sh представляет собой:


\#!/bin/bash
logger 'Message from asterisk...............'

SPOOL=/var/spool/asterisk/fax
NEXT_FILE=$SPOOL/`ls $SPOOL | head -n1`

convert ... $NEXT_FILE $SPOOL/outgoing.tif #Длинная строка преобразования файла
rm $NEXT_FILE



Судя по документации, если происходит ошибка в System(), то выполняется команда с приоритетом n+101. В моём случае, когда все файлы отправляются, команда System с пятым приоритетом должна получить ошибку, ведь все файлы уже отправлены и, по-идее, перейти на команду System со 106-м приоритетом. Но етого не происходит и диалплан зацикливается. Подскажите, в каком месте я ошибся? Огромная благодарность тому, кто скажет, как сделать такой диалплан по-умному, если мой напоминает бред сивой кобылы.


Действительно, с функцией STAT всё получилась обработка очереди. Однако, отправка факсом последовательно друг за другом файлов не получилась. Я, кажется, знаю почему. Скорее всего, после SendFAX факсимильная связь между аппаратами разрывается, и абонентский думает, что передача завершена. За сим разрывает связь. Астериску ничего другого не остаётся, как закончить выполнение макроса.
Решил не заморачиватся составлять единый файл из очереди. Если документ будет електронный, то обычно он в PDF. Данный формат обрабатывается скриптом в один файл. Если картинка, то как правило ето один лист. Если документ бумажный, то его легко отсканят в PDF и отправят, опять же, одним файлом.

Как передать несколько файлов по факсу?

В Астериске новичок, хотя диалплан понимаю и составляю по-немногу.

Задача в том, что есть несколько файлов и есть команда, которая преобразует их в tiff. Необходимо, преобразовать и передать их абоненту.

extensions.conf выглядит в данный момент так:


[macro-fax-tx]
exten => s,1,NoOp(dial_fax)
same => 2,Answer()
same => 3,Playback(hello-world)
same => 4,System(/home/astmsk/proceed-fax-queue.sh)
same => 5,System(rm /var/spool/asterisk/fax/outgoing.tif)
; same => n,Read(faxQueue,/var/spool/asterisk/tmp/fax-queue,255)
same => 6,Goto(s,4)
same => 7,Hangup()
same => 106,System(logger 'Files not found')
same => 107,Hangup()



Скрипт proceed-fax-queue.sh представляет собой:


\#!/bin/bash
logger 'Message from asterisk...............'

SPOOL=/var/spool/asterisk/fax
NEXT_FILE=$SPOOL/`ls $SPOOL | head -n1`

convert ... $NEXT_FILE $SPOOL/outgoing.tif #Длинная строка преобразования файла
rm $NEXT_FILE



Судя по документации, если происходит ошибка в System(), то выполняется команда с приоритетом n+101. В моём случае, когда все файлы отправляются, команда System с пятым приоритетом должна получить ошибку, ведь все файлы уже отправлены и, по-идее, перейти на команду System со 106-м приоритетом. Но етого не происходит и диалплан зацикливается. Подскажите, в каком месте я ошибся? Огромная благодарность тому, кто скажет, как сделать такой диалплан по-умному, если мой напоминает бред сивой кобылы.


Действительно, с функцией STAT всё получилась обработка очереди. Однако, отправка факсом последовательно друг за другом файлов не получилась. Я, кажется, знаю почему. Скорее всего, после SendFAX факсимильная связь между аппаратами разрывается, и абонентский думает, что передача завершена. За сим разрывает связь. Астериску ничего другого не остаётся, как закончить выполнение макроса.
Решил не заморачиватся составлять единый файл из очереди. Если документ будет електронный, то обычно он в PDF. Данный формат обрабатывается скриптом в один файл. Если картинка, то как правило ето один лист. Если документ бумажный, то его легко отсканят в PDF и отправят, опять же, одним файлом.

P.S. а где собственно сама отправка факса ??? Должна была быть в закомментированной строке. По ошибке написал другую команду там.

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.