# Cordova VoIP Calls

Pushwoosh `pushwoosh-cordova-plugin` का उपयोग करके iOS और Android के लिए VoIP-शैली की कॉल सूचनाओं का समर्थन करता है। यह इनकमिंग कॉल UI और कॉल नियंत्रण ईवेंट सहित नेटिव VoIP कॉल कार्यक्षमता को सक्षम करता है।

## 1. 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 कार्यक्षमता का समर्थन करने के लिए प्लगइन को कॉन्फ़िगर करेगा।

## 2. PushwooshVoIP CocoaPod डिपेंडेंसी जोड़ें

सुनिश्चित करें कि `PushwooshVoIP` पॉड प्लगइन के माध्यम से स्वचालित रूप से शामिल है। यदि आवश्यक हो, तो अपनी `Podfile` में मैन्युअल रूप से सत्यापित करें:

```ruby
pod 'PushwooshVoIP'
```

> यह पॉड PushKit-आधारित VoIP सूचनाओं और सिस्टम-स्तरीय कॉल हैंडलिंग का समर्थन करने के लिए आवश्यक है।

## 3. Xcode में VoIP बैकग्राउंड मोड सक्षम करें

Xcode में अपना प्रोजेक्ट खोलें और इन चरणों का पालन करें:

1. **Signing & Capabilities** पर जाएं।
2. **Background Modes** क्षमता जोड़ें।
3. **Voice over IP** विकल्प चुनें।

यह आपके ऐप को बैकग्राउंड में रहते हुए इनकमिंग VoIP पुश प्राप्त करने की अनुमति देता है।

## 4. VoIP ऐप कोड कॉन्फ़िगर करें (यदि VoIP और नियमित पुश दोनों का उपयोग कर रहे हैं)

यदि आपका ऐप मानक और VoIP पुश दोनों का उपयोग करता है, तो आपको VoIP इनिशियलाइज़ेशन से पहले स्पष्ट रूप से VoIP एप्लिकेशन कोड सेट करना होगा:

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

`"XXXXX-XXXXX"` को Pushwoosh कंट्रोल पैनल में आपके VoIP-सक्षम एप्लिकेशन को सौंपे गए Pushwoosh ऐप कोड से बदलें।
<Aside type="caution" title="महत्वपूर्ण">
- VoIP पुश के लिए टोकन VoIP ऐप कोड के तहत पंजीकृत किए जाएंगे, जबकि नियमित पुश टोकन प्राथमिक ऐप कोड के तहत पंजीकृत किए जाएंगे।

- इस विधि को `registerDevice()` विधि को कॉल करने से **पहले** कॉल किया जाना चाहिए।
</Aside> 


## 5. Android पर कॉल अनुमति का अनुरोध करें

Android पर, आपको उपयोगकर्ता से कॉल प्राप्त करने की अनुमति देने का अनुरोध करना होगा। ऐसा करने के लिए, `requestCallPermission()` विधि को कॉल करें। यह एक डिवाइस को पंजीकृत करने से पहले किया जाना चाहिए।

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


## 6. 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` ईमेल के लिए, आदि)

## 7. उपलब्ध 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 अवलोकन](/hi/developer/pushwoosh-sdk/cross-platform-frameworks/cordova/)
- [iOS पर VoIP पुश सूचनाएं (Apple डॉक्स)](https://developer.apple.com/documentation/pushkit)