Gambaran Umum Telepon Terbantu

Fitur telefoni yang berharga adalah sekumpulan kecil fungsi yang disebut Telepon Terbantu. Telepon Terbantu dirancang untuk membuat pembentukan panggilan suara dan panggilan media tersedia untuk aplikasi apa pun, bukan hanya yang didedikasikan untuk fungsionalitas telefonik. Dengan kata lain, Telepon Terbantu memungkinkan aplikasi melakukan panggilan telepon tanpa perlu mengetahui detail layanan API Telepon lengkap. Ini memperluas telepon ke aplikasi pemrosesan kata, spreadsheet, database, manajer informasi pribadi, dan aplikasi non-telefoni lainnya.

Untuk daftar fungsi Telepon Terbantu TAPI 2.x dari Telepon Dasar, lihat Referensi Fungsi Cepat TAPI. TAPI 3.x mendukung telefoni yang dibantu melalui antarmuka ITRequest .

Kegunaan Telepon Terbantu dapat diilustrasikan dengan contoh berikut. Aplikasi spreadsheet dapat menggabungkan fungsi yang memanggil nomor telepon untuk panggilan ucapan. Selama aplikasi tidak membutuhkan kontrol panggilan terperinci yang disediakan oleh API Telepon lengkap, Telepon Terbantu adalah cara termampu dan paling efisien untuk memberinya fungsionalitas telefonik.

telepon yang dibantu dengan aplikasi spreadsheet

Telepon Terbantu dan API Telepon lengkap digunakan dan diimplementasikan dengan cara yang berbeda, sehingga tidak disarankan untuk mencampur panggilan fungsi Telefoni Terbantu dan panggilan fungsi API Telepon dalam satu aplikasi.

Menggunakan Telepon Terbantu

Aplikasi yang menggunakan layanan Telepon Terbantu hanya memulai permintaan panggilan yang untuk sementara diantrekan oleh TAPI. Aplikasi penerima permintaan mengambil permintaan ini dan menjalankannya atas nama aplikasi Telepon Terbantu. Fungsi tapiRequestMakeCall meminta pembentukan panggilan suara. Aplikasi yang meminta tidak mengontrol panggilan.

TAPI memungkinkan pengguna untuk membuat aplikasi penerima permintaan yang berbeda atau sama untuk masing-masing layanan ini. Aplikasi menjadi penerima permintaan dengan mendaftar dengan lineRegisterRequestRecipient, di mana TRUE ditentukan sebagai nilai untuk parameter bEnable. (Menentukan FALSE membatalkan pendaftaran aplikasi sebagai penerima permintaan, yang harus dilakukan ketika telah menentukan bahwa tugas penerimanya adalah melalui untuk sesi saat ini.) Aplikasi memilih layanan yang ingin ditanganinya di parameter dwRequestModedari lineRegisterRequestRecipient. Nilai yang mungkin untuk permintaan LINEREQUESTMODE_MAKECALL, untuk menunjukkan bahwa aplikasi akan menangani permintaan tapiRequestMakeCall . Jika beberapa aplikasi mendaftar untuk layanan yang sama, skema prioritas digunakan untuk memungkinkan pengguna memilih aplikasi mana yang lebih disukai untuk menangani permintaan. Skema prioritas ini identik dengan yang digunakan untuk handoff panggilan dan perutean panggilan masuk berdasarkan daftar nama file di HandoffPriorities di registri.

Permintaan Panggilan

Telepon Terbantu menyediakan aplikasi yang mendukung telepon dengan mekanisme yang mudah digunakan untuk melakukan panggilan telepon tanpa mengharuskan pengembang untuk sepenuhnya melek dalam telepon.

Fungsi tapiRequestMakeCall meminta panggilan suara antara pengguna dan pihak jarak jauh yang ditentukan oleh nomor teleponnya. Permintaan dibuat untuk TAPI, yang meneruskannya ke aplikasi yang terdaftar sebagai penerima permintaan tersebut. Penerima ini adalah aplikasi pengelola panggilan.

