Share via


通話レコーディング サーバー API の要件として JavaScript アプリケーションから serverCallId を取得する

Calling Client SDK を使用するピア ツー ピアの通話シナリオで、Azure Communications から通話レコーディングを使用するには、serverCallId を取得する必要があります。 次の例では、JavaScript サーバー アプリケーションから serverCallId を取得する方法を示します。

通話レコーディングは、コアとなる通話 API の拡張機能です。 まず、Calling SDK から通話機能をインポートする必要があります。

import { Features} from "@azure/communication-calling";

その後、呼び出しインスタンスから記録機能 API オブジェクトを取得することができます。

const callRecordingApi = call.feature(Features.Recording);

レコーディングに関する変更をサブスクライブします。

const recordingStateChanged = () => {
    let recordings = callRecordingApi.recordings;

    let state = SDK.RecordingState.None;
    if (recordings.length > 0) {
        state = recordings.some(r => r.state == SDK.RecordingState.Started)
            ? SDK.RecordingState.Started
            : SDK.RecordingState.Paused;
    }
    
	console.log(`RecordingState: ${state}`);
}

const recordingsChangedHandler = (args: { added: SDK.RecordingInfo[], removed: SDK.RecordingInfo[]}) => {
    args.added?.forEach(a => {
        a.on('recordingStateChanged', recordingStateChanged);
    });

    args.removed?.forEach(r => {
        r.off('recordingStateChanged', recordingStateChanged);
    });

    recordingStateChanged();
};

callRecordingApi.on('recordingsUpdated', recordingsChangedHandler);

レコーディング セッションの開始、停止、一時停止、再開に使用する servercallId を取得します。 通話が接続されたら、getServerCallId メソッドを使用してサーバー通話 ID を取得します。

callAgent.on('callsUpdated', (e: { added: Call[]; removed: Call[] }): void => {
    e.added.forEach((addedCall) => {
        addedCall.on('stateChanged', (): void => {
            if (addedCall.state === 'Connected') {
                addedCall.info.getServerCallId().then(result => {
                    dispatch(setServerCallId(result));
                }).catch(err => {
                    console.log(err);
                });
            }
        });
    });
});

関連項目

詳細については、次の記事を参照してください。