TRTCCallingコンポーネントは、Tencent CloudのTencent Real-Time Communication(TRTC)とInstant Messaging(IM)サービスの組み合わせにより構成されており、1v1および複数人でのビデオ/音声通話をサポートしています。具体的な実装プロセスについては、リアルタイム音声通話(Web)をご参照ください。
クリックしてTUICallingに進み、実際のサービスのニーズに応じてDemoソースコードをダウンロードします。
最新バージョンのChromeブラウザをご使用ください。現在、デスクトップのChromeブラウザはTRTC Web SDKをサポートしており、関連機能は比較的整っていますので、Chromeブラウザを使用して体験することをお勧めします。具体的な内容については 環境要件をご参照ください。
ユースケース | プロトコル | 受信(再生) | 送信(マイク・オン) | 画面共有 | 備考 |
---|---|---|---|---|---|
本番環境 | HTTPSプロトコル | サポートあり | サポートあり | サポートあり | 推奨 |
本番環境 | HTTPプロトコル | サポートあり | サポートなし | サポートなし | - |
ローカル開発環境 | http://localhost | サポートあり | サポートあり | サポートあり | 推奨 |
ローカル開発環境 | http://127.0.0.1 | サポートあり | サポートあり | サポートあり | - |
ローカル開発環境 | http://[ローカルマシンIP] | サポートあり | サポートなし | サポートなし | - |
ローカル開発環境 | file:/// | サポートあり | サポートあり | サポートあり | - |
このコンポーネントはイベントのディスパッチに基づいて管理します。アプリケーション層は、コンポーネントからディスパッチされるイベントにインタラクティブに応じて変更することができます。
API | 説明 |
---|---|
on(eventName, callback, context) | イベントのサブスクリプション |
off(eventName, callback, context) | イベントサブスクリプションの取消 |
API | 説明 |
---|---|
login({userID, userSig}) | IMログインインターフェース。すべての機能を使用するためには、まずログインする必要があります |
logout() | インターフェースからログアウトします。ログアウトした後は、ダイヤル操作ができなくなります |
API | 説明 |
---|---|
call({userID, type, offlinePushInfo})) | シングル通話の招待 |
groupCall({userIDList, type, groupID, offlinePushInfo}) | グループチャット通話の招待 |
accept() | 通話招待に応答 |
reject() | 通話招待を拒否 |
hangup() | 現在の通話の終了 |
API | 説明 |
---|---|
startRemoteView({userID, videoViewDomID}) | リモート画面レンダリングの起動 |
stopRemoteView({userID}) | リモート画面レンダリングの停止 |
startLocalView({userID, videoViewDomID}) | ローカル画面レンダリングの起動 |
stopLocalView({userID}) | ローカル画面レンダリングの停止 |
openCamera() | カメラの起動 |
closeCamera() | カメラの停止 |
setMicMute(isMute) | デバイスマイクのミュートの有無 |
setVideoQuality(profile) | ビデオ画質の設定 |
switchToAudioCall() | ビデオ通話を音声通話へ切り替え |
switchToVideoCall() | 音声通話をビデオ通話へ切り替え |
getCameras() | カメラデバイスリストの取得 |
getMicrophones() | マイクデバイスリストの取得 |
switchDevice({deviceType, deviceId}) | カメラまたはマイクデバイスの切り替え |
まず、Tencent Real-Time Communicationコンソールでアプリケーションを作成し、SDKAppIDを取得する必要があります。
その後、new TRTCCalling()
メソッドを使ってTRTCCalling コンポーネントのインスタンスを取得することができます。
npm i trtc-js-sdk --save
npm i tim-js-sdk --save
npm i tsignaling --save
npm i trtc-calling-js --save
// nodeを通じてダウンロードする依存関係の場合は、importによって次をインポートします
import TRTCCalling from 'trtc-calling-js';
// スクリプト方式によってtrtc-calling-jsを使用する場合は、順序どおりに
// trtc.jsを手動でインポートします
<script src="./trtc.js"></script>
// 続いて、tim-js.jsを手動でインポートします。
<script src="./tim-js.js"></script>
// 次に、tsignaling.jsを手動でインポートします。
<script src="./tsignaling.js"></script>
// 最後に、trtc-calling-js.jsを手動でインポートします。
<script src="./trtc-calling-js.js"></script>
let options = {
SDKAppID: 0, // アクセスするときは、0をお客様のIMアプリケーションのSDKAppIDに置き換える必要があります
// v0.10.2から、timパラメータを追加します
// timパラメータはサービス内にすでに存在するTIMインスタンスに使用され、TIMインスタンスの一意性を保証します。
tim: tim
};
let trtcCalling = new TRTCCalling(options);
コンポーネントからディスパッチされたイベントを監視するために使用します。詳細については、イベントリストをご参照ください。
let handleInvite = function ({inviteID, sponsor, inviteData}) {
console.log(`inviteID: ${inviteID}, sponsor: ${sponsor}, inviteData: ${JSON.stringify(inviteData)}`);
};
trtcCalling.on('onInvited', handleInvite, this);
イベント監視をキャンセルするために使用します。
let handleInvite = function ({inviteID, sponsor, inviteData}) {
console.log(`inviteID: ${inviteID}, sponsor: ${sponsor}, inviteData: ${JSON.stringify(inviteData)}`);
};
trtcCalling.off('onInvited', handleInvite, this);
インターフェースにログインします。
trtcCalling.login({userID, userSig})
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
userID | String | 現在のユーザーのID。文字列タイプ。アルファベット(a-zおよびA-Z)、数字(0-9)、ハイフン(-)、アンダーバー(_)のみ使用できます。 |
userSig | String | Tencent Cloudによって設計されたセキュリティ保護署名。取得方法については、 UserSigの計算、使用方法をご参照ください。 |
インターフェースからログアウトします。
trtcCalling.logout()
1v1通話招待、そのうちtypeは通話タイプ、1は音声通話、2はビデオ通話です。
説明:
- v1.0.0以降のバージョンで、timeoutパラメータを取り消しました
- v1.0.0以降のバージョンに、offlinePushInfoパラメータを新規追加しました(オフラインプッシュはAndroidまたはiOS端末にのみ適用されます。WebおよびWeChat Mini Programはサポートしていません)。
// v1.0.0以前
trtcCalling.call({userID, type, timeout});
// v1.0.0以降のバージョン
const offlinePushInfo = {
title: '',
description: '通話リクエストが1件あります',
}
trtcCalling.call({userID, type, offlinePushInfo})
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
userID | String | 被招待者のuserID |
type | Number | 1:音声通話、2:ビデオ通話 |
timeout | Number | 0はタイムアウトしていないことを意味し、単位はs(秒)。v1.0.0より前のバージョンのみ |
offlinePushInfo | Object | メッセージのオフラインプッシュをカスタマイズします(オプション)。v1.0.0以降のバージョンのみ |
offlinePushInfoパラメータ(v1.0.0以降のバージョンのみ)
パラメータ | タイプ | 意味 |
---|---|---|
title | String | オフラインプッシュタイトル(オプション) |
description | String | オフラインプッシュコンテンツ(オプション) |
androidOPPOChannelID | String | オフラインプッシュのためのOPPO携帯(システム8.0以上)のチャンネルIDを設定します(オプション)。 |
extension | String | オフラインプッシュパススルーコンテンツ(オプション)。TRTCCallingバージョン>=1.0.2、tsignalingバージョン>= 0.9.0のみ |
groupID パラメータは IM SDKにおけるグループ IDです。このパラメータを設定すると、通話リクエストメッセージがグループメッセージシステムを介してブロードキャストされます。このメッセージブロードキャスト方式は簡単で信頼性の高い方法です。設定しない場合は、TRTCCalling
コンポーネントが単発メッセージで1人1人に通知を行います。
説明:v1.0.0以降のバージョンに、offlinePushInfoパラメータを新規追加しました(オフラインプッシュはAndroidまたはiOS端末にのみ適用されます。WebおよびWeChat Mini Programはサポートしていません)。
// v1.0.0より前
trtcCalling.groupCall({userIDList, type, groupID});
// v1.0.0以降
const offlinePushInfo = {
title: '',
description: '通話リクエストが1件あります',
}
trtcCalling.groupCall({userIDList, type, groupID, offlinePushInfo})
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
userIDList | Array | 招待リスト |
type | Number | 1:音声通話、2:ビデオ通話 |
groupID | String | IMグループID(オプション) |
offlinePushInfo | Object | メッセージのオフラインプッシュをカスタマイズします(オプション)。v1.0.0以降のバージョンのみ |
offlinePushInfoパラメータ(v1.0.0以降のバージョンのみ)
パラメータ | タイプ | 意味 |
---|---|---|
title | String | オフラインプッシュタイトル(オプション) |
description | String | オフラインプッシュコンテンツ(オプション) |
androidOPPOChannelID | String | オフラインプッシュのためのOPPO携帯(システム8.0以上)のチャンネルIDを設定します(オプション)。 |
extension | String | オフラインプッシュパススルーコンテンツ(オプション)。TRTCCallingバージョン>=1.0.2、tsignalingバージョン>= 0.9.0のみ |
招待を受け取った後、このインターフェースを呼び出すと、現在の招待を受け入れます。
説明:
- 前回のinvitationの処理が未完了の場合、コンポーネントはデフォルトでビジー状態になり、その後のすべての招待はビジーを返します。
- v1.0.0以降のバージョンで、paramsパラメータを取り消しました。
import TRTCCalling from 'trtc-calling-js';
trtcCalling.on(TRTCCalling.EVENT.INVITED, ({inviteID, sponsor, inviteData}) => {
// ...
// v1.0.0以前
const { roomID, callType } = inviteData;
trtcCalling.accept({inviteID, roomID, callType})
// v1.0.0以降
trtcCalling.accept();
})
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
inviteID | String | 招待ID。1回の招待を標識します(イベントINVITEDコールバックデータのinviteIDを監視)。v1.0.0より前のバージョンのみ |
roomID | Number | 通話ルームナンバーID(イベントINVITEDコールバックデータのinviteData.roomIDを監視)。v1.0.0より前のバージョンのみ |
callType | Number | 1:音声通話、2:ビデオ通話(イベントINVITEDコールバックデータのinviteData.callTypeを監視)。v1.0.0より前のバージョンのみ |
招待を受け取った後、このインターフェースを呼び出すと、現在の招待が拒否されます。
説明:v1.0.0以降のバージョンで、paramsパラメータを取り消しました。
import TRTCCalling from 'trtc-calling-js';
trtcCalling.on(TRTCCalling.EVENT.INVITED, ({inviteID, sponsor, inviteData}) => {
// ...
// v1.0.0より前
const { callType } = inviteData;
trtcCalling.reject({inviteID, isBusy, callType})
// v1.0.0以降
trtcCalling.reject();
})
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
inviteID | String | 招待ID。1回の招待を識別します(イベントINVITEDコールバックデータのinviteIDを監視)。v1.0.0より前のバージョンのみ |
isBusy | Boolean | 回線ビジー状態の有無。v1.0.0より前のバージョンのみ |
callType | Number | 1:音声通話、2:ビデオ通話(イベントINVITEDコールバックデータのinviteData.callTypeを監視)。v1.0.0より前のバージョンのみ |
trtcCalling.hangup()
リモートユーザーのカメラデータを指定されたDOM IDノードにレンダリングします。
trtcCalling.startRemoteView({userID, videoViewDomID})
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
userID | String | ユーザーID |
videoViewDomID | String | このユーザーデータは、このDOM IDノードにレンダリングされたvideoタグを介して再生されます |
リモートユーザーのカメラデータによってレンダリングされたDOMノードを削除します。
説明:v1.0.0以降のバージョンで、videoViewDomIDパラメータを削除しました。
// v1.0.0以前
trtcCalling.stopRemoteView({userID, videoViewDomID});
// v1.0.0以降
trtcCalling.stopRemoteView({userID});
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
userID | String | ユーザーID |
videoViewDomID | String | このDOM IDノードのvideoタグを削除し、ビデオ再生を停止します。v1.0.0より前のバージョンのみ |
ローカルユーザーのカメラデータを指定されたDOM IDノードにレンダリングします。
trtcCalling.startLocalView({userID, videoViewDomID})
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
userID | String | ユーザーID |
videoViewDomID | String | ローカルユーザーデータは、このDOM IDノードにレンダリングされたvideoタグを介して再生されます |
ローカルユーザーのカメラデータによってレンダリングされたDOMノードを削除します。
説明:v1.0.0以降のバージョンで、videoViewDomIDパラメータを削除しました。
// v1.0.0以前
trtcCalling.stopLocalView({userID, videoViewDomID});
// v1.0.0以降
trtcCalling.stopLocalView({userID});
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
userID | String | ユーザーID |
videoViewDomID | String | このDOM IDノードのvideoタグを削除し、ビデオ再生を停止します。v1.0.0より前のバージョンのみ |
ローカルカメラをオンにします。
trtcCalling.openCamera()
カメラをオフにします。
trtcCalling.closeCamera()
マイクをオン/オフします。
trtcCalling.setMicMute(true) // マイクオフ
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
isMute | Boolean |
ビデオの画質を設定します。
説明:
- v0.8.0以降のバージョンは、このメソッドが新規追加されました。
- このメソッドは、call、groupCall、acceptの前に設定する必要があり、その後の設定は有効になりません。
trtcCalling.setVideoQuality('720p') // ビデオの画質を720pに設定します
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
profile | String |
ビデオ通話を音声通話へ切り替えます。
説明:
- v0.10.0以降のバージョンは、このメソッドが新規追加されました。
- 1v1通話中のみ使用をサポートします。
- ERRORイベントの監視に失敗しました。code:60001。
trtcCalling.switchToVideoCall() // ビデオ通話を音声通話へ切り替え
音声通話をビデオ通話へ切り替えます。
説明:
- v0.10.0以降のバージョンは、このメソッドが新規追加されました。
- 1v1通話中のみ使用をサポートします。
- ERRORイベントの監視に失敗しました。code:60002。
trtcCalling.switchToVideoCall() // 音声通話をビデオ通話へ切り替え
このインターフェースを呼び出すと、カメラデバイスリストを取得することができます。
説明:v1.0.0以降のバージョンに、このメソッドが新規追加されました。
trtcCalling.getCameras() // カメラリストの取得
このインターフェースを呼び出すと、マイクデバイスリストを取得することができます。
説明:v1.0.0以降のバージョンに、このメソッドが新規追加されました。
trtcCalling.getMicrophones() // マイクリストの取得
このインターフェースを呼び出すと、カメラまたはマイクのデバイスを切り替えることができます。
説明:v1.0.0以降のバージョンに、このメソッドが新規追加されました。
trtcCalling.switchDevice({deviceType: 'audio', deviceId: deviceId}) // デバイスの切り替え
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
deviceType | String | video: カメラ、audio: マイク |
deviceId | String |
次のコードを参照して、TRTCCalling コンポーネントイベントを監視できます。
import TRTCCalling from 'trtc-calling-js';
// etc
function handleInviteeReject({userID}) {
}
trtcCalling.on(TRTCCalling.EVENT.REJECT, handleInviteeReject)
CODE | イベント受信側 | 説明 |
---|---|---|
REJECT | 招待側 | 被招待ユーザーは通話拒否 |
NO_RESP | 招待側 | 被招待ユーザーの応答がなくタイムアウト |
LINE_BUSY | 招待側 | 被招待ユーザーは通話中、ビジー状態 |
INVITED | 被招待側 | 招待通知を受信済み |
CALLING_CANCEL | 被招待側 | 相手側による今回通話のキャンセル |
CALLING_TIMEOUT | 被招待側 | 今回の通話に応答せずにタイムアウト |
USER_ENTER | 招待側と被招待側 | ユーザー入室 |
USER_LEAVE | 招待側と被招待側 | 通話から離脱したユーザーあり |
CALL_END | 招待側と被招待側 | 今回の通話終了 |
KICKED_OUT | 招待側と被招待側 | ログイン重複により、ルームから強制退出 |
USER_VIDEO_AVAILABLE | 招待側と被招待側 | リモートユーザーによるカメラのオン/オフ |
USER_AUDIO_AVAILABLE | 招待側と被招待側 | リモートユーザーによるマイクのオン/オフ |
SDKがready状態に入るとこのコールバックを受信します
説明:v1.0.0以降のバージョンに、このイベントが新規追加されました。
let onSDKReady = function(event) {
console.log(event)
};
trtcCalling.on(TRTCCalling.EVENT.SDK_READY, onSDKReady);
ユーザーが入室しました。
トリッガー:ユーザーが通話に参加する。
let handleUserEnter = function({userID}) {
console.log(userID)
};
trtcCalling.on(TRTCCalling.EVENT.USER_ENTER, handleUserEnter);
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
userID | String | ユーザーID |
ユーザーが退室しました。
トリッガー:ユーザーが通話を退出する。
let handleUserLeave = function({userID}) {
console.log(userID)
};
trtcCalling.on(TRTCCalling.EVENT.USER_LEAVE, handleUserLeave);
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
userID | String | ユーザーID |
グループチャットで招待リストを更新するとこのコールバックを受信します
説明:v1.0.0以降のバージョンに、このイベントが新規追加されました。
let handleGroupInviteeListUpdate = function(event) {
console.log(event)
};
trtcCalling.on(TRTCCalling.EVENT.GROUP_CALL_INVITEE_LIST_UPDATE, handleGroupInviteeListUpdate);
今回の通話は終了しました。
トリッガー:今回の通話を終了する。
let handleCallingEnd = function(event) {
console.log(event)
};
trtcCalling.on(TRTCCalling.EVENT.CALL_END, handleCallingEnd);
ログインを繰り返したことにより、強制退室されました。
トリッガー:他のページに繰り返しログインする。
let handleKickedOut = function(event) {
console.log(event)
};
trtcCalling.on(TRTCCalling.EVENT.KICKED_OUT, handleKickedOut);
リモートユーザーがカメラをオン/オフにします。
トリッガー:リモートユーザーがカメラをオン/オフにする。
let handleUserVideoChange = function({userID, isVideoAvailable}) {
console.log(userID, isVideoAvailable)
};
trtcCalling.on(TRTCCalling.EVENT.USER_VIDEO_AVAILABLE, handleUserVideoChange);
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
userID | String | ユーザーID |
isVideoAvailable | Boolean |
リモートユーザーがマイクをオン/オフにしました。
トリッガー:リモートユーザーがマイクをオン/オフする。
let handleUserAudioChange = function({userID, isAudioAvailable}) {
console.log(userID, isAudioAvailable)
};
trtcCalling.on(TRTCCalling.EVENT.USER_AUDIO_AVAILABLE, handleUserAudioChange);
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
userID | String | ユーザーID |
isAudioAvailable | Boolean |
ユーザーが通話を拒否しました。
トリッガー:被招待者が通話を拒否し、発信者がREJECTイベントコールバックを受け取る。
let handleInviteeReject = function({userID}) {
console.log(userID)
};
trtcCalling.on(TRTCCalling.EVENT.REJECT, handleInviteeReject);
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
userID | String | ユーザーID |
招待されたユーザーは応答しませんでした。
トリッガー:call/groupCallにtimeoutを設定し、被招待者がtimeout内に応答しなかった場合、発信者がNO_RESPイベントコールバックを受け取る。
let handleNoResponse = function({userID, userIDList}) {
console.log(userID, userIDList)
};
trtcCalling.on(TRTCCalling.EVENT.NO_RESP, handleNoResponse);
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
userID | String | ユーザーID |
userIDList | Array | タイムアウトユーザーリスト |
被招待側は通話中で、ビジー状態です。
トリッガー:被招待者が通話中である場合、発信者がLINE_BUSYイベントコールバックを受け取る。
let handleLineBusy = function({userID}) {
console.log(userID)
};
trtcCalling.on(TRTCCalling.EVENT.LINE_BUSY, handleLineBusy);
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
userID | String | ユーザーID |
招待通知を受領しました。
トリッガー:招待通知があった場合、被招待者がINVITEDイベントコールバックを受け取る。
let handleNewInvitationReceived = function({
sponsor, userIDList, isFromGroup, inviteData, inviteID
}) {
console.log(sponsor, userIDList, isFromGroup, inviteData, inviteID)
};
trtcCalling.on(TRTCCalling.EVENT.INVITED, handleNewInvitationReceived);
パラメータは下表に示すとおりです。
パラメータ | タイプ | 意味 |
---|---|---|
sponsor | String | 招待者 |
userIDList | Array | 同時に招待された人 |
isFromGroup | Boolean | IMグループの招待の有無 |
inviteData | Object | 新規ユーザーへの招待:{version, callType, roomID} |
inviteID | String | 招待ID。1回の招待を識別 |
今回の通話はキャンセルされました。
トリッガー:発信者がコール中に通話をキャンセルし、被招待者がCALLING_CANCELイベントコールバックを受け取る。
let handleCallingCancel = function(event) {
console.log(event)
};
trtcCalling.on(TRTCCalling.EVENT.CALLING_CANCEL, handleCallingCancel);
今回の通話はタイムアウトで、応答はありませんでした。
トリッガー:call/groupCallにtimeoutを設定し、被招待者がtimeout内に応答しなかった場合、被招待者がCALLING_TIMEOUTイベントコールバックを受け取る
let handleCallingTimeout = function(event) {
console.log(event)
};
trtcCalling.on(TRTCCalling.EVENT.CALLING_TIMEOUT, handleCallingTimeout);
EVENTのERRORフィールドを監視することによって、コンポーネントからスローされたエラーを処理することができます。サンプルコードは次のとおりです。
import TRTCCalling from 'trtc-calling-js';
let onError = function(error) {
console.log(error)
};
trtcCalling.on(TRTCCalling.EVENT.ERROR, onError);
code | エラータイプ | 意味 |
---|---|---|
60001 | メソッドのコールに失敗しました | switchToAudioCallのコールに失敗しました |
60002 | メソッドのコールに失敗しました | switchToAudioCallのコールに失敗しました |
60003 | 権限の取得に失敗しました | 使用可能なマイクデバイスがありません |
60004 | 権限の取得に失敗しました | 使用可能なカメラデバイスがありません |
60005 | 権限の取得に失敗しました | ユーザーがデバイスの使用を禁止しています |
60006 | 環境検出に失敗しました | 現在の環境はWebRTC(>=v1.0.4バージョン)をサポートしていません |
コンポーネントは現在、マルチインスタンスのログインやオフラインプッシュのシグナリング機能をサポートしていません。現在のログインアカウントの一意性をご確認ください。
説明:
- マルチインスタンス:1つのUserIDで繰り返しログインしたり、異なるターミナルからログインしたりすると、シグナリングの混乱が生じます。
- オフラインプッシュ:インスタンスはオンラインの場合にのみメッセージを受信できます。インスタンスがオフラインのときに受信したシグナリングは、オンラインになった後は再度プッシュされません。
その他よくあるご質問については、TRTCCalling Webに関するご質問をご参照ください。
詳細については、お問い合わせにご連絡をいただくか、colleenyu@tencent.comにメールでご連絡ください。
この記事はお役に立ちましたか?