Диалпланы никак с друг другом не связаны, непонятно вообще - инициализируется ли опция DENOISE(rx)=on ?? Тут Вам бы в консоль смотреть, когда вызов идёт. Да и дебаг очень помогает, если его включать.
Ребят, я конечно понимаю что тут на форуме по умолчанию пишут дурачки которые ничего не понимают в диалпланах, но все же прошу не причислять меня к оным.
Диалпланы переключаются во время разговора в нужные моменты.
Конкретно по денойсу - он запускается вначале разговора, если планируется распознавание речи.
теперь конкретно по редиректу - он выполняется следующим образом:
- Код: выделить все
$socket = self::connect();
if (!$socket) {
return FALSE;
}
self::login($socket);
if ($set_vars && is_array($set_vars)) {
foreach ($set_vars as $key => $value) {
$req = "Action: Setvar\r\nChannel: $channel\r\nVariable: $key\r\nValue: $value\r\n\r\n";
fputs($socket, $req);
fflush($socket);
$result = self::read_from_socket($socket, "\r\n\r\n");
if ($result == -1) {
self::log($req, "timeout");
} elseif (self::ASTERISK_DEBUG) {
self::log($req, $result);
}
}
}
$req = "Action: Redirect\r\nChannel: $channel\r\nContext: $context\r\nExten: $exten\r\nPriority: 1\r\n\r\n";
fputs($socket, $req);
fflush($socket);
$result = self::read_from_socket($socket, "\r\n\r\n");
if ($result == -1) {
self::log($req, "timeout");
} elseif (self::ASTERISK_DEBUG) {
self::log($req, $result);
}
self::logout($socket);
return $result;
Отмечу что система работает в продакшене уже более года и ошибки редиректа и прочие возражения подобного исключены.