PHP Fatal error: Cannot redeclare issue with Google Dialogflow PHP API
PHP Fatal error: Cannot redeclare issue with Google Dialogflow PHP API
Google Dialogflow 有问题。我不断收到错误消息:
PHP Fatal error: Cannot redeclare Google\Cloud\Samples\Dialogflow\detect_intent_texts() (previously declared in /var/www/fixnode-website/php-docs-samples/dialogflow/src/detect_intent_texts.php:18) in /var/www/fixnode-website/php-docs-samples/dialogflow/src/detect_intent_texts.php on line 74
有人可以提供帮助吗?对于上下文,我使用的是第三方 SMS API,因此我可以构建一个 SMS 聊天机器人。我已经清理了其余代码,但我所做的每项测试都出现了错误。不知道为什么我不能在这里重新声明库。
<?php
// [START dialogflow_detect_intent_text]
use Google\Cloud\Dialogflow\V2\SessionsClient;
use Google\Cloud\Dialogflow\V2\TextInput;
use Google\Cloud\Dialogflow\V2\QueryInput;
require_once '/var/www/fixnode-website/zang-php/connectors/Sms.php';
require_once __DIR__ . '/../vendor/autoload.php';
/**
* Returns the result of detect intent with texts as inputs.
* Using the same `session_id` between requests allows continuation
* of the conversation.
*/
$SMS = $Body = $_POST['Body'];
function detect_intent_texts($projectId, $texts, $sessionId, $languageCode = 'en-US')
{
// new session
$sessionsClient = new SessionsClient();
$session = $sessionsClient->sessionName($projectId, $sessionId ?: uniqid());
printf('Session path: %s' . PHP_EOL, $session);
// query for each string in array
foreach ($texts as $text) {
// create text input
$textInput = new TextInput();
$textInput->setText($text);
$textInput->setLanguageCode($languageCode);
// create query input
$queryInput = new QueryInput();
$queryInput->setText($textInput);
// get response and relevant info
$response = $sessionsClient->detectIntent($session, $queryInput);
$queryResult = $response->getQueryResult();
$queryText = $queryResult->getQueryText();
$intent = $queryResult->getIntent();
$displayName = $intent->getDisplayName();
$confidence = $queryResult->getIntentDetectionConfidence();
$fulfilmentText = $queryResult->getFulfillmentText();
// output relevant info
print(PHP_EOL);
try {
$sms = Sms::getInstance();
$sms -> setOptions(array(
"account_sid" => $_ENV["ACCOUNT_SID"],
"auth_token" => $_ENV["AUTH_TOKEN"],
));
$sentSms = $sms -> sendSms(array(
'From' => '647799XXXX',
'To' => '416830XXXX',
'Body' => $fulfilmentText,
'AllowMultiple' => "True"
));
echo "<pre>";
print_r($sentSms->getResponse());
echo "</pre>";
}
catch (ZangException $e){
echo "<pre>";
print_r( "Exception message: " . $e -> getMessage() . "<br>");
print_r( "Exception code: " . $e -> getCode() . "<br>");
print_r( $e -> getTrace() );
echo "</pre>";
}
}
$sessionClient->close();
}
detect_intent_texts("boxwood-ray-226216", "Hi", "12345678");
?>
错误消息包含有用的信息。
函数 detect_intent_texts
已经在 /var/www/fixnode-website/php-docs-samples/dialogflow/src/detect_intent_texts.php
的 Google\Cloud\Samples\Dialogflow
命名空间中声明
在您的脚本中,您在 Google\Cloud\Samples\Dialogflow
命名空间中重新声明了 detect_intent_texts
。您不应该在像这个这样的销售包中声明的命名空间中声明函数。
你应该 declare a different namespace 在你的脚本中。
如果您的项目未出售,您可以删除命名空间声明。
<?php
// [START dialogflow_detect_intent_text]
require_once __DIR__ . '/../vendor/autoload.php';
require_once '/var/www/fixnode-website/zang-php/connectors/Sms.php';
use Google\Cloud\Dialogflow\V2\SessionsClient;
use Google\Cloud\Dialogflow\V2\TextInput;
use Google\Cloud\Dialogflow\V2\QueryInput;
Google Dialogflow 有问题。我不断收到错误消息:
PHP Fatal error: Cannot redeclare Google\Cloud\Samples\Dialogflow\detect_intent_texts() (previously declared in /var/www/fixnode-website/php-docs-samples/dialogflow/src/detect_intent_texts.php:18) in /var/www/fixnode-website/php-docs-samples/dialogflow/src/detect_intent_texts.php on line 74
有人可以提供帮助吗?对于上下文,我使用的是第三方 SMS API,因此我可以构建一个 SMS 聊天机器人。我已经清理了其余代码,但我所做的每项测试都出现了错误。不知道为什么我不能在这里重新声明库。
<?php
// [START dialogflow_detect_intent_text]
use Google\Cloud\Dialogflow\V2\SessionsClient;
use Google\Cloud\Dialogflow\V2\TextInput;
use Google\Cloud\Dialogflow\V2\QueryInput;
require_once '/var/www/fixnode-website/zang-php/connectors/Sms.php';
require_once __DIR__ . '/../vendor/autoload.php';
/**
* Returns the result of detect intent with texts as inputs.
* Using the same `session_id` between requests allows continuation
* of the conversation.
*/
$SMS = $Body = $_POST['Body'];
function detect_intent_texts($projectId, $texts, $sessionId, $languageCode = 'en-US')
{
// new session
$sessionsClient = new SessionsClient();
$session = $sessionsClient->sessionName($projectId, $sessionId ?: uniqid());
printf('Session path: %s' . PHP_EOL, $session);
// query for each string in array
foreach ($texts as $text) {
// create text input
$textInput = new TextInput();
$textInput->setText($text);
$textInput->setLanguageCode($languageCode);
// create query input
$queryInput = new QueryInput();
$queryInput->setText($textInput);
// get response and relevant info
$response = $sessionsClient->detectIntent($session, $queryInput);
$queryResult = $response->getQueryResult();
$queryText = $queryResult->getQueryText();
$intent = $queryResult->getIntent();
$displayName = $intent->getDisplayName();
$confidence = $queryResult->getIntentDetectionConfidence();
$fulfilmentText = $queryResult->getFulfillmentText();
// output relevant info
print(PHP_EOL);
try {
$sms = Sms::getInstance();
$sms -> setOptions(array(
"account_sid" => $_ENV["ACCOUNT_SID"],
"auth_token" => $_ENV["AUTH_TOKEN"],
));
$sentSms = $sms -> sendSms(array(
'From' => '647799XXXX',
'To' => '416830XXXX',
'Body' => $fulfilmentText,
'AllowMultiple' => "True"
));
echo "<pre>";
print_r($sentSms->getResponse());
echo "</pre>";
}
catch (ZangException $e){
echo "<pre>";
print_r( "Exception message: " . $e -> getMessage() . "<br>");
print_r( "Exception code: " . $e -> getCode() . "<br>");
print_r( $e -> getTrace() );
echo "</pre>";
}
}
$sessionClient->close();
}
detect_intent_texts("boxwood-ray-226216", "Hi", "12345678");
?>
错误消息包含有用的信息。
函数 detect_intent_texts
已经在 /var/www/fixnode-website/php-docs-samples/dialogflow/src/detect_intent_texts.php
Google\Cloud\Samples\Dialogflow
命名空间中声明
在您的脚本中,您在 Google\Cloud\Samples\Dialogflow
命名空间中重新声明了 detect_intent_texts
。您不应该在像这个这样的销售包中声明的命名空间中声明函数。
你应该 declare a different namespace 在你的脚本中。
如果您的项目未出售,您可以删除命名空间声明。
<?php
// [START dialogflow_detect_intent_text]
require_once __DIR__ . '/../vendor/autoload.php';
require_once '/var/www/fixnode-website/zang-php/connectors/Sms.php';
use Google\Cloud\Dialogflow\V2\SessionsClient;
use Google\Cloud\Dialogflow\V2\TextInput;
use Google\Cloud\Dialogflow\V2\QueryInput;