voip24h_sdk_mobile 0.0.1
voip24h_sdk_mobile: ^0.0.1 copied to clipboard
Flutter Voip24h-SDK Mobile
Flutter Voip24h-SDK Mobile #
Mục lục #
Tính năng #
Chức năng | Mô tả |
---|---|
CallKit | • Đăng nhập/Đăng xuất/Refresh kết nối tài khoản SIP • Gọi đi/Nhận cuộc gọi đến • Chấp nhận cuộc gọi/Từ chối cuộc gọi đến/Ngắt máy • Pause/Resume cuộc gọi • Hold/Unhold cuộc gọi • Bật/Tắt mic • Lấy trạng thái mic • Bật/Tắt loa • Lấy trạng thái loa • Transfer cuộc gọi • Send DTMF |
Graph | • Lấy access token • Request API từ: https://docs-sdk.voip24h.vn/ |
Yêu cầu #
- OS Platform:
- Android ->
minSdkVersion: 23
- IOS ->
iOS Deployment Target: 9.0
- Android ->
- Permissions: khai báo và cấp quyền lúc runtime
-
Android: Trong file
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECORD_AUDIO"/>
-
IOS: Trong file
Info.plist
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key><true/> </dict> <key>NSMicrophoneUsageDescription</key> <string>{Your permission microphone description}</string>
-
Cài đặt #
Sử dụng terminal:
$ flutter pub add voip24h_sdk_mobile
Linking module:
- IOS:
- Trong
ios/Podfile
:... # Khai báo thư viện platform :ios, '9.0' source "https://gitlab.linphone.org/BC/public/podspec.git" target 'Your Project' do ... use_frameworks! use_modular_headers! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) # Khai báo thư viện pod 'linphone-sdk-novideo' , '5.1.36' end
- Trong folder
ios
mở terminal, nhập dòng lệnh:$ rm -rf Pods/ $ pod install
- Trong
Khai báo module #
import 'package:voip24h_sdk_mobile/voip24h_sdk_mobile.dart';
import 'package:voip24h_sdk_mobile/callkit/utils/sip_event.dart';
import 'package:voip24h_sdk_mobile/callkit/utils/transport_type.dart';
import 'package:voip24h_sdk_mobile/graph/extensions/extensions.dart';
import 'package:voip24h_sdk_mobile/callkit/model/sip_configuration.dart';
// TODO: Using module
CallKit #
-
Khai báo sipConfiguration: #
var sipConfiguration = SipConfigurationBuilder(extension: "extension", domain: "domain", password: "password") .setKeepAlive(true/false) // optional (bool) .setPort(port) // optional (int) .setTransport(TransportType.Udp/TransportType.Tcp/TransportType.Tls) // optional (enum) .build();
Chức năng |
Phương thức và tham số (Dùng cơ chế async/await hoặc then để lấy dữ liệu trả về) |
Kết quả trả về và thuộc tính |
---|---|---|
Khởi tạo | Voip24hSdkMobile.callModule.initSipModule(sipConfiguration) | None |
Lấy trạng thái đăng kí tài khoản SIP | Voip24hSdkMobile.callModule.getSipRegistrationState() | value: String error: String |
Logout tài khoản SIP | Voip24hSdkMobile.callModule.unregisterSipAccount() | value: bool error: String |
Refresh kết nối SIP | Voip24hSdkMobile.callModule.refreshSipAccount() | value: bool error: String |
Gọi đi | Voip24hSdkMobile.callModule.call(phoneNumber) | value: bool error: String |
Ngắt máy | Voip24hSdkMobile.callModule.hangup() | value: bool error: String |
Chấp nhận cuộc gọi đến | Voip24hSdkMobile.callModule.answer() | value: bool error: String |
Từ chối cuộc gọi đến | Voip24hSdkMobile.callModule.reject() | value: bool error: String |
Transfer cuộc gọi | Voip24hSdkMobile.callModule.transfer("extension") | value: bool error: String |
Lấy call id | Voip24hSdkMobile.callModule.getCallId() | value: String error: String |
Lấy số lượng cuộc gọi nhỡ | Voip24hSdkMobile.callModule.getMissedCalls() | value: int error: String |
Pause cuộc gọi | Voip24hSdkMobile.callModule.pause() | value: bool error: String |
Resume cuộc gọi | Voip24hSdkMobile.callModule.resume() | value: bool error: String |
Bật/Tắt mic | Voip24hSdkMobile.callModule.toggleMic() | value: bool error: String |
Trạng thái mic | Voip24hSdkMobile.callModule.isMicEnabled() | value: bool error: String |
Bật/Tắt loa | Voip24hSdkMobile.callModule.toggleSpeaker() | value: bool error: String |
Trạng thái loa | Voip24hSdkMobile.callModule.isSpeakerEnabled() | value: bool error: String |
Send DTMF | Voip24hSdkMobile.callModule.sendDTMF("number#") | value: bool error: String |
-
Event listener SIP: #
Voip24hSdkMobile.callModule.eventStreamController.stream.listen((event) { switch (event['event']) { case SipEvent.AccountRegistrationStateChanged: { var body = event['body']; // TODO } break; case SipEvent.Ring: { // TODO } break; case ... break; } }); ... @override void dispose() { Voip24hSdkMobile.callModule.eventStreamController.close(); super.dispose(); }
Tên sự kiện |
Kết quả trả về và thuộc tính |
Đặc tả thuộc tính |
---|---|---|
SipEvent.AccountRegistrationStateChanged | body = { registrationState: String , message: String } |
registrationState: trạng thái kết nối của sip (None/Progress/Ok/Cleared/Failed) message: chuỗi mô tả trạng thái |
SipEvent.Ring | body = { extension: String , phoneNumber: String callType: String } |
extension: máy nhánh phoneNumber: số điện thoại người (gọi/nhận) callType: loại cuộc gọi(inbound/outbound) |
SipEvent.Up | body = { callId: String } |
callId: mã cuộc gọi |
SipEvent.Hangup | body = { duration: int } |
duration: thời gian đàm thoại (milliseconds) |
SipEvent.Paused | None | |
SipEvent.Resuming | None | |
SipEvent.Missed | body = { phoneNumber: String , totalMissed: int } |
phone: số điện thoại người gọi totalMissed: tổng cuộc gọi nhỡ |
SipEvent.Error | body = { message: String } |
message: trạng thái lỗi |
Graph #
• key và security certificate(secert) do
Voip24h
cung cấp
• request api: phương thức, endpoint. data body tham khảo từ docs https://docs-sdk.voip24h.vn/
Chức năng |
Phương thức |
Đặc tả tham số |
Kết quả trả về |
Đặc tả thuộc tính |
---|---|---|---|---|
Lấy access token | Voip24hSdkMobile.graphModule.getAccessToken(apiKey: API_KEY, apiSecert: API_SECERT) | • apiKey: String , • secert: String |
value: Oauth error: String |
• Oauth: gồm các thuộc tính (token, createAt, expired, isLongAlive) • error: thông báo lỗi |
Request API | Voip24hSdkMobile.graphModule.sendRequest(token: token, endpoint: endpoint, body: body) | • method: MethodRequest(MethodRequest.POST, MethodRequest.GET,...) • endpoint: chuỗi cuối của URL request: "call/find", "call/findone",... • token: access token • params: data body dạng object như { "offset": "0", "limit": "25" } |
value: Map< String, dynamic> error: String |
• value: kết quả response dạng key - value • error: mã lỗi |
Lấy data object | value.getData() (Dạng extension function) |
None | object: Object |
object gồm các thuộc tính được mô tả ở dữ liệu trả về trong docs https://docs-sdk.voip24h.vn/ |
Lấy danh sách data object | value.getDataList() (Dạng extension function) |
List<Object> |
mỗi object gồm các thuộc tính được mô tả ở dữ liệu trả về trong docs https://docs-sdk.voip24h.vn/ | |
Lấy status code | value.statusCode() (Dạng extension function) |
int |
mã trạng thái | |
Lấy message | value.message() (Dạng extension function) |
String |
chuỗi mô tả trạng thái | |
Lấy limit | value.limit() (Dạng extension function) |
int |
giới hạn dữ liệu của dữ liệu tìm được | |
Lấy offset | value.offset() (Dạng extension function) |
int |
vị trí bắt đầu của dữ liệu tìm được | |
Lấy total | value.total() (Dạng extension function) |
int |
tổng số lượng dữ liệu | |
Lấy kiểu sắp xếp | value.isSort() (Dạng extension function) |
String |
kiểu sắp xếp dữ liệu |