একীভূত কল ইতিহাস

ভিওআইপি অ্যাপ্লিকেশনগুলো তাদের কলগুলোকে সিস্টেম কল লগে একীভূত করতে পারে। এর ফলে ব্যবহারকারীরা সিস্টেম ডায়ালার অ্যাপে কেন্দ্রীয়ভাবে তাদের ভিওআইপি কলের ইতিহাস দেখতে পারেন এবং সরাসরি ডায়ালার অ্যাপ থেকেই কল ফেরত দিতে পারেন। এই নির্দেশিকায় ভিওআইপি কলিং অ্যাপ এবং সিস্টেম ডায়ালার অ্যাপে প্রয়োজনীয় পরিবর্তনগুলো বর্ণনা করা হয়েছে।

কলিং অ্যাপের জন্য পরিবর্তন

আপনার ভিওআইপি অ্যাপকে সিস্টেম কল লগের সাথে সংযুক্ত করতে, এই ধাপগুলো অনুসরণ করুন।

কলব্যাক ইন্টেন্ট ফিল্টার নিবন্ধন করুন

সিস্টেম-সুরক্ষিত ইন্টেন্ট TelecomManager.ACTION_CALL_BACK নিবন্ধন করুন।

এই ইন্টেন্ট ফিল্টারটি একবার সঠিকভাবে রেজিস্টার করা হয়ে গেলে, আপনার অ্যাপ CallsManager.addCall বা অন্যান্য সম্পর্কিত টেলিকম এপিআই ব্যবহার করে যে কোনো কল যোগ করলে, তা সিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে লগ করা হবে। পরবর্তীতে যখন কোনো ব্যবহারকারী কলটি ফেরত দেওয়ার জন্য ডায়ালারে একটি ভিওআইপি কল লগ এন্ট্রি নির্বাচন করেন, তখন সিস্টেম এই রেজিস্টার করা ইন্টেন্টটি ব্যবহার করে আপনার অ্যাপে একটি কলব্যাক পাঠায়।

<!-- Activity to handle the callback intent from the system dialer -->
<activity
    android:name=".VoipCallActivity"
    android:exported="true">

    <!-- Register callback intent -->
    <intent-filter>
        <action android:name="android.telecom.action.CALL_BACK" />
    </intent-filter>
</activity>

কল লগিং বাদ দিন

কলব্যাকটি নিবন্ধিত হয়ে গেলে, সমস্ত কল সিস্টেম ডায়লারে লগ করা হয়। প্রতিটি কলের জন্য আলাদাভাবে কল বাদ দিতে, CallAttributesCompat মধ্যে isLogExcluded বুলিয়ানটিকে true তে সেট করুন।

CallAttributesCompat(
    displayName = displayName,
    address = address,
    isLogExcluded = excludeCallLogging, // to exclude call from logging
    direction = if (isIncoming) {
        CallAttributesCompat.DIRECTION_INCOMING
    } else {
        CallAttributesCompat.DIRECTION_OUTGOING
    },
    callType = CallAttributesCompat.CALL_TYPE_AUDIO_CALL,
    callCapabilities = (
        CallAttributesCompat.SUPPORTS_SET_INACTIVE
            or CallAttributesCompat.SUPPORTS_STREAM
            or CallAttributesCompat.SUPPORTS_TRANSFER
        ),
)

কলব্যাকগুলি পরিচালনা করুন

CallsManager.addCall এর মাধ্যমে যোগ করা কলগুলো CallControlScope.getCallId এর মাধ্যমে একটি অনন্য UUID পায়।

// check the intent action for CALL_BACK
if (intent.action == TelecomManager.ACTION_CALL_BACK) {
    launchCall(
        // fetching stored call details for the UUID to initiate callback
        callDetails = getCallDetails(
            uuid = intent.getStringExtra(TelecomManager.EXTRA_UUID)
        )
    )
}

কল লগ এন্ট্রিগুলি যাচাই করুন

