URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID6
Нить номер: 12789
[ Назад ]

Исходное сообщение
"ссылку на vxml примерчик подкиньте"

Отправлено andreyka459 , 15-Фев-07 22:58 
нужно срочно налепить стандартное голосовое меню. Типа

нажмите:
1-абон отдел
2-техотдел
или наберите внутренний номер специалиста
или отправте fax
или дождитесь ответа секретаря.

Поверхностное изучение инета пока не принесло пользы - то что нашел как надо не работает. В частности ругается на отсутствие ресурсов ASL. Я чтото не так делаю? где эту ASL выключить нафиг.

На более глубокое изучение катастрофически нет времени - компания после переезда сидит без связи, секретарша уволилась, главспец болеет. Выручите пожалуйста рабочим примером. Буду ОООЧЕНЬ признателен.  



Содержание

Сообщения в этом обсуждении
"ссылку на vxml примерчик подкиньте"
Отправлено andreyka459 , 19-Фев-07 10:31 
ну что, ни у кого нет? а у меня есть!
решил поделиться. может кому сгодится. много чего сделано не так как надо, зато работает.
поправки принимаются.


<?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 XXXXXXXXX

application
service mymenu ftp://XXX/menu.vxml


PS cisco2821 IOS 12.4(3f) C2800MN-SPSERVICESK9-M



"ссылку на vxml примерчик подкиньте"
Отправлено andreyka459 , 11-Май-07 21:58 
вот еще 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.vxml

dial-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 примерчик подкиньте"
Отправлено andreyka459 , 11-Май-07 22:03 
а вот и еще 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>


"а что неправильно в данном коде?"
Отправлено tihar , 15-Фев-12 12:52 
проигрывает сообщение
после нажатия пользователем любой клавиши умирает :(

<?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>