Pesan suara visual

Android 6.0 (Marshmallow) menghadirkan implementasi dukungan pesan suara visual (VVM) yang terintegrasi ke dalam Telepon, sehingga layanan VVM operator yang kompatibel dapat terhubung ke Telepon dengan konfigurasi minimal. Pesan suara visual memungkinkan pengguna memeriksa pesan suara dengan mudah tanpa melakukan panggilan telepon. Pengguna dapat melihat daftar pesan di 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 sebelumnya yang dikontrol oleh KEY_VVM_PREFETCH_BOOLEAN
  • Kontrol apakah koneksi data seluler diperlukan oleh KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN
  • Pengambilan transkripsi pesan suara
  • Pengambilan kuota pesan suara

Halaman ini memberikan ringkasan tentang apa yang disediakan, cara operator dapat berintegrasi dengannya, dan beberapa detail penerapan.

Klien pesan suara visual (VVM)

Android 6.0 dan yang lebih baru menyertakan klien VVM OMTP, yang (jika diberikan dengan konfigurasi yang benar) terhubung ke server VVM operator dan mengisi pesan VVM dalam Project Open Source Android (AOSP) Dialer. Klien VVM:

  • Menangani pesan SMS yang digunakan untuk mengaktifkan/menonaktifkan/mengkueri status layanan dan pesan SMS yang digunakan untuk memberi tahu perangkat tentang peristiwa di kotak surat pelanggan
  • Menyinkronkan kotak surat dengan server IMAP
  • Mendownload pesan suara saat pengguna memilih untuk mendengarkannya
  • Mengambil transkrip pesan suara
  • Mengambil detail kuota pesan suara (total ukuran kotak surat dan ukuran yang terisi)
  • Berintegrasi ke Telepon untuk fungsi pengguna seperti menelepon balik, melihat pesan yang belum dibaca, menghapus pesan, dll.

Mengintegrasikan dengan klien VVM

Implementasi

Operator harus menyediakan server pesan suara visual yang menerapkan spesifikasi VVM OMTP. Implementasi klien VVM AOSP saat ini mendukung fitur inti (membaca/menghapus pesan suara, mendownload/menyinkronkan/mendengarkan), tetapi fitur TUI tambahan (perubahan sandi, ucapan pesan suara, bahasa) tidak diterapkan. Saat ini, kami hanya mendukung OMTP versi 1.1 dan tidak menggunakan enkripsi untuk autentikasi IMAP.

Untuk mendukung transkripsi, operator harus mendukung format lampiran transkripsi (jenis 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 yang disediakan), sehingga implementasi platform dapat dinonaktifkan jika paket tersebut diinstal

Nilai ini diberikan melalui Carrier Config API. Fungsi ini, yang diluncurkan di Android 6.0, memungkinkan aplikasi menyediakan konfigurasi terkait telefoni 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

Lihat Konfigurasi operator untuk mengetahui detailnya.

Implementasi

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

Penyiapan

  1. Klien VVM memproses TelephonyIntents#ACTION_SIM_STATE_CHANGED atau CarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED.
  2. Saat SIM ditambahkan yang memiliki nilai Konfigurasi Operator yang tepat (KEY_VVM_TYPE_STRING ditetapkan ke TelephonyManager.VVM_TYPE_OMTP atau TelephonyManager.VVM_TYPE_CVVM), klien VVM akan mengirim SMS AKTIFKAN ke nilai yang ditentukan di KEY_VVM_DESTINATION_NUMBER_STRING.
  3. Server mengaktifkan layanan pesan suara visual dan mengirimkan kredensial OMTP melalui STATUS SMA. Saat klien VVM menerima SMS STATUS, klien tersebut akan mendaftarkan sumber pesan suara dan menampilkan tab pesan suara di perangkat.
  4. Kredensial OMTP disimpan secara lokal dan perangkat memulai sinkronisasi penuh, seperti yang dijelaskan di bawah.

Sinkronisasi

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

  • Sinkronisasi penuh terjadi setelah download 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 Benar. Sinkronisasi penuh dapat dipicu oleh:
    • Memasukkan SIM baru
    • Memulai ulang perangkat
    • Kembali beroperasi
    • Menerima siaran VoicemailContract.ACTION_SYNC_VOICEMAIL
  • Sinkronisasi upload terjadi saat pengguna berinteraksi dengan pesan suara untuk membaca atau menghapusnya. Sinkronisasi upload menyebabkan server mengubah datanya agar cocok dengan data di perangkat. Misalnya, jika pengguna membaca pesan suara, pesan tersebut akan ditandai sebagai telah dibaca di server; jika pengguna menghapus pesan suara, pesan tersebut akan dihapus di server.
  • Sinkronisasi download terjadi saat 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.

Download pesan suara

Saat pengguna menekan putar untuk mendengarkan pesan suara, file audio yang sesuai akan didownload. Jika pengguna memilih untuk mendengarkan pesan suara, Telepon dapat menyiarkan VoicemailContract.ACTION_FETCH_VOICEMAIL, yang diterima klien pesan suara, memulai download konten, dan memperbarui data di penyedia konten pesan suara platform.

Menonaktifkan VVM

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

Interaksi pengguna

Pengguna dapat mengaktifkan atau menonaktifkan pesan suara visual secara manual. Jika pengguna menonaktifkan pesan suara visual, mereka juga menonaktifkan layanan mereka. Saat pengguna menonaktifkan pesan suara visual, SMS DEACTIVATE akan dikirim, sumber pesan suara tidak terdaftar secara lokal, dan tab pesan suara akan hilang. Jika mereka mengaktifkan kembali pesan suara visual, layanan mereka juga akan 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 tertentu tidak ada lagi, maka sumber pesan suara tidak terdaftar secara lokal dan tab pesan suara akan hilang. Jika SIM diganti, VVM akan diaktifkan kembali.

Diganti dengan VVM operator

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

Klien VVM masih dapat diaktifkan melalui interaksi pengguna.

Pengujian

Ada serangkaian pengujian CTS yang ada (sejak Android 4.0) untuk VoicemailProvider API yang memungkinkan aplikasi menyisipkan/mengkueri/menghapus pesan suara ke platform. Ini adalah API yang sama dengan yang digunakan VVM untuk menambahkan/menghapus pesan suara sehingga aplikasi Telepon apa pun dapat menampilkannya di UI.

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

  • Kartu SIM yang berisi tanda tangan sertifikat yang valid
  • Perangkat yang menjalankan Android 6.0 dengan framework ponsel AOSP versi yang tidak dimodifikasi