Pesan Suara Visual

Android 6.0 (Marshmallow) menghadirkan implementasi dukungan pesan suara visual (VVM) yang terintegrasi ke dalam Dialer, memungkinkan layanan Carrier VVM yang kompatibel untuk terhubung ke Dialer dengan konfigurasi minimal. Pesan suara visual memungkinkan pengguna dengan mudah memeriksa pesan suara tanpa melakukan panggilan telepon. Pengguna dapat melihat daftar pesan dalam antarmuka seperti kotak masuk, mendengarkannya dalam urutan apa pun, dan dapat menghapusnya sesuai keinginan.

Android 7.0 menambahkan parameter konfigurasi berikut ke pesan suara visual:

  • Pengambilan pesan suara yang dikontrol oleh KEY_VVM_PREFETCH_BOOLEAN
  • Kontrol apakah koneksi data seluler diperlukan oleh KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN
  • Mengambil transkripsi pesan suara
  • Mengambil kuota pesan suara

Artikel ini memberikan gambaran umum tentang apa yang disediakan, bagaimana operator dapat berintegrasi dengannya, dan beberapa detail implementasinya.

Klien pesan suara visual (VVM)

Android 6.0 dan yang lebih baru menyertakan klien OMTP VVM, yang (bila disediakan dengan konfigurasi yang benar) akan terhubung ke server VVM Operator dan mengisi pesan pesan suara visual dalam Dialer Android Open Source Project (AOSP). Klien VVM:

  • Menangani pesan SMS yang digunakan untuk mengaktifkan/menonaktifkan/meminta status layanan dan pesan SMS yang digunakan untuk memberi tahu perangkat tentang peristiwa di kotak surat pelanggan
  • Menyinkronkan kotak surat dengan server IMAP
  • Mengunduh pesan suara saat pengguna memilih untuk mendengarkannya
  • Mengambil transkripsi pesan suara
  • Mengambil detail kuota pesan suara (total ukuran kotak surat dan ukuran yang terisi)
  • Terintegrasi ke Dialer untuk fungsionalitas pengguna seperti menelepon kembali, melihat pesan yang belum dibaca, menghapus pesan, dll.

Integrasikan dengan klien VVM

Penerapan

Operator harus menyediakan server pesan suara visual yang menerapkan spesifikasi OMTP VVM . Implementasi klien AOSP VVM saat ini mendukung fitur inti (baca/hapus pesan suara, unduh/sinkronkan/dengarkan) tetapi fitur TUI tambahan (perubahan kata sandi, salam pesan suara, bahasa) tidak diterapkan. Saat ini, kami hanya mendukung OMTP versi 1.1 dan tidak menggunakan enkripsi untuk otentikasi IMAP.

Untuk mendukung transkripsi, operator harus mendukung format lampiran transkripsi (tipe MIME biasa/teks) yang ditentukan dalam spesifikasi OMTP 1.3, item 2.1.3.

Catatan : Pesan SMS yang berasal dari server ke perangkat (misalnya STATUS atau SYNC) harus berupa pesan SMS data.

Konfigurasi

Agar operator dapat berintegrasi dengan layanan VVM, operator harus memberikan detail konfigurasi ke platform yang dapat digunakan klien OMTP. Parameter ini adalah:

  • Nomor tujuan dan nomor port untuk SMS
  • Nama paket aplikasi pesan suara visual yang disediakan operator (jika ada), sehingga implementasi platform dapat dinonaktifkan jika paket tersebut diinstal

Nilai-nilai ini disediakan melalui Carrier Config API . Fungsionalitas ini, yang diluncurkan di Android 6.0, memungkinkan aplikasi menyediakan konfigurasi terkait telepon secara dinamis ke berbagai komponen platform yang membutuhkannya. Secara khusus, kunci berikut harus memiliki nilai yang ditentukan:

  • KEY_VVM_DESTINATION_NUMBER_STRING
  • KEY_VVM_PORT_NUMBER_INT
  • KEY_VVM_TYPE_STRING
  • KEY_CARRIER_VVM_PACKAGE_NAME_STRING
  • KEY_VVM_PREFETCH_BOOLEAN
  • KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN

Silakan lihat artikel Konfigurasi Operator untuk detail lebih lanjut.

Penerapan

Klien OMTP VVM diimplementasikan dalam packages/services/Telephony , khususnya dalam src/com/android/phone/vvm/

Mempersiapkan

  1. Klien VVM mendengarkan TelephonyIntents#ACTION_SIM_STATE_CHANGED atau CarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED .
  2. Ketika SIM ditambahkan yang memiliki nilai Konfigurasi Operator yang tepat ( KEY_VVM_TYPE_STRING disetel ke TelephonyManager.VVM_TYPE_OMTP atau TelephonyManager.VVM_TYPE_CVVM ), klien VVM mengirimkan SMS ACTIVATE ke nilai yang ditentukan dalam KEY_VVM_DESTINATION_NUMBER_STRING .
  3. Server mengaktifkan layanan pesan suara visual dan mengirimkan kredensial OMTP melalui sms STATUS. Ketika klien VVM menerima sms STATUS, itu mendaftarkan sumber pesan suara dan menampilkan tab pesan suara pada perangkat.
  4. Kredensial OMTP disimpan secara lokal dan perangkat memulai sinkronisasi penuh, seperti yang dijelaskan di bawah ini.

