Как стать автором
Обновить

Комментарии 5

Достаточно часто замечаю, в различных примерах используют объединение типов, таким же образом, как и вы:

public function getAudio() : bool | string;

но сам тип bool используется только для возвращения false.
Если же ваш метод вернет true, то вся логика приложения будет нарушена.
Как минимум мы можете использовать ?string и возвращать null.

Лучше всего в этом месте бросить исключение, а в возвращаевом типе вместо bool | string оставить только string

не всегда, исключение это дополнительные накладные расходы с последующей раскруткой стека.
c PHP8 можно указывать false в пересекающихся типах.
например,
function stringOrFalse(string|false $arg): string|false
{
    return $arg;
}

вполне валидная запись
Вроде всё просто. Конечно мы могли бы отправить скачанное аудио-сообщение сразу в Wit без предварительного сохранения на диск, но аудио-файл скачанный из telegram кодирован в OGG


ну, мы все еще можем отправить его без сохранения, в каком бы формате он ни был.
$witToken = '<witToken>';
$witUri = 'https://api.wit.ai/speech?v=20211109&';

$audioUri = "https://api.telegram.org/file/bot{$this->tg}/{$info["result"]["file_path"]}";

$command = "curl -s '{$audioUri}'"
    . " | ffmpeg -nostdin -y -hide_banner -loglevel warning -i pipe:0 -f ogg pipe:1"
    . " | curl -s -H 'Authorization: Bearer {$witToken}' -H 'Content-Type: audio/ogg' -d @- '{$witUri}'";

$response = shell_exec($command);
$json = json_decode($response, true, 512, JSON_THROW_ON_ERROR);

var_dump($json);
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории