Почему text2wav не работает в демо-версии PHPagi
Я просто пытаюсь запустить демо-версию в папке PHPAGI, доступной здесь: https://sourceforge.net/projects/phpagi/files/phpagi/2.20/
Однако text2wav не работает. Когда сценарий должен запустить text2wav (например, в dtmf.php), эта ошибка показывает:
0x7ff7b000bf30 -- Strict RTP switching to RTP target address 192.168.37.36:4010 as source
<SIP/phone1-00000005>AGI Rx << ANSWER
<SIP/phone1-00000005>AGI Tx >> 200 result=0
<SIP/phone1-00000005>AGI Rx << STREAM FILE /var/spool/asterisk//tmp//text2wav_ace75969fc9b3a79aef4da4291ca0646 "" 0
[Jul 6 11:19:20] WARNING[4081][C-00000006]: file.c:824 ast_openstream_full: File /var/spool/asterisk//tmp//text2wav_ace75969fc9b3a79aef4da4291ca0646 does not exist in any format
<SIP/phone1-00000005>AGI Tx >> 200 result=-1 endpos=0
<SIP/phone1-00000005>AGI Rx << STREAM FILE /var/spool/asterisk//tmp//text2wav_2ad655609cb6a3f021452a1bd8fa7b1a "" 0
Я пробовал много вещей: давал разрешение для каждого файла, пытался понять исходный код text2wav (https://phpagi.sourceforge.net/phpagi22/api-docs/__filesource/fsource_phpAGI__phpagi.php.html#a1331), я помещал максимальную многословность в консоли asterisk и активировал отладку agi, но все еще не могу понять, что происходит. дело в том, что файл /var/spool/asterisk//tmp//text2wav_f87b365372c500c76e497087ac7e470a существует в формате txt, но не в wav.
Изменить: Вот код, который не работает:
#!/usr/bin/php -q
<?php
set_time_limit(30);
require('phpagi.php');
error_reporting(E_ALL);
$agi = new AGI();
$agi->answer();
$cid = $agi->parse_callerid();
$agi->text2wav("Hello, {$cid['name']}.");
do
{
$agi->text2wav('Enter some numbers and then press the pound key. Press 1 1 1 followed by the pound key to quit.');
$result = $agi->get_data('beep', 3000, 20);
$keys = $result['result'];
$agi->text2wav("You entered $keys");
} while($keys != '111');
$agi->text2wav('Goodbye');
$agi->hangup();
?>
Мой диалплан:
exten => 42,1,Answer
exten => 42,2,agi(dtmf.php)
exten => 42,3,Hangup
2 ответа
остановить службу звездочки
запустите asterisk из консоли ssh через
звездочка -vvvvgc
проверьте ошибку. Теперь будет на консоли, при запуске службы он будет идти... куда-то. В большинстве случаев в /dev/tt9
Наиболее вероятные случаи
- путь неверный
- У asterisk нет прав доступа к text2wave или папке, в которой будет храниться файл.
- нет text2wave
Ошибка вашего сообщения сообщает вам, что не удается найти путь, который он пытается использовать.
<SIP/phone1-00000005>AGI Rx << ФАЙЛ ПОТОКА /var/spool/asterisk//tmp//text2wav_ace75969fc9b3a79aef4da4291ca0646 "" 0
Asterisk использует путь/var/spool/asterisk
как часть конфигурации, поэтому, когда вы пытаетесь воспроизвести аудио с помощью text2wav, этот путь используется для создания wav и воспроизведения.
Вам нужно иметь путь/var/spool/asterisk/tmp
. Чтобы создать его, выполните в оболочке Linux
mkdir -p /var/spool/asterisk/tmp
Имейте в виду, что вам необходимо изменить разрешение для этого нового каталога, чтобы его можно было использовать в процессе asterisk.
chow -R asterisk:asterisk /var/spool/asterisk/tmp
если процесс звездочки запущен сasterisk
пользователь.
Надеюсь, это поможет вам.