- vừa được xem lúc

Hướng dẫn viết ứng dụng gọi điện (voice call: call in và call out ra số di động) với JavaScript sử dụng Stringee Call API

0 0 18

Người đăng: Vũ Ngọc Thùy

Theo Viblo Asia

Bắt đầu với Stringee Call API bằng Web SDK

Đây là hướng dẫn nhanh cho Stringee Web SDK. Hướng dẫn sẽ chỉ cho bạn các bước cần thiết để thực hiện cuộc gọi từ web tới điện thoại và từ điện thoại tới web. Chúng tôi đã chuẩn bị các demo để bạn có thể ngay lập tức thử cuộc gọi thoại: ứng dụng cuộc gọi thoại từ ứng dụng đến điện thoại: https://github.com/stringeecom/web-sdk-samples/blob/master/OneToOneCallSample/voice_call.html

Bước 1: Chuẩn bị

  1. Trước khi sử dụng Stringee Call API lần đầu tiên, bạn phải có một tài khoản Stringee. Nếu bạn chưa có tài khoản Stringee, đăng ký miễn phí tại đây: https://developer.stringee.com/account/register

  2. Tạo một dự án trên bảng điều khiển StringeeDashboard của Stringee

  1. Mua một số (tùy chọn) Đối với cuộc gọi từ ứng dụng đến điện thoại, từ điện thoại đến ứng dụng, hãy mua một số từ Bảng điều khiển.

  2. Cấu hình answer_url của dự án

    Để biết thêm thông tin về answer_url, hãy đọc https://developer.stringee.com/docs/call-api-overview.

    Bạn có thể xem mã mẫu answer_url tại đây: https://github.com/stringeecom/server-samples/tree/master/answer_url

Nếu bạn chưa có answer_url, bạn có thể sử dụng answer_url của dự án sau để tăng tốc quá trình:

Answer_url của dự án cho cuộc gọi App-to-Phone: https://developer.stringee.com/scco_helper/simple_project_answer_url?record=false&appToPhone=true

(Mã nguồn: https://github.com/stringeecom/server-samples/blob/master/answer_url/php/project_answer_url.php)

Khi xây dựng một ứng dụng, bạn nên sử dụng answer_url của riêng mình.

- Cấu hình answer_url của số:

Nếu bạn chưa có answer_url, bạn có thể sử dụng Number's answer_url sau để đẩy nhanh quá trình:

Number's answer_url cho cuộc gọi Phone-to-App call (Cuộc gọi chuyển đến ứng dụng của bạn được xác thực bởi USER_ID):

https://developer.stringee.com/scco_helper/simple_number_answer_url?record=true&phoneToPhone=false&to_number=USER_ID

Number's answer_url cho cuộc gọi Phone-to-Phone (Cuộc gọi được chuyển đến TO_NUMBER):

https://developer.stringee.com/scco_helper/simple_number_answer_url?record=true&phoneToPhone=true&stringeeNumber=STRINGEE_NUMBER&to_number=TO_NUMBER

(Source code: https://github.com/stringeecom/server-samples/blob/master/answer_url/php/number_answer_url.php)

Khi xây dựng ứng dụng, bạn nên sử dụng answer_url của riêng mình.

Bước 2: Thêm SDK Stringee

Bước 3: Kết nối đến Stringee Server

Để kết nối đến Stringee Server, yêu cầu phải thực hiện xác thực 3 bên như mô tả tại đây : https://developer.stringee.com/docs/client-authentication

Để tạo Access Token, bạn có 2 cách

1: Đối với mục đich test, bạn hãy truy cập vào Dashboard -> Tools -> Generate Access

2: Lấy Access Token từ server của ban: Có thể tham khảo mẫu của chúng tôi để tìm hiểu cách lấy một token: https://github.com/stringeecom/server-samples/tree/master/access_token

Connect

  • Để kết nối tới Stringee Server bạn cần tạo một đối tượng StringeeClient như sau
// Kiểm tra xem trình duyệt có hỗ trợ WebRTC không
console.log('StringeeUtil.isWebRTCSupported: ' + StringeeUtil.isWebRTCSupported());
var client = new StringeeClient(); // Kết nối tới máy chủ Stringee bằng access_token:
client.connect(access_token);

Nhận các sự kiện kết nối:

// Khi khách hàng kết nối tới máy chủ Stringee:
client.on('connect', function () { console.log('đã kết nối');
}); // Khi khách hàng được xác thực:
console.log('đã xác thực', res); $('#loggedUserId').html(res.userId);
}); // Khi khách hàng ngắt kết nối từ máy chủ Stringee:
client.on('disconnect', function () { console.log('đã ngắt kết nối');
}); // Khi access_token hết hạn:
client.on('requestnewtoken', function () { console.log('++++++++++++++ yêu cầu access_token mới; vui lòng lấy access_token mới từ YourServer và gọi client.connect(new_access_token) ++++++++'); // vui lòng lấy access_token mới từ YourServer và gọi: // client.connect(new_access_token);
}); 

