AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

say.conf [RU]

Asterisk IP PBX 63 сообщений 21.12.2007 18:00 - 18.10.2010 05:55
#1

say.conf [RU]


Ктонить поделится сабжем?
#2

Тоже интересуюсь, а то я начал заниматься, но с такой дикой нехваткой времени... если кто сделал то можно запостить так же в багтрекер, чтобы включили в последующие версии.
_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#3

тупо скопировал секцию [it] в [ru]
вроде все сходится там.
#4

Только там произношение родов нету, в любом случае его доделывать Smile
_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#5

Первоначальный черновик настройки. Получился большой, над оптимизацией подумаю позже. Сделал пока только произношение числительных Smile Тестируйте и выкладывайте результаты. если что-то произносится не так, как хотелось бы, то выкладывайте результат , указывая:
1) Что тестировали (дата, числительное, дата)
2) Значение произносимой величины
3) Что было произнесено, как должно произноситься

Настройки делались на основе английского произношения
Вот настройки в say.conf:
Код:

[ru-base](!)
_[n]um:0. => num:${SAY:1}
_[n]um:X => digits/${SAY}
; Tens
_[n]um:1X => digits/${SAY}
_[n]um:[2-9]0 => digits/${SAY}
_[n]um:[2-9][1-9] => digits/${SAY:0:1}0, num:${SAY:1}
; Hundreds
_[n]um:[1-9]00 => digits/${SAY}
_[n]um:XXX => num:${SAY:0:1}00, num:${SAY:1}
; Thousands
_[n]um:1XXX => num:${SAY:0:1}, digits/thousand, num:${SAY:1}
_[n]um:[2-4]XXX => num:${SAY:0:1}, digits/thousands-i, num:${SAY:1}
_[n]um:[5-9]XXX => num:${SAY:0:1}, digits/thousands, num:${SAY:1}
_[n]um:X1XXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2}
_[n]um:X[2-4]XXX => num:${SAY:0:2}, digits/thousands-i, num:${SAY:2}
_[n]um:X[5-9]XXX => num:${SAY:0:2}, digits/thousands, num:${SAY:2}
_[n]um:XX1XXX => num:${SAY:0:3}, digits/thousand, num:${SAY:3}
_[n]um:XX[2-4]XXX => num:${SAY:0:3}, digits/thousands-i, num:${SAY:3}
_[n]um:XX[5-9]XXX => num:${SAY:0:3}, digits/thousands, num:${SAY:3}
; Millions
_[n]um:1XXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1}
_[n]um:[2-4]XXXXXX => num:${SAY:0:1}, digits/millions-i, num:${SAY:1}
_[n]um:[5-9]XXXXXX => num:${SAY:0:1}, digits/millions, num:${SAY:1}
_[n]um:X1XXXXXX => num:${SAY:0:2}, digits/million, num:${SAY:2}
_[n]um:X[2-4]XXXXXX => num:${SAY:0:2}, digits/millions-i, num:${SAY:2}
_[n]um:X[5-9]XXXXXX => num:${SAY:0:2}, digits/millions, num:${SAY:2}
_[n]um:XX1XXXXXX => num:${SAY:0:3}, digits/million, num:${SAY:3}
_[n]um:XX[2-4]XXXXXX => num:${SAY:0:3}, digits/millions-i, num:${SAY:3}
_[n]um:XX[5-9]XXXXXX => num:${SAY:0:3}, digits/millions, num:${SAY:3}
; Billions
_[n]um:1XXXXXXXXX => num:${SAY:0:1}, digits/billion, num:${SAY:1}
_[n]um:[2-4]XXXXXXXXX => num:${SAY:0:1}, digits/billions-i, num:${SAY:1}
_[n]um:[5-9]XXXXXXXXX => num:${SAY:0:1}, digits/billions, num:${SAY:1}
_[n]um:X1XXXXXXXXX => num:${SAY:0:2}, digits/billion, num:${SAY:2}
_[n]um:X[2-4]XXXXXXXXX => num:${SAY:0:2}, digits/billions-i, num:${SAY:2}
_[n]um:X[5-9]XXXXXXXXX => num:${SAY:0:2}, digits/billions, num:${SAY:2}
_[n]um:XX1XXXXXXXXX => num:${SAY:0:3}, digits/billion, num:${SAY:3}
_[n]um:XX[2-4]XXXXXXXXX => num:${SAY:0:3}, digits/billions-i, num:${SAY:3}
_[n]um:XX[5-9]XXXXXXXXX => num:${SAY:0:3}, digits/billions, num:${SAY:3}

; enumeration
_e[n]um:X => digits/h-${SAY}
_e[n]um:1X => digits/h-${SAY}
_e[n]um:[2-9]0 => digits/h-${SAY}
_e[n]um:[2-9][1-9] => num:${SAY:0:1}0, digits/h-${SAY:1}
_e[n]um:[1-9]XX => num:${SAY:0:1}, digits/hundred, enum:${SAY:1}

[ru](ru-base,date-base,digit-base)
_datetime::. => date:AdBY 'digits/at' IMp:${SAY}
_date::. => date:AdBY:${SAY}
_time::. => date:IMp:${SAY}


Вот кусок диалплана для тестирования:

[config:1:36451aa2c8]
[globals]
SAY_NUMBER_BEGIN=10
SAY_NUMBER_STEP= 1
SAY_DATE_BEGIN=10000 ; Unixtime
SAY_DATE_STEP=500 ; Unixtime


