Я пытаюсь получить ключ звонящего по номерам и записать файл.
Запись файла также будет иметь звуковые сигналы (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>
VoiceXML не допускает одновременного распознавания и записи. Вход будет либо один, либо другой. Вы можете выполнить запись и выполнить некоторый аудиоанализ записи, хотя это может привести к беспорядку (вам нужно будет выполнить анализ фильтров / сигналов вместе с некоторой логикой отладки, чтобы не дать грязному звуку думать, что нажатие одного тона является множественным).
Некоторые платформы позволяют записывать звонки независимо от VoiceXML. Тем не менее, большинство из них для настройки речи и диагностики. Поэтому они не предназначены для доступа во время разговора.
Других решений пока нет …