Setelah aplikasi membuat permintaan, panggilan dikontrol sepenuhnya dari aplikasi manajer panggilan karena aplikasi Telepon Terbantu tidak dapat mengelola panggilan. Karena aspek telepon yang lebih kompleks dan semua operasi antarmuka pengguna ditangani oleh aplikasi manajer panggilan, aplikasi yang mendukung telepon tidak perlu dimodifikasi dengan cara yang substansial. Bahkan, aplikasi yang memungkinkan operasi ini dipanggil dari bahasa skrip bawaannya mungkin tidak perlu dimodifikasi sama sekali.

Fungsi tapiGetLocationInfo kembali ke aplikasi kode negara atau wilayah dan kode kota (area) yang telah ditetapkan pengguna dalam parameter lokasi saat ini di Panel Kontrol Telepon. Aplikasi dapat menggunakan informasi ini untuk membantu pengguna dalam membentuk nomor telepon kanonis yang tepat, seperti dengan menawarkan ini sebagai default ketika nomor baru dimasukkan dalam entri buku telepon atau rekaman database.

Penerima Permintaan

Dua jenis aplikasi diperlukan untuk menjalankan Telepon Terbantu. Klien Telepon Terbantu adalah aplikasi yang menggunakan Telepon Terbantu dengan memanggil fungsi yang memiliki awalan "tapi." Contoh aplikasi klien seperti itu adalah spreadsheet tempat perintah menu Panggilan atau tombol toolbar ditambahkan.

Server Telepon Terbantu adalah aplikasi yang dapat menjalankan fungsi API Telepon yang dihasilkan dari panggilan aplikasi lain ke fungsi awalan "tapi". Untuk membuat dirinya dikenal sebagai server Telepon Terbantu, aplikasi seperti mendaftar sebagai aplikasi menggunakan fungsi lineRegisterRequestRecipient .

Fungsi Telepon Terbantu (yang dimulai dengan awalan "tapi") dikenal sebagai fungsi permintaan. Aplikasi Telepon Terbantu yang memproses permintaan ini—Server telepon terbantu—disebut penerima permintaan.

Memproses Permintaan Telepon Terbantu

Proses yang permintaannya dikirimkan dan dilayankan adalah sebagai berikut:

  1. Ketika TAPI menerima permintaan Telepon Terbantu, ia memeriksa penerima permintaan, yaitu, aplikasi yang saat ini terdaftar untuk memproses jenis permintaan tersebut. Jika ada penerima permintaan, permintaan diantrekan, dan aplikasi prioritas tertinggi yang telah mendaftar untuk layanan permintaan tersebut dikirimi pesan LINE_REQUEST . Pesan memberi tahu penerima permintaan bahwa permintaan baru telah tiba, dan berisi indikasi mode permintaan.

  2. Jika TAPI tidak dapat menemukan aplikasi yang sedang berjalan untuk memproses permintaan seperti itu, ia mencoba meluncurkan aplikasi yang telah terdaftar sebagai mampu melakukannya. Informasi pendaftaran ini dicatat dalam HandoffPriorities dalam registri. TAPI mencoba meluncurkan aplikasi dalam urutan yang tercantum di bagian HandoffPriorities . (Lihat langkah berikut.)

    Jika saat ini tidak ada aplikasi yang terdaftar, TAPI memeriksa daftar aplikasi pemrosesan permintaan pada entri terkait di HandoffPriorities. Jika baris terkait hilang dari file, jika tidak ada aplikasi yang tercantum di dalamnya, atau jika tidak ada aplikasi dalam daftar yang dapat diluncurkan, permintaan ditolak dengan kesalahan TAPIERR_NOREQUESTRECIPIENT.

    Ketika penerima permintaan diluncurkan (apakah telah diluncurkan oleh TAPI atau tidak) itu adalah tugasnya untuk memanggil lineRegisterRequestRecipient selama proses startup dan mendaftarkan dirinya sebagai penerima permintaan.

  3. Jika satu atau beberapa aplikasi tercantum dalam entri, TAPI dimulai dengan aplikasi pertama yang terdaftar (prioritas tertinggi), dan mencoba meluncurkannya menggunakan fungsi CreateProcess . Jika upaya untuk meluncurkan aplikasi gagal, TAPI mencoba meluncurkan aplikasi berikutnya dalam daftar. Ketika aplikasi apa pun berhasil diluncurkan, TAPI hanya mengantrekan permintaan dan mengembalikan indikasi keberhasilan ke aplikasi meskipun permintaan belum disinyalir ke penerima permintaan.

    Setelah aplikasi penerima permintaan diluncurkan, aplikasi memanggil lineRegisterRequestRecipient, yang menyebabkan pesan LINE_REQUEST dikirim, menandakan bahwa permintaan diantrekan. Jika karena alasan tertentu aplikasi yang diluncurkan tidak pernah mendaftar, permintaan tetap mengantre dan tetap dalam antrean tanpa batas waktu sampai aplikasi mendaftar untuk jenis permintaan tersebut.

  4. Jika TAPI menemukan aplikasi terdaftar seperti itu sudah berjalan atau berhasil meluncurkannya, ia mengantre permintaan, mengirim pesan LINE_REQUEST ke aplikasi server, dan mengembalikan indikasi keberhasilan untuk panggilan fungsi ke aplikasi Telepon Terbantu. Pesan keberhasilan ini hanya menyatakan bahwa permintaan telah diterima dan diantrekan, bukan berarti telah berhasil dijalankan.