[say]
; Russian
exten => 787,1,Answer
exten => 787,n,Wait(1)
exten => 787,n,Set(SAY_NUMBER=${SAY_NUMBER_BEGIN})
exten => 787,n,Set(CHANNEL(language)=ru)
exten => 787,n,SayNumber(${SAY_NUMBER})
exten => 787,n,Wait(1)
exten => 787,n,Set(SAY_NUMBER=$[${SAY_NUMBER} + ${SAY_NUMBER_STEP}])
exten => 787,n,GoTo(787,4)

exten => 788,1,Answer
exten => 788,n,Wait(1)
exten => 788,n,Set(SAY_DATE=${SAY_DATE_BEGIN})
exten => 788,n,Set(CHANNEL(language)=ru)
exten => 788,n,SayUnixtime(${SAY_DATE})
exten => 788,n,Wait(1)
exten => 788,n,Set(SAY_DATE=$[${SAY_DATE} + ${SAY_DATE_STEP}])
exten => 788,n,GoTo(788,4)
[/config:1:36451aa2c8]


P.S. Все накидано в спешке, работоспособность не гарантирую. Как будет подтверждено что, что-то из этого вообще работает, то вынесем в первый пост.

_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru


Последний раз редактировалось: IgorG (Пн Янв 15, 2007 05:35)
#6

PS. Обнаружил что в консоли есть команда say load new, возможно она нужна для подключения нового стиля произношения. Пока что я не имею возможности сам тестировать написанное, так как нет времени настраивать домашнюю машину...
_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#7

*-1.2: SetLanguage(ru) is deprecated.
Use Set(LANGUAGE()=ru)

*-1.4: LANGUAGE() is deprecated; use CHANNEL(language) instead.

Shocked каждую версию будут в слова играться? Confused

tip:
тепреь это будет выглядеть так

exten => 787,n,Set(CHANNEL(language)=ru)
#8

Да, уж у них в примерах в текущем релизе дан неправильный образец диалплана... Ужас...
_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#9

Последний вариант: =)

Код:

[ru-base](!)
_[n]um:0. => num:${SAY:1}
_[n]um:X => digits/${SAY}
; Tens
_[n]um:1X => digits/${SAY}
_[n]um:[2-9]0 => digits/${SAY}
_[n]um:[2-9][1-9] => digits/${SAY:0:1}0, num:${SAY:1}
; Hundreds
_[n]um:[1-9]00 => digits/${SAY}
_[n]um:XXX => num:${SAY:0:1}00, num:${SAY:1}
; Thousands
_[n]um:1XXX => num:${SAY:0:1}, digits/thousand, num:${SAY:1}
_[n]um:[2-4]XXX => num:${SAY:0:1}, digits/thousands-i, num:${SAY:1}
_[n]um:[5-9]XXX => num:${SAY:0:1}, digits/thousands, num:${SAY:1}
_[n]um:X1XXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2}
_[n]um:X[2-4]XXX => num:${SAY:0:2}, digits/thousands-i, num:${SAY:2}
_[n]um:X[5-9]XXX => num:${SAY:0:2}, digits/thousands, num:${SAY:2}
_[n]um:XX1XXX => num:${SAY:0:3}, digits/thousand, num:${SAY:3}
_[n]um:XX[2-4]XXX => num:${SAY:0:3}, digits/thousands-i, num:${SAY:3}
_[n]um:XX[5-9]XXX => num:${SAY:0:3}, digits/thousands, num:${SAY:3}
; Millions
_[n]um:1XXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1}
_[n]um:[2-4]XXXXXX => num:${SAY:0:1}, digits/millions-i, num:${SAY:1}
_[n]um:[5-9]XXXXXX => num:${SAY:0:1}, digits/millions, num:${SAY:1}
_[n]um:X1XXXXXX => num:${SAY:0:2}, digits/million, num:${SAY:2}
_[n]um:X[2-4]XXXXXX => num:${SAY:0:2}, digits/millions-i, num:${SAY:2}
_[n]um:X[5-9]XXXXXX => num:${SAY:0:2}, digits/millions, num:${SAY:2}
_[n]um:XX1XXXXXX => num:${SAY:0:3}, digits/million, num:${SAY:3}
_[n]um:XX[2-4]XXXXXX => num:${SAY:0:3}, digits/millions-i, num:${SAY:3}
_[n]um:XX[5-9]XXXXXX => num:${SAY:0:3}, digits/millions, num:${SAY:3}
; Billions
_[n]um:1XXXXXXXXX => num:${SAY:0:1}, digits/billion, num:${SAY:1}
_[n]um:[2-4]XXXXXXXXX => num:${SAY:0:1}, digits/billions-i, num:${SAY:1}
_[n]um:[5-9]XXXXXXXXX => num:${SAY:0:1}, digits/billions, num:${SAY:1}
_[n]um:X1XXXXXXXXX => num:${SAY:0:2}, digits/billion, num:${SAY:2}
_[n]um:X[2-4]XXXXXXXXX => num:${SAY:0:2}, digits/billions-i, num:${SAY:2}
_[n]um:X[5-9]XXXXXXXXX => num:${SAY:0:2}, digits/billions, num:${SAY:2}
_[n]um:XX1XXXXXXXXX => num:${SAY:0:3}, digits/billion, num:${SAY:3}
_[n]um:XX[2-4]XXXXXXXXX => num:${SAY:0:3}, digits/billions-i, num:${SAY:3}
_[n]um:XX[5-9]XXXXXXXXX => num:${SAY:0:3}, digits/billions, num:${SAY:3}

