android-Dialogflow API v2集成问题
作者:互联网
我正在android上使用Dialogflow v1,但我想使用V2,因为它提供了更多功能,并且因为V1在2019年10月23日将是deprecated.但是我无法将API V2集成到我的代码中.这是V1代码:
private void initChatbot() {
final AIConfiguration config = new AIConfiguration("Here put Client access token",
AIConfiguration.SupportedLanguages.English,
AIConfiguration.RecognitionEngine.System);
aiDataService = new AIDataService(this, config);
customAIServiceContext = AIServiceContextBuilder.buildFromSessionId(uuid);// helps to create new session whenever app restarts
aiRequest = new AIRequest();
}
这是V2代码:
private void initV2Chatbot() {
try {
InputStream stream = getResources().openRawResource(R.raw.test_agent_credentials);
GoogleCredentials credentials = GoogleCredentials.fromStream(stream);
String projectId = ((ServiceAccountCredentials)credentials).getProjectId();
SessionsSettings.Builder settingsBuilder = SessionsSettings.newBuilder();
SessionsSettings sessionsSettings = settingsBuilder.setCredentialsProvider(FixedCredentialsProvider.create(credentials)).build();
sessionsClient = SessionsClient.create(sessionsSettings);
session = SessionName.of(projectId, uuid);
} catch (Exception e) {
e.printStackTrace();
}
}
当我为V2编写此代码时,出现以下错误:
error: cannot find symbol variable test_agent_credentials
我实际上不知道什么是test_agent_credentials以及为什么要使用它.谁能告诉我应该将console.cloud.google Dialogflowİntegration密钥ID放在哪里?
这是Gradle:
apply plugin: 'com.android.application'
android {
buildToolsVersion "28.0.3"
compileSdkVersion 28
defaultConfig {
applicationId "com.tyagiabhinav.dialogflowchat"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
repositories {
mavenCentral()
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
// Java V2
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/INDEX.LIST'
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.apis:google-api-services-oauth2:v1-rev145-1.25.0'
// Dialogflow SDK dependencies
implementation 'ai.api:sdk:2.0.7@aar'
implementation 'ai.api:libai:1.6.12'
// Java V2
implementation 'com.google.cloud:google-cloud-dialogflow:0.67.0-alpha'
// for Remote Procedure Call to avoid "No functional channel service provider found" error while creating SessionsClient
implementation 'io.grpc:grpc-okhttp:1.15.1'
}
解决方法:
R.raw.test_agent_credentials引用假定位于原始资源文件夹中的test_agent_credentials.json文件.此JSON文件包含您在created the Dialogflow Integration service account时下载的完整凭据文件.
忽略有关使用密钥的部分.它使用gloud命令生成要在auth标头中使用的密钥.您可以通过GoogleCredentials.fromStream()调用来实现.
重要的部分来自第10步,在此之前,您保存JSON密钥文件并将其作为原始资源提供给Android.有关Android资源的信息,请参见this information,尤其是有关原始资源的部分.原始资源应放在子文件夹“ raw”的“ resource”文件夹下.您保存在此处的文件名称应与R.raw之后资源名称的一部分匹配,且不带“ json”扩展名.
标签:dialogflow,android 来源: https://codeday.me/bug/20191108/2007242.html