GoogleCloudPlatform / GoogleCloudPlatform/php-docs-samples

DialogFlow - Suggested update to detect_intent_stream.php sample script. Avoiding Exception when using OutputAudioConfig()

Aperta
#911 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
samples type: feature request
Lingua principale
PHP
Stelle
1k
Fork
1k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Hello, Please can I suggest a change?

In this example script:

[https://github.com/GoogleCloudPlatform/php-docs-samples/blob/master/dialogflow/src/detect_intent_stream.php](url)

we have the following extract:

```php

foreach ($stream->closeWriteAndReadAll() as $response) {
$recognitionResult = $response->getRecognitionResult();
if ($recognitionResult) {
$transcript = $recognitionResult->getTranscript();
printf('Intermediate transcript: %s' . PHP_EOL, $transcript);
}
}

// get final response and relevant info
if ($response) {
print(str_repeat("=", 20) . PHP_EOL);
$queryResult = $response->getQueryResult();
$queryText = $queryResult->getQueryText();
$intent = $queryResult->getIntent();
$displayName = $intent->getDisplayName();
$confidence = $queryResult->getIntentDetectionConfidence();
$fulfilmentText = $queryResult->getFulfillmentText();
// output relevant info
printf('Query text: %s' . PHP_EOL, $queryText);
printf('Detected intent: %s (confidence: %f)' . PHP_EOL, $displayName,
$confidence);
print(PHP_EOL);
printf('Fulfilment text: %s' . PHP_EOL, $fulfilmentText);
}

```

Which relies on using ```$response``` that is set from the last iteration of the loop and might not always be available.

Suggestion:

```php

$queryResult = null;
foreach ($stream->closeWriteAndReadAll() as $response) {
$recognitionResult = $response->getRecognitionResult();
if ($recognitionResult) {
$transcript = $recognitionResult->getTranscript();
printf('Intermediate transcript: %s' . PHP_EOL, $transcript);
}

$queryResult = !$queryResult && $response->getQueryResult()
? $response->getQueryResult()
: $queryResult;
}

// get final response and relevant info
if ($queryResult) {
print(str_repeat("=", 20) . PHP_EOL);
$queryText = $queryResult->getQueryText();
$intent = $queryResult->getIntent();
$displayName = $intent->getDisplayName();
$confidence = $queryResult->getIntentDetectionConfidence();
$fulfilmentText = $queryResult->getFulfillmentText();
// output relevant info
printf('Query text: %s' . PHP_EOL, $queryText);
printf('Detected intent: %s (confidence: %f)' . PHP_EOL, $displayName,
$confidence);
print(PHP_EOL);
printf('Fulfilment text: %s' . PHP_EOL, $fulfilmentText);
}

```

In this example setting ```$queryResult``` has been moved into the ```foreach ($stream->closeWriteAndReadAll() as $response)``` loop because ```getQueryResult()``` isn't always available on the final iteration of the loop.

For example when utilising ```OutputAudioConfig()``` it is set on the penultimate iteration. Which would throw an exception in the current example and result in the loss of results.

Related issue:
https://github.com/googleapis/google-cloud-php/issues/2026

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia da dialogflow/src/detect_intent_stream.php e verifica come vengono gestite le risposte di closeWriteAndReadAll(), soprattutto quando viene utilizzato OutputAudioConfig(). Verifica che il risultato della query venga conservato quando compare prima dell’iterazione finale e che l’esempio non generi più un’eccezione né perda il risultato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
php
Ambito
api
Tipo di issue
Bug
Difficoltà
2/5
Tempo stimato
1-3 ore
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
48/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.