VXML использует ввод для передачи

Я пытаюсь получить пользовательский ввод (код страны + номер телефона), чтобы позже вызвать его с помощью элемента передачи.

Моя проблема встречается при передаче элементов, которые просто зависают. Я не знаю, как их отлаживать. Я использую NEXMO в качестве провайдера. Я заранее много чего искал и пробовал, включая тестирование каждой функции по отдельности (что работает!).

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1">
   <property name="inputmodes" value="dtmf" />
   <form id="get_mobile_number">
      <field name="mobileno" type="digits?minlength=7;maxlength=13">
         <prompt>
            <prosody rate="slow"> please enter your 7 to 13 digit mobile number !</prosody>
         </prompt>
         <!--INVALID-->
         <nomatch count="1">
            <prompt>
               <prosody rate="slow"> Is that a number? Please try again. </prosody>
            </prompt>
            <reprompt/>
         </nomatch>
         <!--TIMEOUT-->
         <noinput count="1">
            <prompt>Again, please enter your 7 to 13 digit mobile number !</prompt>
            <reprompt/>
         </noinput>
         <catch event="noinput nomatch" count="3">
            <prompt>Please try again later. Good bye.</prompt>
            <exit/>
         </catch>
         <filled>
            <goto next="#call_number"/>
         </filled>
      </field>
   </form>

   <form id="call_number">
      <transfer name="result" destexpr="'tel:+'+ mobileno" bridge="true">
         <prompt>Please wait while we transfer you.</prompt>
         <grammar xml:lang="en-US" root = "TOPLEVEL" mode="voice">
            <rule id="TOPLEVEL" scope="public">
               <one-of>
                  <item> disconnect </item>
               </one-of>
            </rule>
         </grammar>
      </transfer>
      <filled>
         <if cond="result == 'busy'">
            <prompt>Sorry, they're busy.</prompt>
            <elseif cond="result == 'noanswer'" />
            <prompt>Sorry, they didn't answer.</prompt>
            <else />
            <prompt>
               You spoke for <value expr="result$.duration" /> seconds.
            </prompt>
         </if>
         <if cond="result$.inputmode == 'voice'">
            You ended the call by saying,<value expr="result$.utterance" />.
         </if>
      </filled>
   </form>
</vxml>

Кто-нибудь знает, что с ним не так?


person Naty levin    schedule 12.12.2016    source источник


Ответы (1)


На первый взгляд логика кажется правильной.

Чтобы отладить это, я предлагаю запускать только форму call_number (без формы get_mobile_number) и вставлять фактический номер вместо + mobileno в форму 'номер_звонка'. После этого вы узнаете, действительно ли звонок проходит.

Если он по-прежнему не проходит, возможно, вам придется работать с правильным форматом, как того ожидает провайдер (это может быть не ошибка VXML).

Кроме того, вы можете просто проверить журналы IVR и посмотреть, какой номер набирается (и можете ли вы определить какую-либо очевидную ошибку там)

person Anupam    schedule 23.12.2016