Menyinkronkan

Ada berbagai cara agar klien VVM dapat menyinkronkan dengan server operator dan sebaliknya.

  • Sinkronisasi penuh terjadi pada unduhan awal. Klien VVM mengambil metadata pesan suara seperti tanggal dan waktu; nomor asal; durasi; transkripsi pesan suara, jika tersedia; dan data audio jika KEY_VVM_PREFETCH_BOOLEAN adalah True. Sinkronisasi penuh dapat dipicu oleh:
    • Memasukkan SIM baru
    • Mem-boot ulang perangkat
    • Kembali melayani
    • Menerima siaran VoicemailContract.ACTION_SYNC_VOICEMAIL
  • Sinkronisasi upload terjadi saat pengguna berinteraksi dengan pesan suara untuk membaca atau menghapusnya. Sinkronisasi unggahan mengakibatkan server mengubah datanya agar sesuai dengan data pada perangkat. Misalnya, jika pengguna membaca pesan suara, itu ditandai sebagai telah dibaca di server; jika pengguna menghapus pesan suara, itu akan dihapus di server.
  • Sinkronisasi unduhan terjadi ketika klien VVM menerima sms SYNC "MBU" (pembaruan kotak surat) dari operator. Pesan SYNC berisi metadata untuk pesan baru sehingga dapat disimpan di penyedia konten pesan suara.

Catatan : Nilai kuota kotak masuk pesan suara diambil selama setiap sinkronisasi.

Unduhan pesan suara

Saat pengguna menekan putar untuk mendengarkan pesan suara, file audio yang sesuai akan diunduh. Jika pengguna memilih untuk mendengarkan pesan suara, Dialer dapat menyiarkan VoicemailContract.ACTION_FETCH_VOICEMAIL , yang akan diterima oleh klien pesan suara, memulai pengunduhan konten, dan memperbarui catatan di penyedia konten pesan suara platform.

Menonaktifkan VVM

Layanan VVM dapat dinonaktifkan atau dinonaktifkan oleh interaksi pengguna, penghapusan SIM yang valid, atau penggantian oleh aplikasi VVM operator. Dinonaktifkan berarti perangkat lokal tidak lagi menampilkan pesan suara visual. Dinonaktifkan berarti layanan dimatikan untuk pelanggan. Interaksi pengguna dapat menonaktifkan layanan, penghapusan SIM untuk sementara menonaktifkan layanan karena tidak ada lagi, dan penggantian VVM operator menonaktifkan klien AOSP VVM.

Interaksi pengguna

Pengguna dapat mengaktifkan atau menonaktifkan pesan suara visual secara manual. Jika pengguna menonaktifkan pesan suara visual, mereka juga menonaktifkan layanan mereka. Ketika mereka menonaktifkan pesan suara visual, sms NONAKTIFKAN dikirim, sumber pesan suara tidak terdaftar secara lokal, dan tab pesan suara menghilang. Jika mereka mengaktifkan kembali pesan suara visual, layanan mereka juga diaktifkan kembali.

penghapusan SIM

Jika ada perubahan pada status SIM perangkat ( ACTION_SIM_STATE_CHANGED ) atau nilai Konfigurasi Operator ( ACTION_CARRIER_CONFIG_CHANGED ), dan konfigurasi yang valid untuk SIM yang diberikan tidak ada lagi, maka sumber pesan suara tidak terdaftar secara lokal dan tab pesan suara menghilang. Jika SIM diganti, VVM akan diaktifkan kembali.

Digantikan oleh operator VVM

Aplikasi pesan suara visual operator, jika diinstal pada perangkat, dapat menonaktifkan klien AOSP VVM. Ini dicapai dengan memeriksa apakah paket dengan nama yang cocok dengan parameter KEY_CARRIER_VVM_PACKAGE_NAME_STRING telah diinstal.

Klien VVM masih dapat diaktifkan melalui interaksi pengguna.

Pengujian

Ada serangkaian pengujian CTS yang sudah ada (sejak Android 4.0) untuk API VoicemailProvider yang memungkinkan aplikasi menyisipkan/meminta/menghapus pesan suara ke dalam platform. Ini adalah API yang sama yang digunakan VVM untuk menambah/menghapus pesan suara sehingga aplikasi Dialer dapat menampilkannya di UI.

Untuk menguji aplikasi konfigurasi Anda melewati konfigurasi OMTP dengan benar, Anda dapat menguji kode Anda dengan:

  • SIM yang berisi tanda tangan sertifikat yang valid
  • Perangkat yang menjalankan Android 6.0 dengan versi kerangka kerja telepon AOSP yang tidak dimodifikasi