DialogFlow-如何通过API批量更新意图?

时间:2018-10-30 05:28:25

标签: php dialogflow

我正在寻找有关如何利用DialogFlow的batchUpdate以及如何利用batchUpdateResponse在完成后显示实际响应的基本示例。

已找到DialogFlow V1或V2的 no 示例(目前,这将是有帮助的),以下是我已设法设置的所有内容-寻找要添加的缺失参数:< / p>

$intentsClient->batchUpdateIntents($formattedParent, $languageCode, $test_3);

当前使用PHP https://github.com/googleapis/google-cloud-php/tree/83ae284c025f6e93b9ce835b987932c425b5a9de/Dialogflow,但此处使用任何语言都可以。

2 个答案:

答案 0 :(得分:1)

最终通过使用https://developers.google.com/apis-explorer/和适用于PHP的Google客户端库(https://github.com/googleapis/google-api-php-client)来解决这个问题。

下面是一个通过PHP一次更新两个意图的文本的基本示例。希望这对将来的人有所帮助,对于普遍缺乏使用DialogFlow的API V2(或什至V1)的有用文档和/或示例感到有些惊讶。通过使用此功能而不是使用仪表板来训练您的机器人,可以完成很多很棒的事情!

// Global variable pointing to the .json file downloaded with private key from DialogFlow
putenv('GOOGLE_APPLICATION_CREDENTIALS=directory-of-file/google-service-acount-key.json');

// Setup Google Client
require __DIR__.'/vendor/autoload.php';
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope('https://www.googleapis.com/auth/cloud-platform');
$httpClient = $client->authorize();

// Setup array to update intent (minified)
$update_intent = array('intentBatchInline'=>array('intents'=>array(
0=>array('name'=>'projects/YOUR-PROJECT-NAME/agent/intents/FIRST-INTENT-ID','displayName'=>'FIRST-INTENT-NAME','messages'=>array(0=>array('text'=>array('text'=>array(0=>'FIRST-INTENT-TEXT-TO-UPDATE',),),),),),
1=>array('name'=>'projects/YOUR-PROJECT-NAME/agent/intents/SECOND-INTENT-ID','displayName'=>'SECOND-INTENT-NAME','messages'=>array(0=>array('text'=>array('text'=>array(0=>'SECOND-INTENT-TEXT-TO-UPDATE',),),),),),),),
);

// Post to DialogFlow API
$response = $httpClient->post('https://dialogflow.googleapis.com/v2/projects/PROJECT-NAME-HERE/agent/intents:batchUpdate', [
    GuzzleHttp\RequestOptions::JSON => $test_batch_intent_1
]);

// Print out response for troubleshooting
print_r($response->getBody()->getContents());
echo "<br /><br />Here's to getting past DialogFlow API's hurdles! :)";
exit;

答案 1 :(得分:0)

这类似于我的回答。在这里我给出了完整的例子。请检查一下。 Stack Overflow answer.

这是基于NodeJ的。正如您所说的,语言无关紧要。 并查看本文档中的各种示例。该文档甚至涵盖了batchUpdate功能。

请检查以下内容:

GitHub repo

GitHub repo