; enumeration
_e[n]um:X[mfn] => digits/h-${SAY}
_e[n]um:1X[mfn] => digits/h-${SAY}
_e[n]um:[2-9]0[mfn] => digits/h-${SAY}
_e[n]um:[2-9][1-9][mfn] => num:${SAY:0:1}0, digits/h-${SAY:1}
_e[n]um:[1-9]XX[mfn] => num:${SAY:0:1}, digits/hundred, enum:${SAY:1}

[ru](ru-base,digit-base)
_date:[Y]:. => enum:${SAY:0:4}m ; year, [12]xxx
_date:[Bb]:. => digits/mon-$[${SAY:4:2}-1] ; month name, 0..11
_date:[Aa]:. => digits/day-${SAY:16:1} ; day of week
_date:[de]:. => enum:${SAY:6:2}n ; day of month
_date:[hH]:. => num:${SAY:8:2} ; hour
_date:[I]:. => num:$[${SAY:8:2} % 12] ; hour 0-12
_date:[M]:. => num:${SAY:10:2} ; minute
_date:[pP]:. => digits/p-m ; am pm
_date:[S]:. => num:${SAY:13:2} ; seconds

_datetime::. => date:AdBY 'digits/at' IM:${SAY}
_date::. => date:AdBY:${SAY}
_time::. => date:IM:${SAY}

_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#10

Люди посоветуйте решение для организации авторизации из LDAP
#11

?
Вот это дело!
Для разминки - попробуй поднять MS Live Communication Server и зарегистрировать там Астериск.
#12

Единицы, десятки, сотни и минус не произносит - нормально работают, а вот с тысячами какой то косяк......все равно по английской логике работают! Вопрос - где еще добавить строки, чтобы после произнесенной цифры он в правильном падеже произносил "рубль, рубля, рублей"??? Smile
#13

Ой, давно я за это не брался, нужно будет доработать и включить в транк. А насчет рублей рекомендую сделать макрос для произношения сумм =)
рубль, рубля, рублей произносится в зависимости от последней цифры.

_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#14

Сделал я произношения рубля, рублей, рубль. Только путем исполнения Перлового скрипта, но все равно работает. Так же и для копеек сделалCool
#15

shtorm512, не вижу аттача Wink
#16

В виде макроса примерно так:

Код:
[macro-saycountru]
exten => s,1,NoOp(Say Word In Russian)
exten => s,n,GotoIf($[${ARG4}%10 = 1]:one)
exten => s,n,GotoIf($[${ARG4}%10 = 2]:two)
exten => s,n,GotoIf($[${ARG4}%10 = 3]:two)
exten => s,n,GotoIf($[${ARG4}%10 = 4]:two)
exten => s,n,Goto(three)
exten => s,n(one),Playback(${ARG1})
exten => s,n(two),Playback(${ARG2})
exten => s,n(three),Playback(${ARG3})


Не тестировал, но как-то так. Использовать так:

Код:
exten => _X.,1,Macro(saycountru,rubl,rublya,rubley,145)

_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#17

А это зачем делать?
#18

Для разминки.
Код:
ldap.conf - config file for LDAPget

[section-name]
host = ; default: localhost
port = ; default: 389
user = ; default: anonymous bind
pass =
base =
scope = ; default: sub
filter = ; default: (&(objectClass=person)(telephoneNumber=%s))
attribute = ; default: commonName
convert = ,


Example

Код:
[cidname]
host = samplehost
user = cn=root,ou=People,o=sampledomain
pass = secret
base = ou=Addressbooks,o=sampledomain
filter = (&(objectClass=person)(|(telephoneNumber=%s)(mobile=%s)(fax=%s)))
attribute = displayName
convert = UTF-8, ISO-8859-1

corresponding part in extensions.conf:

exten => 1234,1,LDAPget(CIDNAME=cidname/${CALLERIDNUM},${CALLERIDNUM},${CALLERIDNUM}) ; for telefon, mobile and fax
exten => 1234,2,SetCIDName(${CIDNAME})
exten => 1234,3,Dial(Zap/11/${EXTEN},15)

Но это только подстановка Имени юзера из базы данных LDAP, тебе несколько другое нужно.
http://www.voip-info.org/wiki/view/Authenticate_LDAP
#19

IgorG писал(а):
PS. Обнаружил что в консоли есть команда say load new, возможно она нужна для подключения нового стиля произношения.

Ahtung! Опасная команды, вводит в заблуждение. Она хоть и перечитывает конф, но пеосле этого читает тишину.
#20

здравствуйте, пробовал добавлять в say.conf конструкции вида:
_mi[n]uta:0 => num:${SAY}, digits/minuts
_mi[n]uta:1 => digits/odna, digits/minuta
_mi[n]uta:2 => digits/dve, digits/minuty
_mi[n]uta:[3-4] => num:${SAY}, digits/minuty
_mi[n]uta:[5-9] => num:${SAY}, digits/minuts
_mi[n]uta:0X => minuta:${SAY:1}
_mi[n]uta:1X => num:${SAY}, digits/minuts
_mi[n]uta:[2-5]0 => num:${SAY}, digits/minuts
_mi[n]uta:[2-5][1-9] => num:${SAY:0:1}0, minuta:${SAY:1}

астер не реагирует на них никак, пытаюсь проговаривать время ожидания в очереди.
Немогу сообразить что в диалплане нужно дописать.

asterisk Asterisk 11.1.0
debian 6.0
#21

Приветствую.

Тема достаточно старая, но.... Пару лет назад все работало на 1.8.5 как часы, причем брал пример именно отсюда.

