VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

SayNumber из файла

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
El_Vago
Сообщения: 63
Зарегистрирован: 05 дек 2017, 12:46

SayNumber из файла

Сообщение El_Vago »

Добрый день. Хотел сделать произношение суммы из файла. Как понял с 13-го Астериска ReadFile не работает. Делаю конструкцией

Код: Выделить всё

exten => 230,1,Answer()
exten => 230,n,Set(summ=${FILE(/tmp/test.txt,4)})
exten => 230,n,SayNumber(${summ})
exten => 230,n,HangUp()
Файл /tmp/test.txt с числом присутствует. При этом слышу короткие гудки, в консоле:

Код: Выделить всё

    -- Executing [230@support:1] Answer("SIP/utde-0008779b", "") in new stack
    -- Executing [230@support:2] Set("SIP/utde-0008779b", "summ=") in new stack
    -- Executing [230@support:3] SayNumber("SIP/utde-0008779b", "") in new stack
Запись в файл с помощью Set(FILE(/tmp/test.txt)=1986) работает/ Или считывание делается иначе, чем с ReadFile?
Аватара пользователя
Kroteg
Сообщения: 200
Зарегистрирован: 11 янв 2018, 13:51

Re: SayNumber из файла

Сообщение Kroteg »

https://wiki.asterisk.org/wiki/display/ ... _SayNumber
мэйби что-то подскажет?
О 13 Астериске
The module app_readfile was deprecated and has been removed. Users of ReadFile should use func_env's FILE function instead.
El_Vago
Сообщения: 63
Зарегистрирован: 05 дек 2017, 12:46

Re: SayNumber из файла

Сообщение El_Vago »

Просто

Код: Выделить всё

exten => 230,1,Answer()
exten => 230,n,SayNumber(1986)
exten => 230,n,HangUp()
Работает на Ура. Не работает именно с файлом. Может Вы ссылкой ошиблись, которую хотели дать? Раньше, когда-то считывание и произношение из файлов работало, но то было на ReadFile.
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: SayNumber из файла

Сообщение ded »

А у вас хелп выгружает по команде
CLI> core show function FILE ??

там пример есть ваш

Код: Выделить всё

;reads from the 11th byte to the end of the file (i.e. skips the first 10).
    Set(foo=${FILE(/tmp/test.txt,10)})
Предложу

Код: Выделить всё

    exten => 230,1,Answer()
    exten => 230,n,System(cat /tmp/test.txt)
    exten => 230,n,Set(summ=${FILE(/tmp/test.txt,4)})
    exten => 230,n,NoOp(test.txt is not ${summ})
    exten => 230,n,SayNumber(${summ})
    exten => 230,n,HangUp()
El_Vago
Сообщения: 63
Зарегистрирован: 05 дек 2017, 12:46

Re: SayNumber из файла

Сообщение El_Vago »

Да, по этому хелпу и делал. Сейчас в консоли

Код: Выделить всё

-- Executing [230@support:1] Answer("SIP/utde-00087a94", "") in new stack
    -- Executing [230@support:2] System("SIP/utde-00087a94", "cat /tmp/test.txt") in new stack
    -- Executing [230@support:3] Set("SIP/utde-00087a94", "summ=") in new stack
    -- Executing [230@support:4] NoOp("SIP/utde-00087a94", "test.txt is not ") in new stack
    -- Executing [230@support:5] SayNumber("SIP/utde-00087a94", "") in new stack
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: SayNumber из файла

Сообщение ded »

Ничего нету в файле?
cat /tmp/test.txt
El_Vago
Сообщения: 63
Зарегистрирован: 05 дек 2017, 12:46

Re: SayNumber из файла

Сообщение El_Vago »

Есть, четырехзначное число.
Хм... интересно, как добавил еще несколько чисел, воспроизведение идет. Т.е. игнорируются первые 4 числа. Я думал, что 4 в конфиге - это произносить первые 4 числа. Балбес...
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: SayNumber из файла

Сообщение ded »

Я поставил

Код: Выделить всё

  exten => 230,1,Answer()
    exten => *2911,n,System(cat /tmp/test.txt)
    exten => *2911,n,Set(SUMM=${FILE(/tmp/test.txt)})
    exten => *2911,n,NoOp(test.txt is not ${SUMM})
    exten => *2911,n,SayNumber(${SUMM})
    exten => *2911,n,HangUp()
и у меня прочиталось

Код: Выделить всё

    -- Executing [*2911@from-internal:1] Festival("SIP/721-000003d6", "Привет, чудики!") in new stack
  == Parsing '/etc/asterisk/festival.conf': Found
    -- Executing [*2911@from-internal:2] Festival("SIP/721-000003d6", "Что за наваждение?") in new stack
  == Parsing '/etc/asterisk/festival.conf': Found
    -- Executing [*2911@from-internal:3] Set("SIP/721-000003d6", "SUMM=123454321
    -- ") in new stack
    -- Executing [*2911@from-internal:4] NoOp("SIP/721-000003d6", "test.txt is not 123454321
    -- ") in new stack
    -- Executing [*2911@from-internal:5] SayNumber("SIP/721-000003d6", "123454321
    -- ") in new stack
    -- <SIP/721-000003d6> Playing 'digits/1.ulaw' (language 'en')
    -- <SIP/721-000003d6> Playing 'digits/hundred.ulaw' (language 'en')
    -- <SIP/721-000003d6> Playing 'digits/20.ulaw' (language 'en')
    -- <SIP/721-000003d6> Playing 'digits/3.ulaw' (language 'en')
    -- <SIP/721-000003d6> Playing 'digits/million.ulaw' (language 'en')
    -- <SIP/721-000003d6> Playing 'digits/4.ulaw' (language 'en')
    -- <SIP/721-000003d6> Playing 'digits/hundred.ulaw' (language 'en')
    -- <SIP/721-000003d6> Playing 'digits/50.ulaw' (language 'en')
    -- <SIP/721-000003d6> Playing 'digits/4.ulaw' (language 'en')
    -- <SIP/721-000003d6> Playing 'digits/thousand.ulaw' (language 'en')
    -- <SIP/721-000003d6> Playing 'digits/3.ulaw' (language 'en')
    -- <SIP/721-000003d6> Playing 'digits/hundred.ulaw' (language 'en')
    -- <SIP/721-000003d6> Playing 'digits/20.ulaw' (language 'en')
    -- <SIP/721-000003d6> Playing 'digits/1.ulaw' (language 'en')
Потом добавил обрезание
exten => *2911,n,Set(SUMM=${FILE(/tmp/test.txtб4)})
и прочиталось 5 цифр

Код: Выделить всё

    -- Executing [*2911@from-internal:3] Set("SIP/721-000003d7", "SUMM=54321
    -- ") in new stack
    -- Executing [*2911@from-internal:4] NoOp("SIP/721-000003d7", "test.txt is not 54321
    -- ") in new stack
    -- Executing [*2911@from-internal:5] SayNumber("SIP/721-000003d7", "54321
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH