Android
I. Thiết lập Android Studio project
Bước 1: Tải portsipSDK tại đây.
Bước 2: Giải nén file .zip vừa mới tải về, copy file AndroidSample/SIPSample_AndroidStudio/SIPSample/libs/portsipvoipsdk.jar vào thư mục app/libs của project Android

Bước 3: Compile Libs : Chuột phải vào file portsipvoipsdk.jar chọn Add as Library...
Bước 4: Khai báo các permission cần thiết trong file AndroidManifest.xml
Tài liệu tham khảo: https://www.portsip.com/docs/sdk/manual/portsip-voip-sdk-user-manual-android.pdf
II. Khởi tạo SDK
Ở file PortsipService.kt
PortsipService.ktKhai báo biến global
val portsipSDK: PortSipSdk = PortSipSdk(). Dùng để gọi các API của PortsipSDK.Class
PortsipServicephải implement interface:**OnPortSIPEvent.**
Hàm này nên được gọi chung lúc với đăng nhập máy nhánh.
III. Đăng nhập máy nhánh (extension)
Đầu tiên, ở file MainActivity.kt, ta phải khởi chạy PortsipService trước
Ở file PortsipService.kt, sau khi startService như bước 1 thì onStartCommand của PortsipService được chạy, đăng nhập máy nhánh có thể được gọi lúc này, được hiện thực như ví dụ sau:
Nên có 1 biến portsipRegistered dùng để lưu trạng thái đã register với portsip thành công hay chưa. Nếu đã register thành công thì chỉ cần gọi API refreshRegistration(), không cần qua 2 bước initialSDK() và registerPortsip() bên trên.
Nếu muốn register lại từ đầu thì phải Khởi tạo SDK lại như mục II.
Có 2 event sẽ xảy ra khi đăng nhập máy nhánh:
IV. Đăng xuất máy nhánh (extension)
Ở file PortsipService.kt
V. Thực hiện cuộc gọi (outgoing call)
Ở file PortsipService.kt
Để thực hiện cuộc gọi:
Khi người nhận cuộc gọi chấp nhận cuộc gọi:
Sự kiện onInviteAnswered() xảy ra.
Khi người nhận cuộc gọi từ chối cuộc gọi/cuộc gọi không được bắt máy/hay vì 1 lý do nào đó mà cuộc gọi không thành công:
sự kiện onInviteFailure() xảy ra.
Chủ động kết thúc cuộc gọi:
VI. Nhận cuộc gọi (incoming call)
Cần áp dụng Mobile Push (push notification voip) để ứng dụng có thể nhận cuộc gọi trong các trường hợp không active:
Người dùng không ở màn hình ứng dụng
Khoá màn hình
Kill app
6.1. Thiết lập mobile push
Để sử dụng mobile push, cần khai báo ứng dụng Android với hệ thống portsip thông qua các bước:
Lấy 2 thông tin: 1 Server Key và 1 Sender ID trên Firebase của Project.
applicationIdnằm trong filebuild.gradle (Module: android.app)ví dụ: vn.etelecom.appGửi cho eTelecom 3 thông tin này để tạo thêm Mobile Push.
6.2. Hiện thực
Khi có một cuộc gọi đến máy nhánh:
Sự kiện onInviteIncoming() xảy ra.
Tạo 1 service là
FirebaseService, và khai báo nó ởAndroidManifest.xml
build.gradle(Project: android), thêm classpath sau đây:
build.gradle(Module: android.app), thêm dependencies như sau:
Tạo notification channel: để dùng trong việc thông báo cuộc gọi đến. Ta nên gọi hàm này cùng lúc với đăng nhập máy nhánh.
Khi onStartCommand của PortsipService được chạy, đã trình bày chi tiết ở mục III.
Khi token của Firebase được refresh:
Khi kill app, hoặc tắt màn hình điện thoại, cuộc gọi đến sẽ được bắn qua Firebase và sẽ xử lý tại đây:
Khi khởi động ứng dụng, lần đầu tiên start của
PortsipService, ta phải lắng nghe token của Firebase rồi đăng nhập máy nhánh sau.
Hàm
refreshPushTokencó thể hiện thực như sau:
Hàm
showPendingNotificationcó thể hiện thực như sau:
Một số thao tác user có thể thực hiện khi có cuộc gọi: Chấp nhận (bắt máy), Từ chối, Ngắt máy (sau khi đã chấp nhận), v.v....
VII. Cuộc gọi video
Cần có 1 Activity thể hiện cuộc gọi Video, ví dụ như sau:
Nên dùng biến portsipSDK ở file PortsipService.kt để không xảy ra hiện tượng nhiều instance của 1 biến được tạo ra, sẽ phát sinh nhiều bug không mong muốn.
Giao diện của Activity bên trên, có thể hiện thực ở file video_call_view.xml như ví dụ sau:
Gọi ra và nhận cuộc gọi đến:
Last updated