За это время надобность отпала и я не следил особо за этим. А тут ВДРУГ срочно понадобилась и я обнаружил что в моей 1.8.16 не работает вызов exten => s,n,Playback(currency:3812,say) !!!! Просто ничего не происходит.
Причем сам файл say.conf я использовал старый.

Что могла съехать - есть идеи?


ФУ! Совсем из головы вылетело что так просто конфигурация для этого не меняется в он-лайне - только перестартом сервера Sad

_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#22

т.е. dialplan reload не работает?
#23 21.12.2007 18:00

Не понял, что именно не так? Если можно пошпгово, с конфигом и выводом из консоли. Если что не так - подправлю.
_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#24 21.12.2007 18:27

Ковыряюсь в say.conf.
Делаю там изменения, чтобы услышать эти изменения делаю say load new.
После этого либо глохнет
-- Executing [23@say:4] Set("SIP/202-09bcb0d0", "CHANNEL(language)=de") in new stack
-- Executing [23@say:5] Goto("SIP/202-09bcb0d0", "23|3") in new stack
-- Goto (say,23,3)
-- Executing [23@say:3] SayNumber("SIP/202-09bcb0d0", "23") in new stack ; вот тут тишина
== Spawn extension (say, 23, 3) exited non-zero on 'SIP/202-09bcb0d0'

Пока что вопросов больше, чем ответов. Не понимаю, почему не принимаются изменения в say.conf.
#25 21.12.2007 19:13

А до этого какой оежим, так же new? Вообще конфиг подгружается при загрузке app_playback.so. Наверное нужно добавить комманду say reload? Вообще комманда say load как-то не логична, не совсем понятно по названию что она делает.

Ded, в общем предлагай как должно работать, я в понедельник покручу.

_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#26 19.02.2008 12:17

Если кому интересно - моя версия say.conf, числительные, с поддержкой женского рода (кусочек для num)
Код:

[ru-base](!)
_[n]um:0. => num:${SAY:1}

_[n]um:X => digits/${SAY}
_[n]um:[1-2]f => digits/${SAY:0:1}f
_[n]um:[3-9]f => digits/${SAY:0:1}

; Tens
_[n]um:1X => digits/${SAY:0:2}
_[n]um:1Xf => digits/${SAY:0:2}

_[n]um:[2-9]0 => digits/${SAY:0:2}
_[n]um:[2-9]0f => digits/${SAY:0:2}

_[n]um:[2-9][1-2] => digits/${SAY:0:1}0, num:${SAY:1}
_[n]um:[2-9][1-2]f => digits/${SAY:0:1}0, num:${SAY:1}

_[n]um:[2-9][3-9] => digits/${SAY:0:1}0, num:${SAY:1}
_[n]um:[2-9][3-9]f => digits/${SAY:0:1}0, num:${SAY:1}


; Hundreds
_[n]um:[1-9]00 => digits/${SAY:0:1}00
_[n]um:[1-9]00f => digits/${SAY:0:1}00

_[n]um:XXX => num:${SAY:0:1}00, num:${SAY:1}
_[n]um:XXXf => num:${SAY:0:1}00, num:${SAY:1}

; Thousands
_[n]um:1XXX => num:${SAY:0:1}f, digits/thousand1, num:${SAY:1}
_[n]um:1XXXf => num:${SAY:0:1}f, digits/thousand1, num:${SAY:1}

_[n]um:[2-4]XXX => num:${SAY:0:1}f, digits/thousand2, num:${SAY:1}
_[n]um:[2-4]XXXf => num:${SAY:0:1}f, digits/thousand2, num:${SAY:1}
_[n]um:[5-9]XXX => num:${SAY:0:1}, digits/thousand5, num:${SAY:1}
_[n]um:[5-9]XXXf => num:${SAY:0:1}, digits/thousand5, num:${SAY:1}


_[n]um:1XXXX => num:${SAY:0:2}, digits/thousand5, num:${SAY:2}
_[n]um:1XXXXf => num:${SAY:0:2}, digits/thousand5, num:${SAY:2}

_[n]um:[2-9]1XXX => num:${SAY:0:2}f, digits/thousand1, num:${SAY:2}
_[n]um:[2-9]1XXXf => num:${SAY:0:2}f, digits/thousand1, num:${SAY:2}

_[n]um:[2-9][2-4]XXX => num:${SAY:0:2}f, digits/thousand2, num:${SAY:2}
_[n]um:[2-9][2-4]XXXf => num:${SAY:0:2}f, digits/thousand2, num:${SAY:2}

_[n]um:[2-9][5-9]XXX => num:${SAY:0:2}, digits/thousand5, num:${SAY:2}
_[n]um:[2-9][5-9]XXXf => num:${SAY:0:2}, digits/thousand5, num:${SAY:2}


_[n]um:X1XXXX => num:${SAY:0:3}, digits/thousand5, num:${SAY:3}
_[n]um:X1XXXXf => num:${SAY:0:3}, digits/thousand5, num:${SAY:3}

_[n]um:X[2-9]1XXX => num:${SAY:0:3}f, digits/thousand1, num:${SAY:3}
_[n]um:X[2-9]1XXXf => num:${SAY:0:3}f, digits/thousand1, num:${SAY:3}

_[n]um:X[2-9][2-4]XXX => num:${SAY:0:3}f, digits/thousand2, num:${SAY:3}
_[n]um:X[2-9][2-4]XXXf => num:${SAY:0:3}f, digits/thousand2, num:${SAY:3}

_[n]um:X[2-9][5-9]XXX => num:${SAY:0:3}, digits/thousand5, num:${SAY:3}
_[n]um:X[2-9][5-9]XXXf => num:${SAY:0:3}, digits/thousand5, num:${SAY:3}

