php - DialogFlow - 如何通过 API 批量更新意图?
问题描述
我正在寻找一个关于如何利用 DialogFlow 的 batchUpdate 以及如何利用 batchUpdateResponse 在完成后显示实际响应的基本示例。
没有找到DialogFlow V1 或 V2 的示例(此时任何一个都会有帮助),以下是我设法设置的全部内容 - 寻找要添加的缺失参数:
$intentsClient->batchUpdateIntents($formattedParent, $languageCode, $test_3);
目前使用 PHP https://github.com/googleapis/google-cloud-php/tree/83ae284c025f6e93b9ce835b987932c425b5a9de/Dialogflow但这里任何语言都可以。
解决方案
最终通过使用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;
推荐阅读
- c++ - 如何递归复制文件夹和文件而不损失文件修改时间?
- json - 如何使用 $resource 查找 AngularJS 中所有现有 JSON 元素的最高 id
- c# - C# ML.Net 图像分类:GPU 加速是否有助于提高预测性能,我如何判断它是否有效?
- cypher - 有条件地创造关系?
- pandas - 熊猫放弃不变的日子
- mysql - Terraform AWS Aurora Serverless MySQL - 错误:无效的数据库引擎
- javascript - jQuery改变DOM元素
- c++ - 开发人员如何处理具有 Git 无法跟踪的代码依赖项的大型 Git 存储库?
- spring-boot - 在 springboot 应用程序中使用 UnboundID 时,密码策略在 Windows server 2016 AD 中无法完全运行
- python - 在 python 环境中使用 Pascal/Delphi 代码的解决方案