summaryrefslogtreecommitdiff
path: root/java/com/android/voicemail/impl
diff options
context:
space:
mode:
authormdooley <mdooley@google.com>2017-11-16 21:25:00 -0800
committerzachh <zachh@google.com>2017-11-18 07:34:02 +0000
commit22ff338e7383592443da291587442deb5f4e6758 (patch)
tree0cef544e68491f4c067b4e41b1b5d80909363394 /java/com/android/voicemail/impl
parente53711736e4da5ae7f722e54182f1cb51082d45c (diff)
Don't transcribe voicemail unless carrier allows OTT transcription
Added a carrier config and check to see if the carrier allows over the top voicemail transcription, and if not do not attempt transcription. Bug: 68951869 Test: manual and unit test PiperOrigin-RevId: 176065849 Change-Id: I69df1f2867420d7fdcc7f0a31e0e6c26da67abb1
Diffstat (limited to 'java/com/android/voicemail/impl')
-rw-r--r--java/com/android/voicemail/impl/VoicemailClientImpl.java12
-rw-r--r--java/com/android/voicemail/impl/res/xml/vvm_config.xml1
-rw-r--r--java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java9
-rw-r--r--java/com/android/voicemail/impl/transcribe/TranscriptionService.java66
4 files changed, 57 insertions, 31 deletions
diff --git a/java/com/android/voicemail/impl/VoicemailClientImpl.java b/java/com/android/voicemail/impl/VoicemailClientImpl.java
index 2add59ec7..330543837 100644
--- a/java/com/android/voicemail/impl/VoicemailClientImpl.java
+++ b/java/com/android/voicemail/impl/VoicemailClientImpl.java
@@ -22,6 +22,7 @@ import android.provider.VoicemailContract.Status;
import android.provider.VoicemailContract.Voicemails;
import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.support.v4.os.BuildCompat;
import android.telecom.PhoneAccountHandle;
import android.telephony.TelephonyManager;
@@ -285,8 +286,15 @@ public class VoicemailClientImpl implements VoicemailClient {
}
@Override
- public void onTosAccepted(Context context) {
+ public void onTosAccepted(Context context, PhoneAccountHandle account) {
LogUtil.i("VoicemailClientImpl.onTosAccepted", "try backfilling voicemail transcriptions");
- TranscriptionBackfillService.scheduleTask(context);
+ TranscriptionBackfillService.scheduleTask(context, account);
+ }
+
+ @Override
+ @Nullable
+ public String getCarrierConfigString(Context context, PhoneAccountHandle account, String key) {
+ OmtpVvmCarrierConfigHelper helper = new OmtpVvmCarrierConfigHelper(context, account);
+ return helper.isValid() ? helper.getString(key) : null;
}
}
diff --git a/java/com/android/voicemail/impl/res/xml/vvm_config.xml b/java/com/android/voicemail/impl/res/xml/vvm_config.xml
index 1e5190a7c..499bae293 100644
--- a/java/com/android/voicemail/impl/res/xml/vvm_config.xml
+++ b/java/com/android/voicemail/impl/res/xml/vvm_config.xml
@@ -104,6 +104,7 @@
<!-- a bug -->
<item value="AUTH=DIGEST-MD5"/>
</string-array>
+ <string name="vvm_carrier_allows_ott_transcription_string">true</string>
</pbundle_as_map>
<pbundle_as_map>
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java b/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java
index f7f643932..8161e71f7 100644
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java
+++ b/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java
@@ -25,6 +25,7 @@ import android.net.Uri;
import android.support.annotation.WorkerThread;
import android.support.v4.app.JobIntentService;
import android.support.v4.os.BuildCompat;
+import android.telecom.PhoneAccountHandle;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.ThreadUtil;
import com.android.dialer.constants.ScheduledJobIds;
@@ -38,7 +39,7 @@ import java.util.List;
public class TranscriptionBackfillService extends JobIntentService {
/** Schedule a task to scan the database for untranscribed voicemails */
- public static boolean scheduleTask(Context context) {
+ public static boolean scheduleTask(Context context, PhoneAccountHandle account) {
if (BuildCompat.isAtLeastO()) {
LogUtil.enterBlock("TranscriptionBackfillService.transcribeOldVoicemails");
ComponentName componentName = new ComponentName(context, TranscriptionBackfillService.class);
@@ -46,15 +47,17 @@ public class TranscriptionBackfillService extends JobIntentService {
new JobInfo.Builder(ScheduledJobIds.VVM_TRANSCRIPTION_BACKFILL_JOB, componentName)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED);
JobScheduler scheduler = context.getSystemService(JobScheduler.class);
- return scheduler.enqueue(builder.build(), makeWorkItem()) == JobScheduler.RESULT_SUCCESS;
+ return scheduler.enqueue(builder.build(), makeWorkItem(account))
+ == JobScheduler.RESULT_SUCCESS;
} else {
LogUtil.i("TranscriptionBackfillService.transcribeOldVoicemails", "not supported");
return false;
}
}
- private static JobWorkItem makeWorkItem() {
+ private static JobWorkItem makeWorkItem(PhoneAccountHandle account) {
Intent intent = new Intent();
+ intent.putExtra(TranscriptionService.EXTRA_ACCOUNT_HANDLE, account);
return new JobWorkItem(intent);
}
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionService.java b/java/com/android/voicemail/impl/transcribe/TranscriptionService.java
index 79e1a017c..33c9676a4 100644
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionService.java
+++ b/java/com/android/voicemail/impl/transcribe/TranscriptionService.java
@@ -24,10 +24,9 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
+import android.os.Build;
import android.support.annotation.MainThread;
-import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
-import android.support.v4.os.BuildCompat;
import android.telecom.PhoneAccountHandle;
import android.text.TextUtils;
import com.android.dialer.common.Assert;
@@ -35,6 +34,9 @@ import com.android.dialer.common.LogUtil;
import com.android.dialer.constants.ScheduledJobIds;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
+import com.android.voicemail.CarrierConfigKeys;
+import com.android.voicemail.VoicemailClient;
+import com.android.voicemail.VoicemailComponent;
import com.android.voicemail.impl.transcribe.grpc.TranscriptionClientFactory;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -65,34 +67,46 @@ public class TranscriptionService extends JobService {
// donation.
@MainThread
public static boolean scheduleNewVoicemailTranscriptionJob(
- Context context,
- Uri voicemailUri,
- @Nullable PhoneAccountHandle account,
- boolean highPriority) {
+ Context context, Uri voicemailUri, PhoneAccountHandle account, boolean highPriority) {
Assert.isMainThread();
- if (BuildCompat.isAtLeastO()) {
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
LogUtil.i(
- "TranscriptionService.scheduleNewVoicemailTranscriptionJob", "scheduling transcription");
- Logger.get(context).logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_VOICEMAIL_RECEIVED);
-
- ComponentName componentName = new ComponentName(context, TranscriptionService.class);
- JobInfo.Builder builder =
- new JobInfo.Builder(ScheduledJobIds.VVM_TRANSCRIPTION_JOB, componentName);
- if (highPriority) {
- builder
- .setMinimumLatency(0)
- .setOverrideDeadline(0)
- .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
- } else {
- builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED);
- }
- JobScheduler scheduler = context.getSystemService(JobScheduler.class);
- JobWorkItem workItem = makeWorkItem(voicemailUri, account);
- return scheduler.enqueue(builder.build(), workItem) == JobScheduler.RESULT_SUCCESS;
- } else {
- LogUtil.i("TranscriptionService.scheduleNewVoicemailTranscriptionJob", "not supported");
+ "TranscriptionService.scheduleNewVoicemailTranscriptionJob", "not supported by sdk");
return false;
}
+ if (!carrierAllowsOttTranscription(context, account)) {
+ LogUtil.i(
+ "TranscriptionService.scheduleNewVoicemailTranscriptionJob",
+ "carrier doesn't allow transcription");
+ return false;
+ }
+
+ LogUtil.i(
+ "TranscriptionService.scheduleNewVoicemailTranscriptionJob", "scheduling transcription");
+ Logger.get(context).logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_VOICEMAIL_RECEIVED);
+
+ ComponentName componentName = new ComponentName(context, TranscriptionService.class);
+ JobInfo.Builder builder =
+ new JobInfo.Builder(ScheduledJobIds.VVM_TRANSCRIPTION_JOB, componentName);
+ if (highPriority) {
+ builder
+ .setMinimumLatency(0)
+ .setOverrideDeadline(0)
+ .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
+ } else {
+ builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED);
+ }
+ JobScheduler scheduler = context.getSystemService(JobScheduler.class);
+ JobWorkItem workItem = makeWorkItem(voicemailUri, account);
+ return scheduler.enqueue(builder.build(), workItem) == JobScheduler.RESULT_SUCCESS;
+ }
+
+ private static boolean carrierAllowsOttTranscription(
+ Context context, PhoneAccountHandle account) {
+ VoicemailClient client = VoicemailComponent.get(context).getVoicemailClient();
+ return Boolean.parseBoolean(
+ client.getCarrierConfigString(
+ context, account, CarrierConfigKeys.VVM_CARRIER_ALLOWS_OTT_TRANSCRIPTION_STRING));
}
// Cancel all transcription tasks