# Cordova VoIP কল

Pushwoosh `pushwoosh-cordova-plugin` ব্যবহার করে iOS এবং Android এর জন্য VoIP-স্টাইলের কল নোটিফিকেশন সমর্থন করে। এটি ইনকামিং কল UI এবং কল কন্ট্রোল ইভেন্ট সহ নেটিভ VoIP কল কার্যকারিতা সক্ষম করে।

## ১. VoIP সক্রিয় সহ Pushwoosh Cordova প্লাগইন যোগ করুন

VoIP ফ্ল্যাগ সক্রিয় করে প্লাগইনটি ইনস্টল করুন:

```sh
cordova plugin add pushwoosh-cordova-plugin --variable PW_VOIP_IOS_ENABLED=true --variable PW_VOIP_ANDROID_ENABLED=true
```

এটি iOS-এ VoIP কার্যকারিতা সমর্থন করার জন্য প্লাগইনটি কনফিগার করবে।

## ২. PushwooshVoIP CocoaPod নির্ভরতা যোগ করুন

নিশ্চিত করুন যে `PushwooshVoIP` পডটি প্লাগইনের মাধ্যমে স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত হয়েছে। প্রয়োজনে, আপনার `Podfile`-এ ম্যানুয়ালি যাচাই করুন:

```ruby
pod 'PushwooshVoIP'
```

> PushKit-ভিত্তিক VoIP নোটিফিকেশন এবং সিস্টেম-স্তরের কল হ্যান্ডলিং সমর্থন করার জন্য এই পডটি প্রয়োজন।

## ৩. Xcode-এ VoIP ব্যাকগ্রাউন্ড মোড সক্রিয় করুন

Xcode-এ আপনার প্রজেক্ট খুলুন এবং এই পদক্ষেপগুলি অনুসরণ করুন:

1.  **Signing & Capabilities**-এ যান।
2.  **Background Modes** ক্যাপাবিলিটি যোগ করুন।
3.  **Voice over IP** বিকল্পটি চেক করুন।

এটি আপনার অ্যাপকে ব্যাকগ্রাউন্ডে থাকা অবস্থায় ইনকামিং VoIP পুশ গ্রহণ করার অনুমতি দেয়।

## ৪. VoIP অ্যাপ কোড কনফিগার করুন (যদি VoIP এবং সাধারণ পুশ উভয়ই ব্যবহার করেন)

যদি আপনার অ্যাপ স্ট্যান্ডার্ড এবং VoIP পুশ উভয়ই ব্যবহার করে, তবে VoIP ইনিশিয়ালাইজেশনের আগে আপনাকে অবশ্যই স্পষ্টভাবে VoIP অ্যাপ্লিকেশন কোড সেট করতে হবে:

```javascript
pushwoosh.setVoipAppCode("XXXXX-XXXXX");
```

`"XXXXX-XXXXX"`-কে Pushwoosh কন্ট্রোল প্যানেলে আপনার VoIP-সক্ষম অ্যাপ্লিকেশনের জন্য নির্ধারিত Pushwoosh অ্যাপ কোড দিয়ে প্রতিস্থাপন করুন।
<Aside type="caution" title="Important">
- VoIP পুশের জন্য টোকেনগুলি VoIP অ্যাপ কোডের অধীনে নিবন্ধিত হবে, যখন সাধারণ পুশ টোকেনগুলি প্রাথমিক অ্যাপ কোডের অধীনে নিবন্ধিত হবে।

- এই মেথডটি `registerDevice()` মেথড কল করার **আগে** কল করা উচিত।
</Aside> 


## ৫. Android-এ কল পারমিশনের জন্য অনুরোধ করুন

Android-এ, ব্যবহারকারীর কাছ থেকে কল গ্রহণ করার জন্য অনুমতি চাওয়ার প্রয়োজন। এটি করার জন্য, `requestCallPermission()` মেথডটি কল করুন। এটি একটি ডিভাইস রেজিস্টার করার আগে করা উচিত।

```javascript
pushwoosh.requestCallPermission();
```


## ৬. VoIP প্যারামিটার ইনিশিয়ালাইজ করুন

VoIP কার্যকারিতা ইনিশিয়ালাইজ করতে নিম্নলিখিত মেথডটি কল করুন:

```javascript
PushNotification.prototype.initializeVoIPParameters = function(supportsVideo, ringtoneSound, handleTypes, success, error) {
    if (typeof handleTypes === "function") {
        error = ringtoneSound;
        success = supportsVideo;
        handleTypes = undefined;
        ringtoneSound = undefined;
        supportsVideo = undefined;
    }

    exec(success, error, "PushNotification", "initializeVoIPParameters", [
        !!supportsVideo,
        ringtoneSound || "",
        handleTypes != null ? Number(handleTypes) : 1
    ]);
};
```

### প্যারামিটার

- `supportsVideo` – আপনার অ্যাপ ভিডিও কল সমর্থন করে কিনা তার উপর নির্ভর করে `true` বা `false`
- `ringtoneSound` – কাস্টম রিংটোন ফাইলের নাম (যেমন `"incoming.caf"`), অথবা ডিফল্টের জন্য খালি স্ট্রিং
- `handleTypes` – কল হ্যান্ডেল প্রকারের জন্য নিউমেরিক বিটমাস্ক (`1` ফোন নম্বরের জন্য, `2` ইমেলের জন্য, ইত্যাদি)

## ৭. উপলব্ধ VoIP কলব্যাক এবং মেথড

Cordova প্লাগইন নিম্নলিখিত VoIP-সম্পর্কিত মেথড এবং ইভেন্ট সমর্থন করে:

- `answer` – যখন একজন ব্যবহারকারী একটি ইনকামিং কলের উত্তর দেয় তখন কল করা হয়
- `endCall` – যখন একজন ব্যবহারকারী বর্তমান কলটি শেষ করে তখন কল করা হয়
- `hangup` – যখন একটি কল হ্যাং আপ করা হয় তখন কল করা হয়
- `reject` – যখন একটি ইনকামিং কল প্রত্যাখ্যান করা হয় তখন কল করা হয়
- `muted` – মিউট স্ট্যাটাস টগল করুন, শুধুমাত্র iOS
- `held` – হোল্ড স্ট্যাটাস টগল করুন, শুধুমাত্র iOS
- `voipPushPayload` – ইনকামিং VoIP কলের জন্য পুশ পেলোড ফেরত দেয়
- `incomingCallSuccess` – যখন সিস্টেম কল UI সফলভাবে দেখানো হয় তখন কল করা হয়, শুধুমাত্র iOS
- `incomingCallFailure` – যখন সিস্টেম কল UI দেখাতে ব্যর্থ হয় তখন কল করা হয়, শুধুমাত্র iOS
- `speakerOn` – স্পিকার চালু করুন
- `speakerOff` – স্পিকার বন্ধ করুন
- `playDTMF` – একটি কলের সময় DTMF টোন প্লে করুন, শুধুমাত্র iOS

এগুলি Cordova-র `PushNotification` অবজেক্ট ব্যবহার করে হুক করা যেতে পারে, যা আপনাকে VoIP কল অবস্থার পরিবর্তনগুলি নিয়ন্ত্রণ এবং প্রতিক্রিয়া জানাতে দেয়।


## সম্পর্কিত লিঙ্ক

- [Pushwoosh Cordova SDK ওভারভিউ](/bn/developer/pushwoosh-sdk/cross-platform-frameworks/cordova/)
- [iOS-এ VoIP পুশ নোটিফিকেশন (Apple Docs)](https://developer.apple.com/documentation/pushkit)