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

Надо разобрать переменную до точки и после и произнести

0

Здравствуйте!! Есть переменная Dolg = 290.35000 Надо ее произнести как 290 рублей 35 копеек

Если бы надо было произнести 290 рублей, то делал бы так

exten => s,n,NoOp(${Dolg})

exten => s,n,GotoIf($[${Dolg}>0]?:200)

exten => s,n,PlayBack(vm-youhave)

exten => s,n,SayNumber(${Dolg})

exten => s,n,PlayBack(rubls); rubls.alaw - скажет рублей

удалить закрыть спам изменить тег редактировать

спросил 2012-10-10 12:38:15 +0400

dm765 Gravatar dm765
1 3 1 3

обновил 2012-10-10 13:50:44 +0400

Comments

А если у Вас файл "kopeek" ?

zzuz ( 2012-10-10 13:44:26 +0400 )редактировать

2 Ответа

1
core show function CUT 

  -= Info about function 'CUT' =- 

[Syntax]
CUT(<varname>,<char-delim>,<range-spec>)

[Synopsis]
Slices and dices strings, based upon a named delimiter.

[Description]
  varname    - variable you want cut
  char-delim - defaults to '-'
  range-spec - number of the field you want (1-based offset)
             may also be specified as a range (with -)
             or group of ranges and fields (with &)

в Вашем случае это будет так

exten => s,n,NoOp(${Dolg})
exten => s,n,GotoIf($[${Dolg}>0]?:200)
exten => s,n,PlayBack(vm-youhave)
exten => s,n,SayNumber(${CUT(${Dolg},.,1)})
exten => s,n,PlayBack(rubls); rubls.alaw - скажет рублей
exten => s,n,SayNumber(${CUT(${Dolg},.,2)})
exten => s,n,PlayBack(kopeek); kopeek.alaw - скажет копеек
ссылка удалить спам редактировать

ответил 2012-10-10 13:44:56 +0400

zzuz Gravatar zzuz flag of Russian Federation
7174 2 6 75
http://line24.ru/

обновил 2012-10-10 18:03:58 +0400

Comments

Да, файл kopeek.alaw наговорил.

dm765 ( 2012-10-10 13:52:31 +0400 )редактировать

поправил ответ.

zzuz ( 2012-10-10 14:13:43 +0400 )редактировать

Большое спасибо за внимание к вопросу... пока не получается настроить, последняя фраза кот я слышу в трубке вот эта - "у вас"

exten => s,n,PlayBack(vm-youhave)

В моем случае разделитель точка, надо экранировать ее, т.е. .

dm765 ( 2012-10-10 16:38:57 +0400 )редактировать

После точки не хочет проговаривать.

Если exten => s,n,SayNumber(${Dolg})

то тоже проговаривает 290.35000 только до точки

Видимо точка не является цифрой, для функции say number на ней и затыкается

dm765 ( 2012-10-10 17:38:04 +0400 )редактировать

Собственно проблемы не вижу.

zzuz ( 2012-10-10 18:04:35 +0400 )редактировать

Уважаемый ZZUZ большое вам спасибо!!

dm765 ( 2012-10-10 21:45:05 +0400 )редактировать
0

Оператор регулярного выражения

Также в Asterisk может использоваться оператор регулярного выражения:

expr1 : expr2

Этот оператор сравнивает выражение expr1 с expr2, где последнее должно быть регулярным

выражением1. Регулярное выражение привязывается к началу строки посредством явного

задания 2.

Больше информации о регулярных выражениях можно найти в полном справочнике Джеффри Е.

Ф. Фридла (Jeffrey E. F. Friedl) «Mastering Regular Expressions»

(издательство O'Reilly) или по адресу http://www.regula.r- expressions.info.

Если вы не знаете, что делает ~ с регулярными выражениями, вы просто обязаны достать

экземпляр книги «Mastering Regular Expressions». Она изменит вашу жизнь!

ссылка удалить спам редактировать

ответил 2012-10-10 18:36:45 +0400

bolshoy_plohish Gravatar bolshoy_plohish
1388 25 20 38

Comments

Какая связь вашего ответа с вопросом Автора? Или просто от балды написать захотелось?

zzuz ( 2012-10-10 19:19:25 +0400 )редактировать

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

exten => s,n,Set(variable =$["${Dolg}" : "(\d+)."])

bolshoy_plohish ( 2012-10-16 14:57:21 +0400 )редактировать

Приведите пример , как это у Вас работает. У меня аж свербит от любопытства чему будет равно выражение $["${Dolg}" : "(\d+)."] , если Dolg=222.444.

zzuz ( 2012-10-16 15:14:04 +0400 )редактировать

Я видимо так ответа не дождусь. Жаль.

zzuz ( 2012-10-18 16:02:47 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2012-10-10 12:38:15 +0400

Просмотрен: 243 раз

Обновлен: Oct 10 '12

Похожие вопросы:

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