Bước 4: Thực hiện cuộc gọi

Để thực hiện cuộc gọi

1. Tạo một đối tượng stringeeCall:

var call = new StringeeCall(client, fromNumber, toNumber, false);

2. Các sự kiện của cuộc gọi

function settingCallEvent(call1) { call1.on('addremotestream', function (stream) { // reset srcObject to work around minor bugs in Chrome and Edge. console.log('addremotestream'); remoteVideo.srcObject = null; remoteVideo.srcObject = stream; }); call1.on('addlocalstream', function (stream) { // reset srcObject to work around minor bugs in Chrome and Edge. console.log('addlocalstream'); localVideo.srcObject = null; localVideo.srcObject = stream; }); call1.on('signalingstate', function (state) { console.log('signalingstate ', state); var reason = state.reason; $('#callStatus').html(reason); }); call1.on('mediastate', function (state) { console.log('mediastate ', state); }); call1.on('info', function (info) { console.log('on info:' + JSON.stringify(info)); });
}

3. Thực hiện cuộc gọi:

settingCallEvent(call);
call.makeCall(function (res) { console.log('make call callback: ' + JSON.stringify(res));
});

Bước 5: Trả lời cuộc gọi

Các hành động trả lời cuộc gọi

// Nhận cuộc gọi đến
client.on('incomingcall', function (incomingcall) { console.log('incomingcall', incomingcall);
}); // Trả lời call.answer(function (res) { console.log('answer res', res);
}); // Từ chối cuộc gọi
call.reject(function (res) { console.log('reject res', res);
});

Ví dụ về cách trả lời cuộc gọi:

client.on('incomingcall', function (incomingcall) { console.log('incomingcall', incomingcall); call = incomingcall; settingCallEvent(incomingcall); var answer = confirm('Incoming call from: ' + incomingcall.fromNumber + ', do you want to answer?'); if (answer) { call.answer(function (res) { console.log('answer res', res); }); } else { call.reject(function (res) { console.log('reject res', res); }); }
});

Bước 6: Cúp máy

call.hangup(function (res) { console.log('hangup res', res);
});

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 525

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 435

- vừa được xem lúc

Một số phương thức với object trong Javascript

Trong Javascript có hỗ trợ các loại dữ liệu cơ bản là giống với hầu hết những ngôn ngữ lập trình khác. Bài viết này mình sẽ giới thiệu về Object và một số phương thức thường dùng với nó.

0 0 154

- vừa được xem lúc

Tìm hiểu về thư viện axios

Giới thiệu. Axios là gì? Axios là một thư viện HTTP Client dựa trên Promise.

0 0 146

- vừa được xem lúc

Imports và Exports trong JavaScript ES6

. Giới thiệu. ES6 cung cấp cho chúng ta import (nhập), export (xuất) các functions, biến từ module này sang module khác và sử dụng nó trong các file khác.

0 0 110

- vừa được xem lúc

Bài toán đọc số thành chữ (phần 2) - Hoàn chỉnh chương trình dưới 100 dòng code

Tiếp tục bài viết còn dang dở ở phần trước Phân tích bài toán đọc số thành chữ (phần 1) - Phân tích đề và những mảnh ghép đầu tiên. Bạn nào chưa đọc thì có thể xem ở link trên trước nhé.

0 0 246