從 JavaScript 應用程式取得 serverCallId 作為呼叫錄製伺服器 API 的需求

在使用通話用戶端 SDK 的對等通話案例中,若要使用來自 Azure 通訊的通話錄製,您必須取得 serverCallId。 下列範例示範如何從 JavaScript 伺服器應用程式取得 serverCallId

通話錄音是核心 Call API 的擴充功能。 您必須先從通話 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 方法來取得伺服器呼叫識別碼。

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);
                });
            }
        });
    });
});

另請參閱

如需詳細資訊,請參閱下列文章: