omikit-plugin 3.0.3 → 3.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +2 -2
- package/android/src/main/java/com/omikitplugin/OmikitPluginModule.kt +21 -19
- package/ios/CallProcess/CallManager.swift +8 -7
- package/ios/CallProcess/OmiUtils.swift +53 -0
- package/ios/Model/OmiCallModel.swift +66 -0
- package/ios/Model/StartCalModel.swift +17 -0
- package/package.json +1 -1
package/android/build.gradle
CHANGED
|
@@ -107,7 +107,7 @@ dependencies {
|
|
|
107
107
|
implementation "com.facebook.react:react-native:+" // From node_modules
|
|
108
108
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
109
109
|
// implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version")
|
|
110
|
-
api 'vn.vihat.omicall:omi-sdk:2.0.
|
|
110
|
+
api 'vn.vihat.omicall:omi-sdk:2.0.23'
|
|
111
111
|
// implementation fileTree(include: ['*.jar'], dir: 'libs')
|
|
112
112
|
// implementation files('OmiSDK.aar')
|
|
113
113
|
implementation "com.google.android.flexbox:flexbox:3.0.0"
|
|
@@ -119,7 +119,7 @@ dependencies {
|
|
|
119
119
|
exclude module: 'okhttp'
|
|
120
120
|
}
|
|
121
121
|
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
|
|
122
|
-
implementation "com.squareup.okhttp3:okhttp:4.9.1"
|
|
122
|
+
implementation "com.squareup.okhttp3:okhttp:4.9.1"
|
|
123
123
|
implementation "com.squareup.okhttp3:okhttp-urlconnection:4.9.1"
|
|
124
124
|
implementation "com.squareup.okhttp3:logging-interceptor:4.9.1"
|
|
125
125
|
implementation "com.google.code.gson:gson:2.8.9"
|
|
@@ -45,6 +45,7 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
|
|
|
45
45
|
|
|
46
46
|
override fun incomingReceived(callerId: Int?, phoneNumber: String?, isVideo: Boolean?) {
|
|
47
47
|
isIncomming = true;
|
|
48
|
+
Log.d("OMISDK", "=>> START IN COMMING CALL REVICED => ")
|
|
48
49
|
val map: WritableMap = WritableNativeMap()
|
|
49
50
|
map.putBoolean("isVideo", isVideo ?: true)
|
|
50
51
|
map.putBoolean("incoming", isIncomming)
|
|
@@ -63,6 +64,7 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
|
|
|
63
64
|
transactionId: String?,
|
|
64
65
|
) {
|
|
65
66
|
isAnserCall = true
|
|
67
|
+
Log.d("OMISDK", "=>> ON CALL ESTABLISHED => ")
|
|
66
68
|
Handler(Looper.getMainLooper()).postDelayed({
|
|
67
69
|
Log.d("OmikitReactNative", "onCallEstablished")
|
|
68
70
|
val map: WritableMap = WritableNativeMap()
|
|
@@ -72,10 +74,11 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
|
|
|
72
74
|
map.putString("transactionId", transactionId)
|
|
73
75
|
map.putInt("status", CallState.confirmed.value)
|
|
74
76
|
sendEvent(CALL_STATE_CHANGED, map)
|
|
75
|
-
},
|
|
77
|
+
}, 200)
|
|
76
78
|
}
|
|
77
79
|
|
|
78
80
|
override fun onCallEnd(callInfo: MutableMap<String, Any?>, statusCode: Int) {
|
|
81
|
+
Log.d("OMISDK", "=>> ON CALL END => ")
|
|
79
82
|
val call = callInfo as Map<*, *>
|
|
80
83
|
val map: WritableMap = WritableNativeMap()
|
|
81
84
|
val timeStartToAnswer = call["time_start_to_answer"] as Long?
|
|
@@ -93,6 +96,7 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
|
|
|
93
96
|
}
|
|
94
97
|
|
|
95
98
|
override fun onConnecting() {
|
|
99
|
+
Log.d("OMISDK", "=>> ON CONNECTING CALL => ")
|
|
96
100
|
val map: WritableMap = WritableNativeMap()
|
|
97
101
|
map.putString("callerNumber", "")
|
|
98
102
|
map.putBoolean("isVideo", NotificationService.isVideo)
|
|
@@ -108,6 +112,7 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
|
|
|
108
112
|
val map: WritableMap = WritableNativeMap()
|
|
109
113
|
|
|
110
114
|
if(callDirection == "inbound") {
|
|
115
|
+
Log.d("OMISDK", "=>> ON IN COMMING CALL => ")
|
|
111
116
|
map.putString("callerNumber", OmiClient.prePhoneNumber)
|
|
112
117
|
map.putBoolean("isVideo", NotificationService.isVideo)
|
|
113
118
|
map.putBoolean("incoming", true)
|
|
@@ -119,6 +124,7 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
|
|
|
119
124
|
map.putString("transactionId", transactionId ?: "")
|
|
120
125
|
map.putInt("status", CallState.early.value)
|
|
121
126
|
map.putBoolean("incoming", false)
|
|
127
|
+
Log.d("OMISDK", "=>> ON RINGING CALL => ")
|
|
122
128
|
}
|
|
123
129
|
sendEvent(CALL_STATE_CHANGED, map)
|
|
124
130
|
}
|
|
@@ -149,6 +155,7 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
|
|
|
149
155
|
}
|
|
150
156
|
|
|
151
157
|
override fun onOutgoingStarted(callerId: Int, phoneNumber: String?, isVideo: Boolean?) {
|
|
158
|
+
Log.d("OMISDK", "=>> ON OUT GOING STARTED CALL => ")
|
|
152
159
|
val map: WritableMap = WritableNativeMap()
|
|
153
160
|
map.putString("callerNumber", "")
|
|
154
161
|
map.putBoolean("isVideo", NotificationService.isVideo)
|
|
@@ -369,13 +376,14 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
|
|
|
369
376
|
// map.putString("status", startCallResult)
|
|
370
377
|
map.putString("_id", "")
|
|
371
378
|
// map.putString("message", startCallResult as String)
|
|
372
|
-
|
|
379
|
+
Log.d("OMISDK", "=>> ON START CALL => $map")
|
|
373
380
|
promise.resolve(true)
|
|
374
381
|
}
|
|
375
382
|
} else {
|
|
376
383
|
map.putString("status","4")
|
|
377
384
|
map.putString("_id", "")
|
|
378
385
|
map.putString("message", messageCall(4) as String)
|
|
386
|
+
Log.d("OMISDK", "=>> ON START CALL FAIL BECAUSE NEED PERMISSION => $map")
|
|
379
387
|
promise.resolve(false)
|
|
380
388
|
}
|
|
381
389
|
}
|
|
@@ -409,28 +417,22 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
|
|
|
409
417
|
@ReactMethod
|
|
410
418
|
fun joinCall(promise: Promise) {
|
|
411
419
|
currentActivity?.runOnUiThread {
|
|
412
|
-
|
|
413
|
-
|
|
420
|
+
if(reactApplicationContext != null) {
|
|
421
|
+
OmiClient.getInstance(reactApplicationContext!!).pickUp()
|
|
422
|
+
promise.resolve(true)
|
|
423
|
+
}
|
|
414
424
|
}
|
|
415
425
|
}
|
|
416
426
|
|
|
417
427
|
@ReactMethod
|
|
418
428
|
fun endCall(promise: Promise) {
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
map.putString("source_number", call["source_number"] as String)
|
|
427
|
-
map.putString("destination_number", call["destination_number"] as String)
|
|
428
|
-
map.putDouble("time_start_to_answer", (timeStartToAnswer ?: 0).toDouble())
|
|
429
|
-
map.putDouble("time_end", timeEnd.toDouble())
|
|
430
|
-
map.putString("sip_user", call["sip_user"] as String)
|
|
431
|
-
map.putString("disposition", call["disposition"] as String)
|
|
432
|
-
promise.resolve(map)
|
|
433
|
-
}
|
|
429
|
+
if(isIncomming && !isAnserCall){
|
|
430
|
+
OmiClient.getInstance(reactApplicationContext!!).decline()
|
|
431
|
+
} else {
|
|
432
|
+
OmiClient.getInstance(reactApplicationContext!!).hangUp()
|
|
433
|
+
}
|
|
434
|
+
promise.resolve(true)
|
|
435
|
+
|
|
434
436
|
}
|
|
435
437
|
|
|
436
438
|
@ReactMethod
|
|
@@ -21,7 +21,7 @@ class CallManager {
|
|
|
21
21
|
private var guestPhone : String = ""
|
|
22
22
|
private var lastStatusCall : String?
|
|
23
23
|
private var tempCallInfo : [String: Any]?
|
|
24
|
-
|
|
24
|
+
private var lastTimeCall : Date = Date()
|
|
25
25
|
/// Get instance
|
|
26
26
|
static func shareInstance() -> CallManager {
|
|
27
27
|
if (instance == nil) {
|
|
@@ -79,7 +79,7 @@ class CallManager {
|
|
|
79
79
|
|
|
80
80
|
func initWithUserPasswordEndpoint(params: [String: Any]) -> Bool {
|
|
81
81
|
if let userName = params["userName"] as? String, let password = params["password"] as? String, let realm = params["realm"] as? String {
|
|
82
|
-
OmiClient.initWithUsername(userName, password: password, realm: realm)
|
|
82
|
+
OmiClient.initWithUsername(userName, password: password, realm: realm, proxy: "")
|
|
83
83
|
}
|
|
84
84
|
let isVideo = (params["isVideo"] as? Bool) ?? true
|
|
85
85
|
requestPermission(isVideo: isVideo)
|
|
@@ -309,7 +309,7 @@ class CallManager {
|
|
|
309
309
|
}
|
|
310
310
|
|
|
311
311
|
if (callState != OMICallState.disconnected.rawValue) {
|
|
312
|
-
|
|
312
|
+
OmikitPlugin.instance?.sendEvent(withName: CALL_STATE_CHANGED, body: dataToSend)
|
|
313
313
|
}
|
|
314
314
|
|
|
315
315
|
switch (callState) {
|
|
@@ -319,7 +319,7 @@ class CallManager {
|
|
|
319
319
|
}
|
|
320
320
|
isSpeaker = call.isVideo
|
|
321
321
|
lastStatusCall = "answered"
|
|
322
|
-
|
|
322
|
+
OmikitPlugin.instance.sendMuteStatus()
|
|
323
323
|
break
|
|
324
324
|
case OMICallState.incoming.rawValue:
|
|
325
325
|
guestPhone = call.callerNumber ?? ""
|
|
@@ -332,10 +332,10 @@ class CallManager {
|
|
|
332
332
|
lastStatusCall = nil
|
|
333
333
|
guestPhone = ""
|
|
334
334
|
var combinedDictionary: [String: Any] = dataToSend
|
|
335
|
-
if (tempCallInfo
|
|
336
|
-
combinedDictionary.merge(tempCallInfo, uniquingKeysWith: { (_, new) in new })
|
|
335
|
+
if (tempCallInfo != nil && tempCallInfo?.count ?? 0 > 0) {
|
|
336
|
+
combinedDictionary.merge(tempCallInfo ?? [:], uniquingKeysWith: { (_, new) in new })
|
|
337
337
|
}
|
|
338
|
-
|
|
338
|
+
OmikitPlugin.instance?.sendEvent(withName: CALL_STATE_CHANGED, body: combinedDictionary )
|
|
339
339
|
lastTimeCall = Date()
|
|
340
340
|
tempCallInfo = [:]
|
|
341
341
|
break
|
|
@@ -367,6 +367,7 @@ class CallManager {
|
|
|
367
367
|
|
|
368
368
|
/// Start call
|
|
369
369
|
func startCall(_ phoneNumber: String, isVideo: Bool, completion: @escaping (_ : Int) -> Void) {
|
|
370
|
+
let secondsSinceCurrentTime = lastTimeCall.timeIntervalSinceNow
|
|
370
371
|
guestPhone = phoneNumber
|
|
371
372
|
OmiClient.startCall(phoneNumber, isVideo: isVideo) { status in
|
|
372
373
|
DispatchQueue.main.async {
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import AVFoundation
|
|
3
|
+
import SwiftUI
|
|
4
|
+
import OmiKit
|
|
5
|
+
|
|
6
|
+
public class OmiUtils {
|
|
7
|
+
|
|
8
|
+
static private var instance: OmiUtils? = nil // Instance
|
|
9
|
+
|
|
10
|
+
static func shareInstance() -> OmiUtils {
|
|
11
|
+
if (instance == nil) {
|
|
12
|
+
instance = OmiUtils()
|
|
13
|
+
}
|
|
14
|
+
return instance!
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
func convertDictionaryToJson(dictionary: [String: Any]) -> String? {
|
|
18
|
+
do {
|
|
19
|
+
let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: [])
|
|
20
|
+
if let jsonString = String(data: jsonData, encoding: .utf8) {
|
|
21
|
+
return jsonString
|
|
22
|
+
}
|
|
23
|
+
} catch {
|
|
24
|
+
print("Error converting dictionary to JSON: \(error)")
|
|
25
|
+
}
|
|
26
|
+
return nil
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
func messageCall(type: Int) -> String {
|
|
30
|
+
switch(type){
|
|
31
|
+
case 0:
|
|
32
|
+
return "INVALID_UUID"
|
|
33
|
+
case 1:
|
|
34
|
+
return "INVALID_PHONE_NUMBER"
|
|
35
|
+
case 2:
|
|
36
|
+
return "SAME_PHONE_NUMBER_WITH_PHONE_REGISTER"
|
|
37
|
+
case 3:
|
|
38
|
+
return "MAX_RETRY"
|
|
39
|
+
case 4:
|
|
40
|
+
return "PERMISSION_DENIED"
|
|
41
|
+
case 5:
|
|
42
|
+
return "COULD_NOT_FIND_END_POINT"
|
|
43
|
+
case 6:
|
|
44
|
+
return "REGISTER_ACCOUNT_FAIL"
|
|
45
|
+
case 7:
|
|
46
|
+
return "START_CALL_FAIL"
|
|
47
|
+
case 9:
|
|
48
|
+
return "HAVE_ANOTHER_CALL"
|
|
49
|
+
default:
|
|
50
|
+
return "START_CALL_SUCCESS"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import OmiKit
|
|
3
|
+
|
|
4
|
+
struct OmiCallModel: Hashable {
|
|
5
|
+
var callId: Int
|
|
6
|
+
var incoming: Bool = false
|
|
7
|
+
var callState: Int = 0
|
|
8
|
+
var callerNumber: String
|
|
9
|
+
var isVideo: Bool = false
|
|
10
|
+
var omiId: String
|
|
11
|
+
var uuid: String
|
|
12
|
+
var callerName: String
|
|
13
|
+
var muted: Bool = false
|
|
14
|
+
var speaker: Bool = false
|
|
15
|
+
var onHold: Bool = false
|
|
16
|
+
var numberToCall: String
|
|
17
|
+
var connected: Bool
|
|
18
|
+
var totalMBsUsed: Double = 0.0
|
|
19
|
+
var mos: Double = 0.0
|
|
20
|
+
var latency: Double = 0.0
|
|
21
|
+
var jitter: Double = 0.0
|
|
22
|
+
var ppl: Double = 0.0
|
|
23
|
+
|
|
24
|
+
init(omiCall: OmiCallModel){
|
|
25
|
+
self.callId = omiCall.callId
|
|
26
|
+
self.incoming = omiCall.incoming
|
|
27
|
+
self.callState = omiCall.callState
|
|
28
|
+
self.callerNumber = omiCall.callerNumber
|
|
29
|
+
self.isVideo = omiCall.isVideo
|
|
30
|
+
self.omiId = omiCall.omiId
|
|
31
|
+
self.uuid = omiCall.uuid
|
|
32
|
+
self.callerName = omiCall.callerName
|
|
33
|
+
self.muted = omiCall.muted
|
|
34
|
+
self.speaker = omiCall.speaker
|
|
35
|
+
self.onHold = omiCall.onHold
|
|
36
|
+
self.numberToCall = omiCall.numberToCall
|
|
37
|
+
self.connected = omiCall.connected
|
|
38
|
+
self.totalMBsUsed = omiCall.totalMBsUsed
|
|
39
|
+
self.mos = omiCall.mos
|
|
40
|
+
self.latency = omiCall.latency
|
|
41
|
+
self.jitter = omiCall.jitter
|
|
42
|
+
self.ppl = omiCall.ppl
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
init(omiCall: OMICall){
|
|
46
|
+
self.callId = omiCall.callId
|
|
47
|
+
self.incoming = omiCall.isIncoming
|
|
48
|
+
self.callState = omiCall.callState.rawValue ?? 0
|
|
49
|
+
self.callerNumber = omiCall.callerNumber ?? ""
|
|
50
|
+
self.isVideo = omiCall.isVideo
|
|
51
|
+
self.omiId = omiCall.omiId ?? ""
|
|
52
|
+
self.uuid = omiCall.uuid.uuidString
|
|
53
|
+
self.callerName = omiCall.callerName ?? ""
|
|
54
|
+
self.muted = omiCall.muted
|
|
55
|
+
self.speaker = omiCall.speaker
|
|
56
|
+
self.onHold = omiCall.onHold
|
|
57
|
+
self.numberToCall = omiCall.numberToCall
|
|
58
|
+
self.connected = omiCall.connected
|
|
59
|
+
self.totalMBsUsed = Double(omiCall.totalMBsUsed)
|
|
60
|
+
self.mos = Double(omiCall.mos)
|
|
61
|
+
self.latency = Double(omiCall.latency)
|
|
62
|
+
self.jitter = Double(omiCall.jitter)
|
|
63
|
+
self.ppl = Double(omiCall.ppl)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
import Foundation
|
|
3
|
+
import SwiftUI
|
|
4
|
+
|
|
5
|
+
class StartCalModel {
|
|
6
|
+
var status: Int = 0
|
|
7
|
+
var callInfo: OmiCallModel?
|
|
8
|
+
var message: String?
|
|
9
|
+
|
|
10
|
+
init(status: Int, callInfo: OmiCallModel, message:String) {
|
|
11
|
+
self.status = status
|
|
12
|
+
self.callInfo = callInfo
|
|
13
|
+
self.message = message
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
}
|