Hívásfelvétel – rövid útmutató
Ez a rövid útmutató a hang- és videohívások hívásrögzítésének első lépéseit ismerteti. A hívásrögzítési API-k használatának megkezdéséhez rendelkeznie kell egy hívással. Győződjön meg arról, hogy ismeri az ügyféloldali SDK és/vagy a Call Automation hívását a végfelhasználói hívási élmény kiépítéséhez.
Példakód
A mintaalkalmazást letöltheti a GitHubról
Előfeltételek
- Aktív előfizetéssel rendelkező Azure-fiókra van szüksége.
- Kommunikációs szolgáltatás-erőforrás üzembe helyezése. Jegyezze fel az erőforrás-kapcsolati sztring.
- Iratkozzon fel az eseményekre Azure Event Grid keresztül.
- A .NET SDK letöltése
Előkészületek
A hívásrögzítési API-k kizárólag a serverCallId
felvételt használják. A forgatókönyvtől függően többféle módszerrel is lekérheti a serverCallId
következőt:
Automation-forgatókönyvek hívása
- A Hívásautomatizálás használatakor két lehetőség közül választhat:
serverCallId
- A hívás létrehozása
serverCallId
után a függvény azCallConnected
esemény tulajdonságaként ad vissza egy hívást. Ismerje meg, hogyan szerezhet be CallConnected eseményt a Call Automation SDK-ból. - A hívás fogadása vagy a hívás létrehozása után a
serverCallId
függvény a vagyCreateCallResult
azAnswerCallResult
API-válaszok tulajdonságaként adja vissza.
- A hívás létrehozása
SDK-forgatókönyvek meghívása
- Az Ügyféloldali SDK hívása során a
serverCallId
hívás metódusával lekérheti agetServerCallId
metódust. Ebből a példából megtudhatja, hogyan szerezheti be a kiszolgálóHívóazonosítót a Hívó ügyfél SDK-ból.
Lássunk néhány egyszerű lépést!
1. Hívásautomatizálási ügyfél létrehozása
A hívásrögzítési API-k a Azure Communication Services Hívásautomatizálási kódtárak részét képezik. Ezért létre kell hozni egy Call Automation-ügyfelet.
Hívásautomatizálási ügyfél létrehozásához használja a Communication Services kapcsolati sztring, és adja át az objektumnakCallAutomationClient
.
CallAutomationClient callAutomationClient = new CallAutomationClient("<ACSConnectionString>");
2. Indítsa el a munkamenet felvételét a StartRecordingOptions használatával a "StartAsync" API használatával
Használja a serverCallId
kapott elemet a hívás kezdeményezése során.
- A RecordingContent a rögzítési tartalomtípus átadására szolgál. Hang használata
- A RecordingChannel a rögzítési csatorna típusának átadására szolgál. Kevert vagy nem kevert.
- A RecordingFormat a felvétel formátumának átadására szolgál. Használja a wav parancsot.
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
{
RecordingContent = RecordingContent.Audio,
RecordingChannel = RecordingChannel.Unmixed,
RecordingFormat = RecordingFormat.Wav,
RecordingStateCallbackUri = new Uri("<CallbackUri>");
};
Response<RecordingStateResult> response = await callAutomationClient.GetCallRecording()
.StartAsync(recordingOptions);
2.1. Csak nem kevert – Felhasználó megadása a 0. csatornán
A nem kevert hangrögzítési fájlok létrehozásához a AudioChannelParticipantOrdering
funkcióval megadhatja, hogy melyik felhasználót szeretné rögzíteni a 0. csatornán. A többi résztvevőt egy csatornához rendelik, miközben beszélnek. Ha használja RecordingChannel.Unmixed
, de nem használja AudioChannelParticipantOrdering
, a Hívásfelvétel a 0 csatornát rendeli hozzá az első beszélő résztvevőhöz.
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
{
RecordingContent = RecordingContent.Audio,
RecordingChannel = RecordingChannel.Unmixed,
RecordingFormat = RecordingFormat.Wav,
RecordingStateCallbackUri = new Uri("<CallbackUri>"),
AudioChannelParticipantOrdering = { new CommunicationUserIdentifier("<ACS_USER_MRI>") }
};
Response<RecordingStateResult> response = await callAutomationClient.GetCallRecording().StartAsync(recordingOptions);
2.2. Csak nem kevert – Csatorna-affinitás megadása
var channelAffinity = new ChannelAffinity(new CommunicationUserIdentifier("<ACS_USER_MRI>")) { Channel = 0};
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
{
RecordingContent = RecordingContent.Audio,
RecordingChannel = RecordingChannel.Unmixed,
RecordingFormat = RecordingFormat.Wav,
RecordingStateCallbackUri = new Uri("<CallbackUri>"),
ChannelAffinity = new List<ChannelAffinity>{ channelAffinity }
};
Response<RecordingStateResult> response = await callAutomationClient.GetCallRecording().StartAsync(recordingOptions);
Az StartAsync
API-válasz tartalmazza a recordingId
rögzítési munkamenetet.
3. A munkamenet felvételének leállítása a "StopAsync" API használatával
Használja a recordingId
kapott választ a következőre StartAsync
: .
var stopRecording = await callAutomationClient.GetCallRecording().StopAsync(recordingId);
4. A rögzítési munkamenet szüneteltetése a "PauseAsync" API használatával
Használja a recordingId
kapott választ a következőre StartAsync
: .
var pauseRecording = await callAutomationClient.GetCallRecording ().PauseAsync(recordingId);
5. A rögzítési munkamenet folytatása a "ResumeAsync" API használatával
Használja a recordingId
kapott választ a következőre StartAsync
: .
var resumeRecording = await callAutomationClient.GetCallRecording().ResumeAsync(recordingId);
6. Felvételfájl letöltése a DownloadToAsync API használatával
Használjon Azure Event Grid webes horogot vagy más aktivált műveletet a szolgáltatások értesítésére, ha a rögzített adathordozó készen áll a letöltésre.
Az Event Grid-értesítés Microsoft.Communication.RecordingFileStatusUpdated
akkor jelenik meg, ha egy felvétel készen áll a lekérésre, általában néhány perccel a rögzítési folyamat befejezése után (például az értekezlet befejeződött, a rögzítés leállt). A rögzítési eseményértesítések közé tartoznak a contentLocation
és metadataLocation
a, amelyek a rögzített adathordozók és a rögzítési metaadat-fájlok lekérésére szolgálnak.
Példa az eseménysémára:
{
"id": string, // Unique guid for event
"topic": string, // /subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}
"subject": string, // /recording/call/{call-id}/serverCallId/{serverCallId}
"data": {
"recordingStorageInfo": {
"recordingChunks": [
{
"documentId": string, // Document id for the recording chunk
"contentLocation": string, //Azure Communication Services URL where the content is located
"metadataLocation": string, // Azure Communication Services URL where the metadata for this chunk is located
"deleteLocation": string, // Azure Communication Services URL to use to delete all content, including recording and metadata.
"index": int, // Index providing ordering for this chunk in the entire recording
"endReason": string, // Reason for chunk ending: "SessionEnded", "ChunkMaximumSizeExceeded”, etc.
}
]
},
"recordingStartTime": string, // ISO 8601 date time for the start of the recording
"recordingDurationMs": int, // Duration of recording in milliseconds
"sessionEndReason": string // Reason for call ending: "CallEnded", "InitiatorLeft”, etc.
},
"eventType": string, // "Microsoft.Communication.RecordingFileStatusUpdated"
"dataVersion": string, // "1.0"
"metadataVersion": string, // "1"
"eventTime": string // ISO 8601 date time for when the event was created
}
Használja DownloadToAsync
az API-t a rögzített adathordozó letöltéséhez.
var recordingDownloadUri = new Uri(contentLocation);
var response = await callAutomationClient.GetCallRecording().DownloadToAsync(recordingDownloadUri, fileName);
A downloadLocation
felvételhez tartozó adat lekérhető a contentLocation
attribútumból recordingChunk
. DownloadToAsync
metódus letölti a tartalmat a megadott fájlnévre.
7. Felvétel tartalmának törlése a "DeleteAsync" API használatával
A rögzítési tartalom (például rögzített adathordozó, metaadatok) törléséhez használja DeleteAsync
az API-t
var recordingDeleteUri = new Uri(deleteLocation);
var response = await callAutomationClient.GetCallRecording().DeleteAsync(recordingDeleteUri);
Példakód
A mintaalkalmazást letöltheti a GitHubról
Előfeltételek
- Aktív előfizetéssel rendelkező Azure-fiókra van szüksége.
- Kommunikációs szolgáltatás-erőforrás üzembe helyezése. Jegyezze fel az erőforrás-kapcsolati sztring.
- Iratkozzon fel az eseményekre Azure Event Grid keresztül.
- A Java SDK letöltése
Előkészületek
A hívásrögzítési API-k kizárólag a serverCallId
felvételt használják. A forgatókönyvtől függően többféle módszerrel is lekérheti a serverCallId
következőt:
Automation-forgatókönyvek hívása
- A Hívásautomatizálás használatakor két lehetőség közül választhat:
serverCallId
- A hívás létrehozása
serverCallId
után a függvény azCallConnected
esemény tulajdonságaként ad vissza egy hívást. Ismerje meg, hogyan szerezhet be CallConnected eseményt a Call Automation SDK-ból. - A hívás fogadása vagy a hívás létrehozása után a
serverCallId
függvény a vagyCreateCallResult
azAnswerCallResult
API-válaszok tulajdonságaként adja vissza.
- A hívás létrehozása
SDK-forgatókönyvek meghívása
- Az Ügyféloldali SDK hívása során a
serverCallId
hívás metódusával lekérheti agetServerCallId
metódust. Ebből a példából megtudhatja, hogyan szerezheti be a kiszolgálóHívóazonosítót a Hívó ügyfél SDK-ból.
Lássunk néhány egyszerű lépést!
1. Hívásautomatizálási ügyfél létrehozása
A hívásrögzítési API-k a Azure Communication Services Hívásautomatizálási kódtárak részét képezik. Ezért létre kell hozni egy Call Automation-ügyfelet.
Hívásautomatizálási ügyfél létrehozásához használja a Communication Services kapcsolati sztring, és átadja azt az objektumnakCallAutomationClient
.
CallAutomationClient callAutomationClient = new CallAutomationClientBuilder()
.connectionString("<acsConnectionString>")
.buildClient();
2. Indítsa el a munkamenet felvételét a StartRecordingOptions használatával a "startWithResponse" API használatával
Használja a serverCallId
kapott elemet a hívás kezdeményezése során.
- A RecordingContent a rögzítési tartalomtípus átadására szolgál. Az AUDIO használata
- A RecordingChannel a rögzítési csatorna típusának átadására szolgál. Használja a MIXED vagy a UNMIXED parancsot.
- A RecordingFormat a felvétel formátumának átadására szolgál. Használja a WAV-t.
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<serverCallId>"))
.setRecordingChannel(RecordingChannel.UNMIXED)
.setRecordingFormat(RecordingFormat.WAV)
.setRecordingContent(RecordingContent.AUDIO)
.setRecordingStateCallbackUrl("<recordingStateCallbackUrl>");
Response<RecordingStateResult> response = callAutomationClient.getCallRecording()
.startWithResponse(recordingOptions, null);
2.1. Csak nem kevert – Felhasználó megadása a 0. csatornán
A nem kevert hangrögzítési fájlok létrehozásához a AudioChannelParticipantOrdering
funkcióval megadhatja, hogy melyik felhasználót szeretné rögzíteni a 0. csatornán. A többi résztvevőt egy csatornához rendeljük, miközben beszélnek. Ha használja RecordingChannel.Unmixed
, de nem használja AudioChannelParticipantOrdering
, a Hívásfelvétel 0 csatornát rendel az első beszélőhöz.
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<serverCallId>"))
.setRecordingChannel(RecordingChannel.UNMIXED)
.setRecordingFormat(RecordingFormat.WAV)
.setRecordingContent(RecordingContent.AUDIO)
.setRecordingStateCallbackUrl("<recordingStateCallbackUrl>")
.setAudioChannelParticipantOrdering(List.of(new CommunicationUserIdentifier("<participantMri>")));
Response<RecordingStateResult> response = callAutomationClient.getCallRecording()
.startWithResponse(recordingOptions, null);
2.2. Csak nem kevert esetén – Csatorna-affinitás megadása
ChannelAffinity channelAffinity = new ChannelAffinity()
.setParticipant(new PhoneNumberIdentifier("RECORDING_ID"))
.setChannel(0);
List<ChannelAffinity> channelAffinities = Arrays.asList(channelAffinity);
StartRecordingOptions startRecordingOptions = new StartRecordingOptions(new ServerCallLocator(SERVER_CALL_ID))
.setRecordingChannel(RecordingChannel.UNMIXED)
.setRecordingFormat(RecordingFormat.WAV)
.setRecordingContent(RecordingContent.AUDIO)
.setRecordingStateCallbackUrl("<recordingStateCallbackUrl>")
.setChannelAffinity(channelAffinities);
Response<RecordingStateResult> response = callAutomationClient.getCallRecording()
.startRecordingWithResponse(recordingOptions, null);
Az startWithResponse
API-válasz tartalmazza a recordingId
rögzítési munkamenetet.
3. A munkamenet rögzítésének leállítása a "stopWithResponse" API használatával
Használja a recordingId
kapott választ a következőre startWithResponse
: .
Response<Void> response = callAutomationClient.getCallRecording()
.stopWithResponse(response.getValue().getRecordingId(), null);
4. A rögzítési munkamenet szüneteltetése a "pauseWithResponse" API használatával
Használja a recordingId
kapott választ a következőre startWithResponse
: .
Response<Void> response = callAutomationClient.getCallRecording()
.pauseWithResponse(response.getValue().getRecordingId(), null);
5. A rögzítési munkamenet folytatása a resumeWithResponse API használatával
Használja a recordingId
kapott választ a következőre startWithResponse
: .
Response<Void> response = callAutomationClient.getCallRecording()
.resumeWithResponse(response.getValue().getRecordingId(), null);
6. A rögzítési fájl letöltése a downloadToWithResponse API használatával
Használjon Azure Event Grid webhookot vagy más aktivált műveletet, hogy értesítse a szolgáltatásokat, ha a rögzített adathordozó készen áll a letöltésre.
Az Event Grid-értesítés Microsoft.Communication.RecordingFileStatusUpdated
akkor jelenik meg, ha egy felvétel készen áll a lekérésre, általában néhány perccel a rögzítési folyamat befejezése után (például az értekezlet befejeződött, a rögzítés leállt). A rögzítési eseményértesítések közé tartoznak a contentLocation
és metadataLocation
a is, amelyek a rögzített adathordozó és a rögzítési metaadatfájl lekérésére szolgálnak.
Az alábbiakban egy példa látható az eseménysémára.
{
"id": string, // Unique guid for event
"topic": string, // /subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}
"subject": string, // /recording/call/{call-id}/serverCallId/{serverCallId}
"data": {
"recordingStorageInfo": {
"recordingChunks": [
{
"documentId": string, // Document id for the recording chunk
"contentLocation": string, //Azure Communication Services URL where the content is located
"metadataLocation": string, // Azure Communication Services URL where the metadata for this chunk is located
"deleteLocation": string, // Azure Communication Services URL to use to delete all content, including recording and metadata.
"index": int, // Index providing ordering for this chunk in the entire recording
"endReason": string, // Reason for chunk ending: "SessionEnded", "ChunkMaximumSizeExceeded”, etc.
}
]
},
"recordingStartTime": string, // ISO 8601 date time for the start of the recording
"recordingDurationMs": int, // Duration of recording in milliseconds
"sessionEndReason": string // Reason for call ending: "CallEnded", "InitiatorLeft”, etc.
},
"eventType": string, // "Microsoft.Communication.RecordingFileStatusUpdated"
"dataVersion": string, // "1.0"
"metadataVersion": string, // "1"
"eventTime": string // ISO 8601 date time for when the event was created
}
A rögzített adathordozó letöltéséhez CallRecording
használjon downloadToWithResponse
osztálymetódust. A metódus támogatott paraméterei a downloadToWithResponse
következők:
contentLocation
: Azure Communication Services URL-cím, ahol a tartalom található.destinationPath
: Fájl helye.parallelDownloadOptions
: Nem kötelező ParallelDownloadOptions objektum a párhuzamos letöltés működésének módosításához.overwrite
: Igaz, ha felülírja a fájlt, ha létezik.context
: A kérelemkörnyezetet jelölő környezet.
Boolean overwrite = true;
ParallelDownloadOptions parallelDownloadOptions = null;
Context context = null;
String filePath = String.format(".\\%s.%s", documentId, fileType);
Path destinationPath = Paths.get(filePath);
Response<Void> downloadResponse = callAutomationClient.getCallRecording().downloadToWithResponse(contentLocation, destinationPath, parallelDownloadOptions, overwrite, context);
A rögzítési fájlok tartalomhelyét és dokumentumazonosítóit a és documentId
a contentLocation
mezőkből lehet lekérni mindegyikhezrecordingChunk
.
7. A felvétel tartalmának törlése a deleteWithResponse API használatával.
Osztálymetódus CallRecording
használata deleteWithResponse
a rögzített adathordozó törléséhez. A metódus támogatott paraméterei a deleteWithResponse
következők:
deleteLocation
: Azure Communication Services URL-címet, ahol a törölni kívánt tartalom található.context
: A kérelemkörnyezetet jelölő környezet.
Response<Void> deleteResponse = callAutomationClient.getCallRecording().deleteWithResponse(deleteLocation, context);
A felvétel törlési helye lekérhető az deleteLocation
Event Grid-esemény mezőjéből.
Példakód
A mintaalkalmazást letöltheti a GitHubról
Előfeltételek
- Aktív előfizetéssel rendelkező Azure-fiókra van szüksége.
- Kommunikációs szolgáltatási erőforrás üzembe helyezése. Jegyezze fel az erőforrás-kapcsolati sztring.
- Iratkozzon fel az eseményekre Azure Event Grid keresztül.
- Python 3.7+.
Előkészületek
A hívásrögzítési API-k kizárólag a használatával kezdeményezik a serverCallId
felvételt. A forgatókönyvtől függően többféle módszerrel is lekérheti a serverCallId
metódust:
Hívásautomatizálási forgatókönyvek
- A Hívásautomatizálás használatakor két lehetőség közül választhat:
serverCallId
- A hívás létrehozása
serverCallId
után a a az esemény tulajdonságaként lesz visszaadva aCallConnected
hívás létrehozása után. Ismerje meg, hogyan szerezhet be CallConnected eseményt a Call Automation SDK-ból. - A hívás fogadása vagy a hívás létrehozása után a
serverCallId
függvény a vagyCreateCallResult
azAnswerCallResult
API-válaszok tulajdonságaként adja vissza a függvényt.
- A hívás létrehozása
SDK-forgatókönyvek meghívása
- Az ügyféloldali SDK hívása során a
serverCallId
hívás változójának használatával lekérheti aserver_call_id
változót. Ebből a példából megtudhatja, hogyan kérhet le serverCallId azonosítót a hívó ügyféloldali SDK-ból.
Lássunk neki néhány egyszerű lépésnek!
1. Hívásautomatizálási ügyfél létrehozása
A hívásrögzítési API-k a Azure Communication Services Hívásautomatizálási kódtárak részét képezik. Ezért létre kell hoznia egy Hívásautomatizálási ügyfelet.
Hívásautomatizálási ügyfél létrehozásához használja a Communication Services-kapcsolati sztring, és átadja azt az objektumnakCallAutomationClient
.
call_automation_client = CallAutomationClient.from_connection_string("<ACSConnectionString>")
2. A munkamenet rögzítésének megkezdése start_recording API-val
Használja a serverCallId
hívás kezdeményezése során kapott elemet.
- A RecordingContent a rögzítési tartalomtípus átadására szolgál. Hang használata
- A RecordingChannel a rögzítési csatorna típusának átadására szolgál. Használjon vegyes vagy nem kevert elemet.
- A RecordingFormat a felvétel formátumának átadására szolgál. Használja a wav parancsot.
response = call_automation_client.start_recording(call_locator=ServerCallLocator(server_call_id),
recording_content_type = RecordingContent.Audio,
recording_channel_type = RecordingChannel.Unmixed,
recording_format_type = RecordingFormat.Wav,
recording_state_callback_url = "<CallbackUri>")
2.1. Csak nem kevert – Felhasználó megadása a 0. csatornán
A nem kevert hangrögzítési fájlok létrehozásához a AudioChannelParticipantOrdering
funkcióval megadhatja, hogy melyik felhasználót szeretné rögzíteni a 0. csatornán. A többi résztvevőt a beszéd közben egy csatornához rendeljük. Ha használja RecordingChannel.Unmixed
, de nem használja AudioChannelParticipantOrdering
, a Hívásrögzítés a 0. csatornát rendeli hozzá az első beszélő résztvevőhöz.
response = call_automation_client.start_recording(call_locator=ServerCallLocator(server_call_id),
recording_content_type = RecordingContent.Audio,
recording_channel_type = RecordingChannel.Unmixed,
recording_format_type = RecordingFormat.Wav,
recording_state_callback_url = "<CallbackUri>",
audio_channel_participant_ordering=[CommunicationUserIdentifier(id="<ACS_USER_MRI>")])
2.2. Csak nem kevert esetén – Csatorna-affinitás megadása
_channel_affinity = ChannelAffinity(target_participant=CommunicationUserIdentifier("<ACS_USER_MRI>"), channel=0)
response = call_automation_client.start_recording(call_locator=ServerCallLocator(server_call_id),
recording_content_type = RecordingContent.Audio,
recording_channel_type = RecordingChannel.Unmixed,
recording_format_type = RecordingFormat.Wav,
recording_state_callback_url = "<CallbackUri>",
channel_affinity=[_channel_affinity])
Az StartAsync
API-válasz tartalmazza a recordingId
rögzítési munkamenetet.
3. A munkamenet rögzítésének leállítása a "stop_recording" API-val
Használja a recording_id
kapott választ a következőre start_recording
: .
stop_recording = call_automation_client.stop_recording(recording_id = recording_id)
4. A rögzítési munkamenet szüneteltetése a "pause_recording" API használatával
Használja a recording_id
kapott választ a következőre start_recording
: .
pause_recording = call_automation_client.pause_recording(recording_id = recording_id)
5. A rögzítési munkamenet folytatása a "resume_recording" API használatával
Használja a recording_id
kapott választ a következőre start_recording
: .
resume_recording = call_automation_client.resume_recording(recording_id = recording_id)
6. A rögzítési fájl letöltése a "download_recording" API használatával
Használjon Azure Event Grid webhookot vagy más aktivált műveletet, hogy értesítse a szolgáltatásokat, ha a rögzített adathordozó készen áll a letöltésre.
Az Event Grid-értesítés Microsoft.Communication.RecordingFileStatusUpdated
akkor jelenik meg, ha egy felvétel készen áll a lekérésre, általában néhány perccel a rögzítési folyamat befejezése után (például az értekezlet befejeződött, a rögzítés leállt). A rögzítési eseményértesítések közé tartoznak a contentLocation
és metadataLocation
a is, amelyek a rögzített adathordozó és a rögzítési metaadatfájl lekérésére szolgálnak.
Az alábbiakban egy példa látható az eseménysémára.
{
"id": string, // Unique guid for event
"topic": string, // /subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}
"subject": string, // /recording/call/{call-id}/serverCallId/{serverCallId}
"data": {
"recordingStorageInfo": {
"recordingChunks": [
{
"documentId": string, // Document id for the recording chunk
"contentLocation": string, //Azure Communication Services URL where the content is located
"metadataLocation": string, // Azure Communication Services URL where the metadata for this chunk is located
"deleteLocation": string, // Azure Communication Services URL to use to delete all content, including recording and metadata.
"index": int, // Index providing ordering for this chunk in the entire recording
"endReason": string, // Reason for chunk ending: "SessionEnded", "ChunkMaximumSizeExceeded”, etc.
}
]
},
"recordingStartTime": string, // ISO 8601 date time for the start of the recording
"recordingDurationMs": int, // Duration of recording in milliseconds
"sessionEndReason": string // Reason for call ending: "CallEnded", "InitiatorLeft”, etc.
},
"eventType": string, // "Microsoft.Communication.RecordingFileStatusUpdated"
"dataVersion": string, // "1.0"
"metadataVersion": string, // "1"
"eventTime": string // ISO 8601 date time for when the event was created
}
Használja download_recording
az API-t a rögzített adathordozó letöltéséhez.
response = recording_data = call_automation_client.download_recording(content_location)
with open("<file_name>", "wb") as binary_file:
binary_file.write(recording_data.read())
A downloadLocation
felvételhez tartozó adatok a contentLocation
attribútumából recordingChunk
kérhetők le. download_recording
metódus letölti a tartalmat bájtokba.
7. A felvétel tartalmának törlése a "delete_recording" API használatával
A rögzítési tartalom (például rögzített adathordozó, metaadatok) törléséhez használja delete_recording
az API-t
response = call_automation_client.delete_recording(delete_location);
Példakód
A mintaalkalmazást letöltheti a GitHubról
Előfeltételek
- Aktív előfizetéssel rendelkező Azure-fiókra van szüksége.
- Kommunikációs szolgáltatási erőforrás üzembe helyezése. Jegyezze fel az erőforrás-kapcsolati sztring.
- Iratkozzon fel az eseményekre Azure Event Grid keresztül.
- Node.js Aktív LTS- és karbantartási LTS-verziók (8.11.1 és 10.14.1 ajánlott)
Előkészületek
A hívásrögzítési API-k kizárólag a használatával kezdeményezik a serverCallId
felvételt. A forgatókönyvtől függően többféle módszerrel is lekérheti a serverCallId
metódust:
Hívásautomatizálási forgatókönyvek
- A Hívásautomatizálás használatakor két lehetőség közül választhat:
serverCallId
- A hívás létrehozása
serverCallId
után a a az esemény tulajdonságaként lesz visszaadva aCallConnected
hívás létrehozása után. Ismerje meg, hogyan szerezhet be CallConnected eseményt a Call Automation SDK-ból. - A hívás fogadása vagy a hívás létrehozása után a
serverCallId
függvény a vagyCreateCallResult
azAnswerCallResult
API-válaszok tulajdonságaként adja vissza a függvényt.
- A hívás létrehozása
SDK-forgatókönyvek meghívása
- Az Ügyféloldali SDK hívása során a
serverCallId
hívás metódusával lekérheti agetServerCallId
metódust. Ebből a példából megtudhatja, hogyan szerezheti be a kiszolgálóHívóazonosítót a Hívó ügyfél SDK-ból.
Lássunk néhány egyszerű lépést!
1. Hívásautomatizálási ügyfél létrehozása
A hívásrögzítési API-k a Azure Communication Services Hívásautomatizálási kódtárak részét képezik. Ezért létre kell hozni egy Call Automation-ügyfelet.
Hívásautomatizálási ügyfél létrehozásához használja a Communication Services kapcsolati sztring, és átadja azt az objektumnakCallAutomationClient
.
const callAutomationClient = new CallAutomationClient.CallAutomationClient("<ACSConnectionString>");
2. Indítsa el a munkamenet felvételét a StartRecordingOptions használatával a "StartAsync" API használatával
Használja a serverCallId
kapott elemet a hívás kezdeményezése során.
- A RecordingContent a rögzítési tartalomtípus átadására szolgál. Hang használata
- A RecordingChannel a rögzítési csatorna típusának átadására szolgál. Kevert vagy nem kevert.
- A RecordingFormat a felvétel formátumának átadására szolgál. Használja a wav parancsot.
var locator: CallLocator = { id: "<ServerCallId>", kind: "serverCallLocator" };
var options: StartRecordingOptions =
{
callLocator: locator,
recordingContent: "audio",
recordingChannel:"unmixed",
recordingFormat: "wav",
recordingStateCallbackEndpointUrl: "<CallbackUri>"
};
var response = await callAutomationClient.getCallRecording().start(options);
2.1. Csak nem kevert – Felhasználó megadása a 0. csatornán
A nem kevert hangrögzítési fájlok létrehozásához a AudioChannelParticipantOrdering
funkcióval megadhatja, hogy melyik felhasználót szeretné rögzíteni a 0. csatornán. A többi résztvevőt egy csatornához rendeljük, miközben beszélnek. Ha használja RecordingChannel.Unmixed
, de nem használja AudioChannelParticipantOrdering
, a Hívásfelvétel 0 csatornát rendel az első beszélőhöz.
var locator: CallLocator = { id: "<ServerCallId>", kind: "serverCallLocator" };
var options: StartRecordingOptions =
{
callLocator: locator,
recordingContent: "audio",
recordingChannel:"unmixed",
recordingFormat: "wav",
recordingStateCallbackEndpointUrl: "<CallbackUri>",
audioChannelParticipantOrdering:[{communicationUserId: "<ACS_USER_MRI>"}]
};
var response = await callAutomationClient.getCallRecording().start(options);
2.2. Csak nem kevert – Csatorna-affinitás megadása
var options: StartRecordingOptions =
{
callLocator: locator,
recordingContent: "audio",
recordingChannel:"unmixed",
recordingFormat: "wav",
recordingStateCallbackEndpointUrl: "<CallbackUri>",
ChannelAffinity:
[
{
channel:0,
targetParticipant:{communicationUserId: "<ACS_USER_MRI>"}
}
]
};
var response = await callAutomationClient.getCallRecording().start(options);
Az StartAsync
API-válasz tartalmazza a recordingId
rögzítési munkamenetet.
3. A munkamenet rögzítésének leállítása a "stop" API használatával
Használja a recordingId
kapott választ a következőre start
: .
var stopRecording = await callAutomationClient.getCallRecording().stop(recordingId);
4. A rögzítési munkamenet szüneteltetése a "pause" API használatával
Használja a recordingId
kapott választ a következőre start
: .
var pauseRecording = await callAutomationClient.getCallRecording().pause(recordingId);
5. A rögzítési munkamenet folytatása a "ResumeAsync" API használatával
Használja a recordingId
kapott választ a következőre start
: .
var resumeRecording = await callAutomationClient.getCallRecording().resume(recordingId);
6. Felvételfájl letöltése a DownloadToAsync API használatával
Használjon Azure Event Grid webes horogot vagy más aktivált műveletet a szolgáltatások értesítésére, ha a rögzített adathordozó készen áll a letöltésre.
Az Event Grid-értesítés Microsoft.Communication.RecordingFileStatusUpdated
akkor jelenik meg, ha egy felvétel készen áll a lekérésre, általában néhány perccel a rögzítési folyamat befejezése után (például az értekezlet befejeződött, a rögzítés leállt). A rögzítési eseményértesítések közé tartoznak a contentLocation
és metadataLocation
a, amelyek a rögzített adathordozók és a rögzítési metaadat-fájlok lekérésére szolgálnak.
Az alábbi példa az eseményséma.
{
"id": string, // Unique guid for event
"topic": string, // /subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}
"subject": string, // /recording/call/{call-id}/serverCallId/{serverCallId}
"data": {
"recordingStorageInfo": {
"recordingChunks": [
{
"documentId": string, // Document id for the recording chunk
"contentLocation": string, //Azure Communication Services URL where the content is located
"metadataLocation": string, // Azure Communication Services URL where the metadata for this chunk is located
"deleteLocation": string, // Azure Communication Services URL to use to delete all content, including recording and metadata.
"index": int, // Index providing ordering for this chunk in the entire recording
"endReason": string, // Reason for chunk ending: "SessionEnded", "ChunkMaximumSizeExceeded”, etc.
}
]
},
"recordingStartTime": string, // ISO 8601 date time for the start of the recording
"recordingDurationMs": int, // Duration of recording in milliseconds
"sessionEndReason": string // Reason for call ending: "CallEnded", "InitiatorLeft”, etc.
},
"eventType": string, // "Microsoft.Communication.RecordingFileStatusUpdated"
"dataVersion": string, // "1.0"
"metadataVersion": string, // "1"
"eventTime": string // ISO 8601 date time for when the event was created
}
Használja downloadToPath
az API-t a rögzített adathordozó letöltéséhez.
var response = await callAutomationClient.getCallRecording().downloadToPath(contentLocation, fileName);
A downloadLocation
felvételhez tartozó adat lekérhető a contentLocation
attribútumból recordingChunk
. DownloadToAsync
metódus letölti a tartalmat a megadott fájlnévre.
7. Felvétel tartalmának törlése a "DeleteAsync" API használatával
A rögzítési tartalom (például rögzített adathordozó, metaadatok) törléséhez használja delete
az API-t
var response = await callAutomationClient.getCallRecording().delete(deleteLocation);
Az erőforrások eltávolítása
Ha törölni és eltávolítani szeretne egy Communication Services-előfizetést, törölheti az erőforrást vagy az erőforráscsoportot. Az erőforráscsoport törlése a hozzá társított egyéb erőforrásokat is törli. További információ az erőforrások eltávolításáról.
Következő lépések
További információért tekintse át a következő cikkeket:
- Java-,Python- és JavaScript-hívásrögzítési mintaalkalmazásaink letöltése
- További információ a hívásrögzítésről
- További információ a Hívásautomatizálásról