Ketika aplikasi server siap memproses permintaan, aplikasi ini memanggil fungsi lineGetRequest . Ini memungkinkannya menerima informasi apa pun yang dibutuhkannya, seperti alamat untuk dial. Kemudian memproses permintaan, menggunakan fungsi TAPI (seperti lineMakeCall dan lineDrop) yang jika tidak akan digunakan untuk melakukan panggilan. Memanggil lineGetRequest menghapus permintaan dari TAPI, dan parameter permintaan disalin dalam buffer permintaan yang dialokasikan aplikasi. Ukuran dan interpretasi konten buffer bergantung pada mode permintaan.

Server harus memastikan bahwa server menggunakan parameter yang benar saat menjalankan permintaan. Saat melakukannya, langkah-langkah ini diikuti:

  1. Penerima permintaan terlebih dahulu menerima pesan LINE_REQUEST yang menginformasikan bahwa permintaan dapat ada untuknya dalam antrean permintaan. Ini memberi tahu aplikasi untuk memanggil lineGetRequest dan terus memanggilnya sampai antrean dikosongkan (jika permintaan adalah untuk melakukan panggilan baru), atau untuk menghilangkan panggilan yang ada. Pesan ini tidak berisi parameter untuk permintaan, kecuali dalam kasus permintaan untuk menghilangkan panggilan yang ada.
  2. Jika permintaannya adalah melakukan panggilan baru, server Telepon Terbantu menggunakan fungsi lineGetRequest untuk mengambil permintaan lengkap, yang mencakup parameter permintaan. Server sekarang memiliki semua informasi yang dibutuhkannya, seperti nomor untuk dial atau identifikasi pembuat permintaan. Namun, pertama-tama, server harus mengalokasikan memori yang diperlukan untuk menyimpan informasi ini.
  3. Akhirnya, server menjalankan permintaan dengan memanggil fungsi TAPI atau set fungsi yang sesuai.

Jika TAPI tidak dapat meluncurkan aplikasi yang mampu berfungsi sebagai penerima permintaan, panggilan Telepon Terbantu gagal dan mengembalikan kesalahan TAPIERR_NOREQUESTRECIPIENT.

Catatan tentang Operasi Penerima Permintaan

Informasi berikut menyangkut sistem di mana permintaan Telepon Terbantu diproses:

  • Registri default harus mencantumkan aplikasi manajer panggilan dalam daftar prioritas untuk tapiRequestMakeCall. Ini akan membantu, tetapi tidak penting, agar aplikasi pengelola panggilan memiliki opsi menu yang memungkinkan pengguna untuk mengaturnya ke prioritas tertinggi.
  • Ketika aplikasi penerima Telepon Terbantu diluncurkan secara otomatis oleh TAPI dan jika itu adalah satu-satunya aplikasi TAPI dalam sistem, tindakan ini menginisialisasi TAPI. Jika aplikasi penerima Telepon Terbantu menginisialisasi dan mematikan perangkat baris sebelum mendaftar untuk permintaan Telepon Terbantu, TAPI juga dimatikan, dan permintaan Telepon Terbantu hilang. Permintaan Telepon Terbantu mungkin juga hilang ketika aplikasi TAPI lain yang diluncurkan melakukan inisialisasi dan pematian.