call-services
v1.0.2
Published
Downloads
73
Readme
VPBANK Call Services
Mô tả
Call Services là một thư viện javascript cho trình duyệt, có nhiệm vụ thực hiện cuộc gọi video hoặc audio qua mạng ngang hàng p2p. Sử dụng công nghệ WebRTC
Các tính năng chính:
- Tạo cuộc gọi
- Lắng nghe cuộc gọi
Cài đặt
// with npm
npm install call-services
Cách sử dụng
1. Người gọi
Khởi tạo người gọi
// token là mã do hệ thống tích hợp trả về. callType bằng "AUDIO" hoặc "VIDEO"
const caller = new Caller(token,callType,options);
callType
bằngAUDIO
hoặcVIDEO
, loại cuộc gọi.options
{env:staging
|product
} môi trường staging hoặc product, mặc định bằngstaging
Thêm localvideo
và remoteVideo
.
caller.addVideoElement(localVideo, remoteVideo);
localvideo
là một HTMLVideoElement của người gọi. remoteVideo
là của người nghe
Các chức năng
Tạo cuộc gọi
caller.makeCall();
Hủy cuộc gọi
caller.cancelCall();
Kết thúc cuộc gọi
caller.endCall();
Lắng nghe trạng thái thay đổi
caller.onChangeStatus((status) => {})
Lắng nghe trạng thái kết nối. Sử dụng khi trạng thái là CONNECT
caller.onConnect((connected)=>{})
Đổi camera
caller.turnVideo()
Tắt Mic
caller.mute()
Các giá trị
// Trạng thái kết nối
caller.connected
// Thông tin thiết bị
caller.deviceInfo
//Trạng thái
caller.status
Bảng trạng thái:
| trạng thái | mô tả | |------------|-----------------------------------------------------------------| | START | Trạng thái khởi đầu chưa thể tạo cuộc gọi khi ở trạng thái này | | READY | Có thể thực hiện tạo cuộc gọi | | REQUEST | Một yêu cầu tạo cuộc gọi mới đươc tạo | | BUSY | Không có người nghe sẵn sàng nghe máy | | CONNECT | Kết nối thành công với người nghe | | END_CALL | Người nghe kết thúc cuộc gọi. có thể makeCall từ trạng thái này | | DISCONNECT | Mất kết nối tơi người nghe. có thể makeCall từ trạng thái này |
Ví dụ:
Xem chi tiết ví dụ tại đây
2. Người lắng nghe
Khởi tạo người nghe
// token là mã do hệ thống tích hợp trả về
const listener = new Listener(token,options);
options
{env:staging
|product
, timeout:number
} môi trường staging hoặc product, mặc định bằngstaging
.timeout
<đơn vị ms> thời gian người nghe bắt máy, mặc định 30000
Thêm localvideo
và remoteVideo
.
listener.addVideoElement(localVideo, remoteVideo);
localvideo
là một HTMLVideoElement của người nghe. remoteVideo
là của người gọi
Các chức năng
Chờ cuộc gọi
listener.online();
Hủy chờ cuộc gọi
listener.offline();
Chấp nhận cuộc gọi
listener.acceptCall();
Từ chối cuộc gọi
listener.rejectCall().then();
Kết thúc cuộc gọi
listener.endCall().then();
Lắng nghe trạng thái thay đồi
listener.onChangeStatus((status) => {})
Lắng nghe trạng thái kết nối với socket. Sử dụng khi trạng thái là CONNECT
listener.onConnect((connected)=>{})
Lắng nghe trạng thái kết nối cuộc gọi. Sử dụng khi trạng thái là CONNECT
listener.onStreamConnect((connected)=>{})
Chụp ảnh
const url = listener.getScreenshot(type)
type
có 2 giá trị là BOTH
và CALLER
.Với BOTH
nếu muốn chụp ảnh cả người nghe và người gọi, CALLER
chỉ chụp ảnh người nghe
Ghi video cuộc gọi
listener.startRecording(time,type,(blob)=>{})
Tắt Mic
listener.mute()
Ngắt kết nối
listener.disconnect()
time
là thời gian ghi, đơn vị ms. type
tương tự với hàm getScreenshot
. Hàm callback trả lại một blob
chứa dữ liệu bản ghi
Các giá trị
// Id của cuộc gọi
listener.callId
// Loại cuộc gọi `AUDIO` hoặc `VIDEO`
listener.callType
// Thông tin thiết bị
listener.deviceInfo
//Trạng thái
listener.status
//Tên sản phẩm
listener.productName
//Mô tả sản phẩm
listener.productDescription
//ID của người gọi
listener.requestId
Bảng trạng thái:
| trạng thái | Mô tả | |-------------|--------------------------------------------------------------------| | ONLINE | Đang chờ cuộc gọi | | OFFLINE | Không chờ cuộc gọi | | RING_CALL | Có cuộc gọi tới | | CONNECT | Kết nối thành công với người gọi | | END_CALL | Người gọi kết thúc cuộc gọi. Gọi online() để tiếp tục chờ cuộc gọi | | CANCEL_CALL | Người gọi hủy cuộc gọi. Gọi online() để tiếp tục chờ cuộc gọi | | DISCONNECT | Mất kết nối đến người gọi. Gọi online() để tiếp tục chờ cuộc gọi | | TIMEOUT | Hết thời gian để nhận cuộc gọi |
Ví dụ:
Xem chi tiết ví dụ tại đây;
Truyền thông tin dữ liệu.
Kênh dữ liệu
Sử dụng DataChanel
được khởi tạo trong Cistener
và Caller
const dataChanel = listener.dataChanel;
const dataChanel = caller.dataChanel;
Sự kiện open
Trước khi kênh dữ liệu có thể được sử dụng để gửi dữ liệu, máy khách cần đợi cho đến khi kênh dữ liệu được mở. Điều này được thực hiện bằng cách lắng nghe sự open
dataChanel.onopen = (open) => {
console.log(open)
};
Nhắn tin
Việc gửi tin nhắn trên a DataChanel
được thực hiện bằng cách gọi hàm send()
với dữ liệu chúng ta muốn gửi. Tham số data cho hàm này có thể là một string
, a Blob
, an ArrayBuffer
hoặc và ArrayBufferView
dataChanel.send("hello")
Caller và Listener nhận dữ liệu bằng hàm onmessage
dataChanel.onmessage = (event)=>{
const message = event.data;
}