AWS SDK for PHP Ждите задания Transcribe, пока статус не будет "ЗАВЕРШЕН"
Итак, я изучал Обещания и Официантов, и мне было интересно, есть ли способ запустить задание на транскрипцию, обеспечивая обратный вызов, поэтому он будет отмечаться (периодически проверяться сам), пока результат транскрипции не будет COMPLETED
, а затем используйте обратный вызов, чтобы получить json с транскрипциями и записать результат в db. Так что все, что мне нужно сделать, это запустить работу и предоставить обратный вызов, и официант будет периодически блокировать поток и проверять состояние, позволяя мне бросать другие запросы между ними, вместо того, чтобы делать все это с while
петли.
Я попробовал приведенный здесь пример, но он просто использует wait()
метод и блокирует поток в любом случае, пока не получит результат.
Можно ли вообще сделать это с помощью сервиса Transcribe? Небольшой пример кода того, как это сделать, будет очень ценным!
0 ответов
Я получил ответный звонок от 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