;my millions
_[n]um:1XXXXXX => num:${SAY:0:1}, digits/million1, num:${SAY:1}
_[n]um:1XXXXXXf => num:${SAY:0:1}, digits/million1, num:${SAY:1}

_[n]um:[2-4]XXXXXX => num:${SAY:0:1}, digits/million2, num:${SAY:1}
_[n]um:[2-4]XXXXXXf => num:${SAY:0:1}, digits/million2, num:${SAY:1}

_[n]um:[5-9]XXXXXX => num:${SAY:0:1}, digits/million5, num:${SAY:1}
_[n]um:[5-9]XXXXXXf => num:${SAY:0:1}, digits/million5, num:${SAY:1}


_[n]um:1XXXXXXX => num:${SAY:0:2}, digits/million5, num:${SAY:2}
_[n]um:1XXXXXXXf => num:${SAY:0:2}, digits/million5, num:${SAY:2}

_[n]um:[2-9]1XXXXXX => num:${SAY:0:2}, digits/million1, num:${SAY:2}
_[n]um:[2-9]1XXXXXXf => num:${SAY:0:2}, digits/million1, num:${SAY:2}

_[n]um:[2-9][2-4]XXXXXX => num:${SAY:0:2}, digits/million2, num:${SAY:2}
_[n]um:[2-9][2-4]XXXXXXf => num:${SAY:0:2}, digits/million2, num:${SAY:2}

_[n]um:[2-9][5-9]XXXXXX => num:${SAY:0:2}, digits/million5, num:${SAY:2}
_[n]um:[2-9][5-9]XXXXXXf => num:${SAY:0:2}, digits/million5, num:${SAY:2}

_[n]um:X1XXXXXXX => num:${SAY:0:3}, digits/million5, num:${SAY:3}
_[n]um:X1XXXXXXXf => num:${SAY:0:3}, digits/million5, num:${SAY:3}

_[n]um:X[2-9]1XXX XXX => num:${SAY:0:3}, digits/million1, num:${SAY:3}
_[n]um:X[2-9]1XXXXXXf => num:${SAY:0:3}, digits/million1, num:${SAY:3}

_[n]um:X[2-9][2-4]XXXXXX => num:${SAY:0:3}, digits/million2, num:${SAY:3}
_[n]um:X[2-9][2-4]XXXXXXf => num:${SAY:0:3}, digits/million2, num:${SAY:3}

_[n]um:X[2-9][5-9]XXXXXX => num:${SAY:0:3}, digits/million5, num:${SAY:3}
_[n]um:X[2-9][5-9]XXXXXXf => num:${SAY:0:3}, digits/million5, num:${SAY:3}

Особенности названия файлов:
1f одна
2f две
thousand1 тысяча
thousand2 тысячи
thousand5 тысяч
million1 миллион
million2 миллиона
million5 миллионов

Использование:
Playback(num:1356|say) - одна тысяча триста пятьдесят шесть
Playback(num:421f|say) - четыреста двадцать одна

_________________
Everything over IP & IP over Everything


Последний раз редактировалось: Braams (Вт Апр 01, 2008 13:49)
#27 19.02.2008 13:01

Цитата:
Playback(num:421f|say) - четыреста двадцать одна

Если 421 копейка - то семантически верно, а если 421 рубль - то не верно.
#28 19.02.2008 13:06

в первую очередь для копеек женский род и делал
_________________
Everything over IP & IP over Everything
#29 19.02.2008 13:17

Лутше для тысяч, чо мелочица? Четыреста двадцать одна тысяча.... Smile
#30 19.02.2008 13:19

ну и для корректного произношения тысяч тоже Smile
_________________
Everything over IP & IP over Everything
#31 19.02.2008 17:23

зачет! Smile
#32 08.03.2008 22:22

say.conf [RU]


Народ, вот мой вариант, говорит и мегабайты, и градусы и копейки ...
Ни как не победил минус и дробные числа - ну чтоб зарядить ему currency:-12,34, а оно само и минус и рубли и копейки сказало - надо патчи писать, тока там всё доходит до главного анализа всего dial-плана - а вот это что-то не хочеться поганить

Код:
exten => s,n,GotoIf($[${Downloaded} > 1024]?MByte)
exten => s,n,Playback(kilobyte:${Downloaded},say)
exten => s,n,Goto(s,next)
exten => s,n(MByte),GotoIf($[$[${Downloaded}/1024] > 1024]?GByte)
exten => s,n,Playback(megabyte:$[ROUND(${Downloaded}/1024})],say)
exten => s,n,Goto(s,next)
exten => s,n(GByte),Playback(gigabyte:$[ROUND(${Downloaded}/(1024*1024))],say)
exten => s,n(next),...


говорилка времени тут пока не сделана
хотелось бы это всё доделать и внести в транк, но времени как всегда не хватает


Последний раз редактировалось: Mike_A (Вс Мар 09, 2008 19:49)
#33 09.03.2008 03:41

Очень хорошая идея... Сам двигался в этом направлении, посмотрю в чём проблема с минусами и дробными числами.
_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#34 01.04.2008 08:46

Произношение рублей и копеек


Произношение сумм
Код:

_rub:. => num:${SAY}, rub${IF($[$[$[${SAY}%10]=1] & $[$[${SAY}%100]!=11]]?1:${IF($[$[$[$[${SAY}%10]>=2] & $[$[${SAY}%10] num:${SAY}f, kop${IF($[$[$[${SAY}%10]=1] & $[$[${SAY}%100]!=11]]?1:${IF($[$[$[$[${SAY}%10]>=2] & $[$[${SAY}%10]
#35 25.09.2008 13:43

Я еще вот так добавил:

Код:
_chas:0 => num:${SAY}, digits/hours
_chas:1 => digits/${SAY}, digits/one-hours
_chas:[2-4] => num:${SAY}, digits/houra
_chas:[5-9] => num:${SAY}, digits/hours
_chas:0X => chas:${SAY:1}
_chas:1X => num:${SAY}, digits/hours
_chas:20 => num:${SAY}, digits/hours
_chas:2[1-4] => num:${SAY:0:1}0, chas:${SAY:1}

_mi[n]uta:0 => num:${SAY}, digits/minuts
_mi[n]uta:1 => digits/odna, digits/minuta
_mi[n]uta:2 => digits/dve, digits/minuty
_mi[n]uta:[3-4] => num:${SAY}, digits/minuty
_mi[n]uta:[5-9] => num:${SAY}, digits/minuts
_mi[n]uta:0X => minuta:${SAY:1}
_mi[n]uta:1X => num:${SAY}, digits/minuts
_mi[n]uta:[2-5]0 => num:${SAY}, digits/minuts
_mi[n]uta:[2-5][1-9] => num:${SAY:0:1}0, minuta:${SAY:1}

_seku[n]da:0 => num:${SAY}, digits/seconds
_seku[n]da:1 => digits/odna, digits/one-seconds
_seku[n]da:2 => digits/dve, digits/secondsy
_seku[n]da:[3-4] => num:${SAY}, digits/secondsy
_seku[n]da:[5-9] => num:${SAY}, digits/seconds
_seku[n]da:0X => sekunda:${SAY:1}
_seku[n]da:1X => num:${SAY}, digits/seconds
_seku[n]da:[2-5]0 => num:${SAY}, digits/seconds
_seku[n]da:[2-5][1-9] => num:${SAY:0:1}0, sekunda:${SAY:1}



И, соответственно, здесь:

Код:

_date:[hH]:. => chas:${SAY:8:2} ; hour
_date:[M]:. => minuta:${SAY:10:2} ; minute
_date:[S]:. => sekunda:${SAY:13:2} ; seconds

_datetime::. => date:AdBY HMS:${SAY}


Теперь время по-человечески говорит.
#36 25.11.2008 14:07

народ! помогите, пожалуйста, ни как не могу разобраться:
с самого начала после установки астериск правильно произносит руские числа, от меня требовалось только добавить соответсвующие звуки, но я ни как не могу найти, где он берет русскую конфигурацию, даже после того как я переименовал say.conf и перезапустил астериск, он все равно все произносит правильно.. Shocked
Может быть я что то не учел, подскажите, если знаете в чем может быть дело.

P.s. у меня установлен asterisk-1.4.21.2_4 и asterisk-addons-1.4.6_2
#37 25.11.2008 17:58

Очевидно он берёт её в say.c Twisted Evil
_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#38 25.11.2008 19:51

а где он находиться, не скажешь? найти его поиском не получается..
#39 25.11.2008 20:02

Да ну?
find / -name say.c
Twisted Evil
#40 26.11.2008 08:26

к сожалению и так не находит
#41 26.11.2008 08:31

- Ну тогда вам к доктору надо!
- А вы кто?
- А мы маляры, мы здесь красим.
#42 26.11.2008 08:46

скажите где say.c лежит по умолчанию? может в freebsd это say.h?
#43 26.11.2008 15:10

say.c это часть исходных кодов астериска, он компилируется внутрь комманды asterisk. Если астериск поставлен не из исходных текстов, то скорее всего нет такого файла.
_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#44 27.11.2008 07:42

спасибо за разъясненние Wink
#45 26.01.2009 01:38

Re: say.conf [RU]


anest wrote:
Ктонить поделится сабжем?

Дарю (perl, utf8): http://voip.spb.edu/say.txt
#46 26.01.2009 10:12

спасибо
#47 18.02.2009 13:09

_[n]um:1XX => digits/ein, digits/hundred, num:${SAY:1}
_[n]um:[2-9]XX => digits/${SAY:0:1}, digits/hundred, num:${SAY:1}

С трех значным числом например 380 проговаривает только 80. Что не правильно ?
#48 16.07.2009 09:02

Использую say.conf от Mike_A

не давно проапдейтил * с 1.4.19 до 1.4.25.1

до этого проговор работал
Code:

exten => s,n,Playback(currency:${rub},say)
exten => s,n,Playback(kopeyka:${kop},say)

после апдейте какие-то странности.

для проверки сделал
Code:

exten => s,n,Noop(${CHANNEL(language)})
exten => s,n,Playback(digits/ru/${rub})
exten => s,n,Playback(currency:${rub},say)
exten => s,n,Playback(kopeyka:${kop},say)


он выдает

Code:

Executing [s@testt1:6] NoOp("SIP/33333-b60dd728", "ru") in new stack
-- Executing [s@testt1:7] Playback("SIP/33333-b60dd728", "digits/ru/300") in new stack
-- Playing 'digits/ru/300' (language 'ru')
-- Executing [s@testt1:8] Playback("SIP/33333-b60dd728", "currency:300|say") in new stack
[Jul 16 12:56:09] WARNING[20280]: file.c:658 ast_openstream_full: File digits/300 does not exist in any format
[Jul 16 12:56:09] WARNING[20280]: file.c:966 ast_streamfile: Unable to open digits/300 (format 0x2 (gsm)): No such file or directory
[Jul 16 12:56:09] WARNING[20280]: app_playback.c:135 s_streamwait3: Unable to play message digits/300
[Jul 16 12:56:09] WARNING[20280]: app_playback.c:439 playback_exec: ast_streamfile failed on SIP/33333-b60dd728 for currency:300|say
-- Executing [s@testt1:9] Playback("SIP/33333-b60dd728", "kopeyka:50|say") in new stack
-- Playing 'digits/50' (language 'ru')
[Jul 16 12:56:10] WARNING[20280]: file.c:658 ast_openstream_full: File digits/kopeek does not exist in any format
[Jul 16 12:56:10] WARNING[20280]: file.c:966 ast_streamfile: Unable to open digits/kopeek (format 0x2 (gsm)): No such file or directory
[Jul 16 12:56:10] WARNING[20280]: app_playback.c:135 s_streamwait3: Unable to play message digits/kopeek
[Jul 16 12:56:10] WARNING[20280]: app_playback.c:439 playback_exec: ast_streamfile failed on SIP/33333-b60dd728 for kopeyka:50|say


почему-то по английски пытается воспроизвести.

однако, если сунуть файлы не в /digits/ru ,а в /ru/digits , то работает.

это у меня что-то мутное или в 1.4.25.1 структура изменилась ?
#49 16.07.2009 09:15

Изменилась.
#50 16.07.2009 10:02

наконецто поменяли. имхо так идеологически более правильно.
_________________
Мои рекомендации: Asterisk-1.8 + G.722 кодек = лучший выбор!
Успехов!
#51 17.07.2009 11:44

Эмм.. Она вообще давно изменилась, поведение регулируется в asterisk.conf. Просто в этой версии старое поведение опять сломали. Лучше пользоваться новым вариантом расположения файлов всегда.
_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#52 17.09.2009 11:07

А никто не делал чтоб говорило минус?
_________________
Ubuntu-Server 6.06 /Gentoo /Asterisk 1.4.21.1/app_fax(t38) /spandsp-0.0.5pre4
Digium TDM400/Polycom IP301 SP /Snom 360/ Seiros ТИ24/Linksys 9X/ Kirk 600IPv3
#53 01.03.2010 14:39

скопировал себе в say.conf
IgorG wrote:
Последний вариант: =)

Code:

[ru-base](!)
....
; enumeration
_e[n]um:X[mfn] => digits/h-${SAY}
_e[n]um:1X[mfn] => digits/h-${SAY}
_e[n]um:[2-9]0[mfn] => digits/h-${SAY}
_e[n]um:[2-9][1-9][mfn] => num:${SAY:0:1}0, digits/h-${SAY:1}
_e[n]um:[1-9]XX[mfn] => num:${SAY:0:1}, digits/hundred, enum:${SAY:1}

[ru](ru-base,digit-base)
....
_date:[Bb]:. => digits/mon-$[${SAY:4:2}-1]
_date:[de]:. => enum:${SAY:6:2}n ; day of month

_datetime::. => date:kMdBYA:${SAY}
_date::. => date:dBYA:${SAY}
_time::. => date:kM:${SAY}


но такое ощущение что у меня астериск вообще не читает этот файл Sad поменял некоторые строки (например: _datetime::. => date:kMdBYA:${SAY} ) ,я так понял что теперь можно просто писать SayUnixTime() и должно говорится что у казано в _datetime, так? Но это не важно мне не сложно написать SayUnixTime(kMdBYA).

Проблема в другом с этим say.conf астериск говорит что не может найти файл digits/h-1 хотя указано что надо букву "n" подставлять если это день месяца, но почему-то не подставляет Sad астер уже перезапускал, прова доступа проверил не помогает Sad

С номером месяца тоже самое, следуя этим правилам месяцы считаются с 0 до 11, а у меня 1 - 12, исправил _date:[Bb]:. => digits/mon-${SAY:4:2} результатов недало, так же и продолжает считать их с 0

в чем проблемма подскажите?
#54 02.03.2010 09:26

Asterisk 1.6.1.12:
если в say.conf в разделе [general] выставить mode=new то после этого в диалплане просто пишем exten => s,1,SayUnixTime() и астер начинает проговаривать те и только те правила которые указанные в say.conf, в частности _datetime - это побороли, этого я и хотел, но он не парсит строку _date:[de]:. => enum:${SAY:6:2}n , т.е. не подставляет букву n и как следствие пишет что файл не найдет


Asterisk 1.4.27.1:
Все наоборот, проделываем тоже самое что и с Asterisk 1.6 - строчки _date:[de]:. => enum:${SAY:6:2}n и им подобные парсятся, а вот exten => s,1,SayUnixTime() проговаривает дефолтную дату и нивкакую не хочет проговаривать то что указано в _datetime
#55 04.03.2010 04:22

В 1.4 режим работы приложений нужно устанавливать из CLI: say mode new (если правильно помню)
_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#56 11.03.2010 12:11

почему у меня на работают конструкции

Playback(num:421f|say) - четыреста двадцать одна

почему то пытается проиграть этот файл с таким названием и естественно не находит его

Code:
[2010-03-11 15:41:11] WARNING[21155]: file.c:953 ast_streamfile: Unable to open num:1356|say (format 0x4 (ulaw)): No such file or directory
[2010-03-11 15:41:11] WARNING[21155]: app_playback.c:448 playback_exec: ast_streamfile failed on SIP/sflphone-sip-0000001f for num:1356|say


Added after 31 minutes:

усе разобрался! У меня версия астера 1.6 поэтому и ни работало, надо писать

Playback(enum:22f,say) - двадцать вторая


подсказал c0rn в jabber конференции asterisk@conference.jabber.ru за это ему спасибо Smile
#57 20.09.2010 08:05

Что-то туплю на ровном месте ни чего не получилось, что бы не было лишних грабель скачал с этой ветке say.conf, дал права для астера, но вместо хотя бы чего-нибудь тупо тишина, после say load new, хорошо, что в гугле old нашёл, а то не мог заставить обратно хоть как-то заговорить.
Вот такой астериск Connected to Asterisk 1.4.22-4 RPM by vc-rpms@voipconsulting.nl currently running on trixbox1

Вот так пытаюсь заставить говорить:
Code:
[custom-time-now]
exten => s,1,Set(CHANNEL(language)=ru)
exten => s,n,SayUnixTime(,EST5EDT,kMdBYA)
exten => s,n,Hangup


А в выводе ни чего противоправного:
Code:
-- Executing [s@custom-time-now:1] Set("SIP/677575-b7dec978", "CHANNEL(language)=ru") in new stack
-- Executing [s@custom-time-now:2] SayUnixTime("SIP/677575-b7dec978", "|EST5EDT|kMdBYA") in new stack
-- Executing [s@custom-time-now:3] Hangup("SIP/677575-b7dec978", "") in new stack
== Spawn extension (custom-time-now, s, 3) exited non-zero on 'SIP/677575-b7dec978'


Поясните плиз, что не так? А то тупо не знаю даже куда смотреть.
Смотрю давным давно у Ded такая же муть была, а ответа что сделали, не написали, а жаль
Smile

Added after 8 minutes:

В том say.conf, что я скачал, нет секции [general], нет указания new и прочее..... как оно должно быть, должно быть указано new, просто в ступор вообще вогнало вот это
http://svnview.digium.com/svn/asterisk/t ... hrev=76216

Added after 2 minutes:

Добавил один фиг молчит, что и логично в общем....

Code:
[general]
mode=old ; method for playing numbers and dates
; old - using asterisk core function
; new - using this configuration file


Added after 5 minutes:

Чутка прояснилось, астериск из say.conf не смог наверное по шаблону разобрать это
exten => s,n,SayUnixTime(,EST5EDT,kMdBYA) , а это смог
exten => s,n,SayUnixTime()
Вот и хорошо, моно дальше думать =).
#58 21.09.2010 10:03

Что-то я совсем запутался. Ни как не реагирует на say.conf, что что я даю съедение SayUnixTime. Понял, что по умолчанию отдаются вот так "ABdY 'digits/at' IMp", по этому не слышу секунд ни каких, если я решаю, передать вот так
exten => s,n,SayUnixTime(,,ABdYHMS), то тишина, понял, что нечем отработать. Попробовал вот так
_datetime:ABdYHMS:XXXXXXXXXXXX.XX-X-XXX (или так _datetime:ABdYHMS:XXXXXXXXXXXX.XX ) => digits/p-m, не ловит в общем.
Может кто поделиться рабочим примером, хоть чего нибудь, мне что бы время говорило, причём не в дефолте, а секундами. Что бы понятно было, что бы я мог добавить "час", "минут" и прочего такого. Да и вообще хочется до конца понять. Поделитесь доками и примером, а то ну слабовато в гугле об этом или я не так спрашиваю Sad
#59 22.09.2010 05:47

НАчало говорить секунды, после втыкания конфига, из форума, прописывания дженерал, и указания вот так
_datetime::. => date:AdBY 'digits/at' HMS:${SAY}, но не тут-то было, я удалил S, сделал say load old, потом say load new и так несколько раз, послушал, что говориться и услышал, что говоряться всё равно секунды!!! Это как называется такое???

Added after 9 minutes:

Эм вот так вот... Ест он конфиг say.conf один раз после перегрузки модуля app_playback.so, и кстати если не сделать say load new, астер вылетает, перезапускается в моём случае, вот в чём затыка Smile.
#60 15.10.2010 10:18

SayUnuxTime


Кто-нибудь знает как настроить SayUnixTime , чтобы при звонке на определенный номер было два варианта проигрывания времени (русский и английский). Заранее спасибо!!
#61 15.10.2010 13:43

При попытке проговорить SayNumber(12345) говорит: двенадцать тысячи триста сорок пять. Это же качается и и прочих подобных числе(13345,12345678).
Также при чтении SayNumber(12000) читает двенадцать тысячи ноль

_________________
Slackware 13.37 - Asterisk 1.8
#62 17.10.2010 18:13

Re: SayUnuxTime


Manson писал(а):
Кто-нибудь знает как настроить SayUnixTime , чтобы при звонке на определенный номер было два варианта проигрывания времени (русский и английский). Заранее спасибо!!


Думаю по простому, у вас два типа клиентов у кого язык стоит англ и русский, ну достаточно брать язык из БД астериска, если это трикс бокс, если нет самому расфасовать пользователей или посмотреть переменную канала ${LANGUAGE}, но в последнем не уверен, выставиться ли она если в пользователе написано, что-то отличное от англ. Ну вот и всё пожалуй, выставляете
exten => s,1,Set(CHANNEL(language)=ru)
что бы получить переменную из Бд, читать это
http://www.voip-info.org/wiki/view/Asterisk+cmd+DBget

И ещё есть наверное 5 методов более луче есть. Smile
#63 18.10.2010 05:55

Re: SayUnuxTime


Пробовал не получается.
Можешь мне еще другие способы показать??(Заранее спасибо)