VoiceXML - как отправить файл записи и текстовый ввод вместе

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

Прямо сейчас я могу записать только приглашение + ключ, но не могу получить текстовую строку ввода "w" в voice.php.

В примере файла voice.xml, если я удалю "тег поля", он будет работать, поскольку он сохранит файл wav на сервере.

Кто-нибудь знает, выполнимо ли совместное использование файла записи и ввода текста? Если это возможно, как я могу изменить файл vxml? и какой тип энктипа следует использовать?

Если это невозможно с Nexmo, есть ли другой поставщик услуг, который может помочь пользователям создавать подобные сценарии?

код voice.xml

<?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1">
    <form id="top">
        <property name="inputmodes" value="dtmf"/>
        <property name="interdigittimeout" value="2s"/>
        <property name="timeout" value="4s"/>
        <record name="message" beep="true" maxtime="60s" dtmfterm="true">
                <field name="w" type="digits?maxlength=6">
                    <prompt bargein="true">
                      Please enter 6 digit number.
                    </prompt>
                </field>
        </record>
        <block>
            <submit next="./voice.php" enctype="multipart/form-data" method="post"/>
        </block>
    </form>
</vxml>    

код voice.php

<?php

if(!isset($_FILES['message'])){
    $mfile = fopen("./log/request.log", "a") or die("unable to open file!");
    fwrite($mfile, date('m/d/Y h:i:s a', time())." POST:".print_r($_POST, true)."\n");
    fwrite($mfile, date('m/d/Y h:i:s a', time())." GET:".print_r($_GET, true)."\n");
    fclose($mfile);
    return;
}

switch($_FILES['message']['error']){
    case UPLOAD_ERR_OK:
        move_uploaded_file($_FILES['message']['tmp_name'], './log/' . $_FILES['message']['name']);
        $mfile = fopen("./log/request.log", "a") or die("unable to open file!");
        fwrite($mfile, date('m/d/Y h:i:s a', time())." POST:".print_r($_POST, true)."\n");
        fwrite($mfile, date('m/d/Y h:i:s a', time())." GET:".print_r($_GET, true)."\n");
        fclose($mfile);
        $prompt = 'Thanks.';
        break;
    default:
        $prompt = 'Sorry, we could not save your message.';
}
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
<vxml version="2.1">
    <form>
        <block>
            <prompt><?php echo $prompt ?></prompt>
        </block>
    </form>
</vxml>

1 ответ

Решение

VoiceXML не допускает одновременного распознавания и записи. Вход будет либо один, либо другой. Вы можете выполнить запись и выполнить некоторый анализ аудио на записи, хотя это может стать грязным (вам нужно будет выполнить анализ фильтров / сигналов вместе с некоторой логикой отладки, чтобы не дать грязному звуку думать, что нажатие одного тона является множественным).

Некоторые платформы позволяют записывать звонки независимо от VoiceXML. Тем не менее, большинство из них для настройки речи и диагностики. Поэтому они не предназначены для доступа во время разговора.

Другие вопросы по тегам