веб-сервисы amazon — AWS SDK для PHP. Подождите, пока не будет выполнено задание «Переписать», пока статус не будет «ЗАВЕРШЕН».

Итак, я изучал Обещания и Официантов, и мне было интересно, есть ли способ запустить задание на транскрипцию, обеспечивая обратный вызов, поэтому он будет отмечаться (периодически проверяться сам), пока результат транскрипции не будет COMPLETED, а затем используйте обратный вызов, чтобы получить json с транскрипциями и записать результат в db.
Поэтому все, что мне нужно сделать, это запустить работу и предоставить обратный вызов, и официант будет периодически блокировать поток и проверять состояние, позволяя мне перебрасывать другие запросы между ними, вместо того, чтобы делать все это с while петли.

Я попробовал приведенный пример Вот, но он просто использует wait() метод и блокирует поток в любом случае, пока не получит результат.

Можно ли вообще сделать это с помощью сервиса Transcribe?
Небольшой пример кода того, как это сделать, будет очень ценным!

1

Решение

Я получил ответный звонок от AWS Transcribe, выполнив следующие действия:

Я создаю задание на запись с использованием PHP SDK:

use Aws\TranscribeService\TranscribeServiceClient;
...

$transcriber = new TranscribeServiceClient([<config>]);
$job = $transcriber->startTranscriptionJob([<config>, 'TranscriptionJobName' => 'unique-job-name']);

Затем я вхожу в консоль AWS и захожу в AWS Lambda. Внутри Lambda я создал функцию, используя среду выполнения Node.js 8.10:

var https = require('https');

exports.handler = function(event, context) {

var body='';

// the post options
var optionspost = {
host: 'example.com',
path: '/transcriptions/callback',
method: 'POST',
headers: {
'Content-Type': 'application/json',
}
};

var reqPost = https.request(optionspost, function(res) {
res.on('data', function (chunk) {
body += chunk;
});

context.succeed(body);
});

reqPost.write(JSON.stringify(event));
reqPost.end();
};

Это отправляет запрос POST https://<host><path> с event данные как тело

Затем перейдите в AWS Cloudwatch и создайте rule Events->rules, Под Event Source - Service Name Выбрать Transcribe и настройте свои параметры (Event Type -> Transcribe Job State Change, Specific Status -> Completed), Под Targets Выбрать Lambda Function а затем выберите свой function

Это вызовет ваш Lambda Function когда Transcribe Job завершено. Lambda Function сообщения на ваш сервер с подробной информацией о задании транскрибирования, в том числе Job Name: unique-job-name,

В этот момент вы можете вернуться в Cloudwatch а также:

  • выберите свой Rule и нажмите show metrics for this rule,
  • Выбрать Logs чтобы увидеть любую регистрационную информацию от вашего Lambda Function
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector