Почему 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 ответа

  1. остановить службу звездочки

  2. запустите asterisk из консоли ssh через

    звездочка -vvvvgc

  3. проверьте ошибку. Теперь будет на консоли, при запуске службы он будет идти... куда-то. В большинстве случаев в /dev/tt9

Наиболее вероятные случаи

  1. путь неверный
  2. У asterisk нет прав доступа к text2wave или папке, в которой будет храниться файл.
  3. нет 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пользователь.

Надеюсь, это поможет вам.

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