I am using Dialogflow v1 on android but I want to use V2 because it provides more features and because the V1 will be deprecated on October 23, 2019. However I can't integrate API V2 to my codes. Here is the V1 code:
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();
}
Here is the V2 code:
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();
}
}
When I wrote this code for V2 got this error:
error: cannot find symbol variable test_agent_credentials
I actually don't know what is test_agent_credentials and why I should use it. Can anybody tell me where I should put my console.cloud.google Dialogflow İntegration Key Id?
Here is the 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
refers to the test_agent_credentials.json
file that is presumed to be in the raw resource folder. This JSON file contains the full credentials file that you downloaded when you created the Dialogflow Integration service account.
Ignore the section about using the key. It uses the gloud
command to generate the key to use in the auth header. You're doing this with the GoogleCredentials.fromStream()
call.
The important part was from step 10 before where you save the JSON key file and make it available to Android as a raw resource. See this information about Android resources and, in particular, the section about raw resources. Raw resources should be placed under the "resource" folder in a sub-folder called "raw". The name of the file you save there should match the part of the resource name after R.raw
without the "json" extension.