Asterisk agi и mysql string variabile

Не могу решить проблему, цель скрипта - определить номер контекста.

Ниже показан план набора в виде звездочки extension.conf

exten => 1234,1,Answer()
same => n,Set(NUM2CALL=Hello, your number is eight)
same => n,NOOP(${NUM2CALL})
same => n,AGI(test.php,${NUM2CALL})

Файл, в котором запущен test.php

#!/usr/bin/php -q
<?php
require '/var/lib/asterisk/agi-bin/phpagi/phpagi.php';
$agi = new AGI();

//DB connect
$mysqli = new mysqli('127.0.0.1', 'root', 'testdatabase', 'asterisk');

if (mysqli_connect_errno())
{
    printf("Connect failed: %s\n", mysqli_connect_error());

    exit();
}
//End

$query  = "SELECT text, number FROM recognation_2";
$result = $mysqli->query($query);

while ($row = $result->fetch_object())
{
    if(strpos($argv[1], $row->text) !== FALSE)
    {
        echo $row->number;
    }
}


?>

<SIP / 100-000030c4> AGI Tx >> 510 Неверная или неизвестная команда [31 октября 11:35:49] ОШИБКА [20679]: utils.c: 1164 ast_carefulwrite: write () вернула ошибку: сломанный канал - <SIP / 100-000030c4> AGI Script test.php завершен, возвращается 0

Andrei 31.10.2018 11:50

для этого вам не нужен класс agi. удалите их и попробуйте выполнить отладку на консоли, например "php myfile.php", это дает некоторые подсказки для решения этой проблемы.

Ycaner 31.10.2018 14:26
1
2
862
1

Ответы 1

Ты издеваешься? Почему бы просто не спросить дб одной строчкой?

$query  = "SELECT text, number FROM recognation_2 where text = "+mysqli_real_escape_string($mysqli,$argv[1]);

Лучший вариант для этой задачи - просто использовать func_odbc, без каких-либо php или agi.

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