সিস্টেম কল লগ একটি নির্দিষ্ট সংখ্যক এন্ট্রি সংরক্ষণ করে এবং অবশেষে পুরানো কল রেকর্ডগুলি মুছে ফেলে। যেহেতু অ্যাপটি কলব্যাক হ্যান্ডলিংয়ের জন্য কলের বিবরণের সাথে UUID গুলির একটি ম্যাপিং সংরক্ষণ করে, তাই এটির পর্যায়ক্রমে পরীক্ষা করা উচিত যে কোন UUID গুলি এখনও সিস্টেম কল লগে উপস্থিত আছে। যদি কোনো UUID আর সিস্টেম লগে না থাকে, তবে ব্যবহারকারী সেই কলের জন্য কোনো কলব্যাক শুরু করতে পারবেন না এবং অ্যাপটি নিরাপদে তার স্থানীয় স্টোরেজ থেকে ম্যাপিংটি মুছে ফেলতে পারে। এই অভ্যাসটি স্টোরেজ অপ্টিমাইজ করতে সাহায্য করে।

সিস্টেম লগের মধ্যে অ্যাপটির সাথে সম্পর্কিত UUID গুলির বর্তমান তালিকা পেতে, CallLog.Calls.CONTENT_VOIP_URI ব্যবহার করুন।

ডায়ালার অ্যাপের জন্য পরিবর্তন

ডায়ালার অ্যাপে VoIP কল লগ প্রদর্শন এবং VoIP অ্যাপে কলব্যাক শুরু করার সুবিধা চালু করতে এই ধাপগুলো অনুসরণ করুন।

ডায়ালার অ্যাপে ভিওআইপি কল লগ প্রদর্শন করুন

ডিফল্টরূপে, ভিওআইপি (VoIP) অ্যাপের কল লগগুলো ডায়ালার অ্যাপে দেখা যায় না। ডায়ালার অ্যাপে ইন্টিগ্রেটেড কল লগগুলো প্রদর্শন করতে, নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করুন:

  • Android 16.1 (API লেভেল 36.1)-এ, VoIP কল লগ প্রদর্শন করতে CallLog.Calls কন্টেন্ট প্রোভাইডারের সাথে include_voip_calls কোয়েরি প্যারামিটারটি যুক্ত করুন:

    CallLog.Calls.CONTENT_URI.buildUpon()
        .appendQueryParameter("include_voip_calls", "true")
        .build()

  • অ্যান্ড্রয়েড ১৭ (এপিআই লেভেল ৩৭) এবং এর পরবর্তী সংস্করণগুলোতে, নিম্নলিখিত নির্ধারিত কন্টেন্ট প্রোভাইডার এবং প্যারামিটার কী ব্যবহার করুন:

ডায়ালার অ্যাপ থেকে কলব্যাক শুরু করুন

ডায়ালার থেকে একটি কলব্যাক শুরু করতে, TelecomManager.placeCall ব্যবহার করুন। প্ল্যাটফর্মটি সঠিক VoIP অ্যাপটি চালু করার জন্য কল লগ এন্ট্রির অনন্য CallLog.Calls._ID ব্যবহার করে। এই লঞ্চের মধ্যে একটি TelecomManager.ACTION_CALL_BACK ইন্টেন্ট অন্তর্ভুক্ত থাকে, যা একটি ফিরতি কল শুরু করার জন্য একটি সিস্টেম-সংজ্ঞায়িত অ্যাকশন। এই ইন্টেন্টটিতে ইন্টেন্ট এক্সট্রা TelecomManager.EXTRA_UUID এর মধ্যে কলটির UUID থাকে, যা VoIP অ্যাপটিকে শনাক্ত করতে সাহায্য করে যে কোন নির্দিষ্ট কলে কলব্যাক করা হচ্ছে।

// Uri generated with unique ID of the call log entry to launch the respective VoIP app for callback
val address = ContentUris.withAppendedId(CallLog.Calls.CONTENT_URI, callId)

// extra information required to initiate callback
val extras = Bundle()

telecomManager.placeCall(address, extras)