нужно срочно налепить стандартное голосовое меню. Типанажмите:
1-абон отдел
2-техотдел
или наберите внутренний номер специалиста
или отправте fax
или дождитесь ответа секретаря.Поверхностное изучение инета пока не принесло пользы - то что нашел как надо не работает. В частности ругается на отсутствие ресурсов ASL. Я чтото не так делаю? где эту ASL выключить нафиг.
На более глубокое изучение катастрофически нет времени - компания после переезда сидит без связи, секретарша уволилась, главспец болеет. Выручите пожалуйста рабочим примером. Буду ОООЧЕНЬ признателен.
ну что, ни у кого нет? а у меня есть!
решил поделиться. может кому сгодится. много чего сделано не так как надо, зато работает.
поправки принимаются.
<?xml version="1.0"?>
<vxml version="2.0" base="ftp://xxx/menu.vxml"><var name="number" expr="99"/>
<menu id="main" dtmf="true">
<property name="timeout" value="5s"/>
<catch event="com.cisco.fax.cng"> <goto next="#fax"/> </catch>
<catch event="noinput"> <goto next="#sek"/> </catch>
<catch event="nomatch"> <goto next="#bad"/> </catch>
<prompt>
<audio src="ftp://xxx/tiho3s.wav"/>
<audio src="ftp://xxx/welcome2.wav"/>
</prompt>
<choice next="#sek"> <grammar type="application/grammar+regex">0</grammar> </choice>
<choice next="#abn"> <grammar type="application/grammar+regex">1</grammar> </choice>
<choice next="#tech"> <grammar type="application/grammar+regex">3</grammar> </choice>
<choice next="#nm"> <grammar type="application/grammar+regex">2</grammar> </choice>
</menu><form id="abn">
<block><prompt> <audio src="ftp://xxx/abn_o.wav"/></prompt></block>
<transfer name="mycall" dest="phone://201" bridge="false"> </transfer>
</form>
<form id="tech">
<block><prompt> <audio src="ftp://xxx/tech_o.wav"/></prompt></block>
<transfer name="mycall" dest="phone://202" bridge="false"> </transfer>
</form>
<form id="sek">
<block><prompt> <audio src="ftp://xxx/sek.wav"/></prompt></block>
<transfer name="mycall" dest="phone://200" bridge="false"> </transfer>
</form>
<form id="fax">
<transfer name="mycall" dest="phone://219" bridge="false"> </transfer>
</form>
<form id="bad">
<block>
<prompt> <audio src="ftp://xxx/bad.wav"/> </prompt>
<goto next="#sek"/>
</block>
</form>
<form id="nm">
<catch event="noinput"> <goto next="#sek"/> </catch>
<catch event="nomatch"> <goto next="#bad"/> </catch>
<field name="num">
<grammar type="application/grammar+regex">[01][0-9]</grammar>
<filled>
<assign name="number" expr="'phone://2'+num"/>
<goto next="#nm2"/>
</filled>
</field>
</form>
<form id="nm2">
<block><prompt> <audio src="ftp://xxx/abn.wav"/></prompt></block>
<transfer name="mycall" destexpr="number" bridge="false"> </transfer>
</form>
</vxml>
menu.vxml - файл, что выше
welcome2.wav - "Вы похвонили в ххх, наберите 1 - абон.отдел, 3 - тех отдел, отправте факс или наберите внутренний номер(200-219), секретарь ответит через 5 сек"
abn_o.wav - соединяю с абонентским отделом
tech_o.wav - соединяю с техническим отделом
abn.wav - соединяю с абонентом
sek.wav - соединяю с секретарем
bad.wav - номер набран неверноwav записываются при помощи "звукозаписи" в винде. Кодек ставим CCITT ALAW 8кгц
складываем все это на ftp://xxxв конфиге пишем
dial-peer voice 10 pots
service mymenu
incoming called-number XXXXXXXXXapplication
service mymenu ftp://XXX/menu.vxml
PS cisco2821 IOS 12.4(3f) C2800MN-SPSERVICESK9-M
вот еще vxml - примерчик. говорящие часы.
вызывается у нас при наборе 100.100.vxml:
<?xml version="1.0"?>
<vxml version="2.0" base="flash:100.vxml">
<var name="tm1" expr="'pusto'"/>
<var name="tm2" expr="'pusto'"/>
<var name="tm3" expr="'pusto'"/>
<var name="tm4" expr="'pusto'"/>
<var name="tm5" expr="'pusto'"/>
<var name="tm6" expr="'pusto'"/><form id="vrem">
<block>
<script>
var d = new Date();
var h = d.getHours()+'';
var m = d.getMinutes()+'';
tm3='hours';
if(h > 20) {
tm1=h.substr(0,1)+'0';
tm2=h.substr(1,1);
} else {
tm2=h;
}
if( tm2 == '1' ) { tm3='hour'; };
if( tm2 == '2' ) { tm3='houra'; };
if( tm2 == '3' ) { tm3='houra'; };
if( tm2 == '4' ) { tm3='houra'; };tm6='minutes';
if(m > 20) {
tm4=m.substr(0,1)+'0';
tm5=m.substr(1,1);
} else {
tm5=m;
}
if( tm5 == '1' ) { tm6='minuta'; tm5 = '1a'; };
if( tm5 == '2' ) { tm6='minuty'; tm5 = '2e'; };
if( tm5 == '3' ) { tm6='minuty'; };
if( tm5 == '4' ) { tm6='minuty'; };
</script><prompt>
<audio src="flash:mtime.wav"/>
<audio expr="'flash:'+tm1+'.wav'"/>
<audio expr="'flash:'+tm2+'.wav'"/>
<audio expr="'flash:'+tm3+'.wav'"/>
<audio expr="'flash:'+tm4+'.wav'"/>
<audio expr="'flash:'+tm5+'.wav'"/>
<audio expr="'flash:'+tm6+'.wav'"/>
<audio src="flash:tiho3.wav"/>
</prompt>
</block>
</form>
</vxml>
в конфиге пишемapplication
service 100 flash:100.vxmldial-peer voice 15 pots
service 100
incoming called-number 100файлы типа wav c именами 0,1,1а,2е,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,30,40,50,60,70,80,90,
содержат очевидные фонемы,minuty - "минуты"
minuta - "минута"
hour - "час"
houra - "часа"
mtime - "московское время"
tiho3 - 3 сек тишины
pusto - 0 сек тишинывсе фонемы пишутся за один раз в "звукозаписи" от Виндовс, конвертятся в 8кгц Аlaw и "нарезаются" этой же программой, затем копируются на Flash карту, на которой также находится загрузочный образ IOS. Flash можно поменять на побольше (например 512МБ), обязательно отформатировав его ciscoй и переписав образ IOS.
а вот и еще vxml - примерчик. говорящий аон
при наборе говорит номер с которого набрали.
полезно при проверочных работах на атсномер АОН(CLID) у нас бывает 7 или 10 цифр
<?xml version="1.0"?>
<vxml version="2.0" base="flash:aon.vxml"><var name="aons" expr="session.connection.remote.uri"/>
<form id="aon">
<block>
<log>aons <value expr="aons"/> </log>
<prompt>
<audio src = "flash:yornum.wav"/>
</prompt>
<if cond = "aons.length == 0">
<prompt>
<audio src = "flash:neopr.wav"/>
<audio src = "flash:tiho3.wav"/>
</prompt>
<exit/>
</if>
<prompt>
<audio expr="'flash:'+aons.substring(0,1)+'.wav'"/>
<audio expr="'flash:'+aons.substring(1,2)+'.wav'"/>
<audio expr="'flash:'+aons.substring(2,3)+'.wav'"/>
<audio expr="'flash:'+aons.substring(3,4)+'.wav'"/>
<audio expr="'flash:'+aons.substring(4,5)+'.wav'"/>
<audio expr="'flash:'+aons.substring(5,6)+'.wav'"/>
<audio expr="'flash:'+aons.substring(6,7)+'.wav'"/>
</prompt>
<if cond = "aons.length == 7">
<prompt> <audio src = "flash:tiho3.wav"/> </prompt>
<exit/>
</if>
<prompt>
<audio expr="'flash:'+aons.substring(7,8)+'.wav'"/>
<audio expr="'flash:'+aons.substring(8,9)+'.wav'"/>
<audio expr="'flash:'+aons.substring(9,10)+'.wav'"/>
<audio expr="'flash:tiho3.wav'"/>
</prompt>
</block>
</form>
</vxml>
проигрывает сообщение
после нажатия пользователем любой клавиши умирает :(<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE vxml SYSTEM "http://www.w3.org/TR/2007/REC-voicexml21-20070619/vxml.dtd&q...
<vxml version="2.1">
<form id="main">
<var name="phoneNum"/>
<field name="number" type="digits">
<prompt>
<audio src="flash:welcome.au"/>
</prompt>
<filled>
<if cond="number.length != 4 && number == 1">
<assign name="phoneNum" expr="2000"/>
<elseif cond="number.length == 4"/>
<assign name="phoneNum" expr="number"/>
<else/>
<goto expr="#choise0"/>
</if>
</filled>
</field>
<transfer name="mycalld1" destexpr="'phone://'+phoneNum" connecttimeout="60s" bridge="true">
<filled>
<assign name="mydurd1" expr="mycalld1$.duration"/>
<if cond="mycalld1 == 'busy'">
<goto next="#choise0"/>
<elseif cond="mycalld1 == 'noanswer'"/>
<goto next="#choise0"/>
</if>
</filled>
</transfer>
<noinput>
<goto next="#choise0"/>
</noinput>
</form>
<form id="choise0">
<transfer name="mycall0" dest="phone://2004" connecttimeout="300s" bridge="false"/>
</